Une fonction est un programme qui possède un nom, qui peut prendre en entrée des arguments et qui peut retourner un résultat.
Dans l'exemple suivant nous avons écrit une fonction qui se nomme aire
, ses paramètres sont longueur
et largeur
et elle retourne l'aire du rectangle dont les dimensions sont communiquées.
function aire(longueur,largeur){
return longueur*largeur;
}
La définition d'une fonction débute par le mot clé function
suivi de son nom et entre parenthèses des noms des paramètres séparés par des virgules (les paramètres sont des variables qui reçoivent les arguments passés à la fonction), pour finir, le bloc d'instructions de la fonction est délimité par des accolades.
Pour qu'une fonction s'exécute elle doit être appelée depuis un programme et le code source de la fonction peut être écrit dans le même fichier que le « programme principal ».
Voici un programme avec la fonction de l'exemple précédent :
/*Programme principal*/
println(aire(4,3));
println(aire(5,2));
/*
Fonction de calcul de l'aire d'un rectangle
Entrée : longueur et largeur du rectangle
Retour : aire du rectangle
*/
function aire(longueur,largeur){
return longueur*largeur;
}
Le programme principal appelle deux fois la fonction aire
et affiche le résultat retourné.
La première fois, la fonction aire
est appelée avec les arguments 4 et 3, cela signifie que lorsque la fonction va s'exécuter les variables longueur
et largeur
prennent les valeurs 4 et 3.
L'instruction return
de la fonction indique le résultat à retourner.
La seconde fois, la fonction aire
est appelée avec les arguments 5 et 2, cette fois les variables longueur
et largeur
reçoivent respectivement les valeurs 5 et 2.
Ainsi une fois que nous avons programmé la fonction aire
, nous pouvons la réutiliser autant de fois que l'on souhaite, et même la réutiliser dans d'autres programmes.
Dans le programme suivant nous avons programmé une fonction supplémentaire pour l'affichage du résultat de l'aire.
/*Programme principal*/
afficheAire(3,5,15);
afficheAire(2,3,aire(2,3));
/*
Fonction de calcul de l'aire d'un rectangle
Entrée : longueur et largeur du rectangle
Retour : aire du rectangle
*/
function aire(longueur,largeur){
return longueur*largeur;
}
/*
Fonction d'affichage de l'aire
Entrée : longueur, largeur, aire
*/
function afficheAire(longueur,largeur,aire){
println("L'aire d'un rectangle de longueur "+longueur+" et de largeur "+largeur+" est "+aire+".");
}
Le calcul de l'aire et l'affichage sont programmés dans deux fonctions distinctes.
Le gros avantage par rapport à une seule fonction qui engloberait à la fois le calcul de l'aire et de l'affichage est qu'il est possible d'utiliser chacune des fonctions indépendamment l'une de l'autre :
pour calculer l'aire sans l'afficher,
pour afficher un résultat d'aire sans utiliser la fonction aire
.
Ce qui n'empêche pas de cumuler l'usage des deux fonctions comme avec l'instruction : afficheAire(2,3,aire(2,3));
Cette façon de procéder est une bonne pratique de programmation : il faut autant que possible décomposer un projet en tâches bien précises qui sont programmées dans des fonctions distinctes, beaucoup plus faciles à réaliser et à maintenir qu'un long programme. En outre les différentes fonctions peuvent être programmées par des personnes différentes, ce qui est fondamental pour le travail en équipe.
Voici un autre programme, exécutez-le et observez le résultat.
/*Programme principal*/
var resultat=4*5;
println(faitSomme(3,2));
println(resultat);
/*Somme de deux nombres
Entrée : a et b
Retour : somme de a et b
*/
function faitSomme(a,b){
var resultat=a+b;
return resultat;
}
La variable resultat
du programme principal n'a rien à voir avec la variable resultat
de la fonction.
Toutes les variables définies dans le bloc d'instructions d'une fonction (y compris les paramètres) sont locales à la fonction, c'est à dire qu'elles n'existent que lors de l'exécution de la fonction et qu'elles n'interfèrent pas avec les variables qui portent le même nom dans le programme principal ou dans d'autres fonctions.
Pour contre, on peut utiliser la variable resultat
en tant que variable global, c'est à dire que si resultat
change dans la fonction, elle change dans le programme principal. Pour cela il suffit de ne pas déclarer resultat
comme variable (var
) dans la fonction.
Comme dans le code ci-desous :
/*Programme principal*/
var resultat=4*5;
println(faitSomme(3,2));
println(resultat);
/*Somme de deux nombres
Entrée : a et b
Retour : somme de a et b
*/
function faitSomme(a,b){
resultat=a+b;
return resultat;
}
Le langage de programmation JavaScript met à la disposition du programmeur de nombreuses fonctions prédéfinies, voici les plus usuelles :
Fonction | Argument(s) attendu(s) | Retour |
parseInt() | chaîne de caractères | nombre entier représenté par la chaîne de caractères |
parseFloat() | chaîne de caractères | nombre réel représenté par la chaîne de caractères |
isNaN() | ? | true si ? est une valeur numérique, false sinon |
alert() | chaîne de caractères | - |
prompt() | chaîne de caractères | chaîne de caractères saisie par l'utilisateur ou null |
Le langage de programmation JavaScript possède un objet Math
, nous rappelons qu'un objet est une structure qui encapsule à la fois des méthodes (des fonctions) et des propriétés (des variables).
L'objet Math
, contient différentes fonctions utiles en mathématiques, en voici quelques exemples :
Fonction | Argument(s) attendu(s) | Retour |
Math.floor() | nombre | partie entière du nombre |
Math.round() | nombre | arrondi entier au plus proche du nombre |
Math.sqrt() | nombre | racine carrée du nombre |
Math.pow() | deux nombres | premier nombre élevé à la puissance du deuxième |
Math.cos() ; Math.sin() | nombre | cosinus ; sinus du nombre (en radians) |
Math.random() | - | nombre aléatoire entre 0 et 1 |
En outre Math.PI
est une propriété qui contient une valeur approchée du nombre $\pi$.
Pour une liste complète des méthodes et propriétés de l'objet Math
: L'objet Math sur w3schools
Essayez les différentes fonctions présentées ci-dessus.