Page 2 sur 4
Publié : ven. 22/juin/2007 11:10
par Backup
bon en definitive si !!
on peu !! mais en OMIKRON Basic !!
je savais bien que j'avais vu ça quelque part !!
en omikron basic pour recuperer plusieurs valeur il suffit de faire preceder les variables de parametres de la procedure de la lettre" R"
comme ça :
on defini la procedure :
DEF PROC plus_court (Rcpt, Rnom)
LOCAL i,gt : rem 2 variable locales
FOR i = max(cpt,nom) to 1 STEP -1
IF frac(cpt/i)=0 AND frac(nom/i)=0 THEN gt=i:EXIT
NEXT i
cpt=cpt/gt:nom=nom/gt
RETURN
le prg qui utilise la procedure :
x=36:y=42
plus_court(x,y):REM pas besoin de metre les 'R' pour l'appel des procedures
PRINT x,y
les
x=36 et
y=42
deviennent apres l'appel de la procedure
x=6 et
y=7 !!!
bien sur le nombre de parametres retournés, correspond au nombre de parametre précédé d'un
R
Publié : mar. 26/juin/2007 9:38
par jerexgrz

ce serait vraiment utile !!! je passe pleins d'infos par les procedures du style: X, Y ,X2 ,Y2, ....
Publié : mar. 26/juin/2007 13:04
par Backup
jerexgrz a écrit :
ce serait vraiment utile !!! je passe pleins d'infos par les procedures du style: X, Y ,X2 ,Y2, ....
on m'a repondu sur le forum anglais , et par la meme donné une astuce toute bete, mais qui marche bien, et qui n'ajoute pas de code excessif
voici l'astuce !!
Code : Tout sélectionner
Procedure divise_par_deux(x,Y)
x2=PeekL(x)/2
y2=PeekL(Y)/2
PokeL(x,x2)
PokeL(Y,y2)
EndProcedure
CallDebugger
x = 10
Y = 50
divise_par_deux(@x,@Y)
Debug x
Debug Y
ça reste lourding quand meme hein ...

Publié : mar. 26/juin/2007 13:07
par Flype
cf titre :
[...] et procedure dll
Oui, ok çà serait sympa mais une DLL respecte un format qui n'est pas choisit par Fred & co. Une DLL respecte au contraire un schéma prédéfini par microsoft et il n'est donc pas possible de 'bidouiller' les entrées/sorties d'une lib. Et c'est pour cette même raison que Fred ne peut pas 'prototyper' une fonction DLL qui renvoie une chaine de caractères ( ie. Prototype
.s maFonction() ). Ou alors cela impliquerait qu'une DLL faite avec PureBasic ne soit pas utilisable depuis un autre langage, hum trop utile...
Publié : mar. 26/juin/2007 13:13
par Flype
Dobro a écrit :voici l'astuce !!
Code : Tout sélectionner
Procedure divise_par_deux(x,Y)
x2=PeekL(x)/2
y2=PeekL(Y)/2
PokeL(x,x2)
PokeL(Y,y2)
EndProcedure
CallDebugger
x = 10
Y = 50
divise_par_deux(@x,@Y)
Debug x
Debug Y
je préfère,
exactement dans le même esprit, cette forme là - qui est moins lourde et plus propre surtout (et qui perso résout tous mes problèmes du genre depuis pb3.x) :
Code : Tout sélectionner
Procedure divise_par_deux(*x.Long, *y.Long)
*x\l / 2
*y\l / 2
EndProcedure
CallDebugger
x = 10
y = 50
divise_par_deux(@x, @y)
Debug x
Debug y
Publié : mar. 26/juin/2007 13:18
par Flype
you're welcome

Publié : mar. 26/juin/2007 13:24
par Backup
Flype a écrit :you're welcome

Merci Flype ça marche en fait tres bien !!
Code : Tout sélectionner
Procedure divise_par_deux(*x.Long, *y.Long)
*x\l / 2
*y\l / 2
EndProcedure
CallDebugger
x = 10
Y = 50
divise_par_deux(@x, @Y)
Debug x
Debug Y
Publié : mar. 26/juin/2007 18:44
par Dr. Dri
ce qui serait réellement bien comme nouveauté, c'est l'affectation de structure!
Ca résoudrait le besoin de retour multiple et ca ouvrirai énormément de portes!
Dri
Publié : mar. 26/juin/2007 19:17
par Flype
bon,
étant donné que cette demande ne verra probablement pas d'implémentation avant des lustres.....
et si on faisait un tuto sur
ProcedureReturn: Renvoyer plusieurs arguments
parce que des solutions il y en a, et à mon sens ces solutions ne sont pas du bricolage, juste des méthodes connues de programmation.
certes, une procédure capable de renvoyer "une liste d'arguments" (je préfère ce terme à 'plusieurs arguments') serait pratique mais là encore les listes ne sont pas pour demain.
d'ailleurs c'est quoi une liste (à ne pas confondre avec liste chaînée) ?
en math, on appelle çà souvent 'une suite' ou 'sequence' (seq) en anglais.
c'est tout bête, mais ca n'existe pas en pb, çà ressemblerait à çà :
Code : Tout sélectionner
pair.seq = (0, 2, 4, 6, 8)
impair.seq = (1, 3, 5, 7, 9)
felin.seq = ("chat", "tigre", "lion", "guépard", "panthère")
nums.seq = pair + impair
debug nums ; --> (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
debug felin[2] ; --> lion
mes_listes.seq = ( pair, impair, felin, nums )
debug mes_listes[2][4] ; --> "panthère"
debug mes_listes[2][-1] ; --> "panthère"
debug mes_listes[2][-2] ; --> "guépard"
Publié : mar. 26/juin/2007 19:42
par Backup
Flype a écrit :
en math, on appelle çà souvent 'une suite' ou 'sequence' (seq) en anglais.
c'est tout bête, mais ca n'existe pas en pb, çà ressemblerait à çà :
ça existe en LISP et en LOGO <-- qui est un dérivé du LISP

Publié : mar. 26/juin/2007 19:57
par Flype
exactement (ou python aussi

)
Publié : mer. 27/juin/2007 10:08
par lionel_om
Dobro a écrit :ça existe en LISP et en LOGO <-- qui est un dérivé du LISP

Tu es sûr

.
LISP, c'est bien Allegr Commum LISP : le truc avec les parenthèses de partout (j'ai fait un solveur de labyrinthe avec

) ?
Car le LOGO c'est un simple langage.
Je ne vois pas le rapprochement au niveau syntaxique... Ou je ne regarde pas du bon côté ?
Lio
Publié : mer. 27/juin/2007 12:55
par Backup
lionel_om a écrit :Dobro a écrit :ça existe en LISP et en LOGO <-- qui est un dérivé du LISP

Tu es sûr

.
LISP, c'est bien Allegr Commum LISP : le truc avec les parenthèses de partout (j'ai fait un solveur de labyrinthe avec

) ?
Car le LOGO c'est un simple langage.
Je ne vois pas le rapprochement au niveau syntaxique... Ou je ne regarde pas du bon côté ?
Lio
voir ici :
http://fr.wikipedia.org/wiki/Logo_(langage)
le LOGO n'est pas un simple Langage !!!
il fait partie des language dit de 5em generation !! (rien que ça !!)
il ne faut pas se fier a l'aspect Graphique du LOGO, (que je reprends d'ailleurs dans mon PUREGOLO)
c'est tres puissant l'air de rien !! ...
en logo les listes peuvent contenir des ordres !!!
REPETE 4[AV10 TD90]
la meme chose en PureGolo
repete 4
AV 10
TD 90
fin_repete

Publié : mer. 27/juin/2007 17:24
par lionel_om
Dobro a écrit :en logo les listes peuvent contenir des ordres !!!
REPETE 4[AV10 TD90]
la meme chose en PureGolo
repete 4
AV 10
TD 90
fin_repete

Je sais je viens de créer un interpréteur Logo avec JAVA/AntLr pour un projet scolaire (dailleurs faudra que je regarder si on peut l'adapeter à PB, mais ca va être dur car c'est du langage objet et très ciblé Java). Ca m' a fait pensé à toi avec ton PureLogo/Golo 2D/3D
Désolé pour le "simple langage". Je voulais parler de syntaxe simple.
J'v regarder ton lien Wikipédia, car ca m'intéresse tout ça (ayant manipuler un peu les 2 langages, je sais un peu de quoi ca parle... je ne serai pas trop perdu !!!). Mais c'est vrai que ça m'étonne car leur syntaxe est littéralement différente.
Lio
Publié : lun. 27/août/2007 23:00
par Ollivier
(je débroussaille un peu les araignées de ce post)
En fait, actuellement, et j'espère ne pas dire une bêtise, PB retourne une seule valeur.
Mh...