Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (47 sloc) 3.25 KB

Exercice JS - Fonctions

Objectif: Se familiariser avec la syntaxe JavaScript.

Implémentez les fonctionnalités suivantes sous la forme de fonctions JavaScript:

1 * Retourne la plus grande valeur parmi les trois nombres fournis en paramètre.

2 * Retourne un nombre entier pseudo-aléatoire entre une borne inférieure et une borne supérieure (bornes entières et comprises dans l'intervalle).

3 ** Indique si un nombre entier est un nombre premier ou non.

4 ** Ecrit dans la console, ligne après ligne, toutes les données fournies en paramètre. Exemple d'appel si votre fonction se nomme cl:

cl(1, 2 ,"a", [3.1, 4, 159]);

5 * Retourne la somme de deux nombres.

6 ** Retourne une fonction qui somme son unique paramètre au paramètre fournis en entrée. Il s'agit donc de faire une curryfication de la fonction précédente. Exemples d'appels si votre fonction se nomme curryAdd:

curryAdd(2)(40); // Retourne 42
const add2 = curryAdd(2);
add2(41); //retourne 43

7 * Retourne le carré (la puissance de 2) du nombre passé en paramètre. Appelez votre fonction square.

8 ** Appelle la fonction passée en tant que premier paramètre sur le résultat de cette même fonction appelée avec le second paramètre comme argument. En plus simple: applique deux fois la même fonction sur le deuxième paramètre. Exemple d’appel si votre fonction se nomme twice:

twice(square, 2); // square(square(2)) => 16

9 *** Transformez votre fonction précédente en une fonction d'ordre supérieur retournant une fonction (un peu à la manière de la curryfication) afin de pouvoir faire des appels comme les suivants:

const pow4 = twice(square);
const pow16 = twice(pow4);
pow4(2); // Retourne 16
pow16(2); // Retourne 65'536

10 ** Identique à la question 8 mais effectue l'appel de fonction n fois. Exemple d’appel si votre fonction se nomme times:

times(4, square, 2); 

Comme on peut le voir, l'appel de cette fonction peut porter à confusion. En effet l'ordre des arguments est important. On ne peut pas savoir, sans regarder la fonction times, si c'est la fonction square qui sera appelée 4 fois avec comme valeur initiale 2 (ce qui nous donnerait 65'536), ou si c'est la fonction square qui sera appelée 2 fois avec comme valeur initiale 4 (ce qui nous donnerait 256). Modifiez alors votre fonction en utilisant la décomposition pour les paramètres afin de pouvoir faire des appels comme les suivants:

times({times: 4, fct: square, value: 2}); // Retourne 65'536
times({fct: square, value: 4, times: 2}); // Retourne 256

11 *** Transformez votre fonction précédente en une fonction d'ordre supérieur afin de pouvoir faire des appels comme les suivants:

const pow16 = times({times: 4, fct: square});
pow16(2); // Retourne 65'536
times({times: 2, fct: square})(2) // Retourne 16
You can’t perform that action at this time.