Les fonctions

Définition

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;
}

Exécuter

Comment cela fonctionne-t-il ?

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.

Plusieurs fonctions pour un même programme

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+".");
}

Exécuter

Explications

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 :

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.

Portée des variables

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;
}

Exécuter

Que s'est-il passé ?

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;
}

Exécuter

Fonctions prédéfinies

Le langage de programmation JavaScript met à la disposition du programmeur de nombreuses fonctions prédéfinies, voici les plus usuelles :

FonctionArgument(s) attendu(s)Retour
parseInt()chaîne de caractèresnombre entier représenté par la chaîne de caractères
parseFloat()chaîne de caractèresnombre 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èreschaî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 :

FonctionArgument(s) attendu(s)Retour
Math.floor()nombrepartie entière du nombre
Math.round()nombrearrondi entier au plus proche du nombre
Math.sqrt()nombreracine carrée du nombre
Math.pow()deux nombrespremier nombre élevé à la puissance du deuxième
Math.cos() ; Math.sin()nombrecosinus ; 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.

Exécuter