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.

  1. Écrire la fonction impérative pgcd(a: int, b: int) -> int qui applique cet algorithme.
  2. É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.

  1. Tester le code ci-dessous:
print(list(map(len, ["singe", "ouistiti", "marsupilami"])))
  1. Écrire la fonction remplacer(mot: str) -> str qui remplace toutes les lettres i par o.
  2. Appliquer la fonction remplacer au tableau précédent.
  3. É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.

  1. Écrire la fonction est_pair(nb:int)->bool qui vérifie si nb est pair.
  2. Écrire la fonction multiple_3(nb:int)->bool qui vérifie si nb est multiple de 3.
  3. Par compréhension, construire le tableau [10, 9, 8, 7, 6, 5, 4, 3, 2 , 1].
  4. À l’aide de la fonction filter, sélectionner les éléments pairs.
  5. À l’aide de la fonction filter, sélectionner les éléments mulitples de 3.
  6. Écrire la fonction filtrer(fonction, tab: list) -> list qui imite le comportement de filter pour un tableau d’entiers.