Procedure à paramètres optionnels.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Myshl
Messages : 7
Inscription : lun. 15/oct./2007 16:44

Procedure à paramètres optionnels.

Message par Myshl »

Bonjour.

Je souhaite écrire une procédure à 2 paramètres obligés plus 2 paramètres optionnels : Procedure(a,b [,c,d]).

Je sais bien utiliser une telle procédure prédéfinie, mais je ne sais pas en écrire une qui traite donc a et b et s'ils existent c et d.

Je veux écrire une procédure qui réduise un quotient d'entiers (2 paramètres) et si besoin un produit de quotients d'entiers.

Si l'un(e) d'entre vous peut et veut bien me dire comment écrire une procédure à paramètres optionnels, je l'en remercie.

Myshl
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Code : Tout sélectionner

Procedure Test(a.l, b.l, c.l = 1, d.l = 5)
; ...
EndProcedure
C'est ça que tu cherches ?

Lio :wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
brossden
Messages : 821
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Pour les paramètres optionnels il te suffit de leur mettre une valeur par defaut dans la syntaxe Procedure MaProc(a,b,c=Valeur1,D=Valeur2)

Exemple :

Code : Tout sélectionner

Procedure test(a,b,c=0,d=0)
  Debug a+b+c+d
EndProcedure

test(10,20)
test(10,20,30)
test(10,20,30,40)
Denis

Bonne Jounée à tous
brossden
Messages : 821
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Lio tu as été plus rapide que moi sur ce coup !
:lol:
Denis

Bonne Jounée à tous
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Grillé ! :D

par contre le seul problème par rapport à ce que tu veux faire c'est que tu peux passer que 3 arguments : le 3ème n'implique pas de passer un 4ème.

Mais tout dépend si tu as voulu dire

Code : Tout sélectionner

(a.l, b.l, [c.l, d.l])
ou

Code : Tout sélectionner

(a.l, b.l, [c.l, [d.l]])
Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Merde tu m'a grillé sur le grillage! :D 8)
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
brossden
Messages : 821
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Lionel_om

Sauf erreur de comprenette de ma part, les croches dans la liste des paramètres ça bug !
Denis

Bonne Jounée à tous
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

brossden a écrit :Lionel_om

Sauf erreur de comprenette de ma part, les croches dans la liste des paramètres ça bug !
Je ne comprend pas trop :? !
Je voulais dire que si Myshl ne veut pas être pas que l'on puisse utiliser sa fonction avec uniquement 3 arguments, mais seulement 2 ou 4...

Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Myshl
Messages : 7
Inscription : lun. 15/oct./2007 16:44

Eureka

Message par Myshl »

J'suis con, Brossden m'a ouvert les yeux.

Si je veux réduire un seul quotient d'entiers a/b avec une procédure prévue pour réduire un produit de quotients a/b*c/d, je n'ai qu'à appeler la procédure avec a/b*1/1.

C'est extensible à n produits de quotients !

Merci Brossden, et merci à tous.

Bon je vais quand même chercher plus propre, éviter d'appeler avec 1/1.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Une solution possible:

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Procédure avec paramètre optionnel
; Fichier : Source principal
; Version : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 15-11-2007
; Mise à jour : 15-11-2007
; Codé avec PureBasic V4.10
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure MaProcedure(a.l, b.l, c.l = 0, d.l = 0)
  
  If c = 0 And d = 0 And b <> 0
    Resultat.l = a/b
  Else
    Resultat = a/b * c/d
  EndIf

  ProcedureReturn Resultat
  
EndProcedure

Debug MaProcedure(25,5)

Debug MaProcedure(25,5, 30, 5)

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
A+
Guimauve
Répondre