You are on page 1of 252

ENSIAS

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

Priode : Semestre S1 (1er Semestre de la


1re Anne)

Composition de M1.1
2 Elments de Module :
M1.1.1 : Algorithmique (28H)
M1.1.2 : Programmation (28H)

Caractristiques des Elments de


Module du Module M1.1
Nom
M1.1.1 Algorithmique

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

tre quantifie, stocke pour


tre traite afin de donner un

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

informations trs rapidement.


A. ETTALBI / 2015-2016

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)

- de sortie (cran, imprimante)


- de stockage (disques, CD-ROM)

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

Etapes en gnral suivre :


- Position du Problme
- Modle de rsolution
- Algorithme de rsolution

- Programme informatique
A. ETTALBI / 2015-2016

14

EXEMPLE

Exemple :

Calcul de la consommation
dun vhicule

A. ETTALBI / 2015-2016

15

Etape 1 : Position du Problme

Consommation = Nombre de litres


consomms en 100 km
Donnes :
- K1 : Kilomtrage au dpart
- K2 : Kilomtrage larrive
- L1 : Nombre de litres au dpart
- L2 : Nombre de litres larrive
A. ETTALBI / 2015-2016

16

Etape 2 : Modle de Rsolution


K2-K1
L1-L2
100
X?
Donnes dentre : K1, K2, L1, L2
Rsultat calculer ( chercher) : X
Donc :
X=100 * (L1-L2) / (K2-K1)

A. ETTALBI / 2015-2016

17

Etape 3 : Algorithme de Rsolution


Dbut :
Afficher("Donner K1,K2,L1,L2 : ")
Lire(K1,K2,L1,L2)
Si (K1=K2) Alors Afficher("Erreur ")

Sinon Calculer X100*(L1-L2)/(K2-K1)


Afficher("la consommation est : ",X, "%")

FinSi
Fin.
A. ETTALBI / 2015-2016

18

Etape 4 : Programme en langage C


#include<stdio.h>
main() {
int K1,K2,L1,L2; float X;
printf(Donner K1,K2,L1,L2 :);
scanf(%d%d%d%d,&K1,&K2,&L1,&L2);
if(K1==K2) printf(Erreur);
else { X = 100 * (L1-L2) / (K2-K1);
printf(La consommation est %f %,X);
}
}
A. ETTALBI / 2015-2016

19

III- LES LANGAGES


DE PROGRAMMATION
Dfinition :
Moyen de communication entre

lhomme et la machine
Ensembles de conventions pour
assurer un dialogue bidirectionnel

entre le dveloppeur et lordinateur.


A. ETTALBI / 2015-2016

20

III- LES LANGAGES


DE PROGRAMMATION
3 Niveaux :
Langage machine (binaire)
Langages dassemblage
Langages volus

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,

Seul langage compris par la machine,


Tout programme informatique doit

tre traduit vers ce langage.


A. ETTALBI / 2015-2016

22

LANGAGES DASSEMBLAGE
(Langages de bas niveau)
Propres chaque machine (cd
chaque processeur),

Proches du langage machine,


Loin du langage naturel,
Ncessitent bien-sr un traducteur.
A. ETTALBI / 2015-2016

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

donner des rsultats en sortie.


Les informations manipules sont

codifies sous forme de variables,


constantes,
A. ETTALBI / 2015-2016

25

PROGRAMME INFORMATIQUE

Entres

Traitement

A. ETTALBI / 2015-2016

Rsultats

26

PROGRAMME INFORMATIQUE
Variable :
Objet informatique identifi par un

"identificateur", dun "type" donn,


possdant une case mmoire et une

valeur qui peut changer au cours de


lexcution du programme.
A. ETTALBI / 2015-2016

27

PROGRAMME INFORMATIQUE
Constante :
Objet informatique identifi par un

"identificateur", possdant une case


mmoire et une valeur qui ne peut
pas changer au cours de lexcution
du programme.
A. ETTALBI / 2015-2016

28

PROGRAMME INFORMATIQUE
Identificateur :
Chane de caractres alphanumriques
qui

commence

par

un

caractre

alphabtique, qui ne contient pas

despaces et pas de caractres spciaux


(, , , , , )
A. ETTALBI / 2015-2016

29

PROGRAMME INFORMATIQUE
Exemple didentificateurs corrects:

A, a, age, etudiant, UnEtudiant

Exemple didentificateurs incorrects:


, ge, tudiant, 1Etudiant
A. ETTALBI / 2015-2016

30

PROGRAMME INFORMATIQUE
Type (Domaine) :
Reprsente lensemble des valeurs

possibles pour une variable et spcifie


lensemble des oprations possibles
sur cette variable.
A. ETTALBI / 2015-2016

31

PROGRAMME INFORMATIQUE
Types prdfinis : Entiers, Rels,
Chanes de caractres, Dates,

Types dfinis par lutilisateur :


Etudiants, Vecteurs 3 dimensions,
Matrices carres dordre N,
A. ETTALBI / 2015-2016

32

ETAPES DUN PROGRAMME


INFORMATIQUE
Edition : criture du programme,
Compilation : dtection des erreurs

et traduction vers le langage machine,


Excution : qui "doit" donner les
rsultats attendus du programme.
A. ETTALBI / 2015-2016

33

IV-ALGORITHME ET
ORGANIGRAMME
Algorithme :
- Description des tapes de

rsolution dun problme.


- Constitu dun ensemble
doprations lmentaires

(afficher, lire, calculer, )


A. ETTALBI / 2015-2016

34

IV-ALGORITHME ET
ORGANIGRAMME
Organigramme :
- Description des tapes de
rsolution dun problme,
- Constitu dun ensemble de

figures gomtriques permettant


de schmatiser les oprations.
A. ETTALBI / 2015-2016

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

Afficher (Donner le Rayon : )


Lire (R)
Calculer P 2*PI*R
Afficher(Le Primtre est : , P)
A. ETTALBI / 2015-2016

38

EXEMPLE

Calcul du Primtre dun Cercle


Programme en C

#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

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

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

Calcul du primtre et de la surface


dun rectangle (Algorithme)
Objets :
Long , Larg, P, S : variables relles,
Dbut :
Afficher(Donner la longueur et la largeur : )
Lire(Long, Larg)
Calculer P 2*(Long + Larg)
Calculer S Long * Larg
Afficher(Le Primtre est : , P)
Afficher(La Surface est : , S)
Fin.
A. ETTALBI / 2015-2016

43

EXEMPLE

Calcul du primtre et de la surface


dun rectangle (Programme)
#include<stdio.h>
main() { float Long, Larg, P, S;
printf(Donner la longueur et la largeur : );
scanf(%f%f, &Long, &Larg);
P = 2*(Long + Larg);
S = Long * Larg;
printf(Le Primtre est : %f, P);
printf(\nLa Surface est : %f, S);
}
A. ETTALBI / 2015-2016

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.

Si la condition est vraie, on excute


le 1er bloc, si elle est fausse, on
excute le 2me bloc.

Le 2me bloc est facultatif


A. ETTALBI / 2015-2016

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

suprieur strictement b, b est


suprieur strictement a ou sils

sont gaux.
A. ETTALBI / 2015-2016

52

Instructions alternatives
imbriques

Algorithme :

Objets : a, b : variables entires


Dbut
Afficher ("Donner 2 entiers : ")
Lire(a, b)
Si a>b alors Afficher(a, " > " , b)
Sinon Si b>a alors Afficher(a, " < " , b)
Sinon Afficher(a, " = " , b)
FinSi
FinSi
Fin.
A. ETTALBI / 2015-2016

53

Instructions alternatives
imbriques
Exemple 2 :
Lire 3 entiers a, b et c et afficher le

maximum et le minimum entre eux


en supposant quils sont disjoints
deux deux.
A. ETTALBI / 2015-2016

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

Ecrire un algorithme qui lit une note


et affiche le message "admis avec
mention" si cette note est suprieure
14, "admis" si cette note est entre
12 et 14, "ajourn" si cette note est
entre 10 et 12 et "exclus" si la note
est infrieure 10.
A. ETTALBI / 2015-2016

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

Si Val_2 : Bloc_Instructions2, Sortir


.........

Si Val_N : Bloc_InstructionsN, Sortir


[Si Autres : Bloc_Instructions]

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 :

Objets : Type, Tarif : entiers


Dbut :
Afficher ("Donner le type 0, 1, 2 ou 3 : ")
Lire(Type)
Selon (Type)
Si 0 : Tarif10, Sortir
Si 1 : Tarif12, Sortir
Si 2 : Tarif15, Sortir
Si 3 : Tarif25, Sortir
FinSelon
Afficher("Vous devez payer : ", Tarif, " DH")
Fin.
A. ETTALBI / 2015-2016

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

Ecrire un algorithme qui lit une note


et affiche le message "admis avec
mention" si cette note est suprieure
14, "admis" si cette note est entre
12 et 14, "ajourn" si cette note est
entre 10 et 12 et "exclus" si la note
est infrieure 10.
A. ETTALBI / 2015-2016

67

Correction de lexercice
Affichage de la mention en
Fonction de la note

Algorithme:

Objets : N : variable relle


Dbut :
Afficher("Donner la note :")
Lire(N)
Si N>=14 alors Afficher("Admis avec mention")
Sinon Si N>=12 alors Afficher("Admis")
Sinon Si N>=10 alors Afficher("Ajourn")
Sinon Afficher("exclus")
FinSi
FinSi
FinSi
Fin.
A. ETTALBI / 2015-2016

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

valide (sinon boucle infinie),


Le corps de la boucle qui contient les

instructions qui doivent se rpter.


A. ETTALBI / 2015-2016

70

INSTRUCTIONS
ITERATIVES (Boucles)
On distingue deux types :
se basant sur le nombre ditrations

(On connait au dpart le nombre de

rptitions du corps de la boucle),


se basant sur une condition (On ne

connait pas le nombre de rptitions).


A. ETTALBI / 2015-2016

71

INSTRUCTIONS ITERATIVES

(se basant sur le nombre ditrations)

Utilisent une variable appele


compteur de boucle.
Le compteur de boucle est une

variable

entire

parcourant

un

intervalle [Min, Max] avec un pas


donn.
A. ETTALBI / 2015-2016

72

INSTRUCTIONS ITERATIVES

(se basant sur le nombre ditrations)


Syntaxe gnrale
Pour Var Val1 jusqu Val2 [Pas=P] faire
Bloc_Instructions
Fin-Pour
Avec :
-Val1, Val2 et P : des valeurs entires
-P : a par dfaut la valeur 1
-Bloc_Instructions: peut tre une instruction
simple, des instructions squentielles et/ou
alternatives et/ou itratives.
A. ETTALBI / 2015-2016

73

INSTRUCTIONS ITERATIVES

(se basant sur le nombre ditrations)


Organigramme
Var Val1

Vraie

Var<=Val2

Fausse

Bloc_Instr

Var Var+P

A. ETTALBI / 2015-2016

74

INSTRUCTIONS ITERATIVES

(se basant sur le nombre ditrations)

Exemple 1:

Lire 10 notes et calculer leur


moyenne.

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),

MN : Moyenne des Notes (rel)


I : Compteur de la Boucle (entier )

Constante utiliser :
NN=10 : Nombre de Notes
A. ETTALBI / 2015-2016

76

Exemple1 (Suite) : Algorithme


Objets : N, MN : variables relles,
I : variable entire,
NN : constante entire=10,
Dbut :
MN0
Pour I1 jusqu NN faire
Afficher("Donner une note :")
Lire(N)
MNMN+N
Fin-Pour
MNMN/NN
Afficher("La moyenne de ces notes est :", MN)
Fin.
A. ETTALBI / 2015-2016

77

Exemple 1(Suite) : Programme


#include<stdio.h>
#define NN 10 /* Constante */
main()
{ float N, MN; int I;
MN=0;
for (I=1 ; I<=NN ; I++)
{ printf("Donner une note :");
scanf("%f",&N); MN=MN+N;
}
MN=MN/NN;
printf("La moyenne de ces notes est :%f", MN);
}
A. ETTALBI / 2015-2016

78

INSTRUCTIONS ITERATIVES

(se basant sur le nombre ditrations)

Exemple 2:
Lire 2 entiers A et B et afficher les

nombres compris strictement entre


A et B ainsi que leurs carrs et
leurs cubes.
A. ETTALBI / 2015-2016

79

Exemple 2(Suite)
Variables utiliser :
A, B : Entiers lire (Entres)
CA : Carr du Ime entier entre A et B

CU : Cube du Ime entier entre A et B


I : Compteur de la boucle reprsentant
aussi le Ime entier entre A et B
CA, CU, I : des Sorties
A. ETTALBI / 2015-2016

80

Exemple2 (Suite) : Algorithme


Objets : A, B, CA, CU, I : variables entires,
Dbut :
Afficher("Donner 2 entiers A et B avec A < B :")
Lire(A, B)
Pour IA+1 jusqu B-1 faire
Calculer CA I*I
Calculer CU CA*I
Afficher("Lentier est : ", I)
Afficher("Son carr est : ", CA)
Afficher("Son cube est : ", CU)
Fin-Pour
Fin.
A. ETTALBI / 2015-2016

81

Exemple 1(Suite) : Programme


#include<stdio.h>
main()
{ int A, B, CA, CU, I;
printf("Donner 2 entiers A et B avec A < B :");
scanf("%d%d", &A, &B);
for (I=A+1 ; I<B ; I++)
{CA = I*I; CU = CA*I;
printf("Lentier est :%d", I)
printf("\nSon carr est : %d", CA)
printf("\nSon cube est : %d", CU)
}
}
A. ETTALBI / 2015-2016

82

INSTRUCTIONS ITERATIVES
(se basant sur une condition)

Se basent 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

(se basant sur une condition)


2 types :

On teste la condition avant dentrer


dans la boucle
Nombre ditrations >= 0
On excute la boucle, ensuite on
teste la condition

Nombre ditrations > 0


A. ETTALBI / 2015-2016

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

se basant sur une condition


Exemple 1:

Lire des entiers jusqu ce quon


donne 0 puis afficher le nombre
dentiers lus ainsi que leur somme.

Besoin

dun

compteur

entier

initialis 0 et incrment au besoin.


A. ETTALBI / 2015-2016

89

Exemple1 (Suite) : Algorithme


Avec Tant-Que
Objets : E, NE, SE : variables entires
Dbut :
SE0; NE0; E1
Tant que (E0) faire
Afficher("Donner un entier et 0 pour sortir :")
Lire(E)
Calculer SESE+E
Si E0 alors Calculer NENE+1
FinSi
Fin-Tant-que
Afficher("Le nombre dentiers lus est :", NE)
Afficher("Leur somme est :", SE)
Fin.
A. ETTALBI / 2015-2016

90

Exemple1 (Suite) : Programme en C


#include<stdio.h>
main()
{ int E, SE, NE; SE=0; NE=0; E=1;
while (E!=0)
{printf("Donner un entier et 0 pour sortir :");
scanf("%d", &E);
SE=SE+E;
if (E!=0) NE=NE+1;
}
printf("Le nombre dentiers lus est : %d", NE);
printf("\nLeur somme est :%d", SE);
}
A. ETTALBI / 2015-2016

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

se basant sur une condition


Exemple 2:

Lire

les

Prix

Unitaires

et

les

Quantits de produits achets et


afficher le total payer.

On boucle tant que lutilisateur le


dsire.
A. ETTALBI / 2015-2016

94

Exemple2 (Suite) : Algorithme


Avec Tant-Que
Objets : PU, PT : variables relles
Qte, Choix : variables entires
Dbut :
PT0; Choix1
Tant que (Choix0) faire
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)
Fin-Tant-que
Afficher("Le prix total payer est :", PT, "DH")
Fin.
A. ETTALBI / 2015-2016

95

Exemple2 (Suite) : Programme en C


#include<stdio.h>
main()
{ float PU, PT; int Qte, Choix;
PT=0; Choix=1;
while (Choix!=0) {
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);
}
printf("Le prix total payer est :%f DH", PT);
}
A. ETTALBI / 2015-2016

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

infrieurs ou gaux un nombre N lu


partir du clavier.
- Utiliser les 3 boucles sparment
- Donner lalgorithme et le
programme en C pour chaque cas.
A. ETTALBI / 2015-2016

99

Exercice dapplication N2
Lire un entier N et afficher sa table de
multiplication.

- Utiliser les 3 boucles sparment.


- Donner lalgorithme et le programme
en C pour chaque cas.

A. ETTALBI / 2015-2016

100

Attention aux erreurs logiques


dans les boucles
Condition de sortie non valide : on
risque davoir une boucle infinie.
Corps de la boucle incorrecte : on

risque de rpter des instructions qui


ne doivent pas tre rptes ou
linverse.
A. ETTALBI / 2015-2016

101

Exemple 1 : Min et Max dentiers


Algorithme

Objet : N, Min, Max : variables entires


Dbut:
Afficher("Donner un entier et 0 pour sortir :")
Lire(N)
MinN; MaxN
Tant Que (N 0) faire ... Boucle Infinie Si !!...
Afficher("Donner un entier et 0 pour sortir :")
Si (Min > N) MinN FinSi
Si (Max < N) MaxN FinSi
Fin-Tant-que
Afficher("Le Min est :", Min, " Le max est : ", Max)
Fin.
A. ETTALBI / 2015-2016

102

Exemple 2 : Norme dun Vecteur


Algorithme

Objet : I, C : variable entire


X, N : variables relles
Dbut:
Afficher("Donner la taille du Vecteur :")
Lire(C); N0
Pour I1 jusqu C faire
Afficher("Donner la coordonne :", I, " : ")
Lire(X)
Fin-Pour
Calculer NN+(X*X) ... N = ... !! ...
Afficher("La Norme est : ", RacineCarre(N))
Fin.
A. ETTALBI / 2015-2016

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

Exemple : Somme des carrs des


entiers infrieurs ou gaux N
Algorithme avec la boucle Pour
Objet : N, S, I : variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N); S0
Pour I1 jusqu N faire
Calculer SS+I*I
Fin-Pour
Afficher("La somme des carrs des entiers
infrieurs ou gaux ", N, " est : ", S)
Fin.
A. ETTALBI / 2015-2016

105

Exemple : Somme des carrs des


entiers infrieurs ou gaux N
Algorithme avec la boucle Tant-Que
Objet : N, S, I : variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N); S0; I1
Tant Que (I<=N) faire
Calculer SS+I*I
II+1
Fin-Tant-Que
Afficher("La somme des carrs des entiers
infrieurs ou gaux ", N, " est : ", S)
Fin.
A. ETTALBI / 2015-2016

106

Exemple : Somme des carrs des


entiers infrieurs ou gaux N
Algorithme avec la boucle Rpter
Objet : N, S, I : variables entires
Dbut :
Afficher("Donner un entier :")
Lire(N); S0; I1
Rpter
Calculer SS+I*I
II+1
Tant Que (I<=N)
Afficher("La somme des carrs des entiers
infrieurs ou gaux ", N, " est : ", S)
Fin.
A. ETTALBI / 2015-2016

107

Les boucles imbriques


Le corps dune boucle peut
contenir une autre boucle
On parle alors de boucles
imbriques
Le systme ne passe litration
suivante dune boucle que lorsquil a
termin lexcution de toute la boucle
interne
A. ETTALBI / 2015-2016

108

Exemple 1: Affichage des nombres


premiers infrieurs 100
Un entier N est premier si tous les
entiers compris entre 2 et Racine(N)
ne sont pas des diviseurs de N
On a besoin dune boucle pour
parcourir lintervalle [2, 100]
Dans cette boucle, on aura besoin
dune autre boucle pour parcourir
lintervalle [2, Racine(N)]
A. ETTALBI / 2015-2016

109

Exemple 1: Affichage des nombres


premiers infrieurs 100

Objet : N, I, R : Variables entires


Dbut :
Pour N2 jusqu 100 faire
I2;
Calculer RRacineCarre(N)
Tant que(N mod I 0 et I <= R) faire
Calculer II+1
Fin-Tant-que
Si (I > R) alors
Afficher(N, " est premier :")
Fin-Si
Fin-Pour
Fin.
A. ETTALBI / 2015-2016

110

Exemple 2: Moyenne gnrale des


tudiants
On saisit les notes et les coefficients
dun tudiant et on calcule sa moyenne
gnrale
On rpte cela tant que lutilisateur
le dsire
On aura donc besoin de 2 boucles :
une pour parcourir les tudiants et
lautre pour saisir les notes et les
coefficients.
A. ETTALBI / 2015-2016

111

Exemple 2: Moyenne gnrale des


tudiants

Objet : N, I, R, C, SC : Variables entires


No, SNC : variables relles
Dbut :
Rpter
Afficher("Donner le nombre dexamens :")
Lire(N); SC0; SNC0
Pour I1 jusqu N faire
Afficher("Donner la note et le coefficient:")
Lire(No, C)
Calculer SNCSNC+(No*C)
Calculer SCSC+C
Fin-Pour
Afficher("La moyenne gnrale est :", (SNC/SC))
Afficher("Taper 1 pour continuer:")
Lire(R)
Tant que (R=1)
Fin.
A. ETTALBI / 2015-2016

112

Correction des exercices


dapplication
Exercice 1 : Lister tous les nombres
entiers pairs infrieurs ou gaux un

nombre N lu partir du clavier.


- Utiliser les 3 boucles sparment
- Donner lalgorithme et le

programme en C pour chaque cas.


A. ETTALBI / 2015-2016

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

Correction des exercices


dapplication
Exercice 2 : Lire un entier N et

afficher sa table de multiplication.


- Utiliser les 3 boucles sparment.
- Donner lalgorithme et le programme

en C pour chaque cas.

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

Afficher(N, " * ", I, " = ", N*I)


Retourner la ligne

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 :

ne peut contenir quune seule


information (car elle a une seule
case mmoire)

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

Tous les lments sont de mme type


Exemple : tableaux

Structures de donnes htrognes

Les lments peuvent tre de types


diffrents
Exemple : structures (enregistrements)
A. ETTALBI / 2015-2016

122

TABLEAUX
Structure de donnes homognes
Caractris par un identificateur

(nom) , le type des lments et la


taille (Nombre dlments) qui doit
tre une constante entire positive

(d

la

rservation

despace

mmoire)
A. ETTALBI / 2015-2016

123

TABLEAUX
Chaque lment est repr dans
le tableau par un indice.

Un indice est un entier variant de


0 la taille moins un (Taille-1) (En
Pascal de 1 Taille)
A. ETTALBI / 2015-2016

124

TABLEAUX (Exemple)
Dclaration Algorithmique:

N : Constante entire gale 10


T : Tableau dentiers de taille N
Dclaration En C :
#define N 10
int T[N];
A. ETTALBI / 2015-2016

125

OPERATIONS SUR LES


TABLEAUX
Les tableaux sutilisent en gnral
avec la boucle au nombre ditrations

Oprations :
Lecture,

Affichage,

Somme

des

lments, Min/Max des lments, Tri


des

lments,

Somme

de

deux

tableaux,
A. ETTALBI / 2015-2016

126

LECTURE DES ELEMENTS


DUN TABLEAU
Algorithme :
i : variable entire

Pour i0 jusqu (N-1) faire


Afficher("Donner llment dindice:",i)
Lire(T[i])
Fin-Pour
A. ETTALBI / 2015-2016

127

LECTURE DES ELEMENTS


DUN TABLEAU
Programme en C :
int i;
for (i=0; i<N; i++)
{printf("Donner llment dindice %d:",i);

scanf("%d", &T[i]);
}
A. ETTALBI / 2015-2016

128

AFFICHAGE DES ELEMENTS


DUN TABLEAU
Algorithme :
i : variable entire
Afficher("les lments du tableau sont:")
Pour i0 jusqu (N-1) faire

Afficher(T[i]," ")
Fin-Pour
A. ETTALBI / 2015-2016

129

AFFICHAGE DES ELEMENTS


DUN TABLEAU
Programme en C :
int i;
printf("les lments du tableau sont:");

for (i=0; i<N; i++)


printf("%d ",T[i]);

A. ETTALBI / 2015-2016

130

SOMME DES ELEMENTS


DUN TABLEAU
Algorithme :
Objet : S, i : variables entires

S0
Pour i0 jusqu (N-1) faire

Calculer SS+T[i]
Fin-Pour
Afficher("la somme est : ", S)
A. ETTALBI / 2015-2016

131

SOMME DES ELEMENTS


DUN TABLEAU
Programme en C :
int i;

int S=0;
for (i=0; i<N; i++)
S=S+T[i];

printf("La somme est : %d",S);


A. ETTALBI / 2015-2016

132

Min/Max DES ELEMENTS


DUN TABLEAU
Algorithme :

Objets : i, Min, Max : variables entires


MinT[0]
MaxT[0]
Pour i1 jusqu (N-1) faire
Si (Min>T[i]) alors MinT[i] FinSi
Si (Max<T[i]) alors MaxT[i] FinSi
Fin-Pour
Afficher("le Minimum est : ", Min)
Afficher("le Maximum est : ", Max)
A. ETTALBI / 2015-2016

133

Min/Max DES ELEMENTS


DUN TABLEAU
Programme en C :

int i, Min, Max;


Min=T[0]; Max=T[0];
for (i=1; i<N; i++)
{ if (Min>T[i]) Min=T[i];
if (Max<T[i]) Max=T[i];
}
printf("\nLe minimum est : %d",Min);
printf("\nLe maximum est : %d",Max);
A. ETTALBI / 2015-2016

134

SOMME DE DEUX TABLEAUX


Algorithme :
T1,T2,T3: tableaux dentiers de taille N
//Lecture de T1 et T2
Pour i0 jusqu (N-1) faire
Calculer T3[i]T1[i]+T2[i]
Fin-Pour
Afficher("le tableau somme est : ")
//Affichage de T3
A. ETTALBI / 2015-2016

135

SOMME DE DEUX TABLEAUX


Programme en C :
#define N 10

int i, T1[N], T2[N], T3[N];


/* Lecture de T1 et T2 */
for (i=0; i<N; i++)
T3[i]=T1[i]+T2[i];
/* Affichage de T3 */
A. ETTALBI / 2015-2016

136

RECHERCHE DUN ENTIER


DANS UN TABLEAU
-Lentier existe ou non ?

-1re occurrence de lentier sil existe


-Le nombre doccurrences de lentier
-Les

indices

des

occurrences

de

lentier
-Recherche dans un tableau tri
A. ETTALBI / 2015-2016

137

Lentier A existe ou non ?


Algorithme
i0
Tant-Que(i<N et T[i]A) faire
Calculer ii+1
Fin-Tant-que
Si (i<N) alors
Afficher(A," existe dans le tableau")
Sinon Afficher(A," nexiste pas")
FinSi
A. ETTALBI / 2015-2016

138

Lentier A existe ou non


Programme en C
i=0;
while(i<N &&T[i]!=A)
{ i=i+1; }

if (i<N)
printf("%d existe dans le tableau", A);

else printf("%d nexiste pas", A);


A. ETTALBI / 2015-2016

139

1re occurrence dun entier A


Algorithme
i0
Tant-Que(i<N et T[i]A) faire
Calculer ii+1
Fin-Tant-que
Si (i<N) alors
Afficher("1re occurrence de:",A," est:",i)
Sinon Afficher(A," nexiste pas")
FinSi
A. ETTALBI / 2015-2016

140

1re occurrence dun entier A


Programme en C
i=0;
while(i<N &&T[i]!=A)
{ i=i+1; }

if (i<N)
printf("1re occurrence de:%d est:%d",A,i);

else printf("%d nexiste pas",A);


A. ETTALBI / 2015-2016

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

Indices des occurrences de A


Algorithme

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

Indices des occurrences de A


Programme en C
int i;
printf("Lentier:%d existe dans les
indices suivants :", A)
for(i=0; i<N; i++)
{ if (T[i]==A) printf("%d ", i); }

A. ETTALBI / 2015-2016

145

Recherche dans un tableau tri


Soit T un tableau dentiers
contenant N lments ordonns par
ordre croissant,
Lobjectif est de rechercher dans
ce tableau un entier A saisi au
clavier,
Lalgorithme sappelle Dichotomie
2 versions : itrative et rcursive
A. ETTALBI / 2015-2016

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

Algorithme Dichotomie (itratif)

Objets : Bi, Bs, Mi, A : variables entires


Trouv : variable boolenne
Dbut:
Bi0 Bs(N-1) Trouvfaux
Tant Que ((Bi<=Bs) et (non Trouv)) faire
Calculer Mi(Bs+Bi)/2
Si (T[Mi]=A) alors Trouvvrai
Sinon Si (T[Mi]>A) alors Calculer Bs(Mi-1)
Sinon Calculer Bi(Mi+1)
FinSi
FinSi
Fin-Tant-Que
Si (Trouv) alors Afficher(A, " existe lindice:",Mi)
Sinon Afficher(A, " nexiste pas")
FinSi
Fin.
A. ETTALBI / 2015-2016

148

Exercice dapplication N1
Ecrire un algorithme qui lit deux
tableaux dentiers T1 et T2 de taille

10 chacun et affiche les lments


existants dans T1 sans exister dans
T2 (cd T1-T2) et les lments
existants dans T2 sans exister dans
T1 (cd T2-T1).
A. ETTALBI / 2015-2016

149

Exercice dapplication N2
Ecrire un algorithme qui lit deux
tableaux de rels P1 et P2 de taille

10 chacun comportant les coefficients


de 2 polynmes de degr ?? et stocke
la somme de ces 2 polynmes dans
un 3me polynme P3 de degr ?? puis
affiche P3.
A. ETTALBI / 2015-2016

150

Tri dun tableau


Diffrents algorithmes de tri :
Tri Bulles

Tri par slection


Tri par insertion

Tri rapide (Quicksort)


Tri par tas (Heapsort)
Tri fusion

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

Algorithme Tri Bulles


Objets : I, P : variables entires
R : variable boolenne
Dbut:
Rpter
Rfaux
Pour I0 jusqu (N-2) faire
Si (T[I]>T[I+1]) alors
PT[I]
T[I]T[I+1]
T[I+1]P
Rvrai
FinSi
Fin-Pour
Tant Que (R=vrai)
Fin.
A. ETTALBI / 2015-2016

153

Exemple: Algorithme Tri Bulles


5

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

Tri par slection


Principe de lalgorithme :
Rechercher le plus petit lment du tableau
et lchanger avec llment dindice 0
Rechercher le second plus petit lment et
lchanger avec llment dindice 1
Continuer de cette faon jusqu ce que le
tableau soit entirement tri
On peut sintresser rechercher le plus
petit lment ou son indice
Donc, pour chaque i, T[i]=??
A. ETTALBI / 2015-2016

156

Algorithme Tri par slection


Objets : I, J, P : variables entires
Dbut:
Pour I0 jusqu (N-2) faire
Pour JI+1 jusqu (N-1) faire
Si (T[I]>T[J]) alors
PT[I]
T[I]T[J]
T[J]P
FinSi
Fin-Pour
Fin-Pour
Fin.
A. ETTALBI / 2015-2016

157

Exemple: Algorithme Tri par slection


5

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

Tri par insertion


Principe de lalgorithme :
Trier les 2 premiers lments du
tableau
Insrer le 3me lment sa bonne place
de telle manire ce que les 3 premiers
lments soient tris
Et ainsi de suite : insrer le ime lment
sa bonne place pour que les i premiers
lments soient tris
A. ETTALBI / 2015-2016

160

Algorithme Tri par insertion


Objets : I, J, X : variables entires
Dbut:
Pour I1 jusqu (N-1) faire
XT[I]
JI
Tant que ((J>0) et (T[J-1] >X)) faire
T[J]T[J-1]
Calculer JJ-1
Fin-Tant-que
T[J]X
Fin-Pour
Fin.
A. ETTALBI / 2015-2016

161

Exemple: Algorithme Tri par insertion


5

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

Remarque sur les tableaux


Problme :
Taille constante sur-utilisation ou
sous-utilisation du tableau
Exemple :
N : constante entire = 10
T tableau dentiers de taille N
-Si on a besoin de plus de 10 cases ?
-Si on veut stocker juste 3 entiers ?
A. ETTALBI / 2015-2016

164

Remarque sur les tableaux(suite)


Solution :
-Utiliser des tableaux dynamiques
utilisant les pointeurs : rserver au
besoin et librer les espaces non
utiliss (Cas des langages C et C++)
-Utiliser un type prdfini dont la
gestion de la mmoire est faite par le
systme (Cas des types prdfinis du
langage JAVA: Vector, ArrayList,)
A. ETTALBI / 2015-2016

165

Les tableaux 2 dimensions


-Sont aussi appels Matrices
-Chaque lment est repr par 2
indices
-Ils sont manipuls en utilisant 2
boucles imbriques
-Une boucle pour parcourir les lignes
-Lautre boucle pour parcourir les
colonnes
A. ETTALBI / 2015-2016

166

Exemple de tableaux 2 dimensions


Dclaration:
N : constante entire gale 10
M : constante entire gale 20
T : tableau dentiers de taille NM

T est un tableau 2 dimensions


contenant 200 (1020) lments, cd
une matrice forme de 10 lignes et 20
colonnes
A. ETTALBI / 2015-2016

167

Exemple de tableaux 2 dimensions


Lecture :

I, J : variables entires
Pour I0 jusqu (N-1) faire

Pour J0 jusqu (M-1) faire


Afficher("Donner un entier:")

Lire(T[I][J])
Fin-Pour

Fin-Pour
A. ETTALBI / 2015-2016

168

Exemple de tableaux 2 dimensions


Affichage : (Matricielle)
I, J : variables entires
Afficher("La matrice est:")
Pour I0 jusqu (N-1) faire
Pour J0 jusqu (M-1) faire
Afficher(T[I][J]," ")
Fin-Pour
Retourner la ligne
Fin-Pour
A. ETTALBI / 2015-2016

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

dordre 10 puis affiche les lments de


cette

matrice

selon

laffichage

matricielle.
A. ETTALBI / 2015-2016

170

Correction Exercice1: T1-T2


Objets : N : constante entire gale 10
T1, T2 : Tableaux dentiers de taille N
i, j : variables entires
Dbut : // Lecture de T1 et T2
Afficher("Les lments existants dans T1-T2:")
Pour i0 jusqu (N-1) faire
j0
Tant que ((j<N) et (T2[j]T1[i])) faire
Calculer jj+1
Fin-Tant-que
Si (j=N) alors Afficher(T1[i], " ") FinSi
Fin-Pour
Fin.
A. ETTALBI / 2015-2016

171

Correction Exercice1: T1-T2


Remarques:
-Pour le cas de T2-T1 cest le mme
algorithme en parcourant dans la 1re
boucle T2 et dans la 2me T1
-Dans cet algorithme, on na pas pris

en compte llimination des lments


dupliqus dans les 2 tableaux
A. ETTALBI / 2015-2016

172

Correction Exercice2: P1+P2


Objets : N : constante entire gale 10
P1, P2, P3 : Tableaux dentiers de taille N
i : variable entire
Dbut :
Afficher("Donner les coeff du 1er polynme:")
Pour i0 jusqu (N-1) faire
Lire(P1[i])
Fin-Pour
Afficher("Donner les coeff du 2me polynme:")
Pour i0 jusqu (N-1) faire
Lire(P2[i])
Fin-Pour
A. ETTALBI / 2015-2016

173

Correction Exercice2: P1+P2


Pour i0 jusqu (N-1) faire
Calculer P3[i]P1[i]+P2[i]
Fin-Pour
Afficher("Le polynme somme est :")
Pour i(N-1) jusqu 0 Pas=-1 faire
Afficher(P3[i], "X^",i,"+")
Fin-Pour
Fin.

A. ETTALBI / 2015-2016
174

Correction Exercice2: P1+P2


Remarque :
-On suppose que la saisie est faite de
la plus petite puissance la plus

grande puissance
-On na pas pris en compte dans

laffichage le cas des coefficients nuls


ou ngatifs
A. ETTALBI / 2015-2016
175

Correction des exercices


dapplication N3, 4 et 5
T = {8, 6, 0, 4, 2, 7, 9, 1, 3, 5}
1)Algorithme Tri Bulles
2)Algorithme Tri par slection
3)Algorithme Tri par insertion

-Contenu du tableau aprs chaque


itration

-Nombre ditrations ncessaires


A. ETTALBI / 2015-2016
176

Tri Bulles
8

A. ETTALBI / 2015-2016
177

Exemple: Algorithme Tri par slection


8

A. ETTALBI / 2015-2016
178

Exemple: Algorithme Tri par insertion


8

A. ETTALBI / 2015-2016
179

Correction Exercice6: Identit10

Objets : N : constante entire gale 10


T : Tableau dentiers de taille NN
i, j : variables entires
Dbut :
Pour i0 jusqu (N-1) faire
Pour j0 jusqu (N-1) faire
Si (i=j) alors T[i][j]1
Sinon T[i][j]0
FinSi
Fin-Pour
Fin-Pour
Afficher("La matrice Identit dordre 10 est:")
//Affichage matricielle
Fin.
A. ETTALBI / 2015-2016

180

Les structures
Dfinition:
Une
structure
est
un
ensemble
dinformations homognes (relatives la
mme entit) qui peuvent tre de types
diffrents.

Exemples:

-Etudiant(Code, Nom, Prnom, Classe, )


-Matire(Code, Nom, Coefficient)
-Enseignant(Nom, Prnom, Spcialit, )
-Date(Jour, Mois, Anne)
-Examen(Date, Matire, Etudiant, Note)
A. ETTALBI / 2015-2016

181

Les structures
Dclaration Algorithmique
Structure NomStructure
Champ1 : Type1

Champ2 : Type2
.........

ChampN : TypeN
Fin-Structure

Rmq : Cette dclaration ne rserve

aucun espace mmoire


A. ETTALBI / 2015-2016

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

Les variables structures


Dclaration Algorithmique
Structure NomStructure NomVariablestructure

Remarque :
Cette

dclaration

rserve

lespace

mmoire ncessaire pour tous les


champs de cette variable structure
A. ETTALBI / 2015-2016
184

Exemple
Dclaration dun Vecteur V1 comme

tant une variable structure de la


structure Vecteur3d prcdente :
Structure Vecteur3d V1

Le systme rserve lespace mmoire


ncessaire pour les champs X, Y et Z de

la variable structure V1
A. ETTALBI / 2015-2016

185

Accs aux champs


Pour accder aux champs dune variable
structure, on utilise loprateur "."

Exemple :
V1.X reprsente le champ X de V1
V1.Y reprsente le champ Y de V1

V1.Z reprsente le champ Z de V1

A. ETTALBI / 2015-2016

186

Exemple : Lecture et affichage


dune variable structure
Structure Vecteur3d
X, Y, Z : rels

Fin-Structure
Objet : V1 : variable de type Vecteur3d
Dbut :
Afficher("Donner les coordonnes du vecteur :")
Lire(V1.X, V1.Y, V1.Z)

Afficher("Les coordonnes du vecteur sont :")


Afficher("(",V1.X, ",", V1.Y, ",", V1.Z, ")",)

Fin.
A. ETTALBI / 2015-2016

187

Exercice dapplication N1
Ecrire un algorithme dans lequel :

-On dfinit la structure Complexe


comportant 2 champs R (Rel) et I
(Imaginaire) de type rel
-On dclare 2 Complexes C1 et C2
-On lit leurs champs respectifs

-On affiche C1, C2, leur somme et


leur produit
A. ETTALBI / 2015-2016

188

Structures de donnes particulires


On peut manipuler des structures de
donnes particulires telles que :
-Des tableaux de structures
-Des structures comportant des
tableaux
-Des structures comportant dautres
structures
-Des Piles et des Files
A. ETTALBI / 2015-2016

189

Tableaux de structures
Exemple
Structure Vecteur3d

X, Y, Z : rels
Fin-Structure

Objet : N : constante entire gale 10


T : tableau de Vecteur3d de taille N

i : variable entire

/* Les lments de T sont des variables


structures de type la structure Vecteur3d */
A. ETTALBI / 2015-2016

190

Tableaux de structures
Dbut :
Pour i0 jusqu (N-1) faire

Afficher("Donner les coordonnes du vecteur :")


Lire(T[i].X, T[i].Y, T[i].Z)
Fin-Pour
Pour i0 jusqu (N-1) faire
Afficher("Les coordonnes du vecteur sont :")

Afficher("(",T[i].X, ",", T[i].Y, ",", T[i].Z, ")",)


Retourner la ligne

Fin.
A. ETTALBI / 2015-2016

191

Tableaux de structures
Remarque :

Dans cet exemple, T[i] reprsente le


ime lment du tableau T, cest une
variable structure de type la structure
Vecteur3d, donc il possde 3 champs :
X, Y et Z, et ceci pour tout i allant de 0

jusqu (N-1)
A. ETTALBI / 2015-2016

192

Structures comportant des tableaux


Exemple
Structure Etudiant
Nom, Prnom : chaines de caractres
TN : tableau de rels de taille 10
Fin-Structure
//TN: comporte les notes de lEtudiant
Objet : E : variable de type Etudiant
i : variable entire

/*TN est un champ de la structure E, il est


dclar comme tant un tableau de
rels*/
A. ETTALBI / 2015-2016

193

Structures comportant des tableaux


Dbut :
Afficher("Donner le nom et le prnom de lEtudiant:")
Lire(E.Nom, E.Prenom)
Pour i0 jusqu 9 faire
Afficher("Donner la note :")
Lire(E.TN[i])
Fin-Pour
Afficher("Le nom et le prnom de lEtudiant sont:")
Afficher(E.Nom, " ", E.Prenom)
Afficher("Ses notes sont:")
Pour i0 jusqu 9 faire
Afficher(E.TN[i] , " ")
Fin-Pour
Fin.
A. ETTALBI / 2015-2016

194

Structures comportant des tableaux


Remarque :

Dans cet exemple, TN a t dclar


comme tant un champ de la structure
Etudiant. Donc, et puisque E a t
dclar comme variable structure de
type la structure Etudiant, E.TN est

un tableau.
A. ETTALBI / 2015-2016

195

Structures comportant des structures


Exemple

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

/*P est une variable structure de type la


structure Personne, elle comporte entre
autres un champ DN qui est une variable
structure de type la structure Date*/
A. ETTALBI / 2015-2016

196

Structures comportant des structures


Dbut :
Afficher("Donner le nom et le prnom :")
Lire(P.Nom, P.Prenom)
Afficher("Donner le jour de naissance :")
Lire(P.DN.Jour)
Afficher("Donner le mois de naissance :")
Lire(P.DN.Mois)
Afficher("Donner lanne de naissance :")
Lire(P.DN.Anne)
Afficher("Nom et Prnom :", P.Nom, " ", P.Prnom)
Afficher("Date naissance est :")
Afficher(P.DN.Jour,"/", P.DN.Mois ,"/", P.DN.Anne)
Fin.
A. ETTALBI / 2015-2016

197

Structures comportant des structures


Remarque :
Dans cet exemple, P a t dclar comme
tant une variable structure de type la
structure Personne. Donc, elle comporte
entre autres un champ DN qui est luimme une variable structure de type la
structure Date.
Donc, P.DN.Jour reprsente le Jour de la
variable structure DN de la variable
structure P
A. ETTALBI / 2015-2016

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

Caractristiques dune Pile


-Taille : Nombre maximum dlments

-NC : Nombre courant dlments


-Tte : par o entrer et sortir les
lments

-Une SD pour stocker les lments de


la Pile
A. ETTALBI / 2015-2016
200

Caractristiques dune File


-Taille : Nombre maximum dlments

-NC : Nombre courant dlments


-Tte : par o entrer les lments
-Queue : par o sortir les lments

-Une SD pour stocker les lments de


la File
A. ETTALBI / 2015-2016
201

Pile et File
Pile

File

A. ETTALBI / 2015-2016

202

Oprations sur les Piles


-Empiler : entrer un lment dans la Pile
-Dpiler : sortir un lment de la Pile (Le

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

Oprations sur les Files


-Insrer: entrer un lment dans la File
-Retirer: sortir un lment de la File(Le

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

Implmentation des Piles et Files


On peut implmenter une Pile (une
File) avec :
-Un Tableau statique (mauvaise
exploitation de la mmoire !!)
-Une SDD : tableau dynamique, liste
chaine, arbre, (Les donnes ne sont
pas permanentes !!)
-Un Fichier (La gestion est faite par
lutilisateur !!)
A. ETTALBI / 2015-2016

205

Pile avec Tableau statique


Structure Pile
NM : constante entire gale Taille

NC : 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
A. ETTALBI / 2015-2016

206

Pile avec Tableau statique


Fonction PilePleine(P: Pile) : boolen
Si (P.NM=P.NC) alors

retourner (Vrai)
Sinon

retourner (Faux)
FinSi

Fin-Fonction
A. ETTALBI / 2015-2016
207

Pile avec Tableau statique


Fonction PileVide(P: Pile) : boolen

Si (P.NC=0) alors
retourner (Vrai)

Sinon
retourner (Faux)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016

208

Pile avec Tableau statique


Fonction Empiler(P: Pile, E : Elment)

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

Pile avec Tableau statique


Fonction Dpiler(P: Pile) : Elment

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

Pile avec Tableau statique


Fonction Vider(P: Pile)
Tant que (non PileVide(P)) faire

//P.NC0 ou P.NC>0
Dpiler(P)

Fin-Tant-que
Fin-Fonction

A. ETTALBI / 2015-2016

211

Pile avec Tableau statique

Fonction Afficher(P: Pile) !!!


Objet : i : variable entire
Si (PileVide(P)) alors
Afficher("La pile est vide")
Sinon
Afficher("Les lments de la pile :")
Pour i0 jusqu (P.NC-1) faire
Afficher(P.Tab[i]," ")
Fin-Pour
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016

212

File avec Tableau statique

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

File avec Tableau statique


Fonction FilePleine(F: File) : boolen

Si (P.NM=P.NC) alors
retourner (Vrai)
Sinon

retourner (Faux)
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016

214

File avec Tableau statique


Fonction FileVide(F: File) : boolen
Si (F.NC=0) alors
retourner (Vrai)

Sinon
retourner (Faux)

FinSi
Fin-Fonction
A. ETTALBI / 2015-2016

215

File avec Tableau statique


Fonction Insrer(F: File, E : Elment)

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

File avec Tableau statique


Fonction Retirer(F: File) : Elment
Objet : E : variable de type Elment

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

File avec Tableau statique


Fonction Vider(F: File)

Tant que (non FileVide(F)) faire


//P.NC0
Retirer(F)

Fin-Tant-que
Fin-Fonction

A. ETTALBI / 2015-2016

218

File avec Tableau statique


Fonction Afficher(F: File)
Objet : i :variable entire

Afficher("Les lments de la file :")


Si (F.Tte+F.NC<F.NM) alors

Pour iF.Tte jusqu (F.Tte+F.NC-1)


faire Afficher(F.Tab[i]," ")
Fin-Pour

A. ETTALBI / 2015-2016

219

File avec Tableau statique


Sinon
Pour iF.Tte jusqu (F.NM-1) faire

Afficher(F.Tab[i]," ")
Fin-Pour

Pour i0 jusqu ((F.Tte+F.NC) mod F.NM)


faire Afficher(F.Tab[i]," ")

Fin-Pour
FinSi

Fin-Fonction
A. ETTALBI / 2015-2016

220

Correction Exercice1 (Complexe)


Structure Complexe
R, I : rel

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

Correction Exercice1 (Complexe)


Calculer S.R C1.R+C2.R

Calculer S.I C1.I+C2.I


Calculer P.R ((C1.R*C2.R) (C1.I*C2.I))

Calculer S.I ((C1.R*C2.I) + (C1.I*C2.R))


Afficher("C1 est : ", C1.R, "+", C1.I, "i")

Afficher("C2 est : ", C2.R, "+", C2.I, "i")


Afficher("Leur somme est:", S.R,"+", S.I, "i")

Afficher("Leur produit est:", P.R,"+",P.I, "i")


Fin.
A. ETTALBI / 2015-2016

222

VII- FONCTIONS
(Sous-programmes)
Ensemble dinstructions identifi
par un nom(identificateur), qui

peut avoir des entres, qui fait un


traitement spcifique et qui peut
ou non retourner un rsultat.
A. ETTALBI / 2015-2016

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 :

Le type de la valeur de retour sil y


en a (sortie),
Le nom de la fonction,
Le nombre darguments (entres),
Le type de chaque argument.
A. ETTALBI / 2015-2016

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 :

Le corps de la fonction cest


dire les instructions qui seront
excutes chaque fois que la

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

Fonction Tri(T: tableau dentiers, N: entier)


Objets : i, j, P : variables entires
Dbut:
Pour i0 jusqu (N-2) faire
Pour j(i+1) jusqu (N-1) faire
Si (T[i]>T[j]) alors PT[i]
T[i]T[j]
T[j]P
FinSi
Fin-Pour
Fin-Pour
Fin-Fonction.
A. ETTALBI / 2015-2016

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

Exemple1 dAppel de fonction


Objet : N : variable entire
Dbut :
Afficher("Donner un entier:")
Lire(N)
Si (Premier(N)=Vrai) alors
Afficher(N, " est premier")
Sinon
Afficher(N, " nest pas premier")
FinSi
Fin.
A. ETTALBI / 2015-2016

233

Exemple2 dAppel de fonction


Objet : N, F : variables entires

Dbut :
Afficher("Donner un entier:")

Lire(N)
Calculer FFactoriel(N)

Afficher("Factoriel(",N,")=",F)
Fin.
A. ETTALBI / 2015-2016

234

Exemple3 dAppel de fonction


Objet : N : constante entire = 10

T : tableau dentiers de taille N


Dbut :

//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

de deux entiers donns en entre


-Minimum qui retourne la minimum

de deux entiers donns en entre


A. ETTALBI / 2015-2016

236

Fonction manipulant des structures


Structure Vecteur3d
X, Y, Z : rels
Fin-Structure
Fonction Somme(V1,V2:Vecteur3d):Vecteur3d
Objets : V : variable de type Vecteur3d
Dbut:
Calculer V.XV1.X+V2.X
Calculer V.YV1.Y+V2.Y
Calculer V.ZV1.Z+V2.Z
Retourner (V)
Fin-Fonction.
A. ETTALBI / 2015-2016

237

Fonction manipulant des structures


Objets: V1, V2, V3 : de type Vecteur3d
Dbut: //Algorithme principal
Afficher("Donner les coordonnes de V1")
Lire(V1.X,V1.Y,V1.Z)
Afficher("Donner les coordonnes de V2")
Lire(V2.X,V2.Y,V2.Z)
Calculer V3Somme(V1,V2)
Afficher("La somme est ")
Afficher("(",V3.X,",",V3.Y,",",V3.Z,")")
Fin.
A. ETTALBI / 2015-2016

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

Exemples de fonctions rcursives


Factoriel(N) = Factoriel(N-1) * N
Factoriel(1)=1 (Test darrt)
Puissance(X,N)=Puissance(X,N-1)*X

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

Fonction Puissance(X: rel, N : entier): rel


Dbut:
Si (N=0) alors retourner (1)
Sinon retourner (Puissance(X,(N-1))*X)
FinSi
Fin-Fonction
Objet: A : variable relle,
B : variable entire
Dbut:
Afficher("Donner un rel et un entier:")
Lire(A,B)
Afficher(A," ^ ",B," = ", Puissance(A,B))
Fin.
A. ETTALBI / 2015-2016

242

Fonction Fibonacci

Fonction Fib(N : entier): entier


Dbut:
Si (N=0 ou N=1) alors retourner (1)
Sinon retourner (Fib(N-1) + Fib(N-2))
FinSi
Fin-Fonction.
Objet: N : variable entire
Dbut:
Afficher("Donner un entier:")
Lire(N)
Afficher("Fib(",N,")= ", Fib(N))
Fin.
A. ETTALBI / 2015-2016

243

Exercice dapplication 2
Proposer

une

nouvelle

dfinition

rcursive de la fonction Puissance en


sinspirant de lexemple suivant :

X^10 = X^5 * X^5


X^5 = X^4 * X
X^4 = X^2 * X^2

X^2 = X^1 * X^1


A. ETTALBI / 2015-2016

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

Fonction Puissance(X: rel, N: entier): rel


Dbut:
Si (N=0) alors retourner (1)
Sinon
Si (N mod 2=0) //N pair
alors
retourner(Puissance(X,N/2)*(Puissance(X,N/2))
Sinon //N impair
alors
retourner(Puissance(X,N-1)*X)
FinSi
FinSi
Fin.
A. ETTALBI / 2015-2016

251

Correction Exercice 3

Fonction Dicho(Bi,Bs,N: entiers,T: tableau dentier): entier


Objet: Mi : variable entire
Dbut:
Si (Bi>Bs) alors retourner (-1)
Sinon Calculer Mi(Bs+Bi)/2
Si (T[Mi]=N) alors retourner (Mi)
Sinon Si (T[Mi]>N) alors
retourner (Dicho (Bi, (Mi-1), N,T))
Sinon retourner (Dicho ((Mi+1), Bs, N,T))
FinSi
FinSi
FinSi
Fin-Fonction
A. ETTALBI / 2015-2016

252

You might also like