Académique Documents
Professionnel Documents
Culture Documents
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.
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
n0 Sinon
P1 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 :
33
Exercice 2 :
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
37
Exercice 2 :
-1 -1 -1 0 -1 0
-1 0 0 -1 0 -1
0 0 0 0 -1 0
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 :
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 :
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).
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).
47
Exercice 4 :
Écrire un algorithme qui permet le traitement de tableau
suivant :
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 :
Finpour
ecrire("cette element n'est pas trouver")
return -1
52 finfonction
Exercice 4 :
Écrire un algorithme qui permet le traitement de tableau
suivant :
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.
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 :
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
10
Exercice 2– PGCD :
Écrire un algorithme de PGCD itératif et récursif
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 :
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
xx * 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
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
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
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
27
Exercice 2– Dé-Récursion
Soit la fonction f définie par :
28
Exercice 2– Dé-Récursion
Soit la fonction f définie par :
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 nn/2
Sinon nn-1
FinSi
FinTantque
S 2
Tanque (!(!PileVide
PileVide)) Faire
nDepiler (ref P)
Si(n%2=0) Alors Sn*S`
Sinon SS+1
FinSi
FinTantque
Retourner S
FinFonction
30