FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Une calculatrice en une ligne de programme
Problème avec la commande 'return'. Emptypar jean_debord Aujourd'hui à 8:47

» Form(résolu)
Problème avec la commande 'return'. Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Problème avec la commande 'return'. Emptypar Marc Hier à 11:42

» Bataille navale SM
Problème avec la commande 'return'. Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Problème avec la commande 'return'. Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Problème avec la commande 'return'. Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Problème avec la commande 'return'. Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème avec la commande 'return'. Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Problème avec la commande 'return'. Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Problème avec la commande 'return'. Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Problème avec la commande 'return'. Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Problème avec la commande 'return'. Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Problème avec la commande 'return'. Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Problème avec la commande 'return'. Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Problème avec la commande 'return'. Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le deal à ne pas rater :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

 

 Problème avec la commande 'return'.

Aller en bas 
4 participants
AuteurMessage
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

Problème avec la commande 'return'. Empty
MessageSujet: Problème avec la commande 'return'.   Problème avec la commande 'return'. EmptyLun 30 Oct 2017 - 14:40

Bonjour.

@Jack.

Suite à de nombreuses imbrications de code, la commande return provoque l'erreur suivante:

Erreur externe !

Serait-il possible de créer une nouvelle commande afin de sortir prématurément, avant un return, exemple: exit_return

Merci de la suite.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Problème avec la commande 'return'. Empty
MessageSujet: Re: Problème avec la commande 'return'.   Problème avec la commande 'return'. EmptyLun 30 Oct 2017 - 16:12

Inutile, Pédro !

La commande RETURN sert à sortir d'un sous-programme appelé par GOSUB. Et uniquement pour cela. Bien évidemment, une routine évènement en fait partie également, puisqu'elle est appelée automatiquement par Panoramic, comme si l'on avait fait un GOSUB.

Pour sortir d'une telle routine, tu places un RETURN où tu veux, pourvu qu'il soit dans le flot d'exécution du programme. Un tel sous-programme peut très bien avoir 2, 3 ou même beaucoup de RETURN. Pas de problème.

Regarde ce code:
Code:
label key
dim k%

on_key_down 0,key

end

key:
  k% = scancode
 
  if k%=27
    message "Echap"
    return
  end_if
 
  if k%=37
    message "flèche à gauche"
    return
  end_if
 
  if k%=38
    message "flèche en haut"
    return
  end_if
 
  message "scancode = "+str$(k%)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

Problème avec la commande 'return'. Empty
MessageSujet: Problème avec la commande 'return'.   Problème avec la commande 'return'. EmptyLun 30 Oct 2017 - 16:49

Bonjour.

Désolé Klaus, mais cela ne résout pas le problème.

Lors de l'appel de nombreuses subs et appels de returns imbriqués, le problème persiste.

Panoramic se mélange les pinceaux.

J'ai l'impression qu'il ne s'y retrouve pas dans la table des retours internes !
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Problème avec la commande 'return'. Empty
MessageSujet: Re: Problème avec la commande 'return'.   Problème avec la commande 'return'. EmptyLun 30 Oct 2017 - 17:16

Ne mélange pas des SUB qui sont des procédures, avec des sous-programmes appelées par GOSUB.

Un sous-programme commence par un label et n'a pas de véritable fin dans le code. Ma commande RETURN sert juste à "annuler" la commande GOSUB qui l'a appelé:
Code:

LABEL test
GOSUB test
...
test:
...
RETURN

Une procédure est une séquence de comandes portant un nom et est déclarée par la commande SUB. Elle est terminée par la commande END_SUB. Elle ne doit pas contenir une autre commande SUB avant l'apparition du END_SUB. La commande END_SUB termine l'exécution de la procédure si le flot d'exécution l'atteint. Si l'on veut sortir d'une procédure avant le END_SUB, il y a la commande EXIT_SUB qui fait cela. La structure générale est donc:
Code:

essai("Premier",k%*3)
...
SUB essai(a$,b%)
...
EXIT_SUB
...
EXIT_SUB
...
END_SUB

Bien sûr, dans un sous-programme, on peut appeler une procédure et inversement. Mais attention: RETURN ne s'applique qu'aux sous-programmes, et EXIT_SUB ne s'applique qu'aux procédures ! On ne peut pas utiliser l'un pour l'autre. Et un autre point est important: ni les sous-programmes no les procédures ne sont réentrantes, en Panoramic. Donc on ne peut pas - JAMAIS -
1. appeler un sous-programme ou une procédure de façon récursive, même indirectement
2. coder une routine évènement de telle façon qu'une partie de son code puisse être partagé avec une autre routine évènement
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

Problème avec la commande 'return'. Empty
MessageSujet: Problème avec la commande 'return'.   Problème avec la commande 'return'. EmptyMar 31 Oct 2017 - 20:15

Bonsoir.

Un grand merci Klaus, tout cela a le mérite d'être très clair.

Je savais qu'effectivement, il était possible d'écrire plusieurs return dans une même sub.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6996
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Problème avec la commande 'return'. Empty
MessageSujet: Re: Problème avec la commande 'return'.   Problème avec la commande 'return'. EmptyMar 31 Oct 2017 - 23:31

Pedro Alvarez a écrit:
Je savais qu'effectivement, il était possible d'écrire plusieurs return dans une même sub.


La commande RETURN ne peut se trouver que dans un sous-programme appelé par GOSUB ou dans un sous-programme de traitement d’un événement déclenché par les commandes de type ON_XXX.
Elle ne peut pas se trouver dans une procédure SUB, à moins que cette procédure contient elle-même un sous-programme appelé par GOSUB.
Personnellement je ne vois pas la nécessité d’employer des sous-programmes appelés par GOSUB dés lors que l’on peut coder des procédures SUB.

L’unique rôle de la commande RETURN est de diriger le programme vers l’instruction qui vient juste après le GOSUB correspondant ou  de remettre le programme en attente d’événement s'il s'agit d'un traitement d'événement.

Lorsque le programme est en cours d’exécution, le registre PC (Program Counter) contient l’adresse mémoire de la prochaine instruction à exécuter
La rencontre de la commande GOSUB, oblige le système à  sauvegarder son environnement de travail en mettant sur la pile (PUSH)  les contenus des registres de travail et principalement le registre Program Counter puis il modifie ce dernier pour se brancher vers le sous-programme.
Quand il rencontre la commande RETURN, le système restaure son ancien environnement de travail  (POP) et principalement le registre Program Counter  en récupérant  l’adresse préalablement sauvegardée et continue l’exécution.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Problème avec la commande 'return'. Empty
MessageSujet: Re: Problème avec la commande 'return'.   Problème avec la commande 'return'. EmptyMer 1 Nov 2017 - 22:19

Merci Klaus et Papydall pour ces explications très pédagogiques.

A vous deux, vous pourriez alimenter 10 ans de PLM* !  Smile


*PLM = Panoramic Le Mag
Revenir en haut Aller en bas
Contenu sponsorisé





Problème avec la commande 'return'. Empty
MessageSujet: Re: Problème avec la commande 'return'.   Problème avec la commande 'return'. Empty

Revenir en haut Aller en bas
 
Problème avec la commande 'return'.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec la commande RemoveStringBetweenDelimiters.
» Problème avec la commande rnd().
» Problème avec la commande 'sort'.
» Problème avec la commande 'file_writeln'.
» Problème avec select case Probleme réglé merci

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: