• Aucun résultat trouvé

Correction TD 4 : S´eparation de code et fonctions

N/A
N/A
Protected

Academic year: 2022

Partager "Correction TD 4 : S´eparation de code et fonctions"

Copied!
5
0
0

Texte intégral

(1)

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 d´ebut

retourner((a2=b2+c2)ou (b2=a2+c2)ou (c2=a2+b2)) fin

b- Algorithme Hypoth´enuse(a,b : r´eel) : r´eel d´ebut

retourner√ a2+b2 fin

c- Notons la pr´esence d’un accumulateurs, 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

d´ebut s←0

pouride 4`a 27faire s←s+i3

fin pour retourners 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

d´ebut s←0

pouride d`a f faire s←s+i3

fin pour retourners fin

Ensuite il suffit de faire deux petits algorithmes tous simples : Algorithme Somme Cube 4 27() : entier

d´ebut

retournerSomme Cube(4, 27) fin

Algorithme Somme Cube 7 18() : entier d´ebut

retournerSomme Cube(7, 18) fin

(2)

Exercice 2 : Maximum

a- Algorithme Maximum 2(a,b: r´eel) : r´eel d´ebut

sia > balors 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

d´ebut

d←Maximum 2(a,b) sid < calors

retourner c sinon

retourner d fin si

fin

Une autre solution :

Algorithme Maximum 3bis(a,b, c: r´eel) : r´eel d´ebut

retournerMaximum 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

d´ebut

e←Maximum 2(a,b) f ←Maximum 2(c, d) sif < ealors

retourner e sinon

retourner f fin si

fin

Une autre solution :

Algorithme Maximum 4(a,b,c,d: r´eel) : r´eel d´ebut

retournerMaximum 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 d´ebut

retournerMaximum 2(Maximum 2(Maximum 2(a,b), Maximum 2(c,d)),e) fin

Exercice 3 : Pyramide de chiffres

a- Algorithme Chiffres(n,p: entier) :

(3)

variable i: entier d´ebut

pour ide p`a p+nfaire

´

ecrire(modulo(i, 10)) fin pour

fin

b- Algorithme Pyramide Descente(n: entier) : variable i: entier

d´ebut

pouride 1`a nfaire Chiffres(i,0)

retourLigne() fin pour fin

c- Algorithme Espace(n: entier) : variable i: entier

d´ebut

pouride 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

d´ebut

pouride 1`a nfaire Espace(n−i) Chiffres(i, 0) retourLigne() fin pour fin

e- Algorithme Pyramide(n: entier) : variable i: entier

d´ebut

pouride 1`a nfaire Espace(n−i) Chiffres(2i−1, 0) retourLigne() fin pour fin

Exercice 4 : Somme de s´ erie

a- Algorithme U12() : r´eel variable i: entier;u: r´eel d´ebut

u←1

pour ide 1`a 12faire u← 12u+ 2

fin pour retourner u fin

(4)

b- Algorithme U100() : r´eel variable i: entier;u: r´eel d´ebut

u←1

pour ide 1`a 100faire u← 12u+ 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) : r´eel variable i: entier;u: r´eel d´ebut

u←1

pour ide 1`a nfaire u← 12u+ 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) : r´eel variable i: entier;s,u: r´eel d´ebut

u←1 s←u

pour ide 1`a nfaire u← 12u+ 2

s←s+u fin pour retourner s fin

d- On refait tout pareil ...

a- Algorithme V12() : r´eel variable i : entier;v : r´eel d´ebut

v ←1

pour ide 1`a 12faire v ← 13v+ 1

fin pour retourner v fin

b- Algorithme V100() : r´eel variable i: entier;v : r´eel d´ebut

v ←1

pour ide 1`a 100faire v ← 13v+ 1

fin pour retourner v fin

Ou encore mieux :

(5)

variable i: entier;v : r´eel d´ebut

v ←1

pour ide 1`a nfaire v ← 13v+ 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) : r´eel variable i: entier;s, v: r´eel d´ebut

v ←1 s←v

pour ide 1`a nfaire v ← 13v+ 1

s←s+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 genrewn+1 =awn+b avec unw0. Donc on peut mettre en param`etre d’un algorithme toutes ces valeursa, b et w0 qui font la difference entre les deux suites :

Algorithme Wn(n: entier;a,b,w0 : r´eel) : r´eel variable i: entier;w: r´eel

d´ebut w←w0

pouride 1`a nfaire w←aw+b

fin pour retournerw fin

On peut aussi faire quelque chose de plus g´en´eral en rempla¸cant la formule simplewn+1=awn+bpar l’appel d’une fonctionwn+1=f(wn). On a besoin maintenant def etw0 seulement comme param`etre :

Algorithme Wn(n: entier;w0 : r´eel;f : fonction : r´eel→r´eel) : r´eel variable i: entier;w: r´eel

d´ebut w←w0

pouride 1`a nfaire w←f(w)

fin pour retournerw fin

On peut alors d´efinir les fonctions par des algorithmes : Algorithme f(x,a,b : r´eel) : r´eel

d´ebut

retournerax+b fin

Références

Documents relatifs

a - En utilisant le principe de la s´ eparation de code reproduire la pyramide suivante pour un nombre n d’´ etages :. b - En utilisant le principe de la s´ eparation de code

b - En utilisant la m´ ethode pr´ ec´ edente, ´ ecrire une fonction qui donne un nombre entier pseudo-al´ eatoire de l’intervalle [a, b[.. c - En JAVA, quelle m´ ethode de la

e - D´ efinir une m´ ethode dansCorps qui teste si le curseur de la souris est dans le corps de la bˆ ete que nous pouvons consid´ erer ˆ etre repr´ esenter par le cercle.. f

[r]

[r]

Vous expliquerez simplement ce qu’il faut faire.. B doit implémenter

[r]

[r]