Exercices
Lang 12
Exercices
Exercice 1 *
Pour calculer le plus grand commun diviseur de deux nombres entiers positifs donnés, il est possible d’écrire une boucle qui soustrait alternativement le plus petit du plus grand jusqu’à obtenir 0.
- Écrire la fonction impérative pgcd(a: int, b: int) -> int qui applique cet algorithme.
- Écrire alors la fonction récursive pgcd_rec(a: int, b: int) -> int.
Remarque
Les fonctions récursives terminales sont très utilisées en programmation fonctionnelle.
Exercice 2 **
À retenir
La fonction map permet d’appliquer une fonction à tous les éléments d’un tableau.
- Tester le code ci-dessous:
print(list(map(len, ["singe", "ouistiti", "marsupilami"])))
- Écrire la fonction remplacer(mot: str) -> str qui remplace toutes les lettres i par o.
- Appliquer la fonction remplacer au tableau précédent.
- Écrire la fonction mapper(fonction, tab: list) -> list qui imite le comportement de map pour un tableau.
Exercice 3 **
À retenir
La fonction filter permet de filtrer les éléments d’un tableau.
- Écrire la fonction est_pair(nb:int)->bool qui vérifie si nb est pair.
- Écrire la fonction multiple_3(nb:int)->bool qui vérifie si nb est multiple de 3.
- Par compréhension, construire le tableau [10, 9, 8, 7, 6, 5, 4, 3, 2 , 1].
- À l’aide de la fonction filter, sélectionner les éléments pairs.
- À l’aide de la fonction filter, sélectionner les éléments mulitples de 3.
- Écrire la fonction filtrer(fonction, tab: list) -> list qui imite le comportement de filter pour un tableau d’entiers.