Wishlist - V4.0

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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.
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

@Dri, merci mais j'ai toujours pas capté :roll:

@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.
Vive le thread-safe !
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ? 8O

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]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 :lol:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

PHP et VB sont des langages interprêtés
PB est compilé

la différence se situe là

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

Message 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 !! :lol: :lol:

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 !!

Code : Tout sélectionner

procedure return a.b,b.w,c.l,t$,e.f 

c'est ma demande au pere noel !

:D
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

oui, ça c'est vrai que ça serait utile. Tous les langages de haut niveau le permettent.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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) ???
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui ta solution est employé dans l'omicron basic ! :D

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 
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message 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

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

Message par Backup »

oui ! :D ce principe existait aussi en omicron basic ! :D
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message 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 :

Code : Tout sélectionner

procedure Move_Unit(Xs,Ys)
...
endprocedure
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]
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

et ça sert a quoi???????
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 .... :D

je pense que la methode que je donne est la plus libre de ce qu'on pourrai faire de cette facilité !! :D
et puis les valeur de sorties peuvent etre plus nombreuses que les valeurs (ou chaine) d'entrées ! :D

@bernard13

Franchement prend la peine de lire le topic depuis le debut !!
Répondre