Contenu principal
Apprendre à coder
Cours : Apprendre à coder > Chapitre 1
Leçon 9: Les fonctionsRésumé : les fonctions
Voici un résumé de ce que nous avons couvert dans ce module sur les fonctions.
Il nous arrive souvent, quand nous écrivons des programmes, de vouloir réexécuter des blocs de code, sans avoir à les réécrire entièrement. Pour cela, nous avons besoin d'un moyen pour regrouper du code, en lui donnant un nom, afin de pouvoir l'appeler, plus tard, par ce nom. C'est ce que nous appelons une fonction.
Pour créer une fonction, on doit d'abord la déclarer et lui donner un nom, comme avec une variable. Puis on la fait suivre de sa définition :
var direBonjour = function() {
};
Nous pouvons mettre n'importe quel code à l'intérieur de cette fonction - une seule instruction, plusieurs instructions - cela dépend de ce que nous voulons faire. Par exemple, dans cette fonction, nous allons juste afficher un message à un endroit aléatoire :
var direBonjour = function() {
text("Bonjouuuuuur !", random(200), random(200));
};
Maintenant, si tout ce que nous faisons est déclarer la fonction, rien ne se passera. Pour que l'ordinateur exécute le code qui est à l'intérieur de la fonction, nous devons "appeler" la fonction, en écrivant son nom, suivie de parenthèses vides :
direBonjour();
Ainsi, nous pouvons l'appeler quand nous voulons, et autant de fois que nous voulons !
direBonjour();
direBonjour();
direBonjour();
Il nous arrive souvent de vouloir personnaliser des fonctions, pouvoir dire au programme : "Eh bien, exécute ce code, mais change quelques petites choses ici et là". Pour que de cette façon, nous ayons du code à la fois réutilisable et flexible, le meilleur des deux mondes. Nous pouvons arriver à faire cela en spécifiant des "paramètres" à une fonction, en les utilisant pour changer la façon dont elle fonctionne et en passant des arguments quand nous appelons la fonction.
Par exemple, et si nous voulions indiquer où afficher précisément un message, comme nous le faisons pour dessiner des rectangles et des ellipses ? On pourrait imaginer appeler la fonction comme cela (afin d'afficher le message à un endroit précis) :
direBonjour(50, 100);
direBonjour(150, 200);
Pour ce faire, nous devons modifier notre définition de fonction
direBonjour
afin qu'elle sache qu'elle va recevoir deux arguments et qu'elle les utilise :var direBonjour = function(xPos, yPos) {
text("Bonjour !", xPos, yPos);
};
Les arguments qui sont passés en paramètres à la fonction deviennent comme des variables à l'intérieur de la fonction. Leurs noms correspondent aux noms donnés entre parenthèses. Par exemple, on pourrait les renommer comme cela pour obtenir quelque chose de plus court :
var direBonjour = function(x, y) {
text("Bonjour !", x, y);
};
Nos fonctions peuvent accepter un nombre quelconque d'arguments - zéro, un, deux ou plus. Nous pouvons également décider de changer la fonction pour qu'elle affiche un nom passé en paramètre :
var direBonjour = function(monNom) {
text("Bonjour, " + monNom, random(200), random(200));
};
Et nous l’appellerions de cette manière :
direBonjour("Winston");
direBonjour("Christophe");
Nous pourrions aussi combiner ces idées et faire qu'elle accepte trois paramètres, pour le nom et pour la position :
var direBonjour = function(monNom, x, y) {
text("Bonjour " + monNom, x, y);
};
Et l'appeler comme cela :
direBonjour("Winston", 10, 100);
Cela dépend vraiment de ce que vous voulez que votre fonction fasse, et de quelle façon vous voulez qu'elle soit personnalisée. Vous pouvez toujours commencer sans argument et ensuite en ajouter au fur et à mesure que vous en avez besoin.
En fait, vous avez déjà appelé beaucoup de fonctions jusqu'à maintenant en réalisant des dessins et des animations (avec les fonctions
rect
, ellipse
, triangle
, etc...). Toutes ces fonctions sont celles qui proviennent de la bibliothèque ProcessingJS, et que nous vous mettons à disposition dans vos programmes ici, afin que vous puissiez les utiliser en permanence. Nous avons choisi ces fonctions pour vous parce que nous pensons qu'elles sont utiles. Maintenant, c'est à votre tour de décider quelles fonctions supplémentaires vous souhaitez créer et utiliser dans vos propres programmes. Par exemple, nous fournissons la fonction ellipse
, mais nous ne fournissons pas de fonction pour dessiner un chat
- si votre programme a besoin de beaucoup de chats différents dans des endroits différents, vous devrez créer votre propre fonction de dessin de chat !Les fonctions ont également d'autres capacités. Nous pouvons les utiliser pour prendre certaines valeurs (en argument), réaliser des calculs avec et retourner une nouvelle valeur. Pensez à toutes les choses que vous pouvez faire avec une calculatrice - additionner des valeurs, soustraire, calculer la racine carrée, multiplier, etc.. Tout ces calculs, par exemple, peuvent être réalisés en utilisant des fonctions qui prennent des arguments en entrée et qui, ensuite, une fois le calcul effectué, retourne le résultat. Dans ce cas, les fonctions utilisent des nombres en argument et retourne le résultat en utilisant une instruction de retour ("return" en anglais). L'exemple suivant additionne deux nombres et retourne le résultat :
var addNombres = function(num1, num2) {
var resultat = num1 + num2;
return resultat;
};
var somme = addNombres(5, 2);
text(somme, 200, 200); // Affiche "7"
L'instruction return fait deux choses : premièrement, elle retourne une valeur à qui a appelée la fonction (c'est pour cela qu'on a utilisé la variable
somme
pour stocker le résultat) ; deuxièmement elle termine immédiatement la fonction. Cela signifie que, dans l'exemple ci-dessous, la dernière ligne de code n'est jamais exécutée :var addNombres = function(num1, num2) {
var resultat = num1 + num2;
return resultat;
resultat = resultat * 2; // aucun sens !
};
Les fonctions avec retour de valeur sont très utiles pour la manipulation des données dans les programmes, et elles peuvent être combinées ensemble dans des expressions :
var grosseSomme = addNombres(2, 5) + addNombres(3, 2);
Vous pouvez même appeler des fonctions à l'intérieur d'appels de fonction, bien que cela soit un peu difficile à lire parfois :
var enormeSomme = addNombres(addNombres(5, 2), addNombres(3, 7));
Maintenant que vous savez comment créer des fonctions qui intègrent des blocs de code à réutiliser, nous devons introduire un concept important : la différence entre les variables locales et les variables globales.
Lorsque nous déclarons une nouvelle variable à l' intérieur d'une fonction, nous disons que cette variable est locale à cette fonction. Car elle est seule à pouvoir la connaître et l'utiliser (le reste du programme, en dehors de la fonction, ne le peut pas, car elle n'existe plus). Dans la fonction suivante, la variable
resultatLocal
est une variable locale :var addNombres = function(num1, num2) {
var resultatLocal = num1 + num2;
println("Le résultat local est : " + resultatLocal);
return resultatLocal;
};
addNombres(5, 7);
println(resultatLocal); // oh noes !
Lorsque nous exécutons ce code, nous obtenons une erreur sur la dernière ligne : "resultatLocal n'est pas définie". La variable est définie seulement à l'intérieur de la fonction, parce qu'elle y a été déclarée avec la ligne
var resultatLocal =
, mais pas à l'extérieur.Lorsque nous déclarons une variable à l'extérieur de nos fonctions, nous disons que c'est une variable globale. Car toutes les fonctions peuvent y accéder et l'utiliser comme elles veulent.
var resultatGlobal;
var addNombres = function(num1, num2) {
resultatGlobal = num1 + num2;
println("Le résultat global est : " + resultatGlobal);
};
addNombres(5, 7);
println(resultatGlobal);
Quand nous exécutons le code ci-dessus, nous n'obtenons plus d'erreur, parce que nous avons déclaré
resultatGlobal
à l'extérieur de la fonction. Nous y avons accès partout.Chaque langage de programmation est différent, mais en utilisant JavaScript, il est important de savoir que les variables ont une "portée fonctionnelle". Une fonction a accès aux variables locales qui ont été déclarées en son sein et aux variables globales qui ont été déclarées à l'extérieur, mais elle n'a pas accès aux variables locales déclarées dans les autres fonctions.
Vous souhaitez rejoindre la discussion ?
- j'ai une question !
j'ai fait un résumé de la fonctionnalité que je cherche par cette extrait :
var test = 3
var testest = function(xtest) {
xtest = xtest+3
}
testest(test);
alert(test);
ce que j'ai remarqué en exécutant ce code c'est que la fonction utilise la variable "test" mais il conserve pas son nom ce qui fait que quand je l'appel dans le "alert(test);" il m'affiche sa valeur non changer par la fonction (ce qui fait 3)
or moi ce que je cherche c'est de faire en sorte le nom de la variable qui rentre dans la fonction sois conservé et altéré par la fonction pour que je puisse utiliser sa nouvelle valeur.
ps: j'ai pas trouver de meilleur endroit pour poser ma question.(13 votes)- Dans ta fonction testest, tu a modifier la variable xtest et non la variable test, donc pour régler ton problème, soit tu affiche le résultat de la variable xtest dans la fonction alert, soit tu assigne le résultat de la variable xtest a la variable test(8 votes)
- le fonction sert a quoi(0 vote)
- Bonjour,
Faisons une analogie:
Quand nous naissons (Quand tu veux faire un programme)
nous ne savons pas parler (il n'y a aucune commande à l'écran)
nous savons manger, dormir (il y a des fonctions comme draw, text...)
nous apprenons des mots (nous créons des fonctions)
avec leur définition (avec des commandes à l'intérieur des fonctions)
nous utilisons ensuite les mots (nous utilisons ensuite les fonctions)
pour qu'on nous comprenne (pour que le programme les applique)
Est-ce que c'est plus clair ?
Bonne journée.(21 votes)
- Bonjour, tout d'abord j'aimerais vous féliciter pour ce travail remarquable que vous êtes entrain d'accomplir.
Mais j'ai une question , est ce qu'il est possible de dessiner en créer ses propres variables par exemple (var draw3d) pour des objets en 3D et en exécutant ce code, fonction puisse utiliser cette variable?(5 votes) - Pour les fonctions predefinies par exemple draw ()ou mouseMove(), si nous les mettons devant un var (var draw=function(){};),est ce que leurs fonctionnalites changeront oubien c'est une déclaration d'une nouvelle fonction ?(3 votes)
- Cette méthode de déclaration de fonction est appelé déclaration de fonction avec variable. Au lieu de déclarer une fonction en lui attribuant un nom, c'est l'inverse qui est fait ici en déclarant une variable en lui attribuant une fonction anonyme.(2 votes)
- je n'est pas tout a fait compris.
quelqu'un peut-il faire un résumé plus simple ?
merci(3 votes)- Si j'ai bien compris ta question et si moi j 'ai bien compris :-;
Je pense que pour les fonctions prédéfinies cela ne change rien.(puisqu'ils sont déjà prédéfinies )
Si tu as compris autre chose entre temps n'hésite pas !!(1 vote)
- j'ai du mal à comprendre ce cours(3 votes)
- j'ai pas compris a quoi ça sert la fonction return ??
quand est ce que on l'utilise ?(2 votes)- par exemple lors d'un calcul pour afficher la réponce(2 votes)
- Pouviez-vous m'expliquer le role de println ?(2 votes)
- Vous allez bien?
10 mars 1023 a 15h45(2 votes) - but how can i remembre all of this ?(1 vote)