0:00:00.764,0:00:11.532 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". 0:00:11.532,0:00:16.096 Cela ne vous dit probablement rien pour l'instant.[br]Commençons donc par un exemple. 0:00:16.096,0:00:20.569 Ce programme permet de montrer la façon [br]dont j'ai grandit quand j'étais enfant. 0:00:20.569,0:00:24.562 Comme les humains grandissent chacun différemment,[br]J'ai fait cette fonction : calcInches (calcul la taille en pouces) 0:00:24.562,0:00:29.821 Je lui passe 3 paramètres : startAge (âge de départ), endAge (âge de fin) et inchesPerYear (nombre de pouces par an) 0:00:29.821,0:00:34.727 La fonction calcul l'augmentation de ma taille entre ces deux âges. 0:00:34.727,0:00:37.842 Et elle retourne le résultat au programme qui a appelé la fonction. 0:00:37.842,0:00:44.969 Vous voyez, ici, entre 0 et 8 ans, j'appelle la fonction en lui passant 0, 8 et 2,5 0:00:44.969,0:00:48.737 car j'ai grandit de 2,5 pouces par an. 0:00:48.737,0:00:52.713 Le programme fait le calcul et retourne : 20. 0:00:52.713,0:00:58.239 Puis entre 8 et 16, j'appelle la fonction en lui passant 8, 16, puis 2 0:00:58.239,0:01:02.383 car j'ai grandit moins vite. Et voyez, il calcul 16. 0:01:02.383,0:01:08.462 OK, super ! mais maintenant je voudrait afficher la taille totale que j'ai à 16 ans. 0:01:08.462,0:01:17.050 Comment faire ça ?...[br]En regardant mon code, je me demande : quelles valeurs j'ai à ma disposition ? 0:01:17.050,0:01:21.512 Est-ce que j'ai quelque chose qui représente ma taille totale ? 0:01:21.512,0:01:26.038 J'ai une variable "totalInches" à l'intérieur de ma fonction 0:01:26.038,0:01:30.820 donc je peux juste l'afficher et voir ce que ça donne. 0:01:30.820,0:01:36.440 Donc, j'écrit tout en bas : text(totalInches, 10, 200) 0:01:36.440,0:01:43.457 Voyons ce que ça donne... Oh Oh ! [br]J'ai une erreur quelque part ! 0:01:43.457,0:01:51.816 "totalInches" n'est pas définit.[br]Bizarre, car cette variable est définie ici ! 0:01:51.816,0:01:59.731 En fait le problème c'est que "totalInches" est définie[br]à l'intérieur de la fonction... Ici. 0:01:59.731,0:02:04.925 Quand on fait ça, la variable est considérée "locale". 0:02:04.925,0:02:09.736 Elle n'a une existence QUE dans la fonction... Ici. 0:02:09.736,0:02:15.013 Le code à l'extérieur de la fonction (tout ça...) ne [br]connaît pas les variables locales des fonctions. 0:02:15.013,0:02:18.824 Il ne connaît que ce qui est retournée. 0:02:18.824,0:02:21.824 Il ne connaît que cette valeur... pas la variable. 0:02:21.824,0:02:26.368 Donc, quand on essaie d'utiliser la variable "totalInches" à l'extérieur de la fonction, il ne la connaît pas ! 0:02:26.368,0:02:31.345 Et du coup, il nous dit : "Hey, je ne connais pas cette variable, je ne peux pas l'afficher !". 0:02:31.345,0:02:37.609 Bon. Il y a un moyen pour que le code externe puisse utiliser cette variable. 0:02:37.609,0:02:41.871 C'est en transformant cette variable locale en variable "globale". 0:02:46.133,0:02:50.396 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". 0:02:50.396,0:02:58.655 Et maintenant, à l'intérieur de la fonction, on ne fait que changer sa valeur à chaque fois. On ne la déclare pas. 0:02:58.655,0:03:03.224 Regardez, le programme indique maintenant que le total est de 16. 0:03:03.224,0:03:06.648 Donc, il a trouvé la variable car on l'a rendue globale. 0:03:06.648,0:03:10.315 Mais, par contre, ça ne donne pas le résultat qu'on souhaite. 0:03:10.315,0:03:11.712 C'est seulement la valeur calculée la plus récente. 0:03:11.712,0:03:18.429 C'est parce qu'à chaque fois qu'on appelle la fonction, la variable "totalInches" calcul la valeur en fonction des paramètres. 0:03:18.429,0:03:22.230 Donc, ce qu'on a vraiment besoin de faire, c'est de créer une nouvelle variable 0:03:22.230,0:03:29.413 qu'on va utiliser pour spécialement calculer la somme des calculs qu'on va faire. 0:03:29.413,0:03:38.378 Donc revenons au code précédent avec notre variable locale.[br]Et créons une nouvelle variable globale "lifeInches". 0:03:38.378,0:03:41.004 On va la faire commencer à 0. 0:03:41.004,0:03:49.976 Et, à l'intérieur de la fonction, on va calculer la somme :[br]lifeInches += totalInches. 0:03:49.976,0:03:53.266 Donc, au fur et à mesure, ça va cumuler la valeur de "totalInches" 0:03:53.266,0:03:56.403 dans la variable globale "lifeInches". 0:03:56.403,0:03:59.867 Puis, tout en bas, on va afficher "lifeInches". 0:03:59.867,0:04:03.838 Et voilà ! [br]La taille total ! 0:04:03.838,0:04:06.691 Bon, ce n'est pas ma taille d'aujourd'hui...[br]Je suis plus grand que ça ! 0:04:06.691,0:04:10.509 C'est parce qu'on ne naît pas avec une taille de zéro ! 0:04:10.509,0:04:13.484 Donc, si on débute la taille à... 20, par exemple. 0:04:13.484,0:04:17.265 Et voilà ![br]Voilà ma taille (en pouces) à 16 ans ! 0:04:17.265,0:04:22.067 0:04:22.067,0:04:27.499 0:04:27.499,0:04:33.288 0:04:33.288,0:04:37.816 0:04:37.816,0:04:42.839 0:04:42.839,0:04:47.024 0:04:47.024,0:04:51.370 0:04:51.370,0:04:54.646 0:04:54.646,0:04:57.564 0:04:57.564,0:05:01.674 0:05:01.674,0:05:05.674