Les fonctions
Dans ce tutoriel je vais vous expliquer plus en détail les fontions.
Nous verrons :
Que les fonctions retourne une valeur ou non.
Les paramètres dans les fonction
Petit chapitre sur la récursivité
___________________________________________________________________
Return
Vous connaissez déjà surement la structure d'une fonction :
Func Nom de Ma Fonction()
;Et votre fonction ici
EndFunc
Et maintenant, nous allons voir qu'une fonction peut aussi retourner une valeur. C'est à dire que lorsque vous appelez une fonction, celle ci va en quelque sorte être remplacée par une variable : celle qu'elle retourne.
Bon, rien de tel qu'un code pour comprendre :
$monTexte = direBonjour() ;On créé et on affecte comme valeur ce que la fonction direBonjour retourne.
MsgBox(0, "Bonjour", $monTexte) ;On l'affiche dans une boite de dialogue
func direBonjour()
$texte = "Salut ! Comment ça va ?" ;La variable $texte vaut "Salut ! Comment ça va?"
Return $texte ;La fonctino retourne $texte gràce à Return
EndFunc
Vous avez compris ? La variable $monTexte prend comme valeur le retour de la fonction direBonjour qui est la variable $texte .
Ce code est assez long pour ce qu'il fait, on peut déjà le raccourcir :
1. Une fonction n'est pas obligé de retourner une variable. On pouvait donc écrire directement :
Return "Salut ! Comment ça va ?"
2. On peut appeler une fonction directement dans une autre fonction, donc :
MsgBox(0, "Bonjour", direBonjour())
Ce qui donne au final :
MsgBox(0, "Bonjour", direBonjour()) ;On appelle la fonction direBonjour directment dans les paramètres de msgBox.
func direBonjour()
Return "Salut ! Comment ça va ?" ;On retourne directement une chaine de charactère
EndFunc
Une fonction peut retourner tout les type : entier, chaine de caractère, etc. .
Le Return met directement fin à la fonction. (merci pour le commentaire qui m'a permit de compléter ;) )
_____________________________
Les paramètres
C'est quoi un paramètre ? J'en ai déjà vu ?
Un paramètre s'envoie à une variable pour qu'elle puisse travailler dessus. Eh oui, tu en as déjà vu, regarde la fonction msgBox (je l'ai un peu raccourci pour ne pas vous embrouiller) :
MsgBox(flag, titre, texte)
Eh bien dans cette fonction, les paramètres sont flag, titre, et texte. On envoie ces variables à la fonctions.
Vous avez déjà esseyé de faire ceci ?
$ma_var = 5;
afficher()
func afficher()
MsgBox(0, "Mon Variable", $ma_var)
EndFunc
Ce code marche très bien. Il affiche la variable $ma_var. Mais à chaque fois que vous voudrez afficher une autre variable, vous devrez modifier $ma_var. Inconvénients :
1. Si vous voulez garder la variable $ma_var, il faudra en recréé une ($ma_var2 = $ma_var)
2. C'est long.
C'est pour cela que l'on utilise les paramètres (ce qui se situe entre les parenthèse d'une fonction). Comment en créé un ? C'est très simple, regarder, ce code va afficher la variable que vous lui enverrez en paramètre :
afficher("Salut")
afficher(4)
func afficher($var)
MsgBox(0, "", $var)
EndFunc
Pour comprendre le fonctionnement, faîtes des tests. Je vais vous donner un petit exercice :
Faite une fonction qui retourne le triple du paramètre que vous lui envoyez.
Réponse:
Cliquez pour révéler
Cliquez pour masquer
MsgBox(0, "Nombre Tripler", tripler(4))
Func tripler($nb)
Return $nb * 3
EndFunc
Envoyer plusieurs paramètres :
func mafonction ($param1, $param2, $param3)
Les paramètres par défaut :
Code qui ne fonctionne pas :
afficher("Salut")
Func afficher($texte, $info)
If $info == 0 Then
MsgBox(0, "", $texte)
Else
MsgBox(64, "", $texte)
EndIf
EndFunc
Explication : La fonction comprend 2 paramètres, et lors de l'appelle on ne lui en envoie que un.
Code qui fonctionne :
afficher("Salut", 0)
Func afficher($texte, $info)
If $info == 0 Then
MsgBox(0, "", $texte)
Else
MsgBox(64, "", $texte)
EndIf
EndFunc
On a bien envoyé 2 paramètres.
Mais bon, si on n'a pas envie que la boite de dialogue soit ouverte avec la petite image info, on est obligé d'envoyé 0 à la fonction. Eh bien plus maintenant, car je vais vous apprendre les paramètres par défaut.
Leur fonctionnement est simple, lorsque vous créez la fonction, vous mettez une valeur au paramètre qui vous semble inutile parfois. On lui met une valeur par défaut. Ici, nous voulong mettre 0. On va donc faire :
Func afficher($texte, $info = 0)
Le code complet :
afficher("Salut")
Func afficher($texte, $info = 0)
If $info == 0 Then
MsgBox(0, "", $texte)
Else
MsgBox(64, "", $texte)
EndIf
EndFunc
Et voilà !
Vous arrivez maintenant à créer vos propre fonction personnalisée. Si vous avez des questions, n'hésitez pas à demander, j'essaierais d'y répondre de mon mieux.
La récursivité
Je ne m'y connait pas très bien en récursivité, mais juste assez pour vous expliquer comment s'en servir. On dit qu'un qu'un programme est récursif lorsqu'il s'appelle lui même. C'est à dire lorsque une fonction s'appelle elle même jusqu'à ce qu'elle n'en ai plus besoin.
Je vais juste vous donner un exemple concret (en code), et je vous laisserez méditer dessus. Une fois que vous aurez compris, je vous laisse libre de rechercher des tutos plus approfondis. [Search)
Je vais vous donner une fonction AJZ (additionner jusqu'à zéro), c'est à dire que si vous envoyez 4 à la fonction, la fonction va retourner 4+3+2+1 .
MsgBox(0, "", AJZ(4))
Func AJZ($nb)
If($nb<=1) Then
Return 1
EndIf
Return $nb + AJZ($nb-1)
EndFunc
Vous pouvez le modifier, il marche. Je n'en dis pas plus, je ne veux pas dire de bêtises (Wink)