Correction TD 4 Séparation de code et fonctions Licence 1 MASS semestre 2, 2007/2008 Exercice 1 Utilisation de paramètres a- Algorithme Est Rectangle(a, b, c réel) booléen retourner ((a 2 = b 2 + c 2 ) ou (b 2 = a 2 + c 2 ) ou (c 2 = a 2 + b 2 )) b- Algorithme Hypothénuse(a, b réel) réel retourner a 2 + b 2 c- Notons la présence d un accumulateur s, variable dans laquelle on additionne itération après itération tous les nombres à sommer. On n oublie pas d initialiser cet accumulateur avec une valeur neutre pour l addition le 0... Algorithme Somme Cube 4 27() entier variable s, i entier s 0 pour i de 4 à 27 faire s s + i 3 pour d- Il s agit du même algorithme pour la question précédente, il suffit juste de donner les bons paramètres! Algorithme Somme Cube(d, f entier) entier variable s, i entier s 0 pour i de d à f faire s s + i 3 pour Ensuite il suffit de faire deux petits algorithmes tous simples Algorithme Somme Cube 4 27() entier retourner Somme Cube(4, 27) Algorithme Somme Cube 7 18() entier retourner Somme Cube(7, 18) 1
Exercice 2 Maximum a- Algorithme Maximum 2(a, b réel) réel si a > b alors retourner a retourner b si b- On va faire deux tests en tout. Algorithme Maximum 3(a, b, c réel) réel variable d réel d Maximum 2(a, b) si d < c alors retourner c retourner d si Une autre solution Algorithme Maximum 3bis(a, b, c réel) réel retourner Maximum 2(Maximum 2(a, b), c) c- On va faire trois tests en tout. Algorithme Maximum 4(a, b, c, d réel) réel variable e, f réel e Maximum 2(a, b) f Maximum 2(c, d) si f < e alors retourner e retourner f si Une autre solution Algorithme Maximum 4(a, b, c, d réel) réel retourner Maximum 2(Maximum 2(a, b), Maximum 2(c, d)) d- Seuls quatre tests suffisent, il y a plusieurs façons de faire, par exemple, on utilise la question a- Algorithme Maximum 5(a, b, c, d, e réel) réel retourner Maximum 2(Maximum 2(Maximum 2(a, b), Maximum 2(c, d)), e) Exercice 3 Pyramide de chiffres a- Algorithme Chiffres(n, p entier) 2
pour i de p à p + n faire écrire(modulo(i, 10)) pour b- Algorithme Pyramide Descente(n entier) Chiffres(i,0) pour c- Algorithme Espace(n entier) écrire( ) pour d- Rappel avant d écrire un algorithme on doit se demander ce qu il fait précisement, ici ça consiste à calculer en fonction du numéro de la ligne combien il doit y avoir d espaces et de chiffres sur la ligne... Algorithme Pyramide Ascendente(n entier) Espace(n i) Chiffres(i, 0) pour e- Algorithme Pyramide(n entier) Espace(n i) Chiffres(2i 1, 0) pour Exercice 4 Somme de série a- Algorithme U 12 () réel ; u réel pour i de 1 à 12 faire 2 u + 2 pour 3
b- Algorithme U 100 () réel ; u réel pour i de 1 à 100 faire 2 u + 2 pour Il en fait plus simple de mettre le numéro du terme que l on veut calculer en paramètre... Algorithme U n (n entier) réel ; u réel 2 u + 2 pour c- Dans cette question on a besoin d un accumulateur pour stocker la somme comme dans l exercice 1. On n oublie bien sur pas d initialiser cet accumulateur, ici à u = 1 car c est le terme 0 de la suite mais la boucle pour commence au terme 1... Algorithme Su n (n entier) réel ; s, u réel s u 2 u + 2 s s + u pour d- On refait tout pareil... a- Algorithme V 12 () réel ; v réel pour i de 1 à 12 faire pour b- Algorithme V 100 () réel ; v réel pour i de 1 à 100 faire pour Ou encore mieux Algorithme V n (n entier) réel 4
; v réel pour c- Dans cette question on a besoin d un accumulateur pour stocker la somme comme dans l exercice 1. On n oublie bien sur pas d initialiser cet accumulateur, ici à v = 1 car c est le terme 0 de la suite mais la boucle pour commence au terme 1... Algorithme Sv n (n entier) réel ; s, v réel s v s s + v pour Il y a plusieurs façons de procéder pour ne pas avoir à réecrire tout le code. Les deux suites sont toutes les deux déies par une formule du genre w n+1 = aw n + b avec un w 0. Donc on peut mettre en paramètre d un algorithme toutes ces valeurs a, b et w 0 qui font la difference entre les deux suites Algorithme W n (n entier; a, b, w 0 réel) réel ; w réel w w 0 w aw + b pour retourner w On peut aussi faire quelque chose de plus général en remplaçant la formule simple w n+1 = aw n + b par l appel d une fonction w n+1 = f(w n ). On a besoin maintenant de f et w 0 seulement comme paramètre Algorithme W n (n entier; w 0 réel; f fonction réel réel) réel ; w réel w w 0 w f(w) pour retourner w On peut alors déir les fonctions par des algorithmes Algorithme f(x, a, b réel) réel retourner ax + b 5