-
Maintenant que vous maîtrisez les fonctions, je souhaite vous parler q'un sujet qui n'est pas du tout évident : la différence entre les variables "locales" et les variables "globales".
-
Cela ne vous dit probablement rien pour l'instant.
Commençons donc par un exemple.
-
Ce programme permet de montrer la façon
dont j'ai grandit quand j'étais enfant.
-
Comme les humains grandissent chacun différemment,
J'ai fait cette fonction : calcInches (calcul la taille en pouces)
-
Je lui passe 3 paramètres : startAge (âge de départ), endAge (âge de fin) et inchesPerYear (nombre de pouces par an)
-
La fonction calcul l'augmentation de ma taille entre ces deux âges.
-
Et elle retourne le résultat au programme qui a appelé la fonction.
-
Vous voyez, ici, entre 0 et 8 ans, j'appelle la fonction en lui passant 0, 8 et 2,5
-
car j'ai grandit de 2,5 pouces par an.
-
Le programme fait le calcul et retourne : 20.
-
Puis entre 8 et 16, j'appelle la fonction en lui passant 8, 16, puis 2
-
car j'ai grandit moins vite. Et voyez, il calcul 16.
-
OK, super ! mais maintenant je voudrait afficher la taille totale que j'ai à 16 ans.
-
Comment faire ça ?...
En regardant mon code, je me demande : quelles valeurs j'ai à ma disposition ?
-
Est-ce que j'ai quelque chose qui représente ma taille totale ?
-
J'ai une variable "totalInches" à l'intérieur de ma fonction
-
donc je peux juste l'afficher et voir ce que ça donne.
-
Donc, j'écrit tout en bas : text(totalInches, 10, 200)
-
Voyons ce que ça donne... Oh Oh !
J'ai une erreur quelque part !
-
"totalInches" n'est pas définit.
Bizarre, car cette variable est définie ici !
-
En fait le problème c'est que "totalInches" est définie
à l'intérieur de la fonction... Ici.
-
Quand on fait ça, la variable est considérée "locale".
-
Elle n'a une existence QUE dans la fonction... Ici.
-
Le code à l'extérieur de la fonction (tout ça...) ne
connaît pas les variables locales des fonctions.
-
Il ne connaît que ce qui est retournée.
-
Il ne connaît que cette valeur... pas la variable.
-
Donc, quand on essaie d'utiliser la variable "totalInches" à l'extérieur de la fonction, il ne la connaît pas !
-
Et du coup, il nous dit : "Hey, je ne connais pas cette variable, je ne peux pas l'afficher !".
-
Bon. Il y a un moyen pour que le code externe puisse utiliser cette variable.
-
C'est en transformant cette variable locale en variable "globale".
-
On peut faire ça en déplaçant la déclaration de la variable à l'extérieur de la fonction : c'est ce qu'on appelle la "portée globale".
-
Et maintenant, à l'intérieur de la fonction, on ne fait que changer sa valeur à chaque fois. On ne la déclare pas.
-
Regardez, le programme indique maintenant que le total est de 16.
-
Donc, il a trouvé la variable car on l'a rendue globale.
-
Mais, par contre, ça ne donne pas le résultat qu'on souhaite.
-
C'est seulement la valeur calculée la plus récente.
-
C'est parce qu'à chaque fois qu'on appelle la fonction, la variable "totalInches" calcul la valeur en fonction des paramètres.
-
Donc, ce qu'on a vraiment besoin de faire, c'est de créer une nouvelle variable
-
qu'on va utiliser pour spécialement calculer la somme des calculs qu'on va faire.
-
Donc revenons au code précédent avec notre variable locale.
Et créons une nouvelle variable globale "lifeInches".
-
On va la faire commencer à 0.
-
Et, à l'intérieur de la fonction, on va calculer la somme :
lifeInches += totalInches.
-
Donc, au fur et à mesure, ça va cumuler la valeur de "totalInches"
-
dans la variable globale "lifeInches".
-
Puis, tout en bas, on va afficher "lifeInches".
-
Et voilà !
La taille total !
-
Bon, ce n'est pas ma taille d'aujourd'hui...
Je suis plus grand que ça !
-
C'est parce qu'on ne naît pas avec une taille de zéro !
-
Donc, si on débute la taille à... 20, par exemple.
-
Et voilà !
Voilà ma taille (en pouces) à 16 ans !
-
-
-
-
-
-
-
-
-
-
-