SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
1 / 20
Introduction à l’algorithmique
Travaux dirigés (TD)
Correction
Youssouf EL ALLIOUI
p
y.elallioui@usms.ma
Série 1
FONCTIONS ET PROCEDURES
Exercice 5. 1.
Ecrire une fonction distance ayant comme paramètres 4 rèels 𝑥𝑎, 𝑦𝑎, 𝑥𝑏	𝑒𝑡	𝑦𝑏 qui représentent
les coordonnées de deux points 𝐴 et 𝐵 et qui renvoie la distance 𝐴𝐵. Tester cette fonction.
Solution
Fonction distance (xa:Rèel, xb:Rèel, ya:Rèel, yb:Rèel) : Rèel
Var AB : Rèel
Début
AB ← sqrt ((xa - xb)2
+ (ya - yb)2
)
distance ← AB
Fin
Tester cette fonction :
Algo test
Var xa, ya : Rèel
Var xb, yb : Rèel
Var distanceAB : Rèel
Début
Ecrire ("Entrer les cordonnées du point A : ")
Lire (xa, ya)
Ecrire ("Entrer les cordonnées de point B : ")
Lire (xb, yb)
distanceAB ← distance (xa, xb, ya, yb)
Ecrire ("AB = ", distanceAB)
Fin
2020
2 / 20
Exercice 5. 2.
Ecrire une fonction 𝑓 ayant en paramètre un entier et qui renvoie un booléen : 𝑂𝑈𝐼 si l'entier
est premier 𝑁𝑂𝑁 sinon. Tester cette fonction.
Solution
Fonction f (N : Entier) : Booleen
Var estPremier : Booleen
Var i : Entier
Début
estPremier ← Faux
Pour i ← 1 A N Faire
Si (N % i = 0) Alors
estPremier ← Vrai
f ← estPremier
Fin Si
Fin Pour
f ← estPremier
Fin
Tester cette fonction :
Algo test
Var N : Entier
Début
Ecrire ("Entrer un nombre entier : ")
Lire (N)
Si (f(N)) Alors
Ecrire (N, " est premier")
Sinon
Ecrire (N, " n’est pas premier")
Fin Si
Fin
Exercice 5. 3.
Ecrire une fonction 𝑠𝑤𝑎𝑝 ayant en paramètres 2 entiers a et b et qui échange les contenus de 𝑎
et de 𝑏. Tester cette fonction.
Solution
Procedure swap (A : Entier, B : Entier)
Var C : Entier
Début
C ← A
A ← B
B ← C
Fin
3 / 20
Tester cette fonction :
Algo test
Var A, B : Entier
Début
Ecrire ("Entrer le premier nombre : ")
Lire (A)
Ecrire ("Entrer le dexième nombre : ")
Lire (B)
swap (A, B)
Ecrire ("A : ", A)
Ecrire ("B : ", B)
Fin
Exercice 5. 4.
Etablir une fonction 𝑟é𝑠𝑜𝑢𝑑𝑟𝑒 permettant de calculer les solutions de l'équation :
(𝑬)	:		𝒂𝒙𝟐
+ 𝒃𝒙 + 𝒄 = 𝟎 𝒂, 𝒃	𝑒𝑡	𝒄 sont des réels
Cette fonction aura comme paramètres 𝒂, 𝒃 et 𝒄. On prendra garde à bien tester tous les cas
possibles :
• 𝑎 est nul, et l'équation est en fait une équation du premier degré. Exemple : 4𝑥 − 2 = 0
donne une unique solution 𝑥 = 0.5.
• Le discriminant 𝛥 = (𝑏"
− 	4 ∗ 𝑎 ∗ 𝑐) est nul, et il n'y a qu'une seule solution, appelée
racine double, au problème. Exemple : 2𝑥² + 4𝑥 + 2 = 0 donne 𝑥 = −1.
• Le discriminant 𝛥 est positif, et deux solutions existent : 𝑥# =
$%$√'
"∗)
et 𝑥" =
$%*√'
"∗)
.
Exemple : 2𝑥² + 𝑥 − 6 = 0 donne 𝑥# = 1.5 et 𝑥" = −2.
• Le discriminant 𝛥 est négatif, et il n'existe pas de solutions (réelles) au problème.
Exercice 5. 5.
Écrire les actions paramètres (procédure ou fonction) permettant de résoudre les problèmes
suivants :
1) Calcul de la somme de deux nombres entiers.
2) Calcul de la factorielle de N (N !).
3) Vérifier si un nombre entier A divise un nombre entier B.
4) Calcul du quotient et du reste de la division entière de deux nombres entiers A et B.
5) Vérifier si un caractère donné est une voyelle (voyelles : 'a', 'e', 'i', 'o', 'u', 'y').
6) Permet de permuter le contenu de deux variables rèelles.
7) Étant donné un entier A, calcule sa valeur absolue.
4 / 20
Solution
1) Calcul de la somme de deux nombres entiers.
Fonction somme (x : Entier, y : Entier) : Entier
Début
somme ← x + y
Fin
2) Calcul de la factorielle de N (N !).
Fonction factorielle (x : Entier) : Entier
Var i, fact : Entier
Début
Fact ← 1
Pour i ← 1 A x Faire
fact ← fact * i
Fin Pour
factorielle ← fact
Fin
3) Vérifier si un nombre entier A divise un nombre entier B.
Fonction divise (A : Entier, B : Entier) : booleen
Début
divise ← Faux
Si (B mod A = 0) Alors
divise ← vrai
Fin Si
Fin
4) Calcul du quotient et du reste de la division entière de deux nombres entiers A et B.
Procedure quotientDuReste (A : Entier, B : Entier)
Var Q, R : Entier
Début
Q ← 0
R ← 0
Tantque (R>=B) faire
R ← R mod B
Q ← Q + 1
Fin Tantque
Fin
5) Vérifier si un caractère donné est une voyelle (voyelles : 'a', 'e', 'i', 'o', 'u', 'y').
Fonction voyelle (c : Caractère) : Booleen
5 / 20
Var estVoyelle : Booleen
Début
estBooleen ← Faux
Si (c = 'a' OU c = 'e' OU c = 'i' OU c = 'o' OU c = 'u' OU c = 'y')
Alors
estBooleen ← Vrai
Fin Si
voyelle ← estBooleen
Fin
6) Permet de permuter le contenu de deux variables réelles.
Procedure permuter (A : Entier, B : Entier)
Var C : Entier
Début
C ← A
A ← B
B ← C
Fin
7) Étant donné un entier A, calcule sa valeur absolue.
Fonction valeurAbsolue (A : Entier) : Entier
Début
Si (A < 0) Alors
valeurAbsolue ← -A
Fin Si
valeurAbsolue ← A
Fin
6 / 20
Introduction à l’algorithmique
Travaux dirigés (TD)
Correction
Youssouf EL ALLIOUI
p
y.elallioui@usms.ma
Série 2
LA RÉCURSIVITÉ
Exercice 2. 1
Écrire les actions paramètres (procédure ou fonction) permettant de calculer la factorielle d’un
entier N (N !). Tester cette fonction.
Solution :
Fonction factorielle (x : Entier) : Entier
Var i, fact : Entier
Début
If (N = 0 OU N = 1) Alors
factorielle ← 1
Sinon
factorielle ← N * factorielle (N-1)
Fin Si
Fin
Tester cette fonction :
Algo test
Var N : Entier
Début
Ecrire ("Entrer un nombre entier : ")
Lire (N)
Ecrire (N, " ! = ", factorielle (N))
Fin
Exercice 2. 2
Expliquez les fonctionnalités des fonctions suivantes
2020
7 / 20
Fonction fct1 (x : Entier, y : Entier) : Entier
Début
Si (x = 0) Alors
fct1 ← y
Sinon
fct1 ← fct1 (x-1, x+y)
Fin Si
Fin
Solution :
La fonction fct1() calcule et retourne ((1 + 2 ... + x-1 + x) +y) qui est (x(x+1)/2) + y. Par
exemple, si x est 5 et y est 2, alors fct1 devrait retourner 15 + 2 = 17.
Exercice 2. 3
Expliquez les fonctionnalités des fonctions suivantes
Fonction fct2 (n : Entier) : Entier
Début
Si (n = 1) Alors
Fct2 ← 0
Sinon
Fct2 ← 1 + fct2 (n/2)
Fin Si
Fin
Solution :
La fonction calcule et renvoie le plus grand entier inférieur ou égal à log2(n). Par exemple, si n
est entre 8 et 15, fct2() renvoie 3. Si n est entre 16 et 31 alors fct2() renvoie 4.
Exercice 2. 4
Expliquez les fonctionnalités des fonctions suivantes
Procédure fct3 (n : Entier)
Début
Si (n = 0) Alors
retourne
Fin Si
Fct3 (n/2)
Écrire (n%2)
Fin
Solution :
La fonction fct3() affiche l'équivalent binaire d'un nombre n.Par exemple, si n est 21, alors
fct3() affiche 10101.
Exercice 2. 5
8 / 20
Expliquez les fonctionnalités des fonctions suivantes
Fonction fct4 (tab[] : Entier, n : Entier) : Entier
Début
x ← -1
Si (n = 1) Alors
fct4 ← tab [0]
Sinon
x ← fct4 (tab, n-1)
Fin Si
Si (x > tab[n-1]) Alors
fct4 ← x
Sinon
fct4 ← tab[n-1]
Fin Si
Fin
Solution :
fct4() renvoie la valeur maximale dans le tableau d'entrée tab[] de taille n.
Exercice 2. 6
Expliquez les fonctionnalités des fonctions suivantes
Fonction fct5 (a : Entier, b : Entier) : Entier
Début
Si (b = 0) Alors
fct5 ← 1
Fin Si
Si (b mod 2 = 0) Alors
fct5 ← fct5(a*a, b/2)
Fin Si
fct5 ← fct5(a*a, b/2) * 2
Fin
Solution :
fct5() renvoie ab
Exercice 2. 7
On souhaite écrire une fonction récursive qui calcule le carré d'un entier. Pour trouver un lien
entre 𝑐𝑎𝑟𝑟𝑒(𝑛) et 𝑐𝑎𝑟𝑟𝑒(𝑛 − 1), on utilise la formule donnée en énoncé : (𝑛 + 1)"
	=	𝑛"
	+
	2𝑛 + 	1. En changeant 𝑛 en 𝑛 − 1, la formule se réécrit 	𝑛"
=	(𝑛 − 1)"
+ 2(𝑛 − 1) + 1 d'où
𝑐𝑎𝑟𝑟𝑒(𝑛) = 𝑐𝑎𝑟𝑟𝑒(𝑛−) + 2 ∗ 𝑛 − 1. Dans le cas où 𝑛 est un entier négatif, on utilise le fait
que (−𝑛)"
	=	𝑛"
. On se ramène ainsi au cas où n est un entier positif. Les appels récursifs
successifs nous mènent au cas de base : si 𝑛	 = 	0, alors 𝑐𝑎𝑟𝑟𝑒(𝑛) = 0.
9 / 20
Solution :
Fonction carré (n : Entier) : Entier
Début
Si (n = 0) Alors
carré ← 0
Fin Si
Sinon Si (n < 0) Alors
carré ← carré (-n)
Sinon
carré ← carré (n-1) + 2*n - 1
Fin Si
Fin
Exercice 2. 8
On veut écrire une fonction récursive qui calcule la somme de 1 à un entier 𝑛 : 1 + 2 + 3 +·	·
	· +(𝑛 − 1) + 𝑛. On remarque que si on connaît 𝑠𝑜𝑚𝑚𝑒_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑒(𝑛 − 1), alors pour avoir
𝑠𝑜𝑚𝑚𝑒_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑓(𝑛) il suffit d'ajouter n au résultat précédent. On prend comme convention
que si 𝑛	 < 	1, alors la somme est nulle. Le cas de base est celui où n vaut 1, et dans ce cas la
somme vaut 1.
Solution :
De l'explication précédente on déduit :
Fonction somme_recursive (n : Entier) : Entier
Début
Si (n < 0) Alors
somme_recursive ← 0
Fin Si
Sinon Si (n = 1) Alors
somme_recursive ← 1
Sinon
somme_recursive ← somme_recursive (n-1) + n
Fin Si
Fin
Exercice 2. 9
Ecrire une fonction récursive qui calcule le produit de 1 à un entier 𝑛 : 1 ∗ 	2 ∗ 	3 ∗	·	·	·	∗		(𝑛 −
1 ∗ 	𝑛. On remarque que si on connaît 𝑝𝑟𝑜𝑑𝑢𝑖𝑡_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑒(𝑛 − 1), alors 𝑝𝑟𝑜𝑑𝑢𝑖𝑡+,-.+/01(3) =
𝑛 ∗ 𝑝𝑟𝑜𝑑𝑢𝑖𝑡_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑒(𝑛 − 1). On prend comme convention que si 𝑛	 < 	1, alors le produit
est nulle. Le cas de base est celui où n vaut 1 ou 0, et dans ce cas le produit vaut respectivement
1 et 0.
Solution :
De l'explication précédente on déduit :
Fonction produit_recursive (n : Entier) : Entier
Début
10 / 20
Si (n <= 0) Alors
produit_recursive ← 0
Fin Si
Sinon Si (n = 1) Alors
produit_recursive ← 1
Sinon
produit_recursive ← n * produit_recursive (n-1)
Fin Si
Fin
11 / 20
Introduction à l’algorithmique
Travaux dirigés (TD)
Correction
Youssouf EL ALLIOUI
p
y.elallioui@usms.ma
Série 3
LES FICHIERS
Exercice 3. 1
Soit le fichier NOMBRES.BIN qui contient une liste de nombres entiers. Écrire un algorithme
qui affiche les nombres du fichier, leur somme et leur moyenne.
Solution :
Algorithme Nombre
Var F : Fichier d’entier
Var X, S, Nb : Entier
Var M : Réel
Début
Assigner(F,’NOMBRES.BIN’)
Relire(F)
Nb ← 0
S ← 0
Tantque Non FDF(F) Faire
Lire(F,X) ; // Lire un élément du fichier
Ecrire(X) ; // affichage à l’écran
S ← S+X
Nb ← Nb+1
Fin Tanque
Si Nb≠0 Alors
M ← S/Nb
Ecrire(‘Somme des éléments =’,S,’ Moyenne=’,M)
Sinon
Ecrire(‘Fichier vide’)
Fin Si
Fermer(F)
Fin
Exercice 3. 2
Écrire un algorithme qui crée le fichier MOTS.TXT contenant une série de mots (longueur
maximale d'un mot: 20 caractères). La saisie des mots se terminera à l'introduction du symbole
'*' qui ne sera pas écrit dans le fichier.
2020
12 / 20
Écrire un algorithme qui affiche le nombre de mots ainsi que la longueur moyenne des mots
contenus dans le fichier MOTS.TXT. 3- Écrire un algorithme qui crée un deuxième fichier
MOTS10.TXT contenant les mots du fichier MOTS.TXT de plus de 10 caractères.
Solution :
Algorithme TraiteMot;
Var F,G :Fichier de chaine[20] ;
Var X : Chaine[20] ;
Var Nb : Entier
Var M : Réel
Début
/*question 1
Assigner(F,’MOTS.TXT’) ;
Reecrire(F) ; /*ouvrir F en écriture
Ecrire(‘Donner une suite de mots. Introduire le mot ‘*’
pour arrêter la saisie’) ;
Lire(X) ; /*Lire le premier mot à l’extérieur de la boucle
Tantque X≠’*’ Faire
Ecrire(F,X) ;
Lire(X) ; /*Lire le mot suivant
Fait ;
Fermer(F) ;
/*question 2
Nb←0 ;
M←0 ; /*on peut utiliser M pour la somme des longueurs puis
pour la moyenne
Relire(F) /*ouvrire F en lecture
Tantque Non FDF(F) Faire
Lire(F,X) ; /*Lire un élément du fichier
M←M+Taille(X) ;
Nb←Nb+1 ;
Fait ;
Si Nb≠0 Alors
M←M/Nb ;
Ecrire(‘Nombre de mots =’,Nb,’ Longueur Moyenne=’,M)
Sinon
Ecrire(‘Fichier vide’)
Fsi ;
Fermer(F) ;
/*question 3
Assigner(G,’MOTS10.TXT’) ;
Reecrire(G) ;
Relire(F) /*ouvrir G en écriture et F en lecture
Tantque Non FDF(F) Faire
Lire(F,X) ; /*Lire un élément du fichier
Si Taille(X)>10 Alors
Ecrire(G,X)
Fsi ;
Fait ;
Fermer(F) ;
13 / 20
Fermer(G) ;
Fin
Exercice 3. 3
Considérons le type enregistrement suivant :
Type Étudiant = Enregistrement
Matricule : Entier ;
Nom, Prénom : Chaine [20] ;
Moyenne : Réel ;
Fin;
Soit T un tableau d’au plus 100 étudiants. Écrire un algorithme permettant de recopier tous les
étudiants admis appartenant à T dans un fichier ADMIS de type étudiant. Un étudiant est admis
si sa moyenne est supérieure ou égale 10.
Solution :
Algorithme Étude
Type Étudiant = Enregistrement
Matricule : entier
Nom, Prénom : chaine [20] ;
Moyenne : réel
Fin
Var T : Tableau[1..100] de Étudiant
Var F : Fichier de Étudiant
Var X : Étudiant
Var I,N : Entier ;
Debut
Ecrire(‘Donner le nombre d’’etudiants’) ; /*lecture des
éléments du tableau
Repeter
Lire(N)
Jusqu’à N>0 et N≤100
Pour I←1 à N Faire
Avec X
Faire
Lire(Matricule)
Lire(Nom,Prenom)
Lire(Moyenne)
Fait
T[I]←X ; /*On peut utiliser directement T[I] et on
évite l’affectation ( en bleu )
Avec T[I]
Faire Lire(Matricule)
14 / 20
Lire(Nom,Prenom)
Lire(Moyenne)
Fait
Fait
/*création du fichier des admis
Assigner(F,’ADMIS’)
Reecrire(F)
Pour I←1 à N Faire
Si T[I].Moyenne)≥10 Alors
Ecrire(F,T[I])
Fsi; /*même remarque, on peut utiliser un
enregistrement X
X←T[I]
Si X.Moyenne)≥10 Alors
Ecrire(F,X)
Fsi
Fait
Fermer(F)
Fin
Exercice 3. 4
Soient les enregistrements suivants :
Type TDate = Enregistrement
Jour, mois, année : entier ;
Fin
Type TDiscipline = Enregistrement
Discipline : chaine [10] ;
Faculté : chaine [20] ;
Fin;
Type TEtudiant = Enregistrement
Nom, prénom : chaine [20] ;
DateN : TDate ;
Filière : TDiscipline ;
Fin;
Soit FEtudiant un fichier d’étudiants. Écrire un algorithme qui permet de :
- Remplir le fichier FEtudiant.
- Éclater le fichier FEtudiant en deux fichiers, F1 (étudiants de la faculté ‘FEI’) et F2
(étudiants des autres facultés).
Solution :
15 / 20
Algorithme Eclate
Type TDate = Enregistrement
Jour, mois, année : entier ;
Fin
Type TDiscipline = Enregistrement
Discipline : chaine [10] ;
Faculté : chaine [20] ;
Fin;
Type TEtudiant = Enregistrement
Nom, prénom : chaine [20] ;
DateN : TDate ;
Filière : TDiscipline ;
Fin;
Var Étudiant : TEtudiant ;
Var F, F1, F2 : Fuchier de TEtudiant ;
Var FEI, Autre : Booléen ;
Debut
Assigner(F,’FEtudiant’) ;
Réecrire(F) ;
Avec Etudiant, Etudiant.DateN, Etudiant.Filiere Faire
Ecrire(‘Nom :’) ;
Lire(Nom) ; /*Lire 1er nom à l’extérieur de la boucle
Tantque Nom<>’’ Faire
Ecrire(‘Prénom :’) ;
Lire(prenom) ;
Ecrire(‘Date de naissance :’) ;
Lire(Jour,mois,Annee) ;
Ecrire(‘Discipline, Faculté :’) ;
Lire(Discipline, Faculté) ;
Ecrire(F,Etudiant) ;
Ecrire(‘Nom :’) ;
Lire(Nom) ; /*Lire le nom suivant
Fait ;
Fait ;
Fermer(F) ;
Relire(F) ; /*Pour éviter de créer des fichiers vides,
on peut utiliser ces 2 indicateurs booléens, dans ce Cas
/*l’assignation et la création ne se font que si nous
trouvons un élément, après on remet le booléen à /*vrai
pour ne pas refaire ces opérations
/*CETTE OPERATION N’EST PAS OBLIGATOIRE MAIS MIEUX LA
SAVOIR
FEI ←Faux ;
Autre ←Faux ;
/*Si on n’utilise pas ces booléens, on doit assigner et
ouvrir les 2 fichiers en écriture à ce niveau
16 / 20
Assigner(F1,’FFEI’) ;
Réecrire(F1) ;
Assigner(F2,’FAutrer’);
Réecrire(F2);
Si FDF(F) Alors
Ecrire(‘Fichier vide’)
Sinon
Tantque Non FDF(F) Faire
Lire(F,Etudiant) ;
Avec Etudiant.Filiere Faire
Si Faculté =’FEI’ Alors
Si Non FEI Alors
Assigner(F1,’FFEI’) ;
Réecrire(F1) ;
FEI ←Vrai
Fsi ;
Ecrire(F1,Etudiant) ;
Sinon
Si Non Autre Alors
Assigner(F2,’FAutrer’);
Réecrire(F2);
Autre←Vrai
Fsi ;
Ecrire(F2,Etudiant) ;
Fsi ;
Fait ;
Fait ;
Fermer(F) ;
Si FEI Alors
Fermer(F1)
Fsi ;
Si Autre Alors
Fermer(F2)
Fsi ;
Fsi ;
Fin.
Exercice 3. 5
1) Soient F1 et F2 deux fichiers d’entiers strictement positifs et sans répétition.
Écrire un algorithme qui construit (crée) un fichier G d’entiers tel que G contient
pour chaque valeur de F1 la valeur et tous ses multiples appartenant à F2 (F1
et F2 sont supposés existants). Exemple :
F1 : 3 10 20 17
F2 : 3 6 19 60 40 30
G : 3 3 6 60 30 10 60 40 30 20 60 40 17
2) Écrire un algorithme qui permet à partir du fichier résultat (G) de générer un
autre fichier (H) contenant toutes les valeurs du fichier (G) (sans répétition) avec
leur nombre. Exemple :
H : 3 2 6 1 60 3 30 2 10 1 40 2 20 1 17 1
17 / 20
Solution :
1)
1)
18 / 20
Exercice 3. 6
Soit F un fichier d’entiers représentant des séquences de nombres séparées par un ou plusieurs
zéro. Écrire un algorithme qui réalise les traitements suivants :
1) A partir de F (fichier existant), crée un fichier G contenant pour chaque
séquence, la moyenne des nombres qui la constituent.
2) 2- Puis, Supprimer les valeurs nulles du fichier G. Exemple :
F : 0 0 1 4 3 7 0 0 0 6 -9 2 7 -6 0 -10 3 0 0
G : 3,75 0,00 -3,50 Avant suppression
G : 3,75 -3,50 Après suppression
Solution :
19 / 20
20 / 20
Introduction à l’algorithmique
Travaux dirigés (TD)
Correction
Youssouf EL ALLIOUI
p
y.elallioui@usms.ma
Série 4
LA COMPLEXITÉ ALGORITHMIQUE
2020

Contenu connexe

Tendances

Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéeMissaoui Abdelbaki
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)salah fenni
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASDInes Ouaz
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesInes Ouaz
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfsalah fenni
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018salah fenni
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: MatriceInforMatica34
 
Excel ppt.ppt
Excel ppt.pptExcel ppt.ppt
Excel ppt.pptBadarSaf
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du meriseYassine Badri
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 

Tendances (20)

TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
TP C++ : Correction
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Exercices algo
Exercices algoExercices algo
Exercices algo
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er année
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASD
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de données
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
 
Excel ppt.ppt
Excel ppt.pptExcel ppt.ppt
Excel ppt.ppt
 
TP C++ : enoncé
TP C++ : enoncéTP C++ : enoncé
TP C++ : enoncé
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 

Similaire à 02 correction-td smi-s3-algo2

LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONborhen boukthir
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)DriNox NordisTe
 
Chapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdf
Chapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdfChapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdf
Chapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdfC00LiMoUn
 
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017Ahmed Ammar Rebai PhD
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitésalah fenni
 
CAPES maths 2019 composition 2
CAPES maths 2019 composition 2CAPES maths 2019 composition 2
CAPES maths 2019 composition 2Dany-Jack Mercier
 
DS6-CB-sujet (1).pdf
DS6-CB-sujet (1).pdfDS6-CB-sujet (1).pdf
DS6-CB-sujet (1).pdfhajar517389
 
algèbre de boole.pdf
algèbre de boole.pdfalgèbre de boole.pdf
algèbre de boole.pdfAmmr2
 
Moyen de-recherche-d-emploi
Moyen de-recherche-d-emploiMoyen de-recherche-d-emploi
Moyen de-recherche-d-emploiKarim Amane
 

Similaire à 02 correction-td smi-s3-algo2 (20)

Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATION
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)
 
Chapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdf
Chapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdfChapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdf
Chapitre 2 Les strucutures conditionnelles_18-19.ppt [Mode de compatibilité].pdf
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
5e8a000b9840a.pdf
5e8a000b9840a.pdf5e8a000b9840a.pdf
5e8a000b9840a.pdf
 
246242769 sequence-1-pdf
246242769 sequence-1-pdf246242769 sequence-1-pdf
246242769 sequence-1-pdf
 
coursAlgo_V5.pdf
coursAlgo_V5.pdfcoursAlgo_V5.pdf
coursAlgo_V5.pdf
 
Exercice exponontielle
Exercice exponontielleExercice exponontielle
Exercice exponontielle
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
 
Video
VideoVideo
Video
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivité
 
CAPES maths 2019 composition 2
CAPES maths 2019 composition 2CAPES maths 2019 composition 2
CAPES maths 2019 composition 2
 
DS6-CB-sujet (1).pdf
DS6-CB-sujet (1).pdfDS6-CB-sujet (1).pdf
DS6-CB-sujet (1).pdf
 
Integrale
IntegraleIntegrale
Integrale
 
Exercice dérivabilité
Exercice dérivabilitéExercice dérivabilité
Exercice dérivabilité
 
algèbre de boole.pdf
algèbre de boole.pdfalgèbre de boole.pdf
algèbre de boole.pdf
 
Fic00126
Fic00126Fic00126
Fic00126
 
Moyen de-recherche-d-emploi
Moyen de-recherche-d-emploiMoyen de-recherche-d-emploi
Moyen de-recherche-d-emploi
 

Dernier

Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 

Dernier (19)

Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 

02 correction-td smi-s3-algo2

  • 1. 1 / 20 Introduction à l’algorithmique Travaux dirigés (TD) Correction Youssouf EL ALLIOUI p y.elallioui@usms.ma Série 1 FONCTIONS ET PROCEDURES Exercice 5. 1. Ecrire une fonction distance ayant comme paramètres 4 rèels 𝑥𝑎, 𝑦𝑎, 𝑥𝑏 𝑒𝑡 𝑦𝑏 qui représentent les coordonnées de deux points 𝐴 et 𝐵 et qui renvoie la distance 𝐴𝐵. Tester cette fonction. Solution Fonction distance (xa:Rèel, xb:Rèel, ya:Rèel, yb:Rèel) : Rèel Var AB : Rèel Début AB ← sqrt ((xa - xb)2 + (ya - yb)2 ) distance ← AB Fin Tester cette fonction : Algo test Var xa, ya : Rèel Var xb, yb : Rèel Var distanceAB : Rèel Début Ecrire ("Entrer les cordonnées du point A : ") Lire (xa, ya) Ecrire ("Entrer les cordonnées de point B : ") Lire (xb, yb) distanceAB ← distance (xa, xb, ya, yb) Ecrire ("AB = ", distanceAB) Fin 2020
  • 2. 2 / 20 Exercice 5. 2. Ecrire une fonction 𝑓 ayant en paramètre un entier et qui renvoie un booléen : 𝑂𝑈𝐼 si l'entier est premier 𝑁𝑂𝑁 sinon. Tester cette fonction. Solution Fonction f (N : Entier) : Booleen Var estPremier : Booleen Var i : Entier Début estPremier ← Faux Pour i ← 1 A N Faire Si (N % i = 0) Alors estPremier ← Vrai f ← estPremier Fin Si Fin Pour f ← estPremier Fin Tester cette fonction : Algo test Var N : Entier Début Ecrire ("Entrer un nombre entier : ") Lire (N) Si (f(N)) Alors Ecrire (N, " est premier") Sinon Ecrire (N, " n’est pas premier") Fin Si Fin Exercice 5. 3. Ecrire une fonction 𝑠𝑤𝑎𝑝 ayant en paramètres 2 entiers a et b et qui échange les contenus de 𝑎 et de 𝑏. Tester cette fonction. Solution Procedure swap (A : Entier, B : Entier) Var C : Entier Début C ← A A ← B B ← C Fin
  • 3. 3 / 20 Tester cette fonction : Algo test Var A, B : Entier Début Ecrire ("Entrer le premier nombre : ") Lire (A) Ecrire ("Entrer le dexième nombre : ") Lire (B) swap (A, B) Ecrire ("A : ", A) Ecrire ("B : ", B) Fin Exercice 5. 4. Etablir une fonction 𝑟é𝑠𝑜𝑢𝑑𝑟𝑒 permettant de calculer les solutions de l'équation : (𝑬) : 𝒂𝒙𝟐 + 𝒃𝒙 + 𝒄 = 𝟎 𝒂, 𝒃 𝑒𝑡 𝒄 sont des réels Cette fonction aura comme paramètres 𝒂, 𝒃 et 𝒄. On prendra garde à bien tester tous les cas possibles : • 𝑎 est nul, et l'équation est en fait une équation du premier degré. Exemple : 4𝑥 − 2 = 0 donne une unique solution 𝑥 = 0.5. • Le discriminant 𝛥 = (𝑏" − 4 ∗ 𝑎 ∗ 𝑐) est nul, et il n'y a qu'une seule solution, appelée racine double, au problème. Exemple : 2𝑥² + 4𝑥 + 2 = 0 donne 𝑥 = −1. • Le discriminant 𝛥 est positif, et deux solutions existent : 𝑥# = $%$√' "∗) et 𝑥" = $%*√' "∗) . Exemple : 2𝑥² + 𝑥 − 6 = 0 donne 𝑥# = 1.5 et 𝑥" = −2. • Le discriminant 𝛥 est négatif, et il n'existe pas de solutions (réelles) au problème. Exercice 5. 5. Écrire les actions paramètres (procédure ou fonction) permettant de résoudre les problèmes suivants : 1) Calcul de la somme de deux nombres entiers. 2) Calcul de la factorielle de N (N !). 3) Vérifier si un nombre entier A divise un nombre entier B. 4) Calcul du quotient et du reste de la division entière de deux nombres entiers A et B. 5) Vérifier si un caractère donné est une voyelle (voyelles : 'a', 'e', 'i', 'o', 'u', 'y'). 6) Permet de permuter le contenu de deux variables rèelles. 7) Étant donné un entier A, calcule sa valeur absolue.
  • 4. 4 / 20 Solution 1) Calcul de la somme de deux nombres entiers. Fonction somme (x : Entier, y : Entier) : Entier Début somme ← x + y Fin 2) Calcul de la factorielle de N (N !). Fonction factorielle (x : Entier) : Entier Var i, fact : Entier Début Fact ← 1 Pour i ← 1 A x Faire fact ← fact * i Fin Pour factorielle ← fact Fin 3) Vérifier si un nombre entier A divise un nombre entier B. Fonction divise (A : Entier, B : Entier) : booleen Début divise ← Faux Si (B mod A = 0) Alors divise ← vrai Fin Si Fin 4) Calcul du quotient et du reste de la division entière de deux nombres entiers A et B. Procedure quotientDuReste (A : Entier, B : Entier) Var Q, R : Entier Début Q ← 0 R ← 0 Tantque (R>=B) faire R ← R mod B Q ← Q + 1 Fin Tantque Fin 5) Vérifier si un caractère donné est une voyelle (voyelles : 'a', 'e', 'i', 'o', 'u', 'y'). Fonction voyelle (c : Caractère) : Booleen
  • 5. 5 / 20 Var estVoyelle : Booleen Début estBooleen ← Faux Si (c = 'a' OU c = 'e' OU c = 'i' OU c = 'o' OU c = 'u' OU c = 'y') Alors estBooleen ← Vrai Fin Si voyelle ← estBooleen Fin 6) Permet de permuter le contenu de deux variables réelles. Procedure permuter (A : Entier, B : Entier) Var C : Entier Début C ← A A ← B B ← C Fin 7) Étant donné un entier A, calcule sa valeur absolue. Fonction valeurAbsolue (A : Entier) : Entier Début Si (A < 0) Alors valeurAbsolue ← -A Fin Si valeurAbsolue ← A Fin
  • 6. 6 / 20 Introduction à l’algorithmique Travaux dirigés (TD) Correction Youssouf EL ALLIOUI p y.elallioui@usms.ma Série 2 LA RÉCURSIVITÉ Exercice 2. 1 Écrire les actions paramètres (procédure ou fonction) permettant de calculer la factorielle d’un entier N (N !). Tester cette fonction. Solution : Fonction factorielle (x : Entier) : Entier Var i, fact : Entier Début If (N = 0 OU N = 1) Alors factorielle ← 1 Sinon factorielle ← N * factorielle (N-1) Fin Si Fin Tester cette fonction : Algo test Var N : Entier Début Ecrire ("Entrer un nombre entier : ") Lire (N) Ecrire (N, " ! = ", factorielle (N)) Fin Exercice 2. 2 Expliquez les fonctionnalités des fonctions suivantes 2020
  • 7. 7 / 20 Fonction fct1 (x : Entier, y : Entier) : Entier Début Si (x = 0) Alors fct1 ← y Sinon fct1 ← fct1 (x-1, x+y) Fin Si Fin Solution : La fonction fct1() calcule et retourne ((1 + 2 ... + x-1 + x) +y) qui est (x(x+1)/2) + y. Par exemple, si x est 5 et y est 2, alors fct1 devrait retourner 15 + 2 = 17. Exercice 2. 3 Expliquez les fonctionnalités des fonctions suivantes Fonction fct2 (n : Entier) : Entier Début Si (n = 1) Alors Fct2 ← 0 Sinon Fct2 ← 1 + fct2 (n/2) Fin Si Fin Solution : La fonction calcule et renvoie le plus grand entier inférieur ou égal à log2(n). Par exemple, si n est entre 8 et 15, fct2() renvoie 3. Si n est entre 16 et 31 alors fct2() renvoie 4. Exercice 2. 4 Expliquez les fonctionnalités des fonctions suivantes Procédure fct3 (n : Entier) Début Si (n = 0) Alors retourne Fin Si Fct3 (n/2) Écrire (n%2) Fin Solution : La fonction fct3() affiche l'équivalent binaire d'un nombre n.Par exemple, si n est 21, alors fct3() affiche 10101. Exercice 2. 5
  • 8. 8 / 20 Expliquez les fonctionnalités des fonctions suivantes Fonction fct4 (tab[] : Entier, n : Entier) : Entier Début x ← -1 Si (n = 1) Alors fct4 ← tab [0] Sinon x ← fct4 (tab, n-1) Fin Si Si (x > tab[n-1]) Alors fct4 ← x Sinon fct4 ← tab[n-1] Fin Si Fin Solution : fct4() renvoie la valeur maximale dans le tableau d'entrée tab[] de taille n. Exercice 2. 6 Expliquez les fonctionnalités des fonctions suivantes Fonction fct5 (a : Entier, b : Entier) : Entier Début Si (b = 0) Alors fct5 ← 1 Fin Si Si (b mod 2 = 0) Alors fct5 ← fct5(a*a, b/2) Fin Si fct5 ← fct5(a*a, b/2) * 2 Fin Solution : fct5() renvoie ab Exercice 2. 7 On souhaite écrire une fonction récursive qui calcule le carré d'un entier. Pour trouver un lien entre 𝑐𝑎𝑟𝑟𝑒(𝑛) et 𝑐𝑎𝑟𝑟𝑒(𝑛 − 1), on utilise la formule donnée en énoncé : (𝑛 + 1)" = 𝑛" + 2𝑛 + 1. En changeant 𝑛 en 𝑛 − 1, la formule se réécrit 𝑛" = (𝑛 − 1)" + 2(𝑛 − 1) + 1 d'où 𝑐𝑎𝑟𝑟𝑒(𝑛) = 𝑐𝑎𝑟𝑟𝑒(𝑛−) + 2 ∗ 𝑛 − 1. Dans le cas où 𝑛 est un entier négatif, on utilise le fait que (−𝑛)" = 𝑛" . On se ramène ainsi au cas où n est un entier positif. Les appels récursifs successifs nous mènent au cas de base : si 𝑛 = 0, alors 𝑐𝑎𝑟𝑟𝑒(𝑛) = 0.
  • 9. 9 / 20 Solution : Fonction carré (n : Entier) : Entier Début Si (n = 0) Alors carré ← 0 Fin Si Sinon Si (n < 0) Alors carré ← carré (-n) Sinon carré ← carré (n-1) + 2*n - 1 Fin Si Fin Exercice 2. 8 On veut écrire une fonction récursive qui calcule la somme de 1 à un entier 𝑛 : 1 + 2 + 3 +· · · +(𝑛 − 1) + 𝑛. On remarque que si on connaît 𝑠𝑜𝑚𝑚𝑒_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑒(𝑛 − 1), alors pour avoir 𝑠𝑜𝑚𝑚𝑒_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑓(𝑛) il suffit d'ajouter n au résultat précédent. On prend comme convention que si 𝑛 < 1, alors la somme est nulle. Le cas de base est celui où n vaut 1, et dans ce cas la somme vaut 1. Solution : De l'explication précédente on déduit : Fonction somme_recursive (n : Entier) : Entier Début Si (n < 0) Alors somme_recursive ← 0 Fin Si Sinon Si (n = 1) Alors somme_recursive ← 1 Sinon somme_recursive ← somme_recursive (n-1) + n Fin Si Fin Exercice 2. 9 Ecrire une fonction récursive qui calcule le produit de 1 à un entier 𝑛 : 1 ∗ 2 ∗ 3 ∗ · · · ∗ (𝑛 − 1 ∗ 𝑛. On remarque que si on connaît 𝑝𝑟𝑜𝑑𝑢𝑖𝑡_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑒(𝑛 − 1), alors 𝑝𝑟𝑜𝑑𝑢𝑖𝑡+,-.+/01(3) = 𝑛 ∗ 𝑝𝑟𝑜𝑑𝑢𝑖𝑡_𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑒(𝑛 − 1). On prend comme convention que si 𝑛 < 1, alors le produit est nulle. Le cas de base est celui où n vaut 1 ou 0, et dans ce cas le produit vaut respectivement 1 et 0. Solution : De l'explication précédente on déduit : Fonction produit_recursive (n : Entier) : Entier Début
  • 10. 10 / 20 Si (n <= 0) Alors produit_recursive ← 0 Fin Si Sinon Si (n = 1) Alors produit_recursive ← 1 Sinon produit_recursive ← n * produit_recursive (n-1) Fin Si Fin
  • 11. 11 / 20 Introduction à l’algorithmique Travaux dirigés (TD) Correction Youssouf EL ALLIOUI p y.elallioui@usms.ma Série 3 LES FICHIERS Exercice 3. 1 Soit le fichier NOMBRES.BIN qui contient une liste de nombres entiers. Écrire un algorithme qui affiche les nombres du fichier, leur somme et leur moyenne. Solution : Algorithme Nombre Var F : Fichier d’entier Var X, S, Nb : Entier Var M : Réel Début Assigner(F,’NOMBRES.BIN’) Relire(F) Nb ← 0 S ← 0 Tantque Non FDF(F) Faire Lire(F,X) ; // Lire un élément du fichier Ecrire(X) ; // affichage à l’écran S ← S+X Nb ← Nb+1 Fin Tanque Si Nb≠0 Alors M ← S/Nb Ecrire(‘Somme des éléments =’,S,’ Moyenne=’,M) Sinon Ecrire(‘Fichier vide’) Fin Si Fermer(F) Fin Exercice 3. 2 Écrire un algorithme qui crée le fichier MOTS.TXT contenant une série de mots (longueur maximale d'un mot: 20 caractères). La saisie des mots se terminera à l'introduction du symbole '*' qui ne sera pas écrit dans le fichier. 2020
  • 12. 12 / 20 Écrire un algorithme qui affiche le nombre de mots ainsi que la longueur moyenne des mots contenus dans le fichier MOTS.TXT. 3- Écrire un algorithme qui crée un deuxième fichier MOTS10.TXT contenant les mots du fichier MOTS.TXT de plus de 10 caractères. Solution : Algorithme TraiteMot; Var F,G :Fichier de chaine[20] ; Var X : Chaine[20] ; Var Nb : Entier Var M : Réel Début /*question 1 Assigner(F,’MOTS.TXT’) ; Reecrire(F) ; /*ouvrir F en écriture Ecrire(‘Donner une suite de mots. Introduire le mot ‘*’ pour arrêter la saisie’) ; Lire(X) ; /*Lire le premier mot à l’extérieur de la boucle Tantque X≠’*’ Faire Ecrire(F,X) ; Lire(X) ; /*Lire le mot suivant Fait ; Fermer(F) ; /*question 2 Nb←0 ; M←0 ; /*on peut utiliser M pour la somme des longueurs puis pour la moyenne Relire(F) /*ouvrire F en lecture Tantque Non FDF(F) Faire Lire(F,X) ; /*Lire un élément du fichier M←M+Taille(X) ; Nb←Nb+1 ; Fait ; Si Nb≠0 Alors M←M/Nb ; Ecrire(‘Nombre de mots =’,Nb,’ Longueur Moyenne=’,M) Sinon Ecrire(‘Fichier vide’) Fsi ; Fermer(F) ; /*question 3 Assigner(G,’MOTS10.TXT’) ; Reecrire(G) ; Relire(F) /*ouvrir G en écriture et F en lecture Tantque Non FDF(F) Faire Lire(F,X) ; /*Lire un élément du fichier Si Taille(X)>10 Alors Ecrire(G,X) Fsi ; Fait ; Fermer(F) ;
  • 13. 13 / 20 Fermer(G) ; Fin Exercice 3. 3 Considérons le type enregistrement suivant : Type Étudiant = Enregistrement Matricule : Entier ; Nom, Prénom : Chaine [20] ; Moyenne : Réel ; Fin; Soit T un tableau d’au plus 100 étudiants. Écrire un algorithme permettant de recopier tous les étudiants admis appartenant à T dans un fichier ADMIS de type étudiant. Un étudiant est admis si sa moyenne est supérieure ou égale 10. Solution : Algorithme Étude Type Étudiant = Enregistrement Matricule : entier Nom, Prénom : chaine [20] ; Moyenne : réel Fin Var T : Tableau[1..100] de Étudiant Var F : Fichier de Étudiant Var X : Étudiant Var I,N : Entier ; Debut Ecrire(‘Donner le nombre d’’etudiants’) ; /*lecture des éléments du tableau Repeter Lire(N) Jusqu’à N>0 et N≤100 Pour I←1 à N Faire Avec X Faire Lire(Matricule) Lire(Nom,Prenom) Lire(Moyenne) Fait T[I]←X ; /*On peut utiliser directement T[I] et on évite l’affectation ( en bleu ) Avec T[I] Faire Lire(Matricule)
  • 14. 14 / 20 Lire(Nom,Prenom) Lire(Moyenne) Fait Fait /*création du fichier des admis Assigner(F,’ADMIS’) Reecrire(F) Pour I←1 à N Faire Si T[I].Moyenne)≥10 Alors Ecrire(F,T[I]) Fsi; /*même remarque, on peut utiliser un enregistrement X X←T[I] Si X.Moyenne)≥10 Alors Ecrire(F,X) Fsi Fait Fermer(F) Fin Exercice 3. 4 Soient les enregistrements suivants : Type TDate = Enregistrement Jour, mois, année : entier ; Fin Type TDiscipline = Enregistrement Discipline : chaine [10] ; Faculté : chaine [20] ; Fin; Type TEtudiant = Enregistrement Nom, prénom : chaine [20] ; DateN : TDate ; Filière : TDiscipline ; Fin; Soit FEtudiant un fichier d’étudiants. Écrire un algorithme qui permet de : - Remplir le fichier FEtudiant. - Éclater le fichier FEtudiant en deux fichiers, F1 (étudiants de la faculté ‘FEI’) et F2 (étudiants des autres facultés). Solution :
  • 15. 15 / 20 Algorithme Eclate Type TDate = Enregistrement Jour, mois, année : entier ; Fin Type TDiscipline = Enregistrement Discipline : chaine [10] ; Faculté : chaine [20] ; Fin; Type TEtudiant = Enregistrement Nom, prénom : chaine [20] ; DateN : TDate ; Filière : TDiscipline ; Fin; Var Étudiant : TEtudiant ; Var F, F1, F2 : Fuchier de TEtudiant ; Var FEI, Autre : Booléen ; Debut Assigner(F,’FEtudiant’) ; Réecrire(F) ; Avec Etudiant, Etudiant.DateN, Etudiant.Filiere Faire Ecrire(‘Nom :’) ; Lire(Nom) ; /*Lire 1er nom à l’extérieur de la boucle Tantque Nom<>’’ Faire Ecrire(‘Prénom :’) ; Lire(prenom) ; Ecrire(‘Date de naissance :’) ; Lire(Jour,mois,Annee) ; Ecrire(‘Discipline, Faculté :’) ; Lire(Discipline, Faculté) ; Ecrire(F,Etudiant) ; Ecrire(‘Nom :’) ; Lire(Nom) ; /*Lire le nom suivant Fait ; Fait ; Fermer(F) ; Relire(F) ; /*Pour éviter de créer des fichiers vides, on peut utiliser ces 2 indicateurs booléens, dans ce Cas /*l’assignation et la création ne se font que si nous trouvons un élément, après on remet le booléen à /*vrai pour ne pas refaire ces opérations /*CETTE OPERATION N’EST PAS OBLIGATOIRE MAIS MIEUX LA SAVOIR FEI ←Faux ; Autre ←Faux ; /*Si on n’utilise pas ces booléens, on doit assigner et ouvrir les 2 fichiers en écriture à ce niveau
  • 16. 16 / 20 Assigner(F1,’FFEI’) ; Réecrire(F1) ; Assigner(F2,’FAutrer’); Réecrire(F2); Si FDF(F) Alors Ecrire(‘Fichier vide’) Sinon Tantque Non FDF(F) Faire Lire(F,Etudiant) ; Avec Etudiant.Filiere Faire Si Faculté =’FEI’ Alors Si Non FEI Alors Assigner(F1,’FFEI’) ; Réecrire(F1) ; FEI ←Vrai Fsi ; Ecrire(F1,Etudiant) ; Sinon Si Non Autre Alors Assigner(F2,’FAutrer’); Réecrire(F2); Autre←Vrai Fsi ; Ecrire(F2,Etudiant) ; Fsi ; Fait ; Fait ; Fermer(F) ; Si FEI Alors Fermer(F1) Fsi ; Si Autre Alors Fermer(F2) Fsi ; Fsi ; Fin. Exercice 3. 5 1) Soient F1 et F2 deux fichiers d’entiers strictement positifs et sans répétition. Écrire un algorithme qui construit (crée) un fichier G d’entiers tel que G contient pour chaque valeur de F1 la valeur et tous ses multiples appartenant à F2 (F1 et F2 sont supposés existants). Exemple : F1 : 3 10 20 17 F2 : 3 6 19 60 40 30 G : 3 3 6 60 30 10 60 40 30 20 60 40 17 2) Écrire un algorithme qui permet à partir du fichier résultat (G) de générer un autre fichier (H) contenant toutes les valeurs du fichier (G) (sans répétition) avec leur nombre. Exemple : H : 3 2 6 1 60 3 30 2 10 1 40 2 20 1 17 1
  • 17. 17 / 20 Solution : 1) 1)
  • 18. 18 / 20 Exercice 3. 6 Soit F un fichier d’entiers représentant des séquences de nombres séparées par un ou plusieurs zéro. Écrire un algorithme qui réalise les traitements suivants : 1) A partir de F (fichier existant), crée un fichier G contenant pour chaque séquence, la moyenne des nombres qui la constituent. 2) 2- Puis, Supprimer les valeurs nulles du fichier G. Exemple : F : 0 0 1 4 3 7 0 0 0 6 -9 2 7 -6 0 -10 3 0 0 G : 3,75 0,00 -3,50 Avant suppression G : 3,75 -3,50 Après suppression Solution :
  • 20. 20 / 20 Introduction à l’algorithmique Travaux dirigés (TD) Correction Youssouf EL ALLIOUI p y.elallioui@usms.ma Série 4 LA COMPLEXITÉ ALGORITHMIQUE 2020