Académique Documents
Professionnel Documents
Culture Documents
FPSB
Prof A. Bessate
bessate@gmail.com
1
DESCRIPTIF DU MODULE ALGORITMIQUEII
2
Rappel : Algorithmique 1
3
Qu’est ce qu’ un algorithme ?
4
Pourquoi utiliser un algorithme ?
5
Définition d’un algorithme
6
Structure générale d’un algorithme
Titre du Problème
Manipulation Début
Actions
FIN
7
Conception d’un algorithme
• Les étapes de conception d’un algorithme :
Comprendre le problème;
Identifier les données du départ(entrées) et celle(s)
qu’il faut obtenir(sorties);
Structurer les données (variables ou constantes,
type...);
Déterminer les transformations nécessaires à faire
pour obtenir les résultats
(traitements/développements);
Présenter les résultats.
8
Caractéristiques d’un algorithme
9
L’algorithme sous forme de texte
Algorithme Nom_de_algorithme
Variable /* Déclaration des variables */
• DEBUT
– Instruction 1
– Instruction 2
– …….
– …….
– Instruction n
• FIN
10
Déclaration des variables
Pour exister une variable doit être déclarée,
c’est –à-dire que vous devez indiquer au
début de l’algorithme comment elle s’appelle
et ce qu’elle doit contenir. Les variables se
déclarent au début de l’algorithme, avant le
programme lui-même mais après le mot
« variables »
Variable
Variable1 :type
variable2,variable3,… :type
11
Les types
• Les constantes: désignent des références à des
valeurs invariantes dans le programme
• Les entiers: nombres sans virgule, négatifs ou
positifs.
• Les réels: nombres à virgule, positifs ou négatifs.
• Les booléens: Pour déterminer si une affirmation
vraie ou fausse
• Les caractères: pour représenter un seul caractère.
• Les chaînes: ce sont une suite de caractères.
• Les tableaux: permettent de représenter un
ensemble de valeurs appartenant toutes au même
type.
12
13
14
15
Opérateurs et calculs
Symbole d’affectation
Variable Valeur
16
17
18
19
20
Tests et conditions
• Algorithme Structure_Alrenative_1
• Variable x : entier
• Début
– Afficher("Saisir un entier x")
– Lire(x)
– Si(x > 0) alors
– Afficher("x est un nombre positif ")
– Finsi
• Fin
21
Tests et conditions
• Algorithme Structure_Alrenative_2
• Variable x : Entier
• Début
– Afficher("Saisir un entier x ")
– Lire(x)
– Si(x > 0) alors
• Afficher("x est un nombre positif ")
– Sinon
• Afficher("x est un nombre négatif ou nul")
– Finsi
• Fin
22
Tests et conditions
• Algorithme Maximum
• Variable
a ,b, max : Entier
• Début
– Afficher("Saisir deux entiers a et b")
– Lire(a, b)
– Si(a > b) alors
• max a
– Sinon
• max b
– Finsi
– Afficher ("le maximum de ",a , "et de ",b, "est : ", max)
• Fin
23
Choix multiples
24
Les boucles
L’instruction pour:
<Initialisation>
Bloc d’instructions
Fin Pour
25
Les boucles
• Algorithme Factoriel
• Variable
N, i, Fact : Entier
• Début
• Afficher("Saisir une valeur entière N>0:")
• Lire(N)
Fact 1
Pour i allant de 1 à N Faire
Fact Fact*i
FinPour
• Afficher("Le factoriel de", N, "est :", Fact)
• Fin
26
Les boucles
<Initialisation>
Bloc d’instructions
actions
Bloc de contrôle
• Variable
• i : Entier
• Début
• i 0 //Initialisation
• Tant que (i < 300) Faire
• Afficher("Bonjour tout le monde")
• i i+1
• Fin tant que
• Fin
28
Les boucles
<Initialisation>
Faire
Bloc d’instructions
Jusqu’à Condition
29
Les boucles
Algorithme :Boucle3
Variable
i , y : Entier
Début
i 2
y 0
Faire
i i+1
y y+i
Afficher ("y = ", y)
Jusqu’à (i = 7)
Fin
30
Les boucles
Algorithme: somme
Variable
N, S, i: Entier
Début
Afficher("Saisir une valeur entière positive:")
Lire(N)
S 0
i 0
Faire
i i+1
S S+i
jusqu’à(i>=N)
Afficher("La somme: S=", S)
FIN
31
Tableaux : introduction
Supposons que l'on veut calculer le nombre d’étudiants
ayant une note supérieure à 10 pour une classe de 20
étudiants.
Jusqu’à présent, le seul moyen pour le faire, c’est de
déclarer 20 variables désignant les notes N1, …, N20:
• La saisie de ces notes nécessite 20 instructions
lire(Ni).
• Le calcul du nombre des notes>10 se fait par une
suite de tests de 20 instructions Si :
nbre ← 0;
Si (N1 >10) alors nbre ←nbre+1 FinSi
…
Si (N20>10) alors nbre ←nbre+1 FinSi
cette façon n’est pas très pratique
32
Tableaux
33
Tableaux
• La déclaration d'un tableau s'effectue en précisant le type de
ses éléments et sa dimension (le nombre de ses éléments)
• En pseudo code :
variable identificateur tableau[dimension] : type;
• Exemple :
variable notes tableau[20] : réel
34
Tableaux
• Les tableaux à une dimension ou vecteurs :
variable tab tableau[10] : entier
0 1 2 3 4 5 6 7 8 9
45 54 1 -56 22 134 49 12 90 -26
35
Tableaux
37
Tableaux: accès et modification
tab[6] ← 43;
Cette instruction a modifié le contenu du 7ème
élément du tableau (43 au lieu de 49).
38
Tableaux: Relation entre tableaux et boucles
40
Tableaux: exemple 2
Le programme suivant comporte la déclaration d’un tableau de 20 réels (les notes
d’une classe), on commence par effectuer la saisie des notes, et en suite on calcul
la moyenne des 20 notes et on affiche la moyenne :
…
Constante Max =20 : entier
variables Notes tableau[Max], i, somme, n : entier
moyenne : réel
Début
écrire("entrer le nombre de notes :");
lire(n); /* saisir les notes */
pour i 0 à n-1 faire
écrire("entrer une note :");
lire(Notes[i]);
finpour
/* calculer la moyenne des notes */
somme 0;
pour i 0 à n-1 faire
somme somme + Notes[i] ;
finPour
moyenne = somme / n; /* affichage de la moyenne */
écrire("la moyenne des notes est :",moyenne)
Fin
41
Tableaux: saisie et affichage
• Saisie et affichage des éléments d'un tableau :
Constante Max=200 : entier
variables i, n : entier
Notes tableau[max] : réel
début
écrire("entrer la taille du tableau :") ;
lire(n); /* saisie */
Pour i 0 à n-1 faire
écrire ("Saisie de l'élément ", i + 1);
lire (T[i] );
FinPour
/* affichage */
Pour i 0 à n-1 faire
écrire ("T[",i, "] =", T[i]);
FinPour
fin 42
Tableaux: Initialisation
Le bloc d’instructions suivant initialise un à un
tous les éléments d'un tableau de n éléments :
InitTableau
début
pour i ← 0 à n-1 faire
tab[i] ← 0;
fpour
fin
43
Les fonctions
44
Les fonctions
• Problème:
Dès qu’on commence à écrire des programmes, il
devient difficile d’avoir une vision globale sur son
fonctionnement.
Difficulté de trouver des erreurs.
Redondance
….
• Solution: Décomposer le problème en sous
problèmes
45
Les fonctions
46
Les fonctions
Algorithme Maximum_de_trois_variable_1
Variable
a, b, c: Réel
max2, max3: Réel
Début
Afficher("Saisir3nombreréels:")
Lire(a, b, c)
max2 Maximum2(a, b)
max3 Maximum2(max2, c)
Afficher("Le maximum est = ", max3)
FIN
47
Les fonctions
48
Les fonctions
49
Les fonctions
Pourquoi on l’utilise :
51
Les fonctions
52
Les fonctions
53
Variables locales
54
Variables globales
55
Appel d’une fonction
56
Arguments d’une fonction
58
Fonctions : cas des tableaux
Fonction indice_val_max(T: tableau[ ]d’entiers, taille: Entier, k: Entier): Entier
Variable
i, imax, max2 : Entier
DébutFonction
max2 T[k]
imax k
Pour i allant de k+1 à taille-1 Faire
Si ( T[i]>max2) Alors
max2 T[i]
imax i
FinSi
FinPour
Retourne imax
FinFonction
59
Fonctions : cas des tableaux
60
Fonctions : cas des tableaux
61
Procédure
62
Procédure
63
Exemple de déclaration de procédure...
64
exemple de programme...
Programme exemple3
variables entier1,entier2,entier3,min,max : Entier
fonction minimum2 (a,b : Entier) : Entier
fonction minimum3 (a,b,c : Entier) : Entier
procédure calculerMinMax3(E a,b,c: Entier; S min3,max3:Entier )
début
min3 ← minimum3(a,b,c)
max3 ← maximum3(a,b,c)
fin
début
écrire("Entrez trois entiers :");
lire(entier1) ; lire(entier2) ; lire(entier3);
calculerMinMax3(entier1, entier2, entier3, min, max)
écrire("la valeur la plus petite est ",min," et la plus grande est
",max)
fin
65
La récursivité
66
La récursivité
67
La récursivité
68
La récursivité
69
La récursivité
70
La récursivité
71
La récursivité
72
La récursivité
73
La récursivité
74
La récursivité
75
La récursivité: Exemple
76
La récursivité: Exemple
77
La récursivité
Recherche dichotomique:
On suppose qu’on dispose d’un tableau
et on se donne un élément quelconque
et on cherche si cet élément est dans
le tableau ou non.
78
La récursivité
A chaque étape :
• Tester si le tableau est vide (Arrêt des appels récursifs
avec échec)
• Calculer l’indice moyen (indice_max+indice_min)/2
• Comparer la valeur présente à l’indice moyen avec
l’élément recherché :
1) Si l’élément recherché est à l’indice moyen
(arrêt succès).
2) Si l’élément est supérieur à la valeur
tableau[indice_moyen] relancer la recherche
avec le tableau supérieur.
3) Sinon relancer la recherche avec le tableau
inférieur.
79
La récursivité
81
La récursivité
Fonction Recherche_Dicho(T: tableau[ ] d’entiers, ind_min: Entier, ind_max: Enteier ,x: Entier) :
booléen
Variable
ind_moyen : Entier
• DébutFonction
• Si (ind_min<=ind_max) alors
• ind_moyen (ind_min+ind_max) div 2
• Si ( T[ind_moyen]=x) Alors
• retourne Vrai
• Sinon
• Si ( T[ind_moyen]>x) Alors
• retourne Recherche_Dicho(T,ind_min,ind_moy-1,x)
• Sinon
• retourne Recherche_Dicho(T,ind_moy+1,ind_max,x)
• Finsi
• Finsi
• Sinon
• retourne Faux
• Finsi
• FinFonction
82
La récursivité
83
La récursivité: Exercices
84
La récursivité: Exercices
85
La récursivité: Exercices
Fonction Différence(A,B,C : tableau[ ] d’entiers, a,b,n,m: Entier) : tableau d’entiers
/* n la taille de A et m la taille de B*. Cas des tableaux triés /
DébutFonction
Si a>=n Alors
retourne C
Finsi
Si A[a]=B[b] Alors
retourne Différence(A,B,C,a+1,b+1,n,m)
Sinon
Si A[a]<B[b] Alors
Taille(C) Taille(C)+1
C[Taille(C)-1] A[a]
Retourne Différence(A,B,C,a+1,b,n,m)
Sinon
Retourne Différence(A,B,C,a,b+1,n,m)
Finsi
Finsi
FinFonction
Remarque: L'appel initial est Différence(A,B,C,0,0,n,m) où C est un tableau ne
contenant initialement aucun élément (taille(C)=0).
86
La récursivité Terminale : Exemple 1
Fonction Fact_T( n : Entier, k : Entier ) : Entier
/* le nombre kest un accumulateur */
DébutFonction
Si( n = 0) Alors
Retourne k
Sinon
Fact_T( n-1, n*k)
Finsi
FinFonction
87
La récursivité Terminale : Exemple 2
88
Structures et enregistrements
89
Structures et enregistrements
90
Structures et enregistrements
91
Structures et enregistrements
92
Structures et enregistrements
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Les fichiers
137
138
139
140
141
La complexité
142
La complexité
143
144
145
La complexité
Mesure de la complexité
• Le choix de l’unité de mesure ne dépend pas de la nature
précise des données mais de leur taille n.
• On désigne par C(n) le nombre d’opérations effectuées pour
exécuter un algorithme donné dont la taille de données est n.
• C(n)=O(f(n)) : " Complexité en f(n)"
Généralement la fonction f est une combinaison de polynômes,
logarithmes, ou exponentielle
• C(n)=O(f(n)) : " Complexité en f(n)" signifie que le nombre
d’opérations effectuées est borné K*f(n) lorsque n tend
vers l’infini, c’est-à-dire, Il existe K>0 et n0 telles que pour tout n0
n > n0, C(n)<K*f(n).
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171