Vous avez vu comment créer une fonction que je qualifierais d'« indépendante », ce qui signifie que cette dernière n'influera pas sur le reste du programme, et exécutera toujours la même chose : demander des valeurs, les additionner et afficher le résultat.
Cependant, ce style de raisonnement va vite nous limiter. Heureusement, les créateurs des langages de programmation ont pensé à un truc génial : les arguments et le retour.
Les arguments
Vous savez déjà ce qu'est un argument ; je vous l'ai dit : par exemple, dans la fonction
Write(), l'argument est la valeur placée entre parenthèses, et cette fonction effectue « Affiche-moi cette valeur ! ».
Vous l'avez donc sûrement compris, les arguments sont mis entre parenthèses... « les », oui, exactement, parce qu'il peut y en avoir plusieurs ! Et vous l'avez déjà remarqué : lorsque nous avons étudié le
BEEP, les arguments étaient la fréquence et la durée. Et tous deux séparés par... une virgule (« , ») !
Dans une fonction, les différents arguments sont séparés par une virgule. Vous savez donc comment
passer des arguments à une fonction, mais comment créer une fonction qui les reçoive ?
La ligne se présente sous la forme suivante :
Code : VB.NET | Sub Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer)
|
Vous remarquez bien les
ByVal Valeur1 As Integer ; cette syntaxe est à utiliser pour
chaque argument : le mot «
ByVal », le nom de la variable, «
As » et le type de la variable.
Ce qui nous donne, dans un cas comme notre addition :
Code : VB.NET | Sub Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer)
'Addition des deux arguments
Console.WriteLine(Valeur1 & " + " & Valeur2 & " = " & Valeur1 + Valeur2)
'Pause factice
Console.Read()
End Sub
|
Voilà par exemple le
Sub que j'ai écrit, et qui additionne deux valeurs passées en argument.
Pourquoi n'as-tu pas déclaré les variables Valeur1 et Valeur2 ?
Elles ont été automatiquement déclarées dans la ligne de création de fonction.
Si vous souhaitez appeler cette fonction, comment faut-il procéder ?
Code : VB.NET | Addition(Valeur1, Valeur2)
|
Vous avez bien compris ?
Vous n'êtes pas obligés de mettre les mêmes noms du côté de l'appel et du côté de la déclaration des arguments dans votre fonction ; la ligne Addition(Valeur10, Valeur20) aurait fonctionné, mais il faut bien sûr que « Valeur10 » et « Valeur20 » soient déclarées du côté de l'appel de la fonction.
Vous avez dû le remarquer, il faut obligatoirement utiliser tous les arguments lors de l'appel de la fonction, sauf une petite exception que je vous présenterai plus tard.
Les arguments doivent être passés dans le bon ordre !
Valeur de retour
Imaginez que vous ayez envie d'une fonction qui effectue un calcul très compliqué ou qui modifie votre valeur d'une certaine manière. Vous voudriez sans doute récupérer la valeur ? C'est ce qu'on appelle le retour :
Code : VB.NET | Function Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer) As Integer
|
C'est le morceau du bout (
As Integer) qui nous intéresse : c'est cette partie qui indiquera à la fonction le type de valeur qu'elle doit renvoyer. Dans le cas présent, il s'agit d'un type numérique, mais j'aurais très bien pu écrire
As String.
Hop hop hop, pourquoi as-tu écrit « Function » au début et non plus « Sub » ?
Je vous l'ai dit tout en haut : les
Sub ne renvoient rien, il faut donc passer par les fonctions si on veut une valeur de retour.
Code : VB.NET | Function Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer) As Integer
Dim Resultat As Integer
'Addition des deux arguments
Resultat = Valeur1 + Valeur2
'Renvoie le résultat
Return Resultat
End Function
|
Cette fonction additionne donc les deux nombres passés en argument et renvoie le résultat.
La ligne
Return Resultat est très importante car c'est elle qui détermine le retour : si vous n'écrivez pas cette ligne, aucun retour ne se fera.
Ce qui suit le Return ne sera pas exécuté ; la fonction est quittée lorsqu'elle rencontre cette instruction. Vérifiez donc bien l'ordre de déroulement de votre programme.
La valeur retournée, « Resultat » dans ce cas-ci, doit être du même type que le type de retour indiqué dans la déclaration de la fonction.
Maintenant, comment appeler cette fonction ? La forme
Addition(Valeur1, Valeur2) aurait pu fonctionner, mais où va la valeur de retour ? Il faut donc récupérer cette valeur avec un « = ».
Code : VB.NET | Resultat = Addition(Valeur1, Valeur2)
|
Une fois cet appel écrit dans le code, ce dernier additionne les deux valeurs. Je suis conscient que cette démarche est assez laborieuse et qu'un simple
Resultat = Valeur1 + Valeur2 aurait été plus simple, mais c'était pour vous faire découvrir le principe.
Cette fonction peut être directement appelée dans une autre, comme ceci par exemple :
Code : VB.NET | Console.WriteLine(Addition(Valeur1, Valeur2))
|
Sachez que les fonctions vont vous être
très utiles. J'espère qu'à présent, vous savez les utiliser.
