Gosub et Goto dans une procedure ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Gosub et Goto dans une procedure ?

Message par Ulix »

Salut a tous,

je suis confronté a un probléme, et je ne sais pas si s'est moi qui s'y prend comme un pied, :oops: ou une limitation du PB !

Je désirais utilisé des gosub/return dans une procedure, afin de ne pas multiplié les procedures et les variables globals.
Apparement cette instruction n'est pas accepté dans les procédures.
J'ai essayé de mettre des goto (bien que ce soit plus délicat pour géré le retour, alors qu'avec un gosub, c'est automatique), le résultat est identique, non accepté dans les procédures.

Est-ce bien celà, ou alors moi qui s'est pas y faire ? Quelqu'un a-t-il un exemple de gosub ou goto dans une procédure :?:

merci d'avance !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

j'sais pas si c'est possible.
Peut être juste els goto, mais les return, je pense pas ...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Les procédures n'acceptent pas les GoSub, mais elle acceptent les GoTo.
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Je suis donc rassuré pour le gosub/return.

Par contre, le goto ne marche pas dans mon code !

Avez-vous un exemple de goto dans une procedure fonctionnelle ?

Je dois certainenemt mal faire les choses !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Brrrr....!

Les GoTo...

Ca fait froid dans le dos cette commande!

J'en ai passé des heures à tourner en rond dans des programmes sur mon Thomson MO5 parce qu'un GoTo se mordait la queue! :lol:

Pour répondre à ta question, je n'ai pas d'exemple, mais peut-être sur le forum anglais, ou alors demande à Dobro, c'est le spécialiste de la programmation "A l'Ancienne". (Comme la moutarde...)
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Merci Chris,

Pour répondre à ta question, je n'ai pas d'exemple, mais peut-être sur le forum anglais
ça tombe mal, je suis nul en langue. Je préférenre la 2eme possibilité :
... demande à Dobro, c'est le spécialiste de la programmation "A l'Ancienne". (Comme la moutarde...)
ça tombe bien j'aime la moutarde !
Alors, très chers Dodro, si tu as quelque chose qui ressemble a un exemple de goto utilise dans une procedure je suis preneur !
Parce que je ne suis pas arrivé a l'utilisé :oops:

Merci d'avance.
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Bonsoir à tous.

Voici un petit exemple de goto dans une procedure. Je ne sais pas si c'est ce que tu veux. L'exemple est un peu simpliste, mais il fonctionne.

Code : Tout sélectionner

Procedure soustraction(a,b)
If b>a
Goto change
EndIf
c=a-b
ProcedureReturn c
change:
c=b-a
ProcedureReturn c
EndProcedure


Debug soustraction(2,8)
Debug soustraction(6,2)
Par contre, je n'ai pas testé si on pouvais sortir de la procedure avec un Goto. :(

André.
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

En fait on peut aussi sortir de la procedure avec un goto. :D

Code : Tout sélectionner

Procedure soustraction(a,b)
If b>a
Goto change
EndIf
c=a-b
ProcedureReturn c
change:
Goto suivant
EndProcedure


Debug soustraction(2,8)
End

suivant:
Debug "hello"
End
Dans certain cas ça peut servir. :wink:

Mais on peut aussi sortie avec ProcedureReturn. Le seul avantage du Goto dans ce cas là c'est que l'on ne reprend pas le programme après l'appel de la procedure mais à l'endroit où on à mis le label...i :wink:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Attention si tu sors de la procédure avec un Goto tu crée un décallage dans la pile!!!

Dri
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ben en fait moi je fait pas comme ça !!

je privilegie les sous programme
car on peut appeler une procedure d'un sous programme pas l'inverse ! :D

genre (shematisé !! ) :

Code : Tout sélectionner

declare addition(a,b)

repeat  ; boucle principale !

    gosub test1 ; appel de mes sous programe
    gosub test2
    gosub test3

forever


; ********* sous prg ***********

test1:
    ? "coucou 1"
return

test2:
    ? "coucou 2"
return

test3:
    ? "coucou 3
  zz=addition(a,b) ; ici on appel une procedure
return



; ***********************************

; ****** coins des procedures *************

procedure addition(a,b)
resultat=a+b
procedure return resultat
endprocedure

voila un model dit "procedurale en Basic" :D
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Dr à écrit:
Attention si tu sors de la procédure avec un Goto tu crée un décallage dans la pile!!!
Je m'en doutais un peu mais comme Pure n'avait pas râlé... :D
De toute manière il vaut mieux utiliser la méthode à Dobro, elle a fait ses preuves. :wink:
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Merci pour tous ces exemples. Cela m'a éclairé.
Merci encore ! :lol:
Répondre