Cours Algo
Cours Algo
Cours Algo
ALGORITHMIQUE
A.ETTALBI
a.ettalbi@um5s.net.ma
ettalbi2005@hotmail.com
A.U. : 2015-2016
Module M1.1
Intitul : Algorithmique et Programmation
Responsable : A. ETTALBI
Volume horaire : 56 Heures
Composition de M1.1
2 Elments de Module :
M1.1.1 : Algorithmique (28H)
M1.1.2 : Programmation (28H)
M1.1.2 Programmation
Responsable
Volume
horaire
Coeff
ETTALBI
Cours : 14H
TD : 14H
NASSAR
Cours : 14H
TP : 14H
ENSIAS
ALGORITHMIQUE
A.ETTALBI
a.ettalbi@um5s.net.ma
ettalbi2005@hotmail.com
A.U. : 2015-2016
Plan Gnral
I- Dfinitions
II- Objectifs de la programmation
III- Les langages de programmation
IV- Algorithme et Organigramme
V- Structure dun Algorithme
VI- Structures de donnes
VII- Fonctions (Sous-Programmes)
Exercices-Corrections
A. ETTALBI / 2015-2016
I- DEFINITIONS
Informatique :
Dfinition 1 :
Traitement automatique de linformation
Dfinition 2 :
Science de lordinateur
A. ETTALBI / 2015-2016
I- DEFINITIONS
Information :
Toute donne brute qui peut
rsultat.
A. ETTALBI / 2015-2016
I- DEFINITIONS
Ordinateur :
Machine qui permet de mmoriser
une grande quantit dinformation
et faire des calculs de base sur ces
Composants de lordinateur
Composants internes :
- Unit Arithmtique et Logique
- Mmoires (RAM, ROM, )
- Entres/Sorties
A. ETTALBI / 2015-2016
10
Composants de lordinateur
Composants externes ou
Priphriques :
Elments externes lordinateur
qui communiquent avec lui
A. ETTALBI / 2015-2016
11
Composants de lordinateur
3 types de Priphriques :
- dentre (clavier, souris, scanner)
A. ETTALBI / 2015-2016
12
II- OBJECTIF DE LA
PROGRAMMATION
Rsolution automatique (par
lordinateur) des problmes.
En profitant de la rapidit et
de la capacit de stockage de
lordinateur.
A. ETTALBI / 2015-2016
13
II- OBJECTIF DE LA
PROGRAMMATION
- Programme informatique
A. ETTALBI / 2015-2016
14
EXEMPLE
Exemple :
Calcul de la consommation
dun vhicule
A. ETTALBI / 2015-2016
15
16
A. ETTALBI / 2015-2016
17
FinSi
Fin.
A. ETTALBI / 2015-2016
18
19
lhomme et la machine
Ensembles de conventions pour
assurer un dialogue bidirectionnel
20
A. ETTALBI / 2015-2016
21
LANGAGE MACHINE
Li la structure lectronique interne
de lordinateur,
Compos de bits (0 et 1),
Jamais utilis par les programmeurs,
22
LANGAGES DASSEMBLAGE
(Langages de bas niveau)
Propres chaque machine (cd
chaque processeur),
23
LANGAGES EVOLUES
(Langages de haut niveau)
Proches du langage naturel
Loin du langage machine
Ncessitent une traduction vers le
langage machine par un compilateur
ou un interprteur
Exemples : Pascal, C, JAVA
A. ETTALBI / 2015-2016
24
PROGRAMME INFORMATIQUE
Ensemble dinstructions agissant
sur des donnes en entres pour
25
PROGRAMME INFORMATIQUE
Entres
Traitement
A. ETTALBI / 2015-2016
Rsultats
26
PROGRAMME INFORMATIQUE
Variable :
Objet informatique identifi par un
27
PROGRAMME INFORMATIQUE
Constante :
Objet informatique identifi par un
28
PROGRAMME INFORMATIQUE
Identificateur :
Chane de caractres alphanumriques
qui
commence
par
un
caractre
29
PROGRAMME INFORMATIQUE
Exemple didentificateurs corrects:
30
PROGRAMME INFORMATIQUE
Type (Domaine) :
Reprsente lensemble des valeurs
31
PROGRAMME INFORMATIQUE
Types prdfinis : Entiers, Rels,
Chanes de caractres, Dates,
32
33
IV-ALGORITHME ET
ORGANIGRAMME
Algorithme :
- Description des tapes de
34
IV-ALGORITHME ET
ORGANIGRAMME
Organigramme :
- Description des tapes de
rsolution dun problme,
- Constitu dun ensemble de
35
EXEMPLE
Calcul du Primtre dun Cercle
Donnes en entres :
- R (Rayon)
- PI (constante = 22/7)
Rsultat calculer :
- P (Primtre)
Modle de rsolution :
P = 2 * PI * R
A. ETTALBI / 2015-2016
36
EXEMPLE
Calcul du Primtre dun Cercle
Algorithme
Objets :
PI : Constante=22/7
P, R : variables relles
Dbut :
Afficher(Donner le Rayon : )
Lire(R)
Calculer P 2*PI*R
Afficher(Le Primtre est : , P)
Fin.
A. ETTALBI / 2015-2016
37
EXEMPLE
Calcul du Primtre dun Cercle
Organigramme
38
EXEMPLE
#include<stdio.h>
#define PI 3.14 /* constante */
main()
{ float P, R;
printf(Donner le Rayon :);
scanf(%f,&R);
P=2*PI*R;
printf(Le Perimetre est %f, P);
}
A. ETTALBI / 2015-2016
39
EXERCICE DAPPLICATION
Calcul de la moyenne
de deux nombres
40
V- STRUCTURE DUN
ALGORITHME
Types dinstructions :
Instructions squentielles.
Instructions alternatives.
Instructions itratives.
A. ETTALBI / 2015-2016
41
INSTRUCTIONS
SEQUENTIELLES
Sexcutent toutes.
Sexcutent lune aprs lautre
dans un ordre squentiel.
Exemples :
Lire, Afficher, Calculer
A. ETTALBI / 2015-2016
42
EXEMPLE
43
EXEMPLE
44
INSTRUCTIONS
ALTERNATIVES
2 types :
A deux alternatives :
1 Choix (Chemin) parmi 2.
A plusieurs alternatives :
1 Choix parmi plusieurs.
A. ETTALBI / 2015-2016
45
INSTRUCTIONS
A 2 ALTERNATIVES
Se basent sur une condition
Contiennent 2 blocs dinstructions.
46
INSTRUCTIONS
A 2 ALTERNATIVES
Syntaxe gnrale
Si Condition alors Bloc_Instructions1
[Sinon Bloc_Instructions2]
FinSi
Avec :
-Condition : expression boolenne (V ou F)
-Bloc_Instructions1 et Bloc_Instructions2 :
peuvent tre une instruction simple, des
instructions squentielles et/ou alternatives
et/ou itratives
A. ETTALBI / 2015-2016
47
INSTRUCTIONS
A 2 ALTERNATIVES
Organigramme-1
Condition
Vraie
Fausse
Bloc_Instr1
Bloc_Instr2
A. ETTALBI / 2015-2016
48
INSTRUCTIONS
A 2 ALTERNATIVES
Organigramme-2
Condition
Vraie
Fausse
Bloc_Instr1
A. ETTALBI / 2015-2016
49
INSTRUCTIONS
A 2 ALTERNATIVES
Exemple 1 :
Valeur absolue dun entier a :
Si a>0 alors Absa
Sinon Abs-a
FinSi
A. ETTALBI / 2015-2016
50
INSTRUCTIONS
A 2 ALTERNATIVES
Exemple 2 :
Min, Max de 2 entiers a et b :
Si a>b alors Maxa
Minb
Sinon Maxb
Mina
FinSi
A. ETTALBI / 2015-2016
51
Instructions alternatives
imbriques
Exemple 1 :
Lire 2 entiers a et b et afficher un
message
indiquant
si
est
sont gaux.
A. ETTALBI / 2015-2016
52
Instructions alternatives
imbriques
Algorithme :
53
Instructions alternatives
imbriques
Exemple 2 :
Lire 3 entiers a, b et c et afficher le
54
Instructions alternatives
imbriques
Algorithme :
Objets : a, b, c : variables entires
Dbut :
Afficher("Donner 3 entiers disjoints : ")
Lire(a,b,c)
Si a>b alors Si a>c alors Afficher("Max = " , a)
Sinon Afficher("Max = " , c)
FinSi
Si b>c alors Afficher("Min = " , c)
Sinon Afficher("Min = " , b)
FinSi
A. ETTALBI / 2015-2016
55
Instructions alternatives
imbriques
Algorithme (Suite) :
Sinon Si b>c alors Afficher("Max = " , b)
Sinon Afficher("Max = " , c)
FinSi
Si a>c alors Afficher("Min = " , c)
Sinon Afficher("Min = " , a)
FinSi
FinSi
Fin.
A. ETTALBI / 2015-2016
56
EXERCICE DAPPLICATION
Affichage de la mention en
fonction de la note
57
INSTRUCTIONS A PLUSIEURS
ALTERNATIVES
Se basent sur N conditions.
Contiennent N Blocs
dinstructions.
Si la ime condition est vraie, on
excute le ime bloc dinstructions.
A. ETTALBI / 2015-2016
58
INSTRUCTIONS A PLUSIEURS
ALTERNATIVES
Syntaxe gnrale
Selon (variable)
Si Val_1 : Bloc_Instructions1, Sortir
FinSelon
A. ETTALBI / 2015-2016
59
INSTRUCTIONS A PLUSIEURS
ALTERNATIVES
Exemple :
Tarifs dun Zoo :
Code Visiteur Type Visiteur Tarif en DH
0
Enfant
10
Etudiant
12
Ag
15
Autres
25
A. ETTALBI / 2015-2016
60
INSTRUCTIONS A
PLUSIEURS ALTERNATIVES
Algorithme :
61
INSTRUCTIONS A
PLUSIEURS ALTERNATIVES
Programme en C :
#include<stdio.h>
main()
{ int Type, Tarif;
printf("Donner le type 0, 1, 2 ou 3 : ");
scanf("%d",&Type);
switch(Type)
{ case 0 : Tarif=10; break;
case 1 : Tarif=12; break;
case 2 : Tarif=15; break;
case 3 : Tarif=25; break;
}
printf("Vous devez payer %d DH", Tarif); }
A. ETTALBI / 2015-2016
62
Correction de lexercice
Calcul de la moyenne de deux nombres
1) Donner les objets en entre et en
sortie.
2) Donner le modle de rsolution.
3) Dresser lalgorithme.
4) Ecrire le programme en langage C.
A. ETTALBI / 2015-2016
63
Correction de lexercice
Calcul de la moyenne de deux nombres
1) Les objets en entre :
a, b : variables entires
Les objets en sortie :
M : variable relle.
2) Modle de rsolution :
M=(a+b)/2.0
A. ETTALBI / 2015-2016
64
Correction de lexercice
Calcul de la moyenne de deux nombres
3) Algorithme:
Objets : a, b : variables entires
M : variable relle
Dbut:
Afficher("Donner 2 entiers : ")
Lire(a, b)
Calculer M (a+b)/2.0
Afficher("Leur moyenne est : ", M)
Fin.
A. ETTALBI / 2015-2016
65
Correction de lexercice
Calcul de la moyenne de deux nombres
4) Programme en langage C:
#include<stdio.h>
main()
{ int a, b; float M;
printf("Donner 2 entiers :");
scanf("%d%d", &a, &b);
M=(a+b)/2.0;
printf("Leur moyenne est %f", M);
}
A. ETTALBI / 2015-2016
66
EXERCICE DAPPLICATION
Affichage de la mention en
fonction de la note
67
Correction de lexercice
Affichage de la mention en
Fonction de la note
Algorithme:
68
Correction de lexercice
Affichage de la mention en
Fonction de la note
Programme en C :
#include<stdio.h>
main()
{ float N;
printf("Donner la note :");
scanf("%f", &N);
if (N>=14) printf("Admis avec mention");
else if (N>=12) printf("Admis");
else if (N>=10) printf("Ajourn");
else printf("exclus");
}
A. ETTALBI / 2015-2016
69
INSTRUCTIONS
ITERATIVES (Boucles)
Ecrites une seule fois.
Sexcutent plusieurs fois.
Sont caractrises par :
La condition de sortie qui doit tre
70
INSTRUCTIONS
ITERATIVES (Boucles)
On distingue deux types :
se basant sur le nombre ditrations
71
INSTRUCTIONS ITERATIVES
variable
entire
parcourant
un
72
INSTRUCTIONS ITERATIVES
73
INSTRUCTIONS ITERATIVES
Vraie
Var<=Val2
Fausse
Bloc_Instr
Var Var+P
A. ETTALBI / 2015-2016
74
INSTRUCTIONS ITERATIVES
Exemple 1:
Modle :
Moyenne = la Somme des Notes divise
par le nombre de Notes
A. ETTALBI / 2015-2016
75
Exemple 1(Suite)
Variables utiliser :
N : Note (rel),
Constante utiliser :
NN=10 : Nombre de Notes
A. ETTALBI / 2015-2016
76
77
78
INSTRUCTIONS ITERATIVES
Exemple 2:
Lire 2 entiers A et B et afficher les
79
Exemple 2(Suite)
Variables utiliser :
A, B : Entiers lire (Entres)
CA : Carr du Ime entier entre A et B
80
81
82
INSTRUCTIONS ITERATIVES
(se basant sur une condition)
(expression boolenne)
Nutilisent pas de compteur mais
lutilisateur peut en dfinir en cas
de besoin.
A. ETTALBI / 2015-2016
83
INSTRUCTIONS ITERATIVES
84
INSTRUCTIONS ITERATIVES
se basant sur une condition
Syntaxe-1 :
Tant que (Condition)
Bloc_Instructions
Fin-Tant-que
Avec :
- Condition : expression boolenne
- Bloc_Instructions : peut tre une instruction
simple, des instructions squentielles et/ou
alternatives et/ou itratives.
A. ETTALBI / 2015-2016
85
INSTRUCTIONS ITERATIVES
se basant sur une condition
Organigramme-1
Vraie
Condition
Fausse
Bloc_Instr
A. ETTALBI / 2015-2016
86
INSTRUCTIONS ITERATIVES
se basant sur une condition
Syntaxe-2 :
Rpter
Bloc_Instructions
Tant que (Condition)
Avec :
- Condition : expression boolenne
- Bloc_Instructions : peut tre une instruction
simple, des instructions squentielles et/ou
alternatives et/ou itratives.
A. ETTALBI / 2015-2016
87
INSTRUCTIONS ITERATIVES
se basant sur une condition
Organigramme-2
Bloc_Instr
Vraie
Condition
A. ETTALBI / 2015-2016
Fausse
88
INSTRUCTIONS ITERATIVES
Besoin
dun
compteur
entier
89
90
91
Exemple1 : Algorithme
Avec Rpter-Tant-Que
Objets : E, NE, SE : variables entires,
Dbut :
SE0; NE0 /* Pas besoin de E1; */
Rpter
Afficher("Donner un entier et 0 pour sortir :")
Lire(E)
Calculer SESE+E
Si E0 alors Calculer NENE+1 FinSi
Tant que (E0)
Afficher("Le nombre dentiers lus est :", NE)
Afficher("Leur somme est :", SE)
Fin.
A. ETTALBI / 2015-2016
92
Exemple1 : Programme en C
#include<stdio.h>
main()
{ int E, SE, NE; SE=0; NE=0;
do {
printf("Donner un entier et 0 pour sortir :");
scanf("%d", &E);
SE=SE+E;
if (E!=0) NE=NE+1;
}
while (E!=0);
printf("Le nombre dentiers lus est : %d", NE);
printf("\nLeur somme est :%d", SE);
}
A. ETTALBI / 2015-2016
93
INSTRUCTIONS ITERATIVES
Lire
les
Prix
Unitaires
et
les
94
95
96
Exemple2 : Algorithme
Avec Rpter-Tant-Que
Objets : PU, PT : variables relles;
Qte, Choix : variables entires,
Dbut :
PT0;
Rpter
Afficher("Donner Le PU et la Qte achete:")
Lire(PU, Qte)
Calculer PTPT+(PU*Qte)
Afficher("Taper 1 pour Continuer ou 0 pour sortir :")
Lire(Choix)
Tant que (Choix0)
Afficher("Le prix total payer est :", PT, "DH")
Fin.
A. ETTALBI / 2015-2016
97
Exemple2 : Programme en C
#include<stdio.h>
main()
{ float PU, PT; int Qte, Choix;
PT=0;
do {
printf("Donner Le PU et la Qte achete:");
scanf("%f%d", &PU, &Qte);
PT=PT+(PU*Qte);
printf("Taper 1 pour Continuer ou 0 pour sortir :")
scanf("%d", &Choix);
}
while (Choix!=0);
printf("Le prix total payer est :%f DH", PT);
}
A. ETTALBI / 2015-2016
98
Exercice dapplication N1
Lister tous les nombres entiers pairs
99
Exercice dapplication N2
Lire un entier N et afficher sa table de
multiplication.
A. ETTALBI / 2015-2016
100
101
102
103
Remarque
Les 3 boucles sont quivalentes
avec quelques modifications.
On choisit la boucle au nombre
ditrations si on connait au dpart
combien de fois on va boucler.
On utilise la boucle se basant sur
une condition lorsque la sortie de la
boucle est conditionne par une
condition et on ne connait pas au
dpart le nombre de rptitions.
A. ETTALBI / 2015-2016
104
105
106
107
108
109
110
111
112
113
Correction de lExercice 1
Algorithme avec la boucle Pour
Objet : N, M : Variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N)
Afficher("Les entiers pairs infrieurs :",N," sont :")
Pour I0 jusqu N faire
Si I modulo 2=0 alors Afficher(I, " ")
FinSi
Fin-Pour
Fin.
A. ETTALBI / 2015-2016
114
Correction de lExercice 1
Algorithme avec la boucle Rpter
Objet : N, M : Variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N)
Afficher("Les entiers pairs infrieurs :",N," sont :")
I0
Rpter
Si I modulo 2=0 alors Afficher(I, " ")
FinSi
II+1
Tant que (IN)
Fin.
A. ETTALBI / 2015-2016
115
Correction de lExercice 1
Algorithme avec la boucle Tant-que
Objet : N, M : Variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N)
Afficher("Les entiers pairs infrieurs :",N," sont :")
I0
Tant que (IN) faire
Si I modulo 2=0 alors Afficher(I, " ")
FinSi
II+1
Fin-Tant-que
Fin.
A. ETTALBI / 2015-2016
116
A. ETTALBI / 2015-2016
117
Correction de lExercice 2
Algorithme avec la boucle Pour
Objet : N, I : Variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N)
Afficher("Sa table de multiplication est :")
Pour I0 jusqu 10 faire
Fin-Pour
Fin.
A. ETTALBI / 2015-2016
118
Correction de lExercice 2
Algorithme avec la boucle Rpter
Objet : N, I : Variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N)
Afficher("Sa table de multiplication est :")
I0
Rpter
Afficher(N, " * ", I, " = ", N*I)
Retourner la ligne
II+1
Tant que (I10)
Fin.
A. ETTALBI / 2015-2016
119
Correction de lExercice 2
Algorithme avec la boucle Tant-que
Objet : N, I : Variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N)
Afficher("Sa table de multiplication est :")
I0
Tant que (I10)
Afficher(N, " * ", I, " = ", N*I)
Retourner la ligne
II+1
Fin-Tant-que
Fin.
A. ETTALBI / 2015-2016
120
VI- STRUCTURES DE
DONNEES
Variable simple :
Variable structure :
peut contenir plusieurs informations
(car elle possde plusieurs cases
mmoires)
A. ETTALBI / 2015-2016
121
VI- STRUCTURES DE
DONNEES
2 Types de Structures de Donnes :
Structures de donnes homognes
122
TABLEAUX
Structure de donnes homognes
Caractris par un identificateur
(d
la
rservation
despace
mmoire)
A. ETTALBI / 2015-2016
123
TABLEAUX
Chaque lment est repr dans
le tableau par un indice.
124
TABLEAUX (Exemple)
Dclaration Algorithmique:
125
Oprations :
Lecture,
Affichage,
Somme
des
lments,
Somme
de
deux
tableaux,
A. ETTALBI / 2015-2016
126
127
scanf("%d", &T[i]);
}
A. ETTALBI / 2015-2016
128
Afficher(T[i]," ")
Fin-Pour
A. ETTALBI / 2015-2016
129
A. ETTALBI / 2015-2016
130
S0
Pour i0 jusqu (N-1) faire
Calculer SS+T[i]
Fin-Pour
Afficher("la somme est : ", S)
A. ETTALBI / 2015-2016
131
int S=0;
for (i=0; i<N; i++)
S=S+T[i];
132
133
134
135
136
indices
des
occurrences
de
lentier
-Recherche dans un tableau tri
A. ETTALBI / 2015-2016
137
138
if (i<N)
printf("%d existe dans le tableau", A);
139
140
if (i<N)
printf("1re occurrence de:%d est:%d",A,i);
141
Nombre doccurrences de A
Algorithme
i, C : variables entires
C0
Pour i0 jusqu (N-1) faire
Si (T[i]=A) alors Calculer CC+1
FinSi
Fin-Pour
Afficher("Nombre doccurrences de:"
,A," est:",C)
A. ETTALBI / 2015-2016
142
Nombre doccurrences de A
Programme en C
int i, C;
C=0;
for(i=0; i<N; i++)
{ if (T[i]==A) C=C+1; }
printf("Nombre doccurrences de:%d
est:%d",A,C)
A. ETTALBI / 2015-2016
143
i : variables entires
Afficher("Lentier:",A," existe dans les
indices suivants :")
Pour i0 jusqu (N-1) faire
Si (T[i]=A) alors Afficher(i," ")
FinSi
Fin-Pour
A. ETTALBI / 2015-2016
144
A. ETTALBI / 2015-2016
145
146
Principe de lAlgorithme
-On compare A avec lentier du milieu du
tableau (dindice MI),
-Si cet entier est gal A cest termin
-Sil est suprieur strictement A alors on
cherche A dans le 1er sous-tableau (Indices 0
(MI-1))
-Sil est infrieur strictement A alors on
cherche A dans le 2me sous-tableau (Indices
(MI+1) (N-1))
-Si les bornes du tableau ne sont plus valides
on sort (A nexiste pas dans le tableau)
A. ETTALBI / 2015-2016
147
148
Exercice dapplication N1
Ecrire un algorithme qui lit deux
tableaux dentiers T1 et T2 de taille
149
Exercice dapplication N2
Ecrire un algorithme qui lit deux
tableaux de rels P1 et P2 de taille
150
A. ETTALBI / 2015-2016
151
Tri Bulles
Principe de lalgorithme :
consiste faire remonter progressivement
les plus grands lments du tableau
on parcourt le tableau et on compare les
couples dlments successifs
lorsque 2 lments successifs ne sont pas
ordonns, on les permute
Si on fait au moins une permutation dans
un cycle, on doit refaire le cycle
Lalgorithme sarrte lorsquon fait un
cycle sans permutation.
A. ETTALBI / 2015-2016
152
153
10
10
10
10
10
10
A. ETTALBI / 2015-2016
154
Exercice dapplication N3
Soit T un tableau dentiers contenant
les lments suivants: 8 6 0 4 2 7 9 1
35
1) Donner le contenu du tableau aprs
chaque itration de lalgorithme Tri
Bulles
2) Dduire le nombre ditrations
ncessaires pour que le tableau soit
tri
A. ETTALBI / 2015-2016
155
156
157
10
10
10
10
10
10
10
10
10
10
A. ETTALBI / 2015-2016
158
Exercice dapplication N4
Soit T un tableau dentiers contenant
les lments suivants: 8 6 0 4 2 7 9 1
35
1) Donner le contenu du tableau aprs
chaque itration de lalgorithme Tri
par slection
2) Dduire le nombre ditrations
ncessaires pour que le tableau soit
tri
A. ETTALBI / 2015-2016
159
160
161
10
10
10
10
10
10
10
10
10
A. ETTALBI / 2015-2016
162
Exercice dapplication N5
Soit T un tableau dentiers contenant
les lments suivants: 8 6 0 4 2 7 9 1
35
1) Donner le contenu du tableau aprs
chaque itration de lalgorithme Tri
par insertion
2) Dduire le nombre ditrations
ncessaires pour que le tableau soit
tri
A. ETTALBI / 2015-2016
163
164
165
166
167
I, J : variables entires
Pour I0 jusqu (N-1) faire
Lire(T[I][J])
Fin-Pour
Fin-Pour
A. ETTALBI / 2015-2016
168
169
Exercices dapplication N6
Ecrire un algorithme qui dclare un
tableau dentiers 2 dimensions
compos de 10 lignes et 10 colonnes et
le remplit par la matrice Identit
matrice
selon
laffichage
matricielle.
A. ETTALBI / 2015-2016
170
171
172
173
A. ETTALBI / 2015-2016
174
grande puissance
-On na pas pris en compte dans
Tri Bulles
8
A. ETTALBI / 2015-2016
177
A. ETTALBI / 2015-2016
178
A. ETTALBI / 2015-2016
179
180
Les structures
Dfinition:
Une
structure
est
un
ensemble
dinformations homognes (relatives la
mme entit) qui peuvent tre de types
diffrents.
Exemples:
181
Les structures
Dclaration Algorithmique
Structure NomStructure
Champ1 : Type1
Champ2 : Type2
.........
ChampN : TypeN
Fin-Structure
182
Exemple
Structure reprsentant les Vecteurs
dans lespace 3 dimensions
Structure Vecteur3d
X : rel
Y : rel
Z : rel
Fin-Structure
A. ETTALBI / 2015-2016
183
Remarque :
Cette
dclaration
rserve
lespace
Exemple
Dclaration dun Vecteur V1 comme
la variable structure V1
A. ETTALBI / 2015-2016
185
Exemple :
V1.X reprsente le champ X de V1
V1.Y reprsente le champ Y de V1
A. ETTALBI / 2015-2016
186
Fin-Structure
Objet : V1 : variable de type Vecteur3d
Dbut :
Afficher("Donner les coordonnes du vecteur :")
Lire(V1.X, V1.Y, V1.Z)
Fin.
A. ETTALBI / 2015-2016
187
Exercice dapplication N1
Ecrire un algorithme dans lequel :
188
189
Tableaux de structures
Exemple
Structure Vecteur3d
X, Y, Z : rels
Fin-Structure
i : variable entire
190
Tableaux de structures
Dbut :
Pour i0 jusqu (N-1) faire
Fin.
A. ETTALBI / 2015-2016
191
Tableaux de structures
Remarque :
jusqu (N-1)
A. ETTALBI / 2015-2016
192
193
194
un tableau.
A. ETTALBI / 2015-2016
195
Structure Date
Jour, Mois, Anne : entiers
Fin-Structure
Structure Personne
Nom, Prnom : chaines de caractres
DN : variable de type Date //Date Naissance
Fin-Structure
Objet : P : variable de type Personne
196
197
198
Piles et Files
Pile : Structure de donnes
fonctionnant avec lalgorithme
LIFO (Last In First Out)
Exemple : Pile de livres, dassiettes,
File : Structure de donnes
fonctionnant avec lalgorithme
FIFO (First In First Out)
Exemple : File dattente de personnes,
de processus,
A. ETTALBI / 2015-2016
199
Pile et File
Pile
File
A. ETTALBI / 2015-2016
202
dernier empil)
-Savoir ltat de la Pile : Pleine ou non,
Vide ou non
-Vider la Pile : dpiler tous les lments
de la Pile
-Afficher les lments de la Pile !!!
A. ETTALBI / 2015-2016
203
premier insr)
-Savoir ltat de la File : Pleine ou non,
Vide ou non
-Vider la File : retirer tous les lments
de la File
-Afficher les lments de la File !!!
A. ETTALBI / 2015-2016
204
205
206
retourner (Vrai)
Sinon
retourner (Faux)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
207
Si (P.NC=0) alors
retourner (Vrai)
Sinon
retourner (Faux)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
208
Si (PilePleine(P)) //P.NC=P.NM
alors
Afficher("Impossible dempiler")
Sinon P.Tab[P.NC]E
Calculer P.NCP.NC+1
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
209
Si (PileVide(P)) //P.NC=0
alors
Afficher("Impossible de dpiler")
Sinon Calculer P.NCP.NC-1
retourner (P.Tab[P.NC])
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
210
//P.NC0 ou P.NC>0
Dpiler(P)
Fin-Tant-que
Fin-Fonction
A. ETTALBI / 2015-2016
211
212
Structure File
NM : constante entire gale Taille
NC : variable entire initialise 0
Tte : variable entire initialise 0
Tab : tableau dElments de taille NM
Fin-Structure
//Elment: Type des lments de la Pile
//NM: Nombre Maximum dElments
//NC: Nombre Courant dElments
//Tte : Indice du 1er Elment
//Queue = ???
A. ETTALBI / 2015-2016
213
Si (P.NM=P.NC) alors
retourner (Vrai)
Sinon
retourner (Faux)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
214
Sinon
retourner (Faux)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
215
Si (FilePleine(F)) //P.NC=P.NM
alors Afficher("Impossible dinsrer")
Sinon F.Tab[(F.Tte+F.NC) mod F.NM]E
Calculer F.NCF.NC+1
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
216
Si (FileVide(F)) //F.NC=0
alors Afficher("Impossible de retirer")
Sinon EF.Tab[F.Tte]
Calculer F.Tte(F.Tte+1) mod NM
Calculer F.NCF.NC-1
Retourner (E)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
217
Fin-Tant-que
Fin-Fonction
A. ETTALBI / 2015-2016
218
A. ETTALBI / 2015-2016
219
Afficher(F.Tab[i]," ")
Fin-Pour
Fin-Pour
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
220
Fin-Structure
Objet : C1, C2, S, P : de type Complexe
Dbut :
Afficher("Donner R et I de C1 : ")
Lire(C1.R, C1.I)
Afficher("Donner R et I de C2 : ")
Lire(C2.R, C2.I)
A. ETTALBI / 2015-2016
221
222
VII- FONCTIONS
(Sous-programmes)
Ensemble dinstructions identifi
par un nom(identificateur), qui
223
VII- FONCTIONS
(Sous-programmes)
Exemple:
-Fonction qui teste si un entier est
premier ou non (retourne un boolen)
-Fonction qui retourne le factoriel
dun entier (retourne un entier)
-Fonction qui trie un tableau
dentiers (ne retourne rien)
A. ETTALBI / 2015-2016
224
VII- FONCTIONS
(Sous-programmes)
Dclaration de la fonction.
Dfinition de la fonction.
Appel de la fonction.
A. ETTALBI / 2015-2016
225
VII- FONCTIONS
Dclaration de fonction
Se fait laide dun Prototype
Prcise :
226
VII- FONCTIONS
(Sous-programmes)
Exemples de prototypes :
-Fonction Premier (a : entier) : boolen
-Fonction Factoriel (N : entier) : entier
-Fonction Tri (Tab : tableau dentiers,
T : entier)
A. ETTALBI / 2015-2016
227
VII- FONCTIONS
Dfinition de fonction
Prcise :
fonction appele.
A. ETTALBI / 2015-2016
228
Exemple de dfinition
Fonction Premier (a : entier) : boolen
Objets : i : variable entire
Dbut:
i2
Tant que (i<=RacineCarre(a) et a mod i 0)
faire Calculer ii+1
Fin-Tant-que
Si (i<=RacineCarre(a)) alors retourner(Faux)
Sinon retourner(Vrai)
FinSi
Fin-Fonction.
A. ETTALBI / 2015-2016
229
Exemple de dfinition
Fonction Factoriel(N : entier) : entier
Objets : i, F : variables entires
Dbut:
F1
Pour i1 jusqu N faire
Calculer FF*i
Fin-Pour
retourner(F)
Fin-Fonction.
A. ETTALBI / 2015-2016
230
Exemple de dfinition
231
VII- FONCTIONS
Appel de fonction
Implique :
Chargement en mmoire du contexte
de la fonction (variables locales,)
Lexcution de toutes les instructions
de la fonction
Si la fonction retourne, lappel
revient manipuler sa valeur de
retour
A. ETTALBI / 2015-2016
232
233
Dbut :
Afficher("Donner un entier:")
Lire(N)
Calculer FFactoriel(N)
Afficher("Factoriel(",N,")=",F)
Fin.
A. ETTALBI / 2015-2016
234
//Lecture du tableau T
Tri(T, N)
//Affichage du tableau T
Fin.
A. ETTALBI / 2015-2016
235
Exercice dapplication 1
Donner le prototype, la dfinition et
un exemple dappel des fonctions :
-Somme qui retourne la somme de 2
entiers donns en entre
-Maximum qui retourne la maximum
236
237
238
Fonctions rcursives
-Une fonction rcursive est une fonction
qui appelle elle-mme
-On distingue 2 type de rcursivit :
directe (une fonction f appelle ellemme) et indirecte (une fonction f
appelle une autre fonction g qui son
tour appelle f)
-Il doit y avoir une condition darrt
-Le systme utilise une PILE pour grer
la rcursivit
A. ETTALBI / 2015-2016
239
Puissance(X,0)=1
Fibonacci(0) = Fibonacci(1) = 1
Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2)
A. ETTALBI / 2015-2016
240
Fonction Factoriel
Fonction Factoriel (N : entier) : entier
Dbut:
Si (N=1) alors retourner (1)
Sinon retourner (Factoriel(N-1)*N)
FinSi
Fin-Fonction
Objet: N : variable entire
Dbut:
Afficher("Donner un entier:")
Lire(N)
Afficher("Son factoriel est:", Factoriel(N))
Fin.
A. ETTALBI / 2015-2016
241
Fonction Puissance
242
Fonction Fibonacci
243
Exercice dapplication 2
Proposer
une
nouvelle
dfinition
244
Exercice dapplication 3
-Reprendre lalgorithme de recherche
Dichotomie quon dfinit sous forme de
fonction rcursive,
-Cette fonction prend en entres les
bornes de lintervalle de recherche,
lentier chercher et le tableau dans
lequel on fait la recherche,
-Elle retourne lindice de lentier dans le
tableau sil y existe et (-1) sinon.
A. ETTALBI / 2015-2016
245
Correction Exercice 1
Prototype:
Fonction Somme(a, b: entiers): entier
Dfinition:
Fonction Somme(a, b: entiers): entier
Objet : c : variable entire
Dbut:
Calculer ca+b
Retourner (c) //ou Retourner (a+b)
Fin-Fonction.
A. ETTALBI / 2015-2016
246
Correction Exercice 1
Exemple dAppel:
Objet: x, y, z : variables entires
Dbut:
Afficher("Donner 2 entiers:")
Lire(x, y)
Calculer zSomme(x, y)
Afficher("Leur somme est :", z)
Fin.
A. ETTALBI / 2015-2016
247
Correction Exercice 1
Prototype:
Fonction Maximum(a, b: entiers): entier
Dfinition:
Fonction Maximum(a, b: entiers): entier
Dbut:
Si (a>b) alors Retourner (a)
Sinon Retourner (b)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
248
Correction Exercice 1
Prototype:
Fonction Minimum(a, b: entiers): entier
Dfinition:
Fonction Minimum(a, b: entiers): entier
Dbut:
Si (a>b) alors Retourner (b)
Sinon Retourner (a)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016
249
Correction Exercice 1
Exemple dAppel:
Objet: x, y, min, max: variables entires
Dbut:
Afficher("Donner 2 entiers:")
Lire(x, y)
Calculer minMinimum(x, y)
Calculer maxMaximum(x, y)
Afficher("Le minimum est :", min)
Afficher("Le maximum est :", max)
Fin.
A. ETTALBI / 2015-2016
250
Correction Exercice 2
251
Correction Exercice 3
252