Procedure à paramètres optionnels.
Procedure à paramètres optionnels.
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
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
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Code : Tout sélectionner
Procedure Test(a.l, b.l, c.l = 1, d.l = 5)
; ...
EndProcedure
Lio

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
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 :
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
Bonne Jounée à tous
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Grillé !
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
ou
Lio

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])
Code : Tout sélectionner
(a.l, b.l, [c.l, [d.l]])
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Merde tu m'a grillé sur le grillage!



Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Je ne comprend pas tropbrossden a écrit :Lionel_om
Sauf erreur de comprenette de ma part, les croches dans la liste des paramètres ça bug !

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 !
Participez à son extension: ajouter vos programmes et partagez vos codes !
Eureka
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.
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.
Une solution possible:
A+
Guimauve
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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Guimauve