Correction TD 4 : S´eparation de code et fonctions
Licence 1 MASS semestre 2, 2007/2008
Exercice 1 : Utilisation de param`etres
a- Algorithme Est Rectangle(a,b,c: r´eel) : bool´een
ebut
retourner ((a2=b2+c2)ou (b2=a2+c2)ou (c2=a2+b2))
fin
b- Algorithme Hypoth´enuse(a,b: r´eel) : r´eel
ebut
retourner a2+b2
fin
c- Notons la pr´esence d’un accumulateur s, variable dans laquelle on additionne it´eration apr`es it´eration
tous les nombres `a 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
ebut
s0
pour ide 4`a 27 faire
ss+i3
fin pour
retourner s
fin
d- Il s’agit du mˆeme algorithme pour la question pr´ec´edente, il suffit juste de donner les bons param`etres
!
Algorithme Somme Cube(d,f: entier) : entier
variable s,i: entier
ebut
s0
pour ide d`a ffaire
ss+i3
fin pour
retourner s
fin
Ensuite il suffit de faire deux petits algorithmes tous simples :
Algorithme Somme Cube 4 27() : entier
ebut
retourner Somme Cube(4, 27)
fin
Algorithme Somme Cube 7 18() : entier
ebut
retourner Somme Cube(7, 18)
fin
1
Exercice 2 : Maximum
a- Algorithme Maximum 2(a,b: r´eel) : r´eel
ebut
si a > b alors
retourner a
sinon
retourner b
fin si
fin
b- On va faire deux tests en tout.
Algorithme Maximum 3(a,b,c: r´eel) : r´eel
variable d: r´eel
ebut
dMaximum 2(a,b)
si d < c alors
retourner c
sinon
retourner d
fin si
fin
Une autre solution :
Algorithme Maximum 3bis(a,b,c: r´eel) : r´eel
ebut
retourner Maximum 2(Maximum 2(a,b), c)
fin
c- On va faire trois tests en tout.
Algorithme Maximum 4(a,b,c,d: r´eel) : r´eel
variable e,f: r´eel
ebut
eMaximum 2(a,b)
fMaximum 2(c,d)
si f < e alors
retourner e
sinon
retourner f
fin si
fin
Une autre solution :
Algorithme Maximum 4(a,b,c,d: r´eel) : r´eel
ebut
retourner Maximum 2(Maximum 2(a,b), Maximum 2(c,d))
fin
d- Seuls quatre tests suffisent, il y a plusieurs fa¸cons de faire, par exemple, on utilise la question a-
:
Algorithme Maximum 5(a,b,c,d,e: r´eel) : r´eel
ebut
retourner Maximum 2(Maximum 2(Maximum 2(a,b), Maximum 2(c,d)), e)
fin
Exercice 3 : Pyramide de chiffres
a- Algorithme Chiffres(n,p: entier) :
2
variable i: entier
ebut
pour ide p`a p+nfaire
´ecrire(modulo(i, 10))
fin pour
fin
b- Algorithme Pyramide Descente(n: entier) :
variable i: entier
ebut
pour ide 1`a nfaire
Chiffres(i,0)
retourLigne()
fin pour
fin
c- Algorithme Espace(n: entier) :
variable i: entier
ebut
pour ide 1`a nfaire
´ecrire(” ”)
fin pour
fin
d- Rappel : avant d’´ecrire un algorithme on doit se demander ce qu’il fait pr´ecisement, ici ¸ca consiste `a
calculer en fonction du num´ero de la ligne combien il doit y avoir d’espaces et de chiffres sur la ligne
...
Algorithme Pyramide Ascendente(n: entier) :
variable i: entier
ebut
pour ide 1`a nfaire
Espace(ni)
Chiffres(i, 0)
retourLigne()
fin pour
fin
e- Algorithme Pyramide(n: entier) :
variable i: entier
ebut
pour ide 1`a nfaire
Espace(ni)
Chiffres(2i1, 0)
retourLigne()
fin pour
fin
Exercice 4 : Somme de s´erie
a- Algorithme U12() : eel
variable i: entier; u: r´eel
ebut
u1
pour ide 1`a 12 faire
u1
2u+ 2
fin pour
retourner u
fin
3
b- Algorithme U100() : eel
variable i: entier; u: r´eel
ebut
u1
pour ide 1`a 100 faire
u1
2u+ 2
fin pour
retourner u
fin
Il en fait plus simple de mettre le num´ero du terme que l’on veut calculer en param`etre ...
Algorithme Un(n: entier) : eel
variable i: entier; u: r´eel
ebut
u1
pour ide 1`a nfaire
u1
2u+ 2
fin pour
retourner u
fin
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 `a u= 1 car c’est le terme 0 de la suite mais la
boucle pour commence au terme 1 ...
Algorithme Sun(n: entier) : eel
variable i: entier; s,u: r´eel
ebut
u1
su
pour ide 1`a nfaire
u1
2u+ 2
ss+u
fin pour
retourner s
fin
d- On refait tout pareil ...
a- Algorithme V12 () : eel
variable i: entier; v: r´eel
ebut
v1
pour ide 1`a 12 faire
v1
3v+ 1
fin pour
retourner v
fin
b- Algorithme V100() : eel
variable i: entier; v: r´eel
ebut
v1
pour ide 1`a 100 faire
v1
3v+ 1
fin pour
retourner v
fin
Ou encore mieux :
Algorithme Vn(n: entier) : eel
4
variable i: entier; v: r´eel
ebut
v1
pour ide 1`a nfaire
v1
3v+ 1
fin pour
retourner v
fin
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 `a v= 1 car c’est le terme 0 de la
suite mais la boucle pour commence au terme 1 ...
Algorithme Svn(n: entier) : eel
variable i: entier; s,v: r´eel
ebut
v1
sv
pour ide 1`a nfaire
v1
3v+ 1
ss+v
fin pour
retourner s
fin
Il y a plusieurs fa¸cons de proc´eder pour ne pas avoir `a r´eecrire tout le code. Les deux suites sont
toutes les deux d´efinies par une formule du genre wn+1 =awn+bavec un w0. Donc on peut mettre
en param`etre d’un algorithme toutes ces valeurs a,bet w0qui font la difference entre les deux suites
:
Algorithme Wn(n: entier; a,b,w0: r´eel) : r´eel
variable i: entier; w: r´eel
ebut
ww0
pour ide 1`a nfaire
waw +b
fin pour
retourner w
fin
On peut aussi faire quelque chose de plus en´eral en rempla¸cant la formule simple wn+1 =awn+bpar
l’appel d’une fonction wn+1 =f(wn). On a besoin maintenant de fet w0seulement comme param`etre
:
Algorithme Wn(n: entier; w0: eel; f: fonction : r´eel r´eel) : eel
variable i: entier; w: r´eel
ebut
ww0
pour ide 1`a nfaire
wf(w)
fin pour
retourner w
fin
On peut alors d´efinir les fonctions par des algorithmes :
Algorithme f(x,a,b: eel) : eel
ebut
retourner ax +b
fin
5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !