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

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

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

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 ... :lol:

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

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

Publié : mar. 26/juin/2007 13:24
par Backup
Flype a écrit :you're welcome :wink:
Merci Flype ça marche en fait tres bien !! :oops: :D

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!

Code : Tout sélectionner

a.point = b.point
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

:idea: :?:

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

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 :D
Tu es sûr 8O .
LISP, c'est bien Allegr Commum LISP : le truc avec les parenthèses de partout (j'ai fait un solveur de labyrinthe avec :D ) ?
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é ? :lol:

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 :D
Tu es sûr 8O .
LISP, c'est bien Allegr Commum LISP : le truc avec les parenthèses de partout (j'ai fait un solveur de labyrinthe avec :D ) ?
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é ? :lol:

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

repete 4
AV 10
TD 90
fin_repete :D

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

repete 4
AV 10
TD 90
fin_repete :D
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

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