Vous êtes sur la page 1sur 88

Algorithmique

TD1
(Rappels)
Pr. RAOUYANE Brahim
Département Mathématiques & Informatique
SMI3 2020

1
Exercice 1 – Conditionnelles
1. Écrire un algorithme qui demande un
réel à l’utilisateur et affiche sa valeur
absolue (sans utiliser de fonction
prédéfinie évidemment).
2. Écrire un algorithme qui demande un
réel à l’utilisateur et l’arrondit à
l’entier le plus proche (les x,5 seront
arrondis à l’entier supérieur)

2
Exercice 1 – Conditionnelles
Algorithme valeur absolue
Variable
A : Entier
Debut
(Donner une valeur )
Ecrire (
Lire (A)
Si A<0 Alors
A  A
Fsi
(La valeur absolue est : , A)
Ecrire ( A)
Fin

3
Exercice 1 – Conditionnelles
1. Écrire un algorithme qui demande un
réel à l’utilisateur et affiche sa valeur
absolue (sans utiliser de fonction
prédéfinie évidemment).
2. Écrire un algorithme qui demande un
réel à l’utilisateur et l’arrondit à
l’entier le plus proche (les x,5 seront
arrondis à l’entier supérieur)

4
Exercice 1 – Conditionnelles
Algorithme Arrondie
Variable
A: Réel
B: Entier
Debut
(Donner une valeur réelle : )
Ecrire (
Lire (A)
B A
Si A  B>=
B>=0.5
0.5 Alors
B++
Fsi
(La valeur arondi de ,A, est : , B)
Ecrire ( B)
Fin
5
Exercice 2 – Itérations
1. Écrire un algorithme qui demande un entier positif, et
le rejette tant que le nombre saisi n’est pas conforme.
2. Écrire un algorithme qui demande 10 entiers, compte
le nombre d’entiers positifs saisis, et affiche ce
résultat.
3. Écrire un algorithme qui demande des entiers positifs
à l’utilisateur, les additionne, et qui s’arrête en
affichant le résultat dès qu’un entier négatif est saisi.
4. On cherche la plus petite puissance de 2 proches
d’un nombre positif. Ecrire un algorithme qui permet
de déterminer n tels que 2n ≥ X, X est nombre réel
positif non nul saisi par l’utilisateur

6
Exercice 2 – Itérations
1. Écrire un algorithme qui demande un entier positif, et
le rejette tant que le nombre saisi n’est pas conforme.

Algorithme valeur conforme


Variable
A : Entier
Debut
(Donner une valeur positive )
Ecrire (
Lire (A)
Tantque A<0 faire
(Donner une valeur positive )
Ecrire (
Lire (A)
FT
Fin
7
Exercice 2 – Itérations
1. Écrire un algorithme qui demande un entier positif, et
le rejette tant que le nombre saisi n’est pas conforme.
Algorithme valeur conforme
Variable
A : Entier
Debut
Pour i allant de 0 a 1 faire
(Donner une valeur positive )
Ecrire (
Lire (A)
Si A< 0 Alors
i
FinSi
FT
Fin
8
Exercice 2 – Itérations
1. Écrire un algorithme qui demande un entier positif, et
le rejette tant que le nombre saisi n’est pas conforme.
2. Écrire un algorithme qui demande 10 entiers, compte
le nombre d’entiers positifs saisis, et affiche ce
résultat.
3. Écrire un algorithme qui demande des entiers positifs
à l’utilisateur, les additionne, et qui s’arrête en
affichant le résultat dès qu’un entier négatif est saisi.
4. On cherche la plus petite puissance de 2 proches
d’un nombre positif. Ecrire un algorithme qui permet
de déterminer n tels que 2n ≥ X, X est nombre réel
positif non nul saisi par l’utilisateur

9
Exercice 2 – Itérations
2. Écrire un algorithme qui demande 10 entiers, compte
le nombre d’entiers positifs saisis, et affiche ce
résultat.

10
Exercice 2 – Itérations
1. Écrire un algorithme qui demande un entier positif, et
le rejette tant que le nombre saisi n’est pas conforme.
2. Écrire un algorithme qui demande 10 entiers, compte
le nombre d’entiers positifs saisis, et affiche ce
résultat.
3. Écrire un algorithme qui demande des entiers positifs
à l’utilisateur, les additionne, et qui s’arrête en
affichant le résultat dès qu’un entier négatif est saisi.
4. On cherche la plus petite puissance de 2 proches
d’un nombre positif. Ecrire un algorithme qui permet
de déterminer n tels que 2n ≥ X, X est nombre réel
positif non nul saisi par l’utilisateur

11
Exercice 2 – Itérations
3. Écrire un algorithme qui demande des entiers positifs
à l’utilisateur, les additionne, et qui s’arrête en
affichant le résultat dès qu’un entier négatif est saisi.

12
Exercice 2 – Itérations
1. Écrire un algorithme qui demande un entier positif, et
le rejette tant que le nombre saisi n’est pas conforme.
2. Écrire un algorithme qui demande 10 entiers, compte
le nombre d’entiers positifs saisis, et affiche ce
résultat.
3. Écrire un algorithme qui demande des entiers positifs
à l’utilisateur, les additionne, et qui s’arrête en
affichant le résultat dès qu’un entier négatif est saisi.
4. On cherche la plus petite puissance de 2 proches
d’un nombre positif. Ecrire un algorithme qui permet
de déterminer n tels que 2n ≥ X, X est nombre réel
positif non nul saisi par l’utilisateur

13
Exercice 2 – Itérations
Algorithme Puissance
Variable
X: Réel Si X > 1 Alors
a, n, k: Entier Tantque P<X faire
Debut n++
(Donner la valeur positive de X : )
Ecrire ( P  P*2
Lire (X) FT
n0 Sinon
P1 Tantque P>X faire
n--
P  P/2
FT
FinSi

Ecrire (
(Puissance de 2 le plus proche de
de,X, est
est,n
,n))
Fin

14
Exercice 3 – Conversion en binaire
1. Écrire un algorithme de conversion d’un nombre
entier décimal en binaire.

15
Exercice 3 – Conversion en binaire

16
Exercice 4 – Suites
1. Écrire un algorithme pour afficher les premiers
termes des suites suivantes (nombre de termes
demandé à l’utilisateur) :

17
Exercice 5 – Boucles imbriquées
Échiquiers :
a) Écrire un algorithme permettant d’écrire un carré de 8 fois 8
caractères ’x’.
b) Écrire un algorithme permettant d’écrire un échiquier. On
représentera les case noires par des ’x’ et les cases blanches
par des espaces.
c) Modifier l’algorithme précédent pour afficher un cadre
autour de l’échiquier, en utilisant les caractères ’|’ , ‘-' et ’+’.
d) Modifier de nouveau cet algorithme pour afficher l’ensemble
des cases avec ces mêmes caractères (voir exemple 4 ci-
dessous – incomplet).

18
Exercice 5 – Boucles imbriquées
Échiquiers :
a) Écrire un algorithme permettant d’écrire un carré de 8 fois 8
caractères ’x’.

19
Exercice 5 – Boucles imbriquées
Échiquiers :
a) Écrire un algorithme permettant d’écrire un carré de 8 fois 8
caractères ’x’.

20
Exercice 5 – Boucles imbriquées
Échiquiers :
b) Écrire un algorithme permettant d’écrire un échiquier. On
représentera les case noires par des ’x’ et les cases blanches
par des espaces.

21
Exercice 5 – Boucles imbriquées
Échiquiers :
b) Écrire un algorithme permettant d’écrire un échiquier. On
représentera les case noires par des ’x’ et les cases blanches
par des espaces.

22
Exercice 5 – Boucles imbriquées
Échiquiers :

23
Exercice 5 – Boucles imbriquées
Échiquiers :

24
TD2 Algorithmique II
(Tableaux & Sous-Algorithme)

25
Exercice 1 :
1. Ecrire un algorithme qui permet de remplir par l’utilisateur
un tableau de 10 entiers, mais l’utilisateur doit respecter
l’ordre des éléments saisis.
2. On veut manipuler un tableau de 10 entiers, écrire cet
algorithme qui permet :
a) A l’utilisateur de saisir les éléments de la table qui sont négatifs et
positifs non nul avec une boucle Pour.
b) Une boucle qui permet d’afficher la table.
c) Une boucle qui donne le nombre des entiers positifs et négatifs.
d) Une boucle qui permet de ranger les nombres positifs dans la partie à
droite et les nombres négatifs à gauche.
 Par exemple : Soit le tableau ci-dessous :

26
Exercice 1 :
T[10]: Tableau de entier
i,ng : entier
Debut
i <--- 1
TantQue i=<10
Ecrire("donnez la valeur "i" eme")
lire(T[i])
Si i > 1 ET T[i] < T[i-1] 0 alors
i--
Sinon i++
Finsi
Finpour
Pour i <--- 1 à 10 faire
Ecrire(T[i])
Finpour
27
Fin
Exercice 1 :
T[10]: Tableau de entier
i,ng : entier
Debut
Pour i <--- 1 à 10 faire
Ecrire("donnez la valeur "i" eme")
lire(T[i])
Si T[i] < 0 alors
ng<--- ng + 1
FinSi
Si T[i] = 0 alors
i<--- i -1
Finsi
Finpour
Pour i <--- 1 à 10 faire
Ecrire(T[i])
Finpour
Ecrire("Nombre Positifs : " ,10-ng, "Nombre négatifs:", ng)

Fin
28
Exercice 1 :
1. Ecrire un algorithme qui permet de remplir par l’utilisateur
un tableau de 10 entiers, mais l’utilisateur doit respecter
l’ordre des éléments saisis.
2. On veut manipuler un tableau de 10 entiers, écrire cet
algorithme qui permet :
a) A l’utilisateur de saisir les éléments de la table qui sont négatifs et
positifs non nul avec une boucle Pour.
b) Une boucle qui permet d’afficher la table.
c) Une boucle qui donne le nombre des entiers positifs et négatifs.
d) Une boucle qui permet de ranger les nombres positifs dans la partie à
droite et les nombres négatifs à gauche.
 Par exemple : Soit le tableau ci-dessous :

29
Exercice 1 :

30
Exercice 1 :
debut
i<--1
j<--n
tantque(i<j)
Si(T[i]>0 et T[j]<0)
temp<--T[i]
T[i]<--T[j]
T[j]<--temp
i<--i+1
j<--j-1
FSi
si(T[i]<0)
i<--i+1
FSi
si(T[j]>0)
j<--j-1
FSi
fintanque
31
Exercice 2 :
 On veut créer un algorithme qui permet de manipuler un
type de matrices, ces matrices dépend juste de n comme
montre l’exemple suivant :

1. Ecrivez un sous-algorithme qui permet la création


de la matrice à l’aide d’un nombre entier n positif
saisi par l’utilisateur.
2. Compléter le programme avec un sous-algorithme
qui affiche la matrice.
32
Exercice 2 :
Remplissage
Procedure Remplissage (t[] [],n:entier)
variable i,j:entier
debut
pour i allant de 1 à n faire Affichage
pour j allant de 1 à n faire
si (i+j)%2=0 alors
t[i][j] <-- 0 procédure affichage (T[ ] [ ] , n:entier)
else variable i,j:entier
t[i][j] <-- -1 début
Finsi pour i de 0 à n-1 faire
Fpour pour j de 0 à n-1 faire
Fpour écrire (T[i][j])
fin fin pour
écrire (EOL)
fin pour
fin

33
Exercice 2 :

3. Donnez un sous-algorithme qui permet de calculer


Mt, on prend l’exemple de n=3 :

34
Exercice 2 :
Procedure multiple_matrice(T[][],n,t:entier)
Variables i,j:entier;
Debut
pour i allant de 1 a n faire
pour j allant de 1 a n faire
si tmod2==0
si(i+j)mod2==0
T[i][j]<--pow(2,t/2)/2
sinon
T[i][j]<--0
finsi
si i==n/2 et j==n/2
T[i][j]<--pow(2,t/2)
finsi
sinon
si(i+j)mod2==0
T[i][j]<--0
sinon
T[i][j]<--(-pow(2,t/2))
finsi

finsi
finpour
finpour
FProcedure
35
Exercice 2 :
 Compléter le programme avec une procédure qui permet de ranger
une matrice.
 La procédure permet à partir d’une matrice avec des -1 et 0 non
triées, de les ranger, afin d’avoir la forme de la matrice initiale.

-1 -1 -1 0 -1 0
-1 0 0 -1 0 -1
0 0 0 0 -1 0

36
Exercice 2 :
-1 -1 -1 0 -1 0
-1 0 0 -1 0 -1
0 0 0 0 -1 0

 Sous Algorithme de Arrangement


 Sous Algorithme de Search
 Sous Algorithme de Swap
 Sous Algorithme de Print

37
Exercice 2 :
-1 -1 -1 0 -1 0
-1 0 0 -1 0 -1
0 0 0 0 -1 0

Procedure Arrangement (T[][],n:entier


(T[][],n:entier))
Variables i,j,k,l
i,j,k,l:: Entier
Debut
Print(T[][],n)
Print (T[][],n)
Pour i allant de 1 a n Faire
Pour j allant de 1 a n Faire
Si(i+j)mod2<> 0 ET T[i][j]=0
k,l Search (T[][],n)
Swap (T[][],i,j,k,l
(T[][],i,j,k,l))
FinSi
Finpour
Finpour
Print(T[][],n)
Print (T[][],n)
FProcedure
38
Exercice 2 :
-1 -1 -1 0 -1 0
-1 0 0 -1 0 -1
0 0 0 0 -1 0

Fonction Search (T[][],


(T[][],n:entier
n:entier)) : Entier, Entier
Variables i,j
i,j:: Entier
Debut
pour i allant de 1 a n Faire
Pour j allant de 1 a n Faire
Si (i+j)mod2=0
Si T[i][j]=-
T[i][j]=-1
return i,j
FinSi
FinSi
Finpour
Finpour
FFonction

39
Exercice 2 :
-1 -1 -1 0 -1 0
-1 0 0 -1 0 -1
0 0 0 0 -1 0
Procédure Swap (T[ ] [ ],i,j,k,l:entier)
Variable Tmp:entier
Début
Tmp  T[i][j]
T[i][j]  T[k][l] Procédure Print (T[ ] [ ] , n:entier)
T[k][l]  Tmp Variable i,j:entier
Fin Procédure Début
pour i de 0 à n-1 faire
pour j de 0 à n-1 faire
écrire (T[i][j])
fin pour
écrire (EOL)
fin pour
FinProcédure
40
Exercice 3 :
 Écrire un sous-algorithme permettant de remplir une table de dimension N
avec les caractères ‘X’ et ‘O’ de la manière suivante :

 Écrire un algorithme de tri itératif qui permet de transformer la table A a la


table B

 Écrire un algorithme de tri itératif qui permet de transformer la table C à la


table A (on suppose que le nombre de X et O sont proportionnels).

41
Exercice 3 :
 Écrire un sous-algorithme permettant de remplir une table de dimension N
avec les caractères ‘X’ et ‘O’ de la manière suivante :

Procédure TableA (A[]:caractére,N:entier)


Variable i:entier
Debut

pour i allant de 0 à N-1 faire


si (( i=0 || i%3=0 )) alors
A[i]  ‘X’
sinon
A[i]  ‘O’
finsi
finpour
pour i allant de 0 à N-1 faire
ecrire ( A[i] )
finpour
finprocédure
42
Exercice 3 :
 Écrire un algorithme de tri itératif qui permet de transformer la table A a la
table B

procédure(t[ ]:caractere ,n:entier)


variable i,j,temp:entier
j=1
pour i=1 a n-1 faire
si (i%3=0)
temp  t[i]
t[i]  t[j]
t[j]  temp
j++;
finsi
Fpour
FProcedure
43
Exercice 3 :
 Écrire un algorithme de tri itératif qui permet de transformer la table A a la
table B

Procedure Tri(T[]: Caractères ,n: Entier)


debut
i1
jn
Tantque(i<j)
Si(T[i]= ‘O’ et T[j]=‘X’ )
temp<--T[i]
T[i]<--T[j]
T[j]<--temp
FSi
Si (T[i]=‘X’) Alors ii+1 FSi
Si (T[j]=‘O’) Alors jj-1 FSi
Fintanque
FProcedure

44
Exercice 3 :
 Écrire un algorithme de tri itératif qui permet de transformer la table C à la
table A (on suppose que le nombre de X et O sont proportionnels).

45
Exercice 3 :
 Écrire un algorithme de tri itératif qui permet de transformer la table C à la
table A (on suppose que le nombre de X et O sont proportionnels).

Procedure Arrangement (T[]:caractres,n:entier


(T[]:caractres,n:entier))
Variables i,k
i,k:: Entier
Debut
Pour i allant de 0 a n- n-1 Faire
si (( i=0 OU i mod 3=0 ) ET A[i] <> ‘X’)
kSearch (T[][],
(T[][],n,’X
n,’X’)
’)
Swap (T[],i,k
(T[],i,k))
FinSi
Finpour
Finpour

FProcedure
46
Exercice 3 :
 Écrire un algorithme de tri itératif qui permet de transformer la table C à la
table A (on suppose que le nombre de X et O sont proportionnels).

Fonction recherche (T[]:caractère,n:entier


(T[]:caractère,n:entier ) : entier
Variables i:entier
Debut
Pour i allant de 1à n faire
Si (( i<>0 OU i mod 3<>0 ) ET A[i] = ‘X’)
Return i
Finsi
Finpour
Finfonction

47
Exercice 4 :
 Écrire un algorithme qui permet le traitement de tableau
suivant :

1) Un sous-algorithme qui permet la saisie des éléments de la table


2) Un sous-algorithme permet à la fois d’afficher le minimum, le maximum
et la somme des éléments.
3) Un sous-algorithme qui permet d’effectuer la recherche d’un élément
4) Un sous-algorithme qui permet d’effectuer l’ajout et la suppression d’un
élément de tableau X et l’ajout d’un autre élément.
5) Un sous-algorithme de tri à bulles
6) Un sous-algorithme qui permet d’effectuer la recherche d’un élément
7) Un sous-algorithme qui permet mettre la médiane dans sa place.
48
Exercice 4 :
1) Un sous-algorithme qui permet la saisie des éléments de la table

procedure saisie_table(T[],n: entier)


variable:i:entier
debut
pour i allant de 0 a n-1 faire
ecrire("entrer T[i]= ",i)
lire(T[i])
finpour

finprocedure

49
Exercice 4 :
2) Un sous-algorithme permet à la fois d’afficher le minimum, le maximum
et la somme des éléments.

50
Exercice 4 :
2) Un sous-algorithme permet à la fois d’afficher le minimum, le maximum
et la somme des éléments.

procedure statique(T[],n:entier)
variable:
i,max,min,somme:entier
debut
max<--T[0]
min<--T[0]
s<--T[0]
pour i allant de 1 a n-1 faire
si max < T[i]
max<--T[i]
finsi
si min > T[i]
min<--T[i]
finsi
somme  somme+T[i]
finpour
ecrire("le maximum est : max ,le minimum est: min , la somme egale : somme")
fin
finprocedure

51
Exercice 4 :
 Écrire un algorithme qui permet le traitement de tableau
suivant :

3) Un sous-algorithme qui permet d’effectuer la recherche d’un élément


fonction recherche(T[],n,elt:entier):entier
variable: i:entier
debut:
Pour i allant de 0 a n-1
Si(T[i]=elt)
ecrire("la position est i";i)
return i
FinSi

Finpour
ecrire("cette element n'est pas trouver")
return -1
52 finfonction
Exercice 4 :
 Écrire un algorithme qui permet le traitement de tableau
suivant :

1) Un sous-algorithme qui permet la saisie des éléments de la table


2) Un sous-algorithme permet à la fois d’afficher le minimum, le maximum
et la somme des éléments.
3) Un sous-algorithme qui permet d’effectuer la recherche d’un élément
4) Un sous-algorithme qui permet d’effectuer l’ajout et la suppression d’un
élément de tableau X et l’ajout d’un autre élément.
5) Un sous-algorithme de tri à bulles
6) Un sous-algorithme qui permet d’effectuer la recherche d’un élément
7) Un sous-algorithme qui permet mettre la médiane dans sa place.
53
Exercice 4 :
1) Un sous-algorithme qui permet d’effectuer l’ajout et la suppression d’un
élément de tableau X et l’ajout d’un autre élément.

procédure SR(T[],N,P:entier)
variable i:entier
pour i  N à p+1 faire
T[i]  T[i-1]
fin pour
fin procédure procédure ajout(T[],X,P:entier,N : par adress)
variable i:entier
N++
SR(T[],N,P)
T[p]X
fin procédure

54
Exercice 4 :
1) Un sous-algorithme qui permet d’effectuer l’ajout et la suppression d’un
élément de tableau X et l’ajout d’un autre élément.

procédure supp(T[],N,X:entier) procédure Sl(T[],P:entier ,N: par adress )


début entier
p<--rech(T[],N) début
Sl(T[],N:entier pour i<-- P à Nfaire
fin procédure T[i]<-- T[i+1]
N--
fin procédure
procédure rech(T[],N,X:entier):entier
i: entier
début
pour i<-- 1 à N faire
si T[i]=X alors
return i
55
fin si
fin procédure
Exercice 4 :
1) Un sous-algorithme qui permet d’effectuer l’ajout et la suppression d’un
élément de tableau X et l’ajout d’un autre élément.

Fonction Suppression(T[],j:entier,N:entier par adresse)


variable i,:entier
Debut
//suppression d'un élément d'indice j:
Pour i allant de j à N-1 Faire
T[i] T[i+1]
Fin pour
N  N-1
Finsi
Fin procédure

56
Exercice 4 :
 Sous-algorithme de tri à bulles
Procédure bubbleSort(
bubbleSort(T[],
[],n:Entier
n:Entier))
Variable i,j : Entier
Début
Pour i de 0 a n-1 Faire
Pour j de 0 a n-i-1 Faire
Si(T[j]>T[j+1])
Si(T[j]>T[j+1]) Alors
swap(T[j],T[j+1])
FinSi
FPour
FPour
FProcedure

57
Exercice 4 :
 Sous-algorithme de tri à bulles

58
Exercice 4 :
 Écrire un algorithme qui permet le traitement de tableau
suivant :

1) Un sous-algorithme qui permet la saisie des éléments de la table


2) Un sous-algorithme permet à la fois d’afficher le minimum, le maximum et la somme des
éléments.
3) Un sous-algorithme qui permet d’effectuer la recherche d’un élément
4) Un sous-algorithme qui permet d’effectuer l’ajout et la suppression d’un élément de
tableau X et l’ajout d’un autre élément.
5) Un sous-algorithme de tri à bulles
6) Un sous-algorithme qui permet d’effectuer la recherche d’un élément

7) Un sous-algorithme qui permet mettre la médiane dans sa


place.
1
Exercice 4 :

2
Exercice 4 :

procedure Mediane(T[],N:Entier)
variables : a,b:Entier
debut
Tant que (T[a]>T[b] faire
a← Max(T[],N)
b← Min(T[],N/2 +1,N)
permutation(T[],a,b)
fin tant que
permutation(T[N/2],a)
permutation(T[N/2+1],b)
fin procedure

3
Algorithmique II : TD3
Exercice 1 –Suites
 Écrire la version récursive des suites suivantes
(nombre de termes demandé à l’utilisateur) :

5
Exercice 1 –Suites
 Écrire la version récursive des suites suivantes
(nombre de termes demandé à l’utilisateur) :

Fonction SA(n:Entier):Entier
Fonction SA(n,S=1:Entier):Entier
Si n=0 Alors
Si n=0 Alors
return 1
return S
Sinon
Sinon
return SA(n-1) +2
return SA(n-1,S+2)
FinSi
FinSi
FinFonction
FinFonction

6
Exercice 1 –Suites
 Écrire la version récursive des suites suivantes
(nombre de termes demandé à l’utilisateur) :

Fonction SA(n:Entier):Entier
Si n=1 Alors Fonction SN(n,a:Entier):Entier
return 1 Si n=1 Alors
Sinon return a/2
return SA(n-1) +2 Sinon
return ½*(SN(n-1) +a/SN(n-1) )

7
Exercice 1 –Suites
 Écrire la version récursive des suites suivantes
(nombre de termes demandé à l’utilisateur) :

Fonction SF(n:Entier):Entier
Si n=1 OU n=0 Alors
return n
Sinon
return SF(n-1) +SF(n-2)

8
Exercice 2– PGCD :
 Écrire un algorithme de PGCD itératif et récursif

9
Exercice 2– PGCD :
 Écrire un algorithme de PGCD itératif et récursif

 Exemple : calcul du PGDC des deux nombres


1000 et 24

10
Exercice 2– PGCD :
 Écrire un algorithme de PGCD itératif et récursif

Fonction Euclide(a,b : Entier):Entier


Variables r : entier * le reste d'une division entière *
Début
Tant que b<>0 faire
r  a mod b
ab
br
Fin Tant que
retourner a
Fin

11
Exercice 2– PGCD :
 Écrire un algorithme de PGCD itératif et récursif
Fonction Euclide(a,b:Entier):Entier
Début
Si b=0 Alors
return a
Sinon
return Euclide(b,a%b)
Fin

12
Exercice 3
 Écrire un algorithme de Recherche séquentielle dans
tableau itératif et récursif

13
Exercice 3
 Écrire un algorithme de Recherche séquentielle dans
tableau itératif et récursif

Fonction RSI(T[],n,X:Entier):Entier
variable i : Entier
Début
Pour i de 0 a N-1 Faire
Si T[i]=X Alors
return n
FinSi
FinPour
return -1
Fin
14
Exercice 3
 Écrire un algorithme de Recherche séquentielle dans
tableau itératif et récursif
Fonction RSR(T[],n,X:Entier):Entier
Début
Si n=0 Alors
return -1
Sinon
Si T[n-1]=X Alors
return n-1
Sinon
return RS(T[],n-1,X)
FinSi
FinSi
Fin

15
Exercice 4–Triangle de Pascal :
 Écrire la version itérative et récursive de triangle de
pascale

16
Exercice 4–Triangle de Pascal :
 Écrire la version itérative et récursive de triangle de
pascale
Procedure TPR(n)
Début
Pour i de 0 à n−1 faire
x←1
Écrire(x)
Pour j de 1 à i faire
x ← (x ×(i −j + 1))/j
Écrire (“ ”,x)
Fpour
Écrire(EOL)
Fpour
FProcedure

17
Exercice 4–Triangle de Pascal :
 Écrire la version récursive de triangle de pascale
Procedure TPR(n,x,i,j: Entier)
Si n>0 Alors
Si i=0 Alors
x←1
Écrire (x)
Écrire (EOL)
TPR(n-1,x,i++,j=0)
Sinon
Si j=0 Alors
x←1
Écrire (x)
TPR(n,x,i,j++)
Sinon
Si j=i Alors
x←1
Écrire (x)
TPR(n-1,x,i+1,j=0)
Écrire (EOL)
Sinon
x ← (x *(i −j + 1))/j
Écrire (“ ”,x)
TPR(n,x,i,j++)

Fsi
FSi
FSi
Fprocedure

18
Exercice 5 –
 Etant donné la fonction définie qui calcule xn :

 Ecrire la version itérative et récursive.


 Donner le type de récursivité.

19
Exercice 5 –
 Etant donné la fonction définie qui calcule xn :

Fonction PuissIter
PuissIter((x : Réel ;n
;n : Entier ;y
;y : Réel ) : Réel
Début
Si ( n = 0 ) Alors
Retourner 1
Sinon
TantQue (n>0) Faire
Si ( ( n %2 ) = 0 ) Alors
xx * x , n  n/2
Sinon
n  n - 1 ,y  x * y
FinSi
FinTQ
FinSi
Retourner y
FinFonction
20
Exercice 5 –
 La fonction Terminale définie qui calcule xn :

Fonction PuissRecT
PuissRecT((x : Réel ;n;n : Entier ;y
;y : Réel ) : Réel
Début
Si ( n = 0 ) Alors
Retourner y
Sinon
Si ( ( n %2 ) = 0 ) Alors
Retourner (PuissRec
(PuissRec(( x * x , n/2 , y ) )
Sinon
Retourner (PuissRec
(PuissRec(( x , n - 1 , x * y ) )
FinSi
FinSi

FinFonction

21
Exercice 5 –
 La fonction non terminale qui calcule xn :

Fonction PuissRecNT
PuissRecNT((x : Réel ;n ;n : Entier ;y
;y : Réel ) : Réel
Début
Si ( n = 0 ) Alors
Retourner 1
Sinon
Si ( ( n %2 ) = 0 ) Alors
Retourner (PuissRec
(PuissRec(( x * x , n/2
n/2)) )
Sinon
Retourner (PuissRec
(PuissRec(( x , n - 1 )* x )
FinSi
FinSi

FinFonction

22
Exercice 1 –Implémentation du type abstrait pile d’objet
par un tableau

 Écrire un algorithme qui permet le traitement d’une


Pile d’entier:
Type PileE= Structure
Taille : entier
Sommet : entier
Tab[taille] : entier
FinStructure
 Ecrire les sous-
sous-algorithmes suivants
 Fonction PileVide(P:pileE):Booleen
 Procédure InitialiserPile(ref P:pileE )
 Procédure Empiler (ref P:pileE, val x:entier)
 Fonction Depiler (ref P:pileE):Entier
 Fonction PilePleine (ref P:pileE):Entier

23
Exercice 1 –Implémentation du type abstrait pile d’objet
par un tableau
Type PileE= Structure
Taille : entier
Sommet : entier
Tab[Taille] : entier
FinStructure
 Fonction PileVide(P:pileE):Booleen
Fonction PileVide(
PileVide(P:pileE
P:pileE):
):Booleen
Booleen
Début
Retourner ( P.Sommet = -1 )
FinFonction

 Procédure InitialiserPile(ref P:pileE )


Procédure InitialiserPile(
InitialiserPile(ref P:pileE )
Début
P.Sommet = -1
FinFonction

24
Exercice 1 –Implémentation du type abstrait pile d’objet
par un tableau
Type PileE= Structure
Taille : entier
Sommet : entier
Tab[Taille] : entier
FinStructure
 Fonction PileVide(P:pileE):Booleen
 Procédure InitialiserPile(ref P:pileE )
 Fonction PilePleine ( P:pileE): Booleen

Fonction PilePleine ( P:pileE): Booleen


Début
retourner (P.Sommet
(P.Sommet = P.Taille
P.Taille--1)
FinFonction

25
Exercice 1 –Implémentation du type abstrait pile d’objet
par un tableau
Type PileE= Structure
Taille : entier
Sommet : entier
Tab[Taille] : entier
FinStructure
 Fonction PileVide(P:pileE):Booleen
 Procédure InitialiserPile(ref P:pileE )
 Procédure Empiler (ref P:pileE, val x:entier)
Procédure Empiler (ref
(ref P:pileE, val x:entier)
Début
Si(PilePleine
Si( PilePleine))
P.T[++P.Sommet
P.T[++ P.Sommet]]val
FinSi
FinFonction

26
Exercice 1 –Implémentation du type abstrait pile d’objet
par un tableau
Type PileE= Structure
Taille : entier
Sommet : entier
Tab[Taille] : entier
FinStructure
 Fonction Depiler (ref P:pileE):Entier

Fonction Depiler (ref P:pileE):Entier


Début
Si(!PileVide
Si(! PileVide(P))
(P))
return P.T[P.Sommet
P.T[P.Sommet--
--]]
FinSi
FinFonction

27
Exercice 2– Dé-Récursion
 Soit la fonction f définie par :

1. Donner le type de récursivité


2. Ecrire la version récursive de f.
3. Ecrire ensuite une version itérative qui, à
l’aide d’une pile, simule le comportement de la
version récursive.

28
Exercice 2– Dé-Récursion
 Soit la fonction f définie par :

1. Type de récursivité Non Terminal


2. Ecrire la version récursive de f.
Fonction FR(n):Entier
Début
Si(n=0)
return 1
Sinon
Si(n%2=0)
return n*FR(n/2)
Sinon
return 1+FR((n-
1+FR((n-1))

FinSi
FinSi
FinFonction
29
Exercice 2– Dé-Récursion
Fonction FI(n : Entier):Entier
Variable S: Entier
P : Pile
Début
InitialiserPile(P)
InitialiserPile(P)
Tanque (!(!PilePleine
PilePleine ET n > 1 ) Faire
Empiler (ref
(ref P,n
P,n))
Si(n%2=0) Alors nn/2
Sinon nn-1
FinSi
FinTantque
S 2
Tanque (!(!PileVide
PileVide)) Faire
nDepiler (ref P)
Si(n%2=0) Alors Sn*S`
Sinon SS+1
FinSi
FinTantque
Retourner S
FinFonction

30

Vous aimerez peut-être aussi