Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| cnam:utc503:td3 [2024/10/16 23:41] – [3 - Utiliser des fonctions d'ordre supérieur intégrées] jcheron | cnam:utc503:td3 [2025/08/12 02:35] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| ===== Exercice 1 : Fonctions Pures ===== | ===== Exercice 1 : Fonctions Pures ===== | ||
| - | ==== 1 - Créer | + | ==== 1 - Création d'une fonction pure simple ==== |
| * Écrire une fonction pure qui prend un tableau de nombres et retourne un nouveau tableau avec chaque nombre doublé. | * Écrire une fonction pure qui prend un tableau de nombres et retourne un nouveau tableau avec chaque nombre doublé. | ||
| - | ==== 2 - Tester | + | ==== 2 - Test de la pureté ==== |
| * Tester la fonction avec différents ensembles de données. | * Tester la fonction avec différents ensembles de données. | ||
| * Identifier les caractéristiques qui font que la fonction est pure. | * Identifier les caractéristiques qui font que la fonction est pure. | ||
| - | ==== 3 - Exemple | + | ==== 3 - Exemple |
| * Créer une fonction qui modifie une variable extérieure (effet de bord) et expliquer pourquoi elle est impure. | * Créer une fonction qui modifie une variable extérieure (effet de bord) et expliquer pourquoi elle est impure. | ||
| + | <WRAP todo round> | ||
| + | === Points de discussion === | ||
| + | |||
| + | * Pourquoi éviter les effets de bord ? | ||
| + | * Quels types de bugs ou de problèmes peuvent survenir dans un code non pur ? | ||
| + | </ | ||
| ===== Exercice 2 : Immutabilité ===== | ===== Exercice 2 : Immutabilité ===== | ||
| - | ==== 1 - Ajouter | + | ==== 1 - Ajout d'un élément sans modification du tableau ==== |
| * Écrire une fonction qui ajoute un élément à un tableau sans modifier le tableau d' | * Écrire une fonction qui ajoute un élément à un tableau sans modifier le tableau d' | ||
| Ligne 25: | Ligne 31: | ||
| * Modifier directement un tableau en utilisant `.push()` et observer les changements sur le tableau d' | * Modifier directement un tableau en utilisant `.push()` et observer les changements sur le tableau d' | ||
| - | ==== 3 - Créer une fonction immuable pour un objet ==== | + | ==== 3 - Modification immutable d'un objet ==== |
| * Écrire une fonction qui modifie une propriété d'un objet sans altérer l' | * Écrire une fonction qui modifie une propriété d'un objet sans altérer l' | ||
| + | <WRAP todo round> | ||
| + | === Points de discussion === | ||
| + | |||
| + | * Pourquoi l' | ||
| + | * Quels avantages cela présente-t-il pour la gestion des états dans des applications complexes ? | ||
| + | </ | ||
| ===== Exercice 3 : Transparence Référentielle ===== | ===== Exercice 3 : Transparence Référentielle ===== | ||
| - | ==== 1 - Fonction | + | ==== 1 - Transparence dans une fonction |
| * Créer une fonction qui calcule la somme de deux nombres. | * Créer une fonction qui calcule la somme de deux nombres. | ||
| * Remplacer les appels de fonction dans le code par les valeurs retournées et tester le comportement. | * Remplacer les appels de fonction dans le code par les valeurs retournées et tester le comportement. | ||
| - | ==== 2 - Tester avec des expressions | + | ==== 2 - Transparence dans des expressions complexes ==== |
| - | * Introduire des fonctions imbriquées et remplacer les appels par leurs valeurs. | + | * Introduire des fonctions imbriquées |
| * Tester si le programme reste identique. | * Tester si le programme reste identique. | ||
| - | ==== 3 - Explorer l' | + | ==== 3 - Absence |
| * Créer une fonction avec des effets de bord (ex: `Math.random()` ou modification d'une variable globale) et expliquer pourquoi elle n'est pas transparente. | * Créer une fonction avec des effets de bord (ex: `Math.random()` ou modification d'une variable globale) et expliquer pourquoi elle n'est pas transparente. | ||
| + | <WRAP todo round> | ||
| + | === Points de discussion === | ||
| + | |||
| + | * Pourquoi la transparence référentielle est-elle cruciale pour rendre un code plus facile à lire et à raisonner ? | ||
| + | * Comment la transparence référentielle permet-elle d' | ||
| + | </ | ||
| ===== Exercice 4 : Fonctions d' | ===== Exercice 4 : Fonctions d' | ||
| - | ==== 1 - Appliquer | + | ==== 1 - Application d'une fonction à chaque élément d'un tableau ==== |
| * Écrire une fonction d’ordre supérieur qui prend une fonction et l’applique à chaque élément d’un tableau. | * Écrire une fonction d’ordre supérieur qui prend une fonction et l’applique à chaque élément d’un tableau. | ||
| - | ==== 2 - Fonctions | + | ==== 2 - Création de fonctions |
| * Écrire une fonction qui retourne une autre fonction (par exemple, une fonction qui crée un multiplicateur). | * Écrire une fonction qui retourne une autre fonction (par exemple, une fonction qui crée un multiplicateur). | ||
| - | ==== 3 - Utilisation | + | ==== 3 - Utilisation |
| * Expérimenter avec les méthodes comme `filter()`, `reduce()`, et `forEach()` pour transformer des tableaux. | * Expérimenter avec les méthodes comme `filter()`, `reduce()`, et `forEach()` pour transformer des tableaux. | ||
| + | <WRAP todo round> | ||
| + | === Points de discussion === | ||
| + | |||
| + | * En quoi les fonctions d’ordre supérieur facilitent-elles la modularité du code ? | ||
| + | * Comment ce concept peut-il être utilisé pour encapsuler des comportements et les réutiliser dans plusieurs contextes ? | ||
| + | </ | ||
| ===== Exercice 5 : Combinaison des principes ===== | ===== Exercice 5 : Combinaison des principes ===== | ||
| Ligne 66: | Ligne 90: | ||
| * Appliquer une réduction à chaque produit tout en conservant l' | * Appliquer une réduction à chaque produit tout en conservant l' | ||
| - | ==== 2 - Utilisation de `reduce` | + | ==== 2 - Calcul total avec `reduce` ==== |
| * Calculer le prix total après réduction en utilisant `reduce`. | * Calculer le prix total après réduction en utilisant `reduce`. | ||
| Ligne 74: | Ligne 98: | ||
| * Réécrire le code en appliquant les principes vus, comme découper en plus petites fonctions pures. | * Réécrire le code en appliquant les principes vus, comme découper en plus petites fonctions pures. | ||
| + | <WRAP todo round> | ||
| + | === Points de discussion === | ||
| + | |||
| + | * Quel est l' | ||
| + | * Pouvez-vous voir où la transparence référentielle intervient dans ce code ? | ||
| + | * Comment la combinaison de ces principes conduit-elle à un code plus fiable et facile à maintenir ? | ||
| + | * Quelles améliorations peuvent être apportées pour rendre le code plus fonctionnel ? | ||
| + | </ | ||