SlideShare a Scribd company logo
1 of 20
Download to read offline
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

More Related Content

What's hot

Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018salah fenni
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfsalah fenni
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximationWael Ismail
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaineAfef Ilahi
 
Projet de programmation la conversion entre les bases
Projet de programmation   la conversion entre les bases Projet de programmation   la conversion entre les bases
Projet de programmation la conversion entre les bases Tunisie collège
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetiquemohamed_SAYARI
 
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
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap IIInes Ouaz
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiquefast xp
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018salah fenni
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiquesmohamed_SAYARI
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombressalah fenni
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitivesInforMatica34
 
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
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)salah fenni
 

What's hot (20)

TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
TP C++ : Correction
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximation
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaine
 
Projet de programmation la conversion entre les bases
Projet de programmation   la conversion entre les bases Projet de programmation   la conversion entre les bases
Projet de programmation la conversion entre les bases
 
Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 
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é
 
Mes devoirs 4 si
Mes devoirs 4 siMes devoirs 4 si
Mes devoirs 4 si
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap II
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmique
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiques
 
Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombres
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitives
 
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
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 

Similar to 02 correction-td smi-s3-algo2

LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONborhen boukthir
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
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
 
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
 

Similar to 02 correction-td smi-s3-algo2 (20)

Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATION
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
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
 
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
 

More from L’Université Hassan 1er Settat (6)

Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
 
TP C++ : enoncé
TP C++ : enoncéTP C++ : enoncé
TP C++ : enoncé
 
Chapitre 04 : les fonctions
Chapitre 04 : les fonctionsChapitre 04 : les fonctions
Chapitre 04 : les fonctions
 
Chapitre 03 : Structures de contrôle
Chapitre 03 : Structures de contrôleChapitre 03 : Structures de contrôle
Chapitre 03 : Structures de contrôle
 
Chapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et Instructions
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 

Recently uploaded

Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesUnidad de Espiritualidad Eudista
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Technologia Formation
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxikospam0
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLElebaobabbleu
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...Universidad Complutense de Madrid
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfAmgdoulHatim
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKNassimaMdh
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesMohammedAmineHatoch
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxhamzagame
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkRefRama
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcourshalima98ahlmohamed
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetJeanYvesMoine
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxabdououanighd
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxShinyaHilalYamanaka
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdftrendingv83
 

Recently uploaded (19)

Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.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