Vous êtes sur la page 1sur 48

TD Module: Informatiques 2

ALGORITHMIQUE
SERIE D’EXERCICES
Exercice 1

 Quelles sont les valeurs des variables A, B, C entières après exécution des
instructions suivantes ?

A5 B5 A2


B  A* 3 A  3 B  5
A  5 + 2*B C  A*B AB
B A-B B  4*A - B B A
CB-3 CB-C CB
Corrigé Exercice 1

Après : Les valeurs des variables sont :

A5 A5 A =5

B  A* 3 B A*3 A=5 B = 15

A  5 + 2*B A  5+2*B A =35 B = 15

B A-B B A–B A = 35 B = 20

CB-3 CB–3 A =35 B = 20 C = 17


Corrigé Exercice 1

Après : Les valeurs des variables sont:

B5 B5 A= B=5 C=

A  3 A  3 A = 3 B=5 C=

C  A*B C  A*B A =3 B=5 C = 15

B  4*A - B B  4*A – B A = 3 B=7 C = 15

CB-C CB-C A =3 B=7 C = -8


Corrigé Exercice 1

Après : Les valeurs des variables sont :

A2 A2 A=2 B= C=

B  5 B  5 A = 2 B=5 C=

AB A  B A =5 B=5 C=

B A B A A=5 B=5 C=

CB C  B A =5 B=5 C=5


Exercice 2

a) Dans l’algorithme ci-dessous, quelle est la valeur de la variable Resultat en supposant qu’on saisit la
valeur 6 pour la variable x

Algorithme Calcul
Variable x, Resultat : Réel
Début
Ecrire ("saisir la valeur de x : " )
Lire(x)
Resultat ← 1 – 3*x / x *(5+2*x )
Ecrire ("La valeur obtenue est : ", Resultat )
Fin

b) Le résultat changera-t-il si on ajoute des parenthèses dans l’affectation ?


Corrige Exercice 2

a) Dans l’algorithme ci-dessous, quelle est la valeur de la variable Resultat en supposant qu’on saisit la valeur 6
pour la variable x

Algorithme Calcul
Variable x, Resultat : Réel
saisir la valeur de x :
Début
6
Ecrire ("saisir la valeur de x : " ) La valeur obtenue est : -50
Lire(x)
Resultat ← 1 – 3*x / x *(5+2*x )
Ecrire ("La valeur obtenue est : ", Resultat )
Fin

b) Le résultat changera-t-il si on ajoute des parenthèses dans l’affectation ?


oui : 1 – 3*x /( x *(5+2*x ))...
Exercice 3

• Écrire l'algorithme Echange qui échange le contenu de deux données


numériques.

• Ecrire l’algorithme Echange1 qui échange les contenus de trois données


numériques A, B, C entières, lorsque leur somme est paire, dans le cas
contraire il met la somme des trois dans la première donnée, leur produit
dans la seconde et la valeur zéro dans la troisième.
Corrigé – Exercice 3 (Analyse)
 Les variables sont des adresses mémoires où vont être stockées des valeurs.
 Chaque case réservée pour une variable contient une seule valeur et chaque fois
qu’on procède à une nouvelle affectation, l’ancien contenu de la mémoire est perdu
et un nouveau contenu est placé dans la case.
 Pour remédier à cela, on introduit une variable intermédiaire pour pouvoir y stocker
temporairement l’une des deux variables à échanger

Case 1 Case 2 Case 3


Corrigé – Exercice 3
Algorithme Echange
Variable A, B : Entier * Entrées / Sorties *
C : Entier * Donnée intermédiaire*
Début
ECRIRE ("Donner la valeur de A " )
LIRE (A)
ECRIRE ("Donner la valeur de B " )
LIRE (B)
CA
AB
BC
ECRIRE ("La nouvelle valeur de A est :" , A)
ECRIRE ("La nouvelle valeur de B est :" , B)
Fin
Corrigé – Exercice 3
Algorithme :
Algorithme Echange1
Variable A, B, C : Entier * Entrées / Sorties *
D : Entier * Donnée intermédiaire*
Début
ECRIRE ("Donner trois nombres entiers A, B et C : ")
LIRE (A, B, C)
SI ((A + B + C) mod 2 = 0) ALORS
DA
AB
BC
CD
SINON
DA
AA+B+C
BD*B*C
C0
FINSI
ECRIRE ("La nouvelle valeur de A est : ", A)
ECRIRE ("La nouvelle valeur de B est : ", B)
ECRIRE ("La nouvelle valeur de C est : ", C)
Fin
Exercice : Affectation sur les entiers
PROGRAMME affectation
VAR a, b : entier /*a et b ont une valeur indéterminée*/
DEBUT
a5
Ecrire a
b  a + 10
Ecrire a, b
ab*4
Ecrire a, b
bb+3
Ecrire a, b
FIN
Quelles sont les valeurs affichées à l’écran ?
5
5,15
60,15
60,18
Exercice : Tables de vérités
 a) Quelle est la valeur de la variable b à la fin de l’instruction suivante :
 b2  b1 ET VRAI
 La valeur de b2 sera la même que la valeur de b1

 b) Même question avec l’instruction :


 b  (5 = e) OU (r = 3,3)
 La valeur de b sera FAUX si les « e » est différent de 5 et « r » est différent de 3,3
et vrai dans les cas (e= 5 et r=3,3 ou e=5 et r est différent de 3,3 et le cas r est
différent de 5 et r=3,3)
Exercice 4
 Ecrire un algorithme qui calcule et affiche la valeur absolue d'un entier
quelconque lu au clavier

 Ecrire un algorithme qui affiche si la valeur d'un entier quelconque lu


au clavier est paire ou impaire

 Ecrire un algorithme qui demande deux nombres à l’utilisateur et


l’informe ensuite si leur produit est négatif ou positif (on laisse de côté
le cas où le produit est nul).
Corrigé Exercice 4
Algorithme valeur_absolue
Var
x :entier
Début
Ecrire(entrer x : ‘)
Lire(x) ;
Si x>0 alors
Ecrire(‘la valeur absolue de x=’,x)
Sinon
Ecrire(‘la valeur absolue de x=’,-x)
Finsi
Fin
Corrigé Exercice 4
Algorithme parité
Var
N :entier;
Début
Ecrire("entrer un entier : ") ;
Lire(N) ;
Si N mod 2 =0 alors
Ecrire("le nombre est pair");
Sinon
Ecrire("le nombre est impair . ");
Finsi
Fin
Corrigé - Exercice 4
Algorithme produit
Var
x,y, prod :réels
Début
Ecrire("entrer x : ") ;
Lire(x) ;
Ecrire("entrer y : ") ;
Lire(y) ;
prod  x*y
Si prod>0 alors
Ecrire("Le produit est positif");
Sinon
Si prod < 0
Ecrire("le produit est négatif");
Finsi
Finsi
Fin
Exercice 5

 Ecrire un algorithme qui, à partir du numéro d’un mois saisi,


permet d’afficher la saison. Utiliser la structure « suivant Cas »
 Exemple :
 Si mois = 6 , 7 ou 8 Alors l’algorithme affiche Eté
 Si mois = 3, 4 ou 5 Alors l’algorithme affiche Printemps
 Si mois = 9, 10 ou 11, Alors l’algorithme affiche Automne
 Si mois = 12, 1 ou 2 Alors l’algorithme affiche Hiver
Corrigé – Exercice 5
Algorithme avec Suivant Cas :
var mois : entier
Debut
Ecrire (Quel est le mois (entre 1 et 12))
Lire (mois)
Suivant Cas mois Faire
Cas 6 à 8 :
Ecrire (‘C’est l’Eté’)
Cas 9 à 11 :
Ecrire (‘C’est l’Automne’)
Cas 12,1, 2 :
Ecrire (‘C’est l’hiver’)
Cas 3 à 5 :
Ecrire (‘C’est le printemps’)
Sinon Cas
Ecrire (‘votre nombre est erroné’)
Fin Cas
FIN
Corrigé - Exercice 5
var mois : entier
Debut
Ecrire (Quel est le mois (entre 1 et 12))
Lire (mois)
si mois=12 ou mois=1 ou mois=2 alors
Ecrire "C’est l’hiver !"
sinon
si mois=3 ou mois=4 ou mois=5 alors
Ecrire « C’est le printemps !"
sinon
si mois=6 ou mois=7 ou mois=8 alors
Ecrire « C’est l’été !"
sinon
Ecrire « C’est l’automne !"
finsi
finsi
finsi
fin
Corrigé - Exercice 5
var jour, mois : entier
debut
Ecrire "Quel est le jour ? "
Lire jour
Ecrire "Quel est le mois (entre 1 et 12)
Lire mois
si (mois=12 et jour>=21) ou mois=1 ou mois=2 ou (mois=3 et jour<21) alors
ecrire "C’est l’hiver !"
sinon
si (mois=3 et jour>=21) ou mois=4 ou mois=5 ou (mois=6 et jour<21) alors
ecrire "Vive le printemps !"
sinon
si (mois=6 et jour>=21) ou mois=7 ou mois=8 ou (mois=9 et jour<21) alors
ecrire "Enfin l’été !"
sinon
ecrire "Déjà l’automne !"
finsi
finsi
finsi
fin
Exercice 6
 a) Simuler le fonctionnement de l’algorithme ci-après lorsqu’on saisit a = 3, b =
2:
Algorithme Essai
Variables: a, b, c, d: Entier
Début
Ecrire ( Saisissez a, b )
Lire (a, b)
d 5
si ((a >= d)et(b != a)) alors
c0
sinon c  2 * b
b c–1
si ((d < c) ou (d = a + 2)) alors
d 3
a  c div 2
sinon b  -1
Finsi
Finsi
Ecrire (a + b + c - d)
Fin
Corrigé - Exercice 6
 a) Simuler le fonctionnement de l’algorithme ci-après lorsqu’on saisit a = 3, b =
2:

Algorithme Essai instruction test a b c d


Variables: a, b, c, d: Entier
Début 2 3 2
Ecrire ( Saisissez a, b )
Lire (a, b) 3 5
d 5 4 Faux
si ((a >= d)et(b != a)) alors
c0
sinon c  2 * b 5 4
b c–1
si ((d < c) ou (d = a + 2)) alors 6 3
d 3 7 Vrai 3
a  c div 2
sinon b  -1 8 2
Finsi
Finsi
Ecrire (a + b + c - d) résultat = 2+3+4-3= 6
Fin
Corrigé - Exercice 6
 b) Quels sont les types d’instructions utilisées dans cet
algorithme ?
 Les instructions utilisées sont :
 Les instructions de saisie et d’affichage : Lire et Ecrire ;
instructions de dialogue homme/machine
 Les instructions d’affectation
 Les instructions alternatives
Exercice 7
 Quel est le nombre de passages dans la boucle de l’algorithme Test 3 ?

Titre : Test 3
Variable x : Entier

Début
x 1
Tant que (sqr(x) < 30) Faire * sqr(x) = x² *
x  x +2
Ecrire (" x = " , x)
Fin Tant que
Fin
Corrigé – Exercice 7
 Dans cet algorithme, on cherche tous les nombres x dont le carré est inférieur à 30 et qui vérifient
l’affectation: x x +2. La trace de l’algorithme est telle que:

Valeurs de x Test

Initialisation 1 12 < 30 Vrai

1er passage dans la boucle x = 1+2 = 3 32 < 30 Vrai

2ème passage dans la boucle x = 3+2 = 5 52 < 30 Vrai

3ème passage dans la boucle x = 5+2 = 7 72 < 30 Faux

 On voit donc que, après le troisième passage dans la boucle (pour x = 7) la condition (72 < 30) n’est
plus vérifiée. Donc on sort de la boucle. Et finalement la boucle a été exécutée 3 fois.
Exercice 8
 Donner la simulation de l’exécution des algorithmes Boucle1 et Boucle 2, si à l’exécution on saisit N= 4. Qu’est ce que vous
remarquez ?
 En déduire un énoncé pour l’algorithme Boucle 1
 Reprendre l’Algorithme Boucle1 en utilisant les deux structures Pour et Tant

Algorithme Boucle1 Algorithme Boucle2


Variable N, i :Entier Variable N, i :Entier

S : Réel S : Réel

Début Début

Ecrire( "Saisir un entier N > 0 ") Ecrire( "Saisir un entier N > 0 ")

Lire(N) Lire(N)

S0 S0

i0 i0

Répeter Répeter

ii+1 ii+1

S S + 1/(i*i) S S + 1/(i*i)

Jusqu’à ( i >=N) Ecrire( "S =" , S)

Ecrire( "S =" , S) Jusqu’à ( i >=N)

Fin Fin
Corrigé – Exercice 8
 L’algorithme Boucle2 s’exécutera de la même manière que l’algorithme Boucle1 à la différence que dans
Boucle 2, l’instruction d’affichage Ecrire( "S =" , S) fait partie du bloc de la boucle, par conséquent il y
aura autant d’affichages que de passages dans la boucle ; soit les valeurs S=1 ; S=1.5 ; S= 1.83 et S=2.08

Entrée Sortie Test


N=4 , S=0 ; i= 0
i=1 S= 0+1/1=1 1 >= 4 faux
i=2 S= 1+1/2² 2 >= 4 faux
i=3 S= 1+1/2² + 1/3² 3 >= 4 faux
4 >= 4 Vrai (On sort
i=4 S= 1+ 1/2² + 1/3² + 1/4²
de la boucle)

Affichage du résultat
S= 1+ 1/2² + 1/3² + 1/4² =
1,42
Corrigé – Exercice 8
 D’après ce qui précède on peut généraliser le résultat
trouvé dans le cas N= 4.
 Ecrire un algorithme permettant de calculer, pour un
entier N>0 donné, la somme S telle que S= 1+ ½² + 1/3²
+ … + 1/N²
Corrigé – Exercice 8
 On reprend l’Algorithme Boucle1 en utilisant les deux structures Pour et Tant que

Algorithme Boucle1 (Avec Tant que Algorithme Boucle1 (Avec Pour)


) Variable N, i :Entier
Variable N, i :Entier S : Réel
S : Réel Début
Début Ecrire( "Saisir un entier N > 0 ")
Ecrire( "Saisir un entier N > 0 ") Lire(N)
Lire(N) S0
S0 Pour i  1 à N faire
i0 S S + 1/(i*i)
Tant que (i < N) faire Fin Pour
ii+1 Ecrire( "S =" , S)
S S + 1/(i*i) Fin
Fin Tant que
Ecrire( "S =" , S)
Fin
Exercice 9
 Ecrire un algorithme permettant d’afficher les nombres impairs inférieurs à 90

 Ecrire un algorithme permettant d’afficher les multiples de 3 compris entre 12 et


120
Corrigé-Exercice 9
Un nombre impair est de la forme 2*i+1. Le nombre d’itérations est inconnu, l’exercice
peut être traité avec Tant que ou Répéter jusqu’à

Algorithme Nombre_impair
Variable M, i : entier
Début
i0 * initialisation des variables M et i *
M 1
Répéter
ECRIRE ( M, "est un nombre impair inférieur à 90" )
i  i+1
M  2*i +1
Jusqu’ à (M > = 90)
Fin
Corrigé-Exercice 9
Remarque : Le nombre d’itérations est inconnu, on peut utiliser Tant que ou Répéter..
jusqu’à
Algorithme
Algorithme Multiple_3
Variable M, i : entier
Début
i  3 * initialisation des variables M et i *
M  12
Tant que (M >= 12) et (M < = 120) faire
i  i+1
M  3*i
Ecrire ( M, " est un multiple de 3 compris entre 12 et 120 " )
Fin Tant que
Fin
Exercice 10
 Ecrire un algorithme permettant la saisie de N nombres entiers et l’affichage de
leur somme, produit et moyenne. On utilisera les trois structures : Tant que,
Répéter et Pour
Corrigé – Exercice 10
 Analyse
 On a à répéter N fois le processus suivant :
 Lire une donnée.
 Ajouter cette donnée à la somme S calculée précédemment.
 Multiplier cette donnée par le produit P calculé précédemment.
 Calculer la moyenne de la nouvelle donnée avec les autres données.
 La moyenne des N nombres introduits est égale à leur somme divisée
par N (S/N).
Corrigé – Exercice 10
Algorithme Operations_Nombres
Variables N, Nombre, i : Entier
S, P: Entier Moyenne :
REEL
Début
ECRIRE ("Donner un nombre entier N (>=1) : " )
LIRE (N)
Si (N  0) alors
ECRIRE ("Entrée erronée : ")
Sinon
S  0 *Initialisation de la boucle*
P1
Pour i  1 à N Faire
ECRIRE ("Donner un nombre entier : ")
LIRE (Nombre)
S  S + Nombre
P  P * Nombre
Fin Pour
Moyenne  S/N
ECRIRE ("La somme des nombres est : ", S )
ECRIRE (" Le produit des nombres est : ", P)
ECRIRE (" La moyenne des nombres est : ", Moyenne)
Finsi
Fin
Corrigé – Exercice 10
Le début de l’algorithme est le même que dans b)
Suite de l’algorithme
S0 *Initialisation de la boucle*
P1
i0
Tant que (i < N) Faire
ECRIRE ("Donner un nombre entier : ")
LIRE (Nombre)
S  S + Nombre
P  P * Nombre
i  i+1
Fin Tant que
Moyenne  S/N
ECRIRE ("La somme des nombres est : ", S )
ECRIRE (" Le produit des nombres est : ", P)
ECRIRE (" La moyenne des nombres est : ", Moyenne)
Fin
Corrigé – Exercice 10
d) Algorithme utilisant la structure Répéter
Le début de l’algorithme est le même que dans b)
Suite de l’algorithme
S0 *Initialisation de la boucle*
P1
i0
Répéter
ECRIRE ("Donner un nombre entier : ")
LIRE (Nombre)
S  S + Nombre
P  P * Nombre
i  i+1
Jusqu’à (i  = N)
Moyenne  S/N
ECRIRE ("La somme des nombres est : ", S )
ECRIRE (" Le produit des nombres est : ", P)
ECRIRE (" La moyenne des nombres est : ", Moyenne)
Fin
Exercice 11
 Soit (Un) n la suite définie par : U0=1 et Un+1=3*Un – 2 , pour tout n ℕ
 Ecrire un algorithme permettant pour un entier N> 0 donné de calculer UN
 (Utiliser une boucle de type « Pour »)
Corrigé – Exercice 11
Algorithme Suite
Variable N : ENTIER
i: ENTIER
U : ENTIER
Début
ECRIRE ("Donner un nombre entier N (>0) : " )
LIRE (N)
U 1
Pour i  1 à N Faire
U 3* U -2
ECRIRE ("le ", i, "ème terme de la suite est= ", U)
Fin Pour
ECRIRE ("U ",N, "=" , U)
Fin
Exercice 12
 Pour N entier > 0 donné, on note S = 1 – 1/2 + …  1/2N
 Ecrire l’algorithme Somme permettant le calcul de S
 Pour la somme S calculée dans la question 1) On donne :
 Ecrire l’algorithme Somme1 permettant de calculer S et le 1er rang N tels que :
 Abs( S – 0.67) <0.01 (Abs étant la fonction valeur absolue)
Corrigé – Exercice 12 (Analyse)
 Le problème consiste à calculer la somme : S=1 – 1/2 + …  1/2N. Ceci revient à
effectuer N opérations d'addition.
 Pour initialiser le processus, posons S0 = 1
 Et Si = 1 – 1/2 + …  1/2i = Si = 1 – 1/2 + … + (- 1/2)i pour 1  i  N
 On a alors Si = Si-1 + (- 1/ 2)i pour 1  i  N
 On remarque que le 2ème opérande est exprimé en fonction d'une puissance de -1/2 .
 Si on pose U0 = 1 et Ui = (-1/2)i alors Ui = Ui-1 * (-1/2) pour 1 i  N.
 Ainsi on a : S0 = 1 , U0 = 1 et pour 1  i  N Ui = Ui-1 * (-1/2) , Si = Si-1 +
Ui
 Le nombre d'itérations nécessaires pour calculer la somme donnée est : N (qui sera
saisi). On utilise alors une boucle de type « pour ». L’affichage du résultat se fera à la
sortie de la boucle afin d’avoir la dernière valeur de S qui correspond à i = N
Corrigé – Exercice 12
Algorithme
Algorithme Somme
Variable N : ENTIER
i: ENTIER
S, U : REEL
Début
ECRIRE ("Donner un nombre entier N (>0) : " )
LIRE (N)
S1
U1
Pour i  1 à N Faire
U  U * (- 1/2)
SS+U
Fin Pour
ECRIRE ("La somme à calculer est : ", S)
Fin
Corrigé-Exercice 12
 a) L’analyse est la même que dans la première question mais comme on veut
trouver S et le rang N tels que Abs( S – 0.67) < 0.01 , on ne peut plus utiliser
la boucle « Pour » car le nombre d’exécution de la boucle n’est pas connu à
l’avance. On utilisera une boucle de type Tant que ou Répéter jusqu’à
Corrigé – Exercice 12
Algorithme
Algorithme Somme1
Variable N : ENTIER
S , U : REEL
Début
S1
U1
N 0 * Initialisation de N à 0*
Répéter
NN+1
U  U * (- 1/2)
SS+U
Jusqu’à Abs(S – 0.67) < 0.01
ECRIRE ("La somme à calculer est : ", S)
ECRIRE ("Le rang pour lequel le calcul s’arrête est : ", N)
Fin
Exercice 13
 Un individu a emprunté à un ami une somme de 2500 DHS
(prêt sans intérêts). Pour rembourser son ami, il prévoit de lui
remettre 110 DHS par mois. Mais comme cela ne correspond pas
à un nombre pile de mois, il se demande quel sera le montant à
rembourser le dernier mois.
 Écrire un algorithme permettant de résoudre le problème posé.
Corrigé - Exercice 13
 Partie I – Calculs d’approche
 1) Compléter, pour un montant M=2500 Dh, le tableau suivant :

Initialisa Mois 1 Mois 2 Mois 3 Mois 4 Mois5 …


tion
M=2500 110 110 110 110 110 …

Reste 2390 2280 2170 2060 1950

Tant que M >=110


Corrigé - Exercice 13
Partie II - Automatisation des calculs

Algorithme calcul_Reste
M: Entier
Début
Ecrire (‘Entrez le montant à rembourser ’)
Lire M
Tant que M >= 110
M  M-110
Fin Tant que
Ecrire (‘ le reste à payer est ’: M)
Fin