Langage algorithmique : Exercices
Dr. Konan Marcellin BROU
INP-HB/Dpt. Math-Info
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 1 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
I Affectation
Exercice 11
Déterminer les valeurs des variables a, b, c et d après exécution de l’algorithme suivant.
ALGORITHME affectation1
VAR a, b, c, d : ENTIER
DEBUT
a1;b3
ca+b;da-b
ac+2*b;bc+b;ca*b
db+d;ad*c
SI (c > d) ALORS
Ca-d
SINON
Cb-d
FIN
Exercice 12
Déterminer les valeur des tableaux t1 et t2 après exécution de l’algorithme suivant.
ALGORITHME affectation2
TYPE
Vecteur = TABLEAU[1..3] DE ENTIER
VAR t1, t2 : Vecteur
DEBUT
t1[1] 1 ; t1[2] 2 ; t1[3] 3
t2[1] t1[1] + t1[2]
t2[2] t1[1] + t1[3]
t2[3] t2[1] + t1[3]
t2[1] t2[3] - t1[1]
t1[2] 2 *t2[1] + t1[2]
t1[1] t2[2] + t1[1]
FIN
Exercice 13
Déterminer les valeur des tableaux i, j et t après exécution de l’algorithme suivant.
ALGORITHME affectation3
TYPE
Vecteur = TABLEAU[1..3] DE ENTIER
VAR t : Vecteur
i, j : ENTIER
DEBUT
i1;j2
t[i] j ; t[j] i
t[i + j] i + j
i t[i] + t[j]
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 2 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
j t[i] - t[j]
t[i - j] t[j]
t[j] t[i] - t[j]
FIN
Exercice 14
Ecrire un algorithme permettant d’échanger les valeur de deux variables x et y.
II Alternative
Exercice 21
Ecrire un algorithme qui lit le nom et le sexe de l’utilisateur puis affiche le message Bonjour M. (ou
Mme selon la nature du sexe) suivi du nom de l’utilisateur.
Exercice 22
Ecrire un algorithme permettant de déterminer le maximum de 3 nombres réel saisis au clavier.
Exercice 23
Ecrire de deux façons différentes (alternative complexe et choix multiple) un algorithme permettant
de simuler une calculette effectuant les opérations arithmétiques élémentaires (+, -, *, /). Les
opérandes et l’opérateur sont entrés au clavier.
Exercice 24
Ecrire un algorithme qui lit un réel a, et imprime un résultat b tel que, si a est > 20, b = a/2 ; si a < 0,
b = 0 ; sinon b = 2a.
Exercice 25
Ecrire un algorithme qui lit trois nombres entier x, y et z et permet de tester si x, y et z peut être les
longueurs de 3 côtés d’un triangle. C’est le cas si et seulement si on a simultanément :
x > 0, y > 0, z > 0
x + y >z, x + z > y, y + z > x
Exercice 26
Ecrire un algorithme qui transforme, les notes de 0 à 20 d’un devoir en une notation par lettre.
Après avoir lu la moyenne m et l’écart-type des notes de la classe, on applique le barème suivant :
Notes [0, m - [ : C
Notes [m - , m + [ : B
Notes [m + , 20] : A
III Boucles
Exercice 31 : Résistance équivalente
Ecrire un algorithme permettant de calculer la valeur de la résistance équivalente à n résistances
placées :
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 3 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
n
en série Rs Ri R1 R2 Rn
i 1
R1
1
en parallèle : Rp n
R2
1
i 1 Ri Rn
n et la valeurs des résistances sont lus au clavier.
Exercice 32 : Les nombres premiers
Ecrire un algorithme permettant de déterminer les nombres premiers inférieurs à 100 (un nombre est
premier s’il a deux diviseurs : 1 et lui-même).
Exercice 33 : Les nombres parfaits
Un nombre est parfait est un entier naturel égal à la somme de tous ses diviseur, 1 inclus (mais lui-
même exclu). Ex. 6 = 1 + 2 + 3. Ecrire un algorithme permettant de déterminer en les comptant les
nombres parfaits compris entre 6 et 10000.
Exercice 34
Ecrire un algorithme permettant de calculer le carré des 100 premiers nombres.
Exercice 35 : suite de Fibonacci
Ecrire un algorithme permettant de calculer le nième .terme de la suite de Fibonacci définie par : U1 =
1, U2 = 2 et Un = Un-1 + Un-2 (n 3)
Exercice 36
Soit la suite définie par : U1 = 0, U2 = 1 et Un = 3*Un-1 + 2*Un-2 (n 3)
Ecrire un algorithme permettant de calculer la valeur et le rang du premier terme cette suite
supérieure ou égale à 10000.
Exercice 37 : nombre d’or
Soient le deux suites U et V définies par :
U1 = 1, U2 = 2 et Ui = Ui-1 + Ui-2 et
Vi = Ui/Ui-1 (i 3)
La suite V tend vers une limite approchée appelée nombre d’or. on supposera que le nième terme de
la suite V soit Vn donne une valeur approchée du nombre d’or avec la précision E, dès que
Vn Vn 1 E .
1 5
Ecrire un algorithme permettant de calculer la valeur du nombre d’or (valeur = ) avec une
2
précision E, et le rang du terme de la suite V considéré comme égal au nombre d’or.
Exercice 38
Ecrire un algorithme permettant de calculer an pour tout a réel et tout n entier (positif, négatif ou
nul).
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 4 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
IV Les tableaux
Exercice 41
Ecrire un algorithme permettant de lire et d’afficher les éléments d’un tableau de réels.
Exercice 42
Ecrire un algorithme permettant de le minimum d’une liste de n entiers. transformer ce algorithme
afin de calculer aussi le maximum.
Exercice 43
Ecrire un algorithme permettant d’inverser l’ordre des éléments d’un vecteur (on utilisera qu’un
seul tableau).
Exercice 44
Ecrire un algorithme permettant de résoudre un système d’équations a 3 inconnues.
Exercice 45
Ecrire un algorithme permettant d’obtenir la transposée d’une matrice (matrice obtenue en inversant
les lignes et les colonne). Le résultat sera contenue dans la matrice initiale.
Exercice 46
Ecrire un algorithme permettant de multiplier une matrice par un scalaire. Le résultat sera contenue
dans la matrice initiale
Exercice 47
Ecrire algorithme permettant de faire l’addition de 2 matrices.
Exercice 48
Ecrire algorithme permettant de faire le produit de 2 matrices.
Exercice 49
Ecrire algorithme permettant de déterminer les vecteurs propres d’une matrice.
V Les chaînes de caractères
Exercice 51
Ecrire un algorithme permettant de retirer les blancs d’une phrase donnée.
Exercice 52
Le mot miroir d’un mot donné est le mot obtenu en lisant le mot donné à partir de la fin (exemple
elvairav est le mot miroir de variable). Ecrire un algorithme donnant le mot miroir d’un mot donné.
Exercice 53
Ecrire un algorithme qui permette de dire si un mot donné est mot palindrome, c’est-à-dire
identique à son mot miroir. Exemple kayak, esse, 10101…
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 5 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
VI Les sous-algorithmes
Exercice 61
Ecrire un algorithme permettant de rechercher, d’insérer et supprimer un élément dans un vecteur.
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 6 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
Corrections
I Affectation
Exercice 11
Instructions a b c d
a1 1 x x x
b3 1 3 x x
ca+b 1 3 4 x
da-b 1 3 4 -2
ac+2*b 10 3 4 -2
bc+b 10 7 4 -2
ca*b 10 7 70 -2
db+d 10 7 70 5
ad*c 350 7 70 5
ca-d 350 7 345 5
Exercice 12
Instructions t1[1] t1[2] t1[3] t2[1] t2[2] t2[3]
t1[1]1 1 x x x x x
t1[2]2 1 2 x x x x
t1[3]3 1 2 3 x x x
t2[1]t1[1]+t1[2] 1 2 3 3 x x
t2[2]t1[1]+t1[3] 1 2 3 3 4 x
t2[3]t2[1]+t1[3] 1 2 3 3 4 6
t2[1]t2[3]-t1[1] 1 2 3 5 4 6
t1[2]2*t2[1]+t1[2] 1 12 3 5 4 6
t1[1]t2[2]+t1[1] 5 12 3 5 4 6
Exercice 13
Instructions i j t[1] t[2] t[3]
i1 1 x x x x
j2 1 2 x x x
t[i]j 1 2 2 x x
t[j]i 1 2 2 1 x
t[i+j]i+j 1 2 2 1 3
it[i]+t[j] 3 2 2 1 3
jt[i]-t[j] 3 2 1 1 3
t[i-j]t[j] 3 2 1 1 3
t[j]t[i]-t[j] 3 2 1 2 3
Exercice 14
ALGORITHME echange
VAR x, y, z : ENTIER
DEBUT
ECRIRE(‘Entrer 2 entiers : ‘)
LIRE(x, y)
ECRIRE(‘Avant échange : ‘,x ,y)
zx
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 7 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
xy
yz
ECRIRE(‘Après échange : ‘,x ,y)
FIN
II Alternative
Exercice 21
ALGORITHME salutation
VAR nom : TEXTE
sexe : CAR
DEBUT
ECRIRE(‘Entrer votre nom et votre sexe (M/F) : ‘)
LIRE(nom, sexe)
SI(sexe=M) ALORS
ECRIRE(‘Bonjour Monsieur ‘,nom)
SINON SI(sexe)F) ALORS
ECRIRE(‘Bonjour Madame ‘,nom)
SINON
ECRIRE(nom,’ n’’a pas de sexe)
FIN
Exercice 22
Solution 1
x>y?
F V
y>z? x>z?
F VF V
z y z x
ALGORITHME maximum
VAR x, y, z : REEL
DEBUT
ECRIRE(‘Entrer 3 réels : ‘)
LIRE(x, y, z)
SI(x > y) ALORS
SI(x > z) ALORS
ECRIRE(‘Maximum : ‘,x)
SINON
ECRIRE(‘Maximum : ‘,z)
SINON SI(y > z) ALORS
ECRIRE(Maximum :’,y)
SINON
ECRIRE(‘Maximum : ‘,z)
FIN
Solution 2
ALGORITHME maximum
VAR x, y, z, max : REEL
DEBUT
ECRIRE(‘Entrer 3 réels : ‘)
LIRE(x, y, z)
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 8 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
SI(x > y) ALORS
maxx
SINON
maxy
SI(z > max) ALORS
maxz
ECRIRE(Maximum :’,max)
FIN
Exercice 23
Solution 1 : alternative complexe
ALGORITHME calculette
VAR op1, op2 : REEL
op :CAR
DEBUT
ECRIRE(‘Entrer 2 nombres et un opérateur : ‘)
LIRE(op1, op2, op)
SI(op = ‘+’) ALORS
resop1+op2
SINON SI(op = ‘-‘) ALORS
resop1-op2
SINON SI(op = ‘*‘) ALORS
resop1*op2
SINON SI(op = ‘/‘) ALORS
SI(op2 0) ALORS
resop1*op2
SINON
DEBUT
ECRIRE(‘Division par zéro ‘)
ARRETER
FIN
SINON
DEBUT
ECRIRE(‘Opérateur ‘,op, ‘inconnu’)
ARRETER
FIN
ECRIRE(op1,op,op2,’=’,res)
FIN
Solution 2 : choix multiple
ALGORITHME calculette
VAR op1, op2 : REEL
op :CAR
DEBUT
ECRIRE(‘Entrer 2 nombres et un opérateur : ‘)
LIRE(op1, op2, op)
CHOISIR(op) PARMI
‘+’ : resop1+op2
‘-‘ : resop1-op2
‘*‘ : resop1*op2
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 9 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
‘/‘ : SI(op2 0) ALORS
resop1*op2
SINON
DEBUT
ECRIRE(‘Division par zéro ‘)
ARRETER
FIN
AUTRE : DEBUT
ECRIRE(‘opérateur ‘,op,’ inconnu’)
ARRETER
FIN
FIN
ECRIRE(op1,op,op2,’=’,res)
FIN
Exercice 24
ALGORITHME test
VAR a, b : REEL
DEBUT
ECRIRE(‘Entrer un réel : ‘)
LIRE(a)
SI(a > 20) ALORS
ba/2
SINON SI(a < 0) ALORS
b0
SINON
b2*a
ECRIRE(b)
FIN
Exercice 25
ALGORITHME triangle
VAR x, y, z : REEL
DEBUT
ECRIRE(‘Entrer 3 réels : ‘)
LIRE(x,y,z)
SI((x > 0) ET (y>0) ET (z>0) ET (x+y>z) ET (x+z>y) ET (y+z>x)) ALORS
ECRIRE(‘Triangle de côté ‘,x,y,z)
SINON
ECRIRE(x,y,z,’ ne sont pas les côtés d’un triangle)
FIN
Exercice 26
ALGORITHME notation
VAR note, m, sigma : REEL
DEBUT
ECRIRE(‘Entrer la note la moyenne et l’’écart type : ‘)
LIRE(note,m,sigma)
SI((note 0) ET (note<m-sigma)) ALORS
ECRIRE(‘Note C’)
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 10 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
SINON SI((note m-sigma) ET (note <m+sigma)) ALORS
ECRIRE(‘Note B’)
SINON SI((note m+sigma) ET (note 20)) ALORS
ECRIRE(‘Note A’)
FIN
III Boucle
Exercice 31
ALGORITHME resistance
VAR r, s : REEL
type : TEXTE
n, i : ENTIER
DEBUT
ECRIRE(‘Entrer le type de montage : ‘)
LIRE(type)
s0
POUR i1, n
DEBUT
ECRIRE(‘Entrer une résistance : ‘)
LIRE(r)
SI(type = ‘série’) ALORS
ss+r
SINON SI((type=’parallèle’) ALORS
SI(r0)) ALORS
ss+1/r
SINON
ARRETER
FIN
SI(type=’série’) ALORS
ECRIRE(‘Résistance équivalente série = ‘,s)
SINON
ECRIRE(‘Résistance équivalente parallèle = ‘,1/s)
FIN
Exercice 32
Un nombre est premier s’il admet deux diviseurs seulement 1 et lui-même.
Traitant à part le cas de 1, 2 et 3, il suffit d’explorer l’ensemble des nombre impairs de 5 à 100
(puisque les nombre pairs sauf 2 ne sont pas premier) qui forment une progression arithmétique de
raison 2.
Pour chaque entier n de cette progression, il suffit alors de rechercher un diviseur éventuel de n
grâce à une boucle tant que ; cette recherche peut se limiter aux entier impairs de 3 à n
ALGORITHME premier
CONST Nmax=100
VAR i : ENTIER
DEBUT
POUR n1, 3
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 11 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
ECRIRE(n,’ ‘)
POUR n5, N, 2
DEBUT
divisibleFAUX
r RACINE(n)
j3
REPETER (* recherche d’éventuels diviseurs de i *)
SI(n % j = 0) ALORS
divisible VRAI
jj+2
JUSQUA((divisible=VRAI) OU (j>r))
SI(divisible = FAUX) ALORS
ECRIRE(n)
FIN
FIN
ou
PRGRAM premier
CONST Nmax=100
VAR n,i, j : ENTIER
r : REEL
divisible : BOOLEEN
DEBUT
POUR n1, 3
ECRIRE(n)
n5
REPETER
divisibleFAUX
rRACINE(n)
j3
REPERTER (* recherche d'éventuels diviseurs de i *)
SI(n % j = 0) ALORS
divisibleVRAI
jj+2
JUSQUA(divisible=VRAI) OU (j>r)
SI(divisible = FAUX) ALORS
ECRIRE(n)
nn+2
JUSQUE(n >Nmax)
FIN
Ou
Amélioration
Pour améliorer la vitesse d’exécution de ce algorithme, il faut éliminer les multiples de deux et
de trois, ce qui permet d’utiliser des incréments de 6 dans la boucle la plus interne. Pour cela, en
partant de n=5, il importe de s’assurer que le nombre n n’est pas divisible par i, ni par i+2. En effet,
i+1, i+3 et i+5 sont pairs, alors i+4 est un multiple de 3 ;
ALGORITHME premier
CONST Nmax=1000
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 12 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
VAR n,i,j : ENTIER
R : REEL
divisible:BOOLEEN
DEBUT
POUR n1,3
ECRIRE(n,’ ‘)
j3
POUR n5, Nmax
DEBUT
SI((n mod 2 <>0) ET (n mod 3 <>0)) ALORS
DEBUT
i-1
REPETER (* recherche d'éventuels diviseurs de i *)
i: i+6
JUSQUE((n mod i=0) OU (n mod (i+2)=0) OU (i*i>n))
SI(i*i >n) ALORS
DEBUT
SI(j mod 10 =0) ALORS (* affichage de 10 valeurs par ligne *)
ECRIRE
jj+1;
ECRIRE(n,’ ‘)
FIN
FIN
FIN
FIN
Exercice 33 : nombres parfaits
Il s’agit de rechercher parmi tous les entiers pairs de 6 à 10000, ceux ci sont des nombre parfaits.
Un nombre est parfait s’il est égal à la somme de tous ses diviseurs.
Posons S=somme des diviseurs de n (1 inclus). L’algorithme brut s’écrit
POUR n 6, 10000, 2
DEBUT
Calcul de S
SI(S=n) ALORS
n est parfait
FIN
L’ensemble des diviseurs de n est compris dans l’intervalle 2.. n
rRACINE(n)
S0
POUR i1, r (* recherche d'éventuels diviseurs de i *)
SI(n % i = 0) ALORS
SS+i
L’algorithme complet s’écrit
ALGORITHME Nbparfait
CONST Nmax=10000
VAR n, i,j, S : ENTIER
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 13 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
r : REEL
DEBUT
j :=0
POUR n 6, Nmax, 2
DEBUT
S0
rn/2
POUR i1, r (* calcul de la somme des diviseurs de n*)
SI(n % i = 0) ALORS
SS+i
j :=j+1 ; (* mémorise les rangs *)
SI(S=n) ALORS
ECRIRE(n, j)
FIN
FIN
ou
ALGORITHME Nbparfait
CONST Nmax=10000
VAR n, i,k,S : ENTIER
r : REEL
DEBUT
n:=6
k:=1
REPETER
S0
rn/2
i:=1
TANTQUE(i<n ) (* calcul de la somme des diviseurs de n*)
DEBUT
SI(n mod i = 0) ALORS
SS+i
ii+1
FIN
SI(S=n) ALORS
DEBUT
ECRIRE(n,' Rang = ',k)
kk+1
FIN
nn+2
JUSQUE(n>Nmax)
FIN
Exercice 34
ALGORITHME carre
CONST Nmax=100-1
VAR i :ENTIER
DEBUT
POUR i0 ,Nmax
ECRIRE(i*i)
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 14 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
FIN
Execrcice 35
If faut 3 variables pour mémoriser les valeurs de Un (U), Un-1(U2) et Un-2 (U1)
ALGORITHME fibonacci;
VAR n,i,U1,U2,U : ENTIER
DEBUT
ECRIRE('Entrer le numéro du terme d‚sir‚ : ')
LIRE(n)
U11
U22
ECRIRE(U1,' ',U2,' ')
POUR i3, n (*calcul de Un avec n 3 *)
DEBUT
UU2+U1
U1U2
U2U
ECRIRE(U,' ');
FIN
FIN
Exercice 36
ALGORITHME suite
CONST Nmax=10000
VAR i,U1,U2,U : ENTIER
DEBUT
U10
U22
i3
REPETER
U3*U2+2*U1
U1U2
U2U
ii+1
JUSQUA(U>=Nmax)
ECRIRE(u,' ',i)
FIN
Exercice 37 : nombre d’or
1 5
La valeur du nombre d’or est
2
On reconnaît dans la formune la suite de Fobonacci
ALGORITHME nbreOr
VAR i,U1,U2,U : ENTIER
V1,V,E : REEL
trouve : BOOLEEN
DEBUT
ECRIRE('Entrer la précision : ')
LIRE(E)
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 15 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
U11
U22
V12
i3
trouveFAUX
REPETER
UU2+U1
VU/U2
SI((V-V1) > E) ALORS
DEBUT
U1U2
U2U
V1V
FIN
SINON
trouveFAUX
ii+1
JUSQUA(trouve=VRAI)
ECRIRE(V,' ',i)
FIN
Exercice 38 : an
a = 0 et n > 0 p = 1
a = 0 et n < 0 p est indéfinie
1
a 0 et n < 0 p = n
a
a 0 et n > 0 p = an
ALGORITHME puissance
VAR n, i : ENTIER
a, p : REEL
DEBUT
ECRIRE('Entrer a et n : ')
LIRE(a,n)
p1
SI(a=0) ALORS
SI(n > 0) ALORS
p1
SINON
ECRIRE('Puissance non définie ')
SINON SI(n < 0) ALORS
DEBUT
n-n
a1/a
FIN
POUR i1, n
pp*a
ECRIRE(a,'^',n, ' = ',p)
FIN
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 16 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00
Les sous-algorithmes
INP-HB/Dpt. Math-Info Support de cours langage algorithmique Page 17 sur 17
Dr Konan Marcellin BROU Exercices Créé le 08/08/1999 18:19:00