Programmation 2 - TD2 CC-BY Edouard.Thiel@univ-amu.fr ============================= Ce document est téléchargeable à l'adresse : https://pageperso.lis-lab.fr/~florian.bridoux/cours/PROG2/td2.txt Exercice 1 : pgcd, récursivité ---------- a) Écrire une fonction récursive calculer_pgcd (a, b) qui calcule et renvoie le plus grand commun diviseur entre 2 nombres a et b positifs. Utiliser la définition suivante : | a+b si a*b == 0 pgcd(a,b) = | pgcd(a, b mod a) si a <= b | pgcd(a mod b, b) si a > b Par exemple : pgcd(85, 25) = pgcd(10, 25) = pgcd(10, 5) = pgcd(0, 5) = 5. b) Écrire une fonction calculer_pgcd_liste (liste) qui calcule et renvoie le pgcd des entiers stockés dans liste, qui ne contient que des entiers positifs. Utiliser la propriété: pgcd(a, b, c) = pgcd(pgcd(a, b), c). c) Écrire une fonction remplacer_abs_liste (liste) qui remplace dans la liste les entiers négatifs par leur valeur absolue. d) Écrire un programme principal qui fait saisir des entiers au clavier à l'utilisateur et les stocke dans une liste ; la saisie s'arrête lorsque l'on rentre 0. Le programme affiche un message d'erreur si on ne saisit pas un entier, mais continue quand même. Le programme affiche ensuite le pgcd des valeurs absolues des entiers saisis. Exercice 2 : tableau 2D avec liste de listes, plateau de jeu ---------- a) Écrire la fonction creer_grille (hauteur, largeur) qui crée une liste de listes de manière à représenter les valeurs d'un tableau de dimensions [hauteur][largeur], dont les cases sont initialisées à 0. b) Écrire la fonction grille_get (grille, x, y) qui renvoie la valeur de la case de coordonnées [y][x]. Dans le cas où la case n'existe pas, la fonction affiche un message d'erreur puis renvoie None. c) Écrire la fonction grille_set (grille, x, y, val) qui affecte la valeur val à la case de coordonnées [y][x]. Dans le cas où la case n'existe pas, la fonction affiche un message d'erreur. d) Écrire la fonction creer_plateau (hauteur, largeur) qui renvoie un dictionnaire contenant le clé "hauteur" associé à la hauteur, la clé "largeur" associé à la largeur, et la clé "grille" associé à une grille créée à l'aide de la fonction creer_grille(). e) Écrire la fonction afficher_plateau (plateau) qui affiche les valeurs des cases sous la forme d'un tableau. f) Écrire la fonction creer_plateau_dames() qui crée un plateau 10x10, puis place les pions en mémorisant des 1 sur les 4 premières lignes et des 2 sur les 4 dernières, une case sur deux et en les décallant d'une ligne à l'autre. La fonction renvoie le plateau créé. g) Écrire le programme principal qui crée le plateau de dames puis l'affiche : 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 2 0 2 0 2 0 0 2 0 2 0 2 0 2 0 2 2 0 2 0 2 0 2 0 2 0 0 2 0 2 0 2 0 2 0 2 h(