Page 2 sur 5
Publié : sam. 08/oct./2005 18:15
par Chris
D'après ce que j'ai vu, en php ou en PureBasic, pour les procédures, c'est pareil.
Renvoi d'une valeur par une fonction
La fonction peut renvoyer une valeur (et donc se terminer) grâce au mot-clé return. Lorsque l'instruction return est rencontrée, la fonction évalue la valeur qui la suit, puis la renvoie au programme appelant (programme à partir duquel la fonction a été appelée).
Une fonction peut contenir plusieurs instructions return, ce sera toutefois la première instruction return rencontrée qui provoquera la fin de la fonction et le renvoi de la valeur qui la suit.
En PureBasic aussi, tu peux avoir plusieurs ProcedureReturn dans une procedure.
Publié : sam. 08/oct./2005 19:29
par LeCyb
@Dri, merci mais j'ai toujours pas capté
@Dobro, en gros tu veux un type Variant mais faut bien te dire que c'est la porte ouverte au "foutoir" dans les codes sources (suffit de voir du code VB6 :p).
En plus je suis persuadé que c'est pas un simple lifting du compilateur qu'il faudra faire et je crois que Fred a déjà pas mal de taff.
Publié : sam. 08/oct./2005 19:47
par djes
LeCyb a écrit :
@Dobro, en gros tu veux un type Variant mais faut bien te dire que c'est la porte ouverte au "foutoir" dans les codes sources (suffit de voir du code VB6 :p).
En plus je suis persuadé que c'est pas un simple lifting du compilateur qu'il faudra faire et je crois que Fred a déjà pas mal de taff.
+1
Publié : sam. 08/oct./2005 20:17
par Backup
ce sera toutefois la première instruction return rencontrée qui provoquera la fin de la fonction et le renvoi de la valeur qui la suit .
tout le blem est la !!
tu trouve ça cool toi ?
moi je demande des retour de procedure
simultanés !!
et pas ce goulot d'etranglement !
le type variant , n'est pas plus bordelique , c'est l'utilisation que l'on en fait !!
mais bon !!

[/b]
Publié : sam. 08/oct./2005 20:38
par Chris
Dobro a écrit :tout le blem est la !!
tu trouve ça cool toi ?
J'ai pas dit que c'était cool, j'ai seulement dit qu'en php, c'était comme en Pure

Publié : sam. 08/oct./2005 20:56
par Dr. Dri
PHP et VB sont des langages interprêtés
PB est compilé
la différence se situe là
Dri
Publié : sam. 08/oct./2005 21:19
par Backup
PHP et VB sont des langages interprêtés
PB est compilé
la différence se situe là
ha bah ça c'est une info !!
serieusement !
je demande donc procedure return simultanée
pouvoir entrer plusieurs parametres dans une procedure (comme maintenant)
et pouvoir recuperer plusieurs valeurs de nature differentes en sortie de procedure serai un super truc !!
c'est ma demande au pere noel !

Publié : sam. 08/oct./2005 21:37
par djes
oui, ça c'est vrai que ça serait utile. Tous les langages de haut niveau le permettent.
Publié : dim. 09/oct./2005 0:50
par Oliv
Mais je comprends pas comment peut-on récupérer les valeurs de l'autre coté ?
En faisant Procedure(Par1,PArX,Retour1,Retourx) ???
Publié : dim. 09/oct./2005 8:00
par Backup
oui ta solution est employé dans l'omicron basic !
sinon on pourrai avoir
Code : Tout sélectionner
Procedure test (a,b,c)
e=a*b
f=b*c
g=a*c
ProcedureReturn e,f,g ; sert a signaler a purebasic
EndProcedure
e,f,g=test (2,5,6)
; e=10
; f=30
; g=12
Publié : dim. 09/oct./2005 11:24
par djes
En Pascal, lorsque l'on utilise une syntaxe particulière (var), la procédure renvoie les paramètres dans les arguments entrants.
En gros, ça donnerait
Code : Tout sélectionner
procedure maproc(toto, var titi, tutu)
toto+1
titi+1
tutu+1
endprocedure
;***
toto.l=0
titi.l=0
tutu.l=0
maproc(toto, titi, tutu)
debug toto ;toto=0
debug titi ;titi=1
debug tutu ;tutu=1
Publié : dim. 09/oct./2005 11:36
par Backup
oui !

ce principe existait aussi en omicron basic !

Publié : dim. 09/oct./2005 12:27
par jerexgrz
sinon pour les procedures : on pourrait faire comme ca :
Code : Tout sélectionner
...
Move_Unit ( X, Y)
...
procedure Move_Unit(Xs,Ys)
procedurereturn Xs,Ys
endprocedure
Sinon, faire comme ca :
et automatiquement, lorsque l'on appelle la fonction Move_Unit, X et Y sont envoyés, l'ordi fait le calcul, et renvoi tout simplement les nouvelles valeurs dans X et Y. Si vous preferez dans la procedure, il s'agirait simplement de tampon Xs et Ys.
aussi ne pas oublier de mettre tous les caracteres ASCII correctement dans purebasic !
Code : Tout sélectionner
structure unite.l
temptab (x,y,z, ...) <= ca serait bien ca aussi !
endstructure
Voila![/code]
Publié : dim. 09/oct./2005 17:03
par bernard13
et ça sert a quoi???????
Publié : dim. 09/oct./2005 17:29
par Backup
l'avantage de ma methode
Code : Tout sélectionner
Procedure test (a,b,c)
e=a*b
f=b*c
g=a*c
ProcedureReturn e,f,g ; sert a signaler a purebasic
EndProcedure
e,f,g=test (2,5,6)
; e=10
; f=30
; g=12
c'est justement de separer les entrées et les sorties !!
de cette façon aucune contraintes !!
car on peut avoir des entrées qui soient TYPés de façon diferente de la sortie !
et puis les donnees entrées peuvent ne rien avoir a faire avec les sorties !
par exemple en fonction de calcul de valeurs d'entrés ont peut avoir des variables chaines qui nous sortirai en clair , un message !!
c'est un exemple ....
je pense que la methode que je donne est la plus libre de ce qu'on pourrai faire de cette facilité !!

et puis les valeur de sorties peuvent etre plus nombreuses que les valeurs (ou chaine) d'entrées !
@bernard13
Franchement prend la peine de lire le topic depuis le debut !!