Vous êtes sur la page 1sur 106

Algorithmique et

Programmation

1
Algorithmique et Programmation

1
Partie :
ère

Algorithmique

2
Algorithmique
0. Introduction
Un programme est un discours adressé à
l'ordinateur et a deux aspects : un contenu et une forme,
un sens et une grammaire. Il suffit que le discours soit
correct au niveau de la forme. En ce moment, il effectue
les manipulations qu'on lui demande d'effectuer. Le
contenu est pour l'ordinateur purement syntaxique.
L'apprentissage de la programmation est donc à
ce niveau fortement dépendant du langage que l'on
utilise. Mais la cohérence du programme, c'est-à-dire du
contenu, n'est pas évaluée.

3
Algorithmique
0. Introduction
Cette cohérence et cette pertinence de l'analyse du
problème à traiter sont donc un préalable à tout exercice
de programmation.
On doit fixer l'objectif du programme, établir la
liste des données et des opérations à exécuter, et les
ordonner.
« La description de la suite des opérations
élémentaires ordonnées capables de résoudre le
problème posé constitue l'algorithme ».

4
Algorithmique
1. Méthodologie de programmation
1.1. La démarche

5
Algorithmique
1. Méthodologie de programmation
1.1. La démarche
L'analyse d'un problème posé consiste à définir les
différentes étapes de sa résolution. C'est la partie
essentielle dans le processus de programmation. Elle
permet de définir le contenu d'un programme en termes
de données et d’actions. Une démarche descendante
permettrait de décomposer le problème initial en « sous
problèmes », plus simples à résoudre. L'ensemble de ces
spécifications représente l'algorithme.

6
Algorithmique
1. Méthodologie de programmation
1.1. La démarche
La phase suivante consiste à traduire l’algorithme
dans un langage de programmation donné. Ce travail,
quoiqu’il semble facile, exige le respect strict de la
syntaxe du langage.
Lors de l’étape d’exécution, soit des erreurs
syntaxiques sont signalées, ce qui entraîne des
corrections en général simples à effectuer, soit des
erreurs sémantiques plus difficiles à déceler.

7
Algorithmique
1. Méthodologie de programmation
1.2. Définitions
 Un algorithme est une suite finie d'instructions
indiquant de façon précise l'ordre dans lequel doit
être effectué un ensemble d'opérations pour obtenir la
solution d’un problème.
 Un algorithme est une suite d'actions que devra
effectuer un automate (un ordinateur), en un temps
fini, pour arriver à un résultat, à partir d'une
situation donnée.

8
Algorithmique
2. Les éléments de base
2.1. Les données
Une donnée peut être considérée comme une boîte,
portant une étiquette (nom), d'une certaine forme (type)
et qui contient une information (valeur).
Elle peut être soit une constante ; soit une
variable si sa valeur est susceptible de changer durant
l’exécution du programme.
Classification des données (selon la nature des
valeurs) :
les données numériques ;
les données alphanumériques ; et
les données logiques.
9
Algorithmique
2. Les éléments de base
2.1. Les données
2.1.1. Les types numériques
Ils caractérisent les valeurs entières ou réelles (et
parfois complexes).
Une variable est dite entière si elle prend ses
valeurs dans Z et qu'elle peut supporter les opérations
suivantes : addition (+) ; soustraction (-) ; multiplication
(*) ; division entière (div) ; division modulo (mod). Elle
est caractérisée par un nom appelé identificateur et un
contenu représentant une valeur d'un type donné.
12 div 3 = 4 ; 13 div 3 = 4 ; 12 mod 3 = 0 ; 13 mod 3 = 1

10
Algorithmique
2. Les éléments de base
2.1. Les données
2.1.1. Les types numériques
Une variable est dite réelle si elle prend ses
valeurs dans  et qu'elle supporte les opérations : + ; - ;
* et /. Elle est caractérisée par un identificateur et un
contenu représentant une valeur d'un type donné.
Il existe deux représentations des réels :
la forme usuelle avec le point comme symbole décimal
(0.2467 ; 345.876 ; -12.1).
la notation scientifique ayant la forme suivante : aE±b,
où : a est la mantisse, qui s'écrit sous une forme usuelle
et b est l'exposant représentant un entier relatif (247 =
2.47E2 = 0.247E+3 = 2470E-1 = ...).
11
Algorithmique
2. Les éléments de base
2.1. Les données
2.1.2. Les types alphanumériques
Le type alphanumérique caractérise les valeurs
caractère ou chaîne de caractères.
La valeur d’un Car est un caractère quelconque
Єant au domaine des chiffres de ‘0’ à ‘9’, des lettres de ‘A’
à ‘Z’, de ‘a’ à ‘z’ et des caractères spéciaux (‘+’ ‘-‘ ’,‘ ’;’ ‘.’...).
Un caractère est toujours noté entre apostrophes.
Les opérateurs sont : égal (=) ; différent (< > ou
≠) ; supérieur ou égal () ; supérieur (>) ; inférieur ou
égal () ; inférieur (<).
Les 4 dernières représentent un ordre entre les
caractères qui est : ‘ ‘ < ‘0’ < ... < ‘A’ < ... < ‘a’ < ... < ‘z’.
12
Algorithmique
2. Les éléments de base
2.1. Les données
2.1.2. Les types alphanumériques
La valeur d’une Chaîne est une suite finie de
caractères quelconques entre apostrophes.
'BONJOUR' ; 'CECI EST UN EXEMPLE'.
Les opérateurs définis sur les variables de type
Chaîne sont ceux des variables de type Car.
Chaîne A < Chaîne B si le mot contenu dans
Chaîne A est 'inférieur' à celui de Chaîne B dans le sens
du dictionnaire (inférieur : avant ; supérieur : après).
'BAL' < 'BALLES' < 'BALLON' < 'BAR' < 'Bar' < 'bar'

13
Algorithmique
2. Les éléments de base
2.1. Les données
2.1.2. Les types alphanumériques
De plus,  un autre opérateur défini sur les
variables car ou chaîne, la concaténation (+ ou ||).
Elle crée une nouvelle chaîne en juxtaposant deux ou
plusieurs mots. ‘TELE'+'VISION' = 'TELEVISION'
2.1.3. Le type logique
Une valeur logique (ou booléenne) est l'une des
deux valeurs « vrai » ou « faux ».
Les opérateurs sont la négation (non),
l'intersection (et) et l'union (ou).
14
Algorithmique
2. Les éléments de base
2.2. Les expressions
Combinaisons entre des variables et des
constantes à l'aide d'opérateurs.
2.2.1. Expressions arithmétiques
Var1*54.5/(2+pi)
La hiérarchie des opérateurs arithmétiques est :
± opérateur unaire ;
( ) parenthèses ;
^ puissance ;
* ou / multiplication ou division ;
+ ou - addition ou soustraction.
15
Algorithmique
2. Les éléments de base
2.2. Les expressions
2.2.1. Expressions arithmétiques
En cas de conflit entre 2 opérateurs de même
poids, on va de gauche à droite.
a+b-c : d'abord a+b, puis – c ; a/b*c : d'abord
a/b, puis * c.
Considérons ((3*a)-x^2)-(((c-d)/(a/b))/d)
1 2 4 5

3 7

8
16
Algorithmique
2. Les éléments de base
2.2. Les expressions
Soit l'expression algébrique suivante : 3 yx 4ac
2

2x z
Sa forme algorithmique : ((3-y*x)^2-4*a*c)/(2*x-z)
2.2.2. Expressions logiques
Combinaisons à l'aide d'opérateurs relationnels (=,
<, <=, >, >=, ≠) et/ou logiques (non, et, ou).
Usage des parenthèses et de la hiérarchie entres
les différents opérateurs pour résoudre les problèmes de
conflits.
17
Algorithmique
2. Les éléments de base
2.2. Les expressions
2.2.2. Expressions logiques
Hiérarchie des Hiérarchie des
opérateurs logiques opérateurs relationnels
non >
et ≥
ou <

=

18
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.1. L'action de déclaration
Il est nécessaire d’annoncer toute donnée dans un
algorithme et de préciser son type avant son utilisation.
Une constante ou une variable est désignée par un nom :
l'identificateur. Celui-ci est une suite de caractères
alphanumériques, dont le 1er est une lettre (on n'utilise
que des lettres, des chiffres et du trait de soulignement).
Ident1, A10, B ; mauvais identificateurs : 5ABC, 35,
a+b
19
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.1. L'action de déclaration
VAR1 est identique à Var1 et à var1. Ceci traduit
la non sensibilité à la casse
Var liste des identificateurs : type;
Var
Réponse:booléen;
Chain1:Chaîne[30];
Rep:Car;
i,j:entier;
a,b,c:réel;
20
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.2. L'affectation ou l’assignation
Syntaxe  Ident:=expression où Ident un
identificateur ; := ou ← symbole d’affectation et
expression une valeur ou une variable ou expression.
Dans l'affectation, l'élément à gauche de := est une
variable qui reçoit une valeur ou le contenu d'une
variable ou le résultat d'une expression (partie de
droite). A:=10 ; B:=A ; C:=C+1 ; Mauvais exemples :
a+1:=3 ; 3B:=A
21
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.2. L'affectation ou l’assignation
Soit à calculer la moyenne de 3 notes et de
l’afficher.
Algorithme Moyenne ;
Const Note1=12;Note2=7.5;Note3=14;
Var Som,Moy:réel;
Début
Som:=Note1;
Som:=Som+Note2;
Som:=Som+Note3;
Moy:=Som/3;
Afficher (‘La moyenne est de : ‘ , Moy);
Fin.
22
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.3. Lecture/Ecriture des données
Les actions d’Entrée/Sortie permettent
d’introduire des données dans un programme ou
d’afficher des résultats à partir de celui-ci.
Lire(A,B);
Afficher(‘Le résultat est : ‘, Moyenne);
Le message Le résultat est s’affichera suivi de la
valeur de la variable Moyenne.

23
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.4. Les actions simples et composées
Toute action de déclaration, d'affectation, d'appel
à une procédure, de Lecture, d’Ecriture, …  Action
simple
Var i1,i2,A,B:entier;
Som:=Som+1;
Lire(Age);
CALCUL(A,B);
Afficher(A,B);
Une action composée est un ensemble fini
d'actions simples (ou composées) encadrée par un début
et une fin.
24
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.4. Les actions simples et composées
Var A,B:réel ;
Début …
Début
Action1 ;
A:=B+1 ;
…; Lire(A,B) ;
Actionn ; CALCUL(A,B) ;
Fin; Afficher(A,B) ;
Fin;

25
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.5. L'action sélective
Les actions de sélection sont les suivantes :
1er Cas :
SI condition ALORS Action1
SINON Action2
FINSI
2ème Cas :
SI condition ALORS Action FINSI

26
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.5. L'action sélective
Supposons qu'on veut connaître le plus grand de
deux nombres a et b.
algorithme plusgrand(a,b);
Var a,b,pgran:entier;
début
Lire(a,b);
pgran:=a;
Si b>a alors pgran:=b
Finsi;
Afficher(‘Le plus grand entre ‘,a,‘ et ‘,b,’ ‘est’ : ‘,pgran);
fin.
27
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.5. L'action sélective
Ou encore :
algorithme plugrand(a,b) ;
Var a,b,pgran:entier;
début
Lire(a,b);
Si a>b alors pgran:=a
sinon pgran:=b
Finsi;
Afficher(‘Le plus grand entre ‘,a,‘ et ‘,b,’ : ‘,pgran);
fin.
28
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.5. L'action sélective
Le choix multiple est une variante de la sélective.
SELON variable Sélecteur
val1: Action1(s);
Labels

val2 : Action2(s);
…;
valn: Actionn(s);
SINON Action(s);
FINSELON
29
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.5. L'action sélective
Le choix multiple est une variante de la sélective.
SELON variable Sélecteur
val1: Action1(s);
Labels

val2 : Action2(s);
…;
valn: Actionn(s);
FINSELON

30
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.5. L'action sélective
Remarques :
 Le Sélecteur doit être du type énuméré comme c’est
le cas du type Entier, du type Car, … Il peut être
aussi une expression.
 Les VALi peuvent soit une valeur, soit une suite de
valeurs qui se suivent séparées par des virgules, soit
un intervalle dont les deux bornes sont séparées par
deux points (..).
31
Algorithmique
Algorithme lestrimestres;
Var mois:entier;
Début
Afficher(‘Donner le mois’);
Lire(mois);
Selon mois
1:Afficher(‘C’’est le début de l’’année’);
1..3:Afficher(‘Le premier trimestre’);
4..6:Afficher(‘Le deuxième trimestre’);
7..9:Afficher(‘Le troisième trimestre’);
10,11,12:Afficher(‘Le quatrième trimestre’);
12:Afficher(‘C’’est la fin de l’’année’);
Sinon Afficher(‘Le mois entré est faux’)
Finselon
Fin.
32
Algorithmique
Algorithme lestrimestres;
Var mois:entier;
Début
Afficher(‘Donner le mois’);
Lire(mois);
Si (mois>=1) et (mois<=12) Alors
Selon mois
1..3:Afficher(‘Le premier trimestre’);
4..6:Afficher(‘Le deuxième trimestre’);
7..9:Afficher(‘Le troisième trimestre’);
10..12:Afficher(‘Le quatrième trimestre’);
Finselon
Sinon Afficher(‘Il y a Erreur’);
Finsi
Fin.
33
Algorithmique
Algorithme leslettresmajusculesetminuscules;
Var lettre:car;
Début
Afficher(‘Taper un caractère ’);
Lire(lettre);
Selon lettre
‘a’..’z’:Afficher(‘Le caractère tapé est une
lettre minuscule’);
‘A’..’Z’:Afficher(‘Le caractère tapé est une
lettre majuscule’);
Sinon Afficher(‘Le caractère entré n’’est pas une
lettre’)
Finselon
Fin.
34
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.6. L'action itérative
Structure d’une action itérative :
Boucle condition Contrôle de la boucle

Action (simple ou composée) Corps de la boucle

FinBoucle Fin de la boucle
 plusieurs manières d’exprimer cette action.

35
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.6. L'action itérative
a) La boucle Tant que
Tant que Condition Faire
début
Action1;
…;
Actionn;
finTant que ou fin;

36
Algorithmique
Algorithme Moyen;
Var Note,Moyenne,Som:réel;nb:entier;
Début
Som:=0;
nb:=0;
Afficher(‘Entrer une note : ‘);
Lire(Note);
Tant que (Note>=0) faire
Début
nb:=nb+1;Som:=Som+Note;
Afficher(‘Entrer une note : ‘);
Lire(Note);
Fin;
Moyenne:=Som/nb;
Afficher(‘La moyenne des ‘,nb,‘ notes est de : ‘,Moyenne);
Fin.
37
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.6. L'action itérative
b) La boucle Répéter
La boucle Répéter permet d’entrer dans la boucle quelque
soit la condition et réitère l’exécution jusqu'à ce que la condition
devienne vraie.

Répéter
Action1;
…;
Actionn;
Jusqu’à Condition ;

38
Algorithmique
Algorithme Moyenne;
Var Note,Moyenne,Som:réel;
nb:entier;
Début
Som:=0;nb:=0;
Répéter
Afficher(‘ Entrer une note : ‘);
Lire(Note);
nb:=nb+1;
Som=Som+Note;
Jusqu'à Note<0;
Moyenne=Som/nb;
Afficher (‘ La moyenne des ‘,nb,‘ notes est de : ‘, Moyenne);
Fin.

39
Algorithmique
Algorithme Moyenne;
Var Note,Moyenne,Som:réel;nb:entier;
Début
Som:=0;nb:=0;
Répéter
Afficher (‘ Entrer une note : ‘);Lire (Note);
Si Note 0 Alors
Début
nb:=nb+1 ;
Som=Som+Note
Fin;
Jusqu'à Note<0;
Moyenne=Som/nb ;
Afficher (‘La moyenne des ‘,nb,‘ notes est de : ‘,
Moyenne);
Fin.
40
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.6. L'action itérative
Remarques :
 Dans la 2ème forme, la boucle s’exécutera au moins
une fois alors que dans la 1ère, si la condition n’est
pas vraie dès le départ, la boucle ne s’exécutera pas ;
 Dans ces deux formes, le nombre d'itérations n’est
pas connu à priori. Il dépend de la condition ;
 Dans le corps de la boucle, il doit exister une variable
– dite de contrôle – qui sera modifiée pour faire
évoluer l'état de la condition. En général, cette
variable doit être initialisée avant l'entrée dans la
boucle ;
41
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.6. L'action itérative
c) La boucle Pour
Pour var_contrôle:=val_initiale à val_finale faire
Début
Action1;
…;
Actionn;
FinPour ou Fin;
Dans le corps de la boucle, il est interdit de
modifier la valeur du compteur var_contrôle bien qu’on
peut s'en servir.
42
Algorithmique
Algorithme Salaires;
Var Sal_annuel,Sal_mensuel:réel;
i:entier;
Début
Sal_annuel:=0;
i:=0;
Pour i:=1 à 12 faire
Début
i:= i+1;
Lire(‘Entrer le salaire mensuel : ’,Sal_mensuel);
Sal_annuel:=Sal_annuel+Sal_mensuel;
Fin;
Afficher (‘Le salaire annuel est de : ‘,Sal_annuel);
Fin.

43
Algorithmique
2. Les éléments de base
2.3. Les actions
2.3.6. L'action itérative
Rmq : Les imbrications
Boucle 1 Boucle 1

Boucle 2 Boucle 3
Boucle 3 Boucle 4

FinBoucle 3
FinBoucle 2 FinBoucle 3
Boucle 4
FinBoucle 4

Boucle 2

FinBoucle 4
FinBoucle 1 FinBoucle 1
FinBoucle 2
44
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.1. Les types construits
2.4.1.1. Le type énuméré
Définition en extension de toutes les valeurs que
peuvent prendre les variables de ce type.
Type
Jour=(lundi,mardi,mercredi,jeudi,vendredi,samedi,d
imanche);
Var j1,j2:jour; j1:=mardi; j2:=dimanche;
Les opérateurs relationnels (<,  , >,  , =, ≠)
s’appliquent et cela est fonction de l’ordre.
lundi<mardi<mercredi<jeudi<vendredi<samedi<dimanche

45
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.1. Les types construits
2.4.1.2. Le type intervalle
Définition en compréhension de toutes les valeurs
ordonnées que peuvent prendre les variables de ce type.
On ne précisera que le minimum et le maximum.
Chiffre=0..9;
Lettre=A..Z;
Jour_ouvrable=lundi..vendredi;
Remarque : Les valeurs Єnant à un intervalle sont
nécessairement de type déjà défini.
46
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
Il peut y avoir à traiter des lots de données qui
peuvent être toutes de même type (tableau) ou de types
différents (enregistrement). Elles sont stockées alors
dans une variable multiple à laquelle on donne un nom
(identificateur) qui désignera l’ensemble des données et
une autre information permettra de désigner
individuellement chacune d’elles.

47
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.1. Les tableaux
Supposons que l’on dispose des chiffres d’inflation
pour chaque mois. Pour calculer l’inflation annuelle, il
suffit de calculer la somme des données mensuelles et la
diviser par 12. Les données seront stockées dans un
tableau de 12 éléments. Soit Tab_Inflation.
Tab_Inflation :
1 2 3 4 5 6 7 8 9 10 11 12
0.05 0.1 0.6 0.7 -0.4 -0.2 0.2 0.8 0.6 0.4 0.3 -0.2
48
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.1. Les tableaux
Pour définir un tableau, il faut préciser un nom
commun pour toutes ces données et un indice. Il faut
déclarer le type commun aux éléments du tableau et le
type de l’indice.
Type Identificateurdetype=TABLEAU(i..j) de Type;
i et j sont les indices bornes avec i l’initial et j le final.
Ou alors :
Var Identificateurdevariable:TABLEAU(i..j) de Type;

49
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.1. Les tableaux
Pour le cas du tableau d’inflation, la situation se
présente comme suit :
Type Tab=TABLEAU(1..12) de réel;
Var Tab_Inflation:Tab;
Ou alors :
Var Tab_Inflation=TABLEAU(1..12) de réel;

50
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.1. Les tableaux
Un tableau est caractérisé par sa taille. En
général, lorsque le nombre d’éléments n’est pas connu,
on prévoit une taille suffisamment grande pour contenir
tous les éléments.
Si le tableau contient une seule série de données,
on dira que sa dimension est égale à 1 (il s’agit d’un
vecteur ou tableau – colonne ou tableau – ligne). S’il
contient 2 séries, sa dimension est égale à 2, c’est donc
une matrice.
51
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.1. Les tableaux
Considérons les chiffres mensuels de l’inflation,
du chômage et des prix à la consommation. Ces trois
séries de données seront stockées dans une matrice
(tableau à 2 dimensions) :
1 2 3 4 5 6 7 8 9 10 11 12
0.05 0.1 0.6 0.7 -0.4 -0.2 0.2 0.8 0.6 0.4 0.3 -0.2

0.03 0.2 0.5 0.3 0.2 0.1 -0.3 0.1 0.1 0.2 0.1 0.3

0.1 0.005 0.03 0.2 0.1 0.07 0.03 0.3 0.2 0.4 0.3 0.3

52
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.1. Les tableaux
On aura besoin d’un premier indice i pour
parcourir les lignes du tableau (chaque série de données)
et d’un deuxième indice j pour les colonnes (chiffre du
mois).
Type Tablo=TABLEAU(1..3,1..12) de réels;
Var Tab_chiffres:Tablo;
Ou : Var Tab_chiffres:TABLEAU(1..3,1..12) de réels;
Ex: Tab_Chiffres(1,9) (*pour le taux d’inflation du mois
de septembre*) ;
53
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Contrairement aux tableaux, ce type structuré
permet de regrouper des données de types différents.
Exemple :
Code
Titre
Ouvrage Auteur
Editeur
date

54
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Ouvrage est une variable de type enregistrement
; chacune de ses cinq données constitue un champ
pouvant être simple ou structuré.
Type Ident_Enreg = Enregistrement
Champ1 : type ;
Champ2 : type ;
…;
Champn : type ;
Fin;
55
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
La variable Ouvrage se déclare ainsi :
Type Livre=Enregistrement
Code:entier;
Titre:Chaîne[20];
Auteur:Chaîne[40];
Editeur:Chaîne[25];
Date=Enregistrement
Mois=1..12;
Annee=1900..2008;
fin;
Var Ouvrage:Livre;

56
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Pour exprimer une date sous la forme ‘lundi 23
Septembre 1996’, la déclaration est la suivante :
Type Date=Enregistrement
Jour=(lundi,mardi,mercredi,jeudi,vendredi,samedi,
dimanche);
Quantieme=1..31;
Mois=(janvier,février,mars,avril,mai,juin,juillet,août,s
eptembre,octobre,novembre,décembre);
Annee=1900..2008;
fin;
57
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Pour utiliser un champ, on préfixe le nom de celui-
ci avec le nom de la variable de type enregistrement
auquel il (ce champs) appartient :
Var Dat1:Date;

Dat1.jour:=lundi;
Dat1.quantieme:=19;
Dat1.Mois:=Mai;
Dat1.annee:=2008;
58
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Autre exemple :
Var Ouvrage:Livre;

Ouvrage.Auteur:=‘V. Hugo‘;
Ouvrage.Dat1.Mois:=Octobre;
Ouvrage.Dat1.Année:=1995;
Cette écriture peut être simplifiée en utilisant
l’instruction Avec dont la syntaxe est la suivante :

59
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Avec Ident Faire
Début
Instruction(s) ;
FinAvec ;
Où Ident est une variable de type Enregistrement
et l’(es) Instruction(s) utilisant directement les champs
de l’enregistrement.

60
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Var Dat1:Date;
… Var Dat1:Date;
Avec Dat1 Faire …
Début Dat1.Jour:=lundi;
Jour:=lundi; Dat1.Quantieme:=19;
Quantieme:=19; Dat1.Mois:=mai;
Mois:=mai; Dat1.Annee:=2008;
Annee:=2008; …
FinAvec;
61
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.2. Les types structurés
2.4.2.2. Les enregistrements
Var Ouvrage:Livre;

Avec Ouvrage Faire
Début
Auteur:=‘V. Hugo‘
Avec Dat1 Faire
Début
Mois:=Octobre;
Annee:=1995;
FinAvec;
FinAvec;
62
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
Un fichier est un ensemble de données qui peut
servir soit à la lecture pour rentrer des informations, soit
à l’écriture pour sauvegarder les résultats obtenus.
Les fichiers sont caractérisés par deux notions : le
mode d’organisation et le mode d’accès.
Nous nous limiterons, par souci de facilité, aux
fichiers textes et aux fichiers d’enregistrements.
Ainsi, la syntaxe pour la déclaration d’un fichier
est la suivante :
63
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
Nom_du_fichier : FICHIER de Type ;
Où Type est le type des informations contenues
dans le fichier et Nom_du_fichier est le nom interne du
fichier qui doit être différent du nom externe (effectif) du
fichier. Ainsi, une correspondance doit être établie entre
les deux noms de fichiers pour toute manipulation.
Toute manipulation d’un fichier nécessite trois
phases :

64
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
Ouverture du fichier :
OUVRIR(Nom_du_fichier)
Traitement du fichier :
LIRE(Nom_du_fichier, …) ;
ECRIRE(Nom_du_fichier, …) ;
AJOUT(Nom_du_fichier, …) ;
Fermeture du fichier :
FERMER(Nom_du_fichier)
65
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.1. Les fichiers texte
Les fichiers de type Texte sont des fichiers
séquentiels (et en mode d’organisation et en accès).
3 opérations sont définies sur ce type de fichiers :
La lecture ;
L’écriture ;
L’ajout (Le pointeur est positionné sur la marque de
fin de fichier (EOF) qui est décalée d’une position après
chaque rajout.
66
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.1. Les fichiers texte
Exemple :
Var Fich1 : Fichier de Texte ;
Pour i := 1 à 100 faire
Lire (Fich1, Tab(i)) ;
FinPour
Les données du fichier Fich1 sont lues et stockées
dans le tableau Tab.

67
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.1. Les fichiers texte
Ecrire (Fich1, Sal_Annuel) :
Ces informations sont stockées dans Fich1 à
l’endroit où se trouve le pointeur lors de cette action.
Ajout (Fich1, Sal_Annuel) :
Ces informations sont rajoutées à la fin de Fich1
et le pointeur reste sur la marque de fin de fichier.

68
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.1. Les fichiers texte
Il n’y a que la fin du fichier qui est marquée par
un symbole repéré par la fonction EOF(Nom_du_fichier),
qui rend la valeur vraie si elle le rencontre, la valeur
faux sinon.
Un fichier séquentiel ne peut être ouvert qu’en
lecture ou en écriture. Après l’ouverture d’un fichier, la
première opération (Lire, Ecrire ou Ajout) indique si le
fichier est accessible en lecture ou en écriture.
69
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.1. Les fichiers texte
Ecrire et Ajout sont des opérations d’écriture ; la
seule différence est que pour Ecrire, le pointeur se place
en début du fichier, alors que pour Ajout, il se place en
fin du fichier.
Remarques :
La fonction EOF (Fich1) permet de tester si le pointeur est sur la
fin du fichier Fich1.
L’utilité des fichiers est la sauvegarde les données.
Il est préférable d’utiliser Ecrire à la place d’Afficher, quand on
utilise les fichiers.
70
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.2. Les fichiers d’enregistrements
C’est un ensemble d’enregistrements (ou
d’articles) de type structuré.

71
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.2. Les fichiers d’enregistrements
Type Etudiant=Enregistrement
Numero:entier;
NomPrenom:Chaîne[30];
Discipline:Chaîne[25];
Annee_Inscrip:1950..2008;
fin;
Var E1:Etudiant;
Fich_Etudiant:FICHIER de Etudiant;

E1.Numero:=134561;
E1.NomPrenom:=’Mwenze Kasongo’;
E1.Discipline:=’Sciences économiques’;
E1.Annee_Inscrip:=2006;
Ouvrir (Fich_Etudiant);
Ecrire (Fich_Etudiant,E1);
72
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.2. Les fichiers d’enregistrements
Type Etudiant=Enregistrement
Numero:entier; NomPrenom:Chaîne[30];
Discipline : Chaîne[25];Annee_Inscrip : 1950..2008;
fin ;
Var E1:Etudiant;
Fich_Etudiant:FICHIER de Etudiant;

Avec E1 faire
Début
Numero:=134561;NomPrenom:=’Mwenze Kasongo’;
Discipline:=’Sciences économiques’;
Annee_Inscrip:=2006;
FinAvec;
Ouvrir (Fich_Etudiant);
Ecrire (Fich_Etudiant,E1);
73
Algorithmique
2. Les éléments de base
2.4. Les autres types de données
2.4.3. Les Fichiers
2.4.3.2. Les fichiers d’enregistrements
On peut traiter un fichier d’enregistrements de
manière séquentielle, mais son intérêt est de permettre
un accès direct aux données.
Lors de l’ouverture d’un tel fichier, le pointeur est
positionné sur le premier enregistrement. On peut se
déplacer directement sur n’importe quel enregistrement
avant une opération de lecture ou d’écriture à l’aide de
l’action :
Positionner (Nom_du_Fichier, N°enregistrement)
Remarque : La taille d’un fichier de ce type est
déterminée par le nombre de ses enregistrements.
74
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
Dans la résolution d’un problème, on peut
constater qu'une suite d'actions revient plusieurs fois.
Dans ce cas, il serait judicieux de l'écrire une seule fois,
et de l'utiliser autant de fois que c'est nécessaire, en
effectuant des calculs avec des données différentes.
Cette suite d'actions sera définie dans un sous
programme qui peut prendre soit la forme d’une
procédure, soit la forme d’une fonction.

75
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
D’autre part, on peut observer que certains
groupes d’actions se rapportent à des traitements précis
et différents. Il est souhaitable alors de représenter
chacun d’eux dans un sous programme, ce qui permettra
d’améliorer la conception du programme et sa lisibilité.
On perçoit alors un programme comme un
ensemble de procédures/fonctions. La structuration d’un
programme par morceaux (modules) est la base de la
programmation structurée et modulaire.

76
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.1. La procédure
Une procédure est un sous programme qui peut
retourner 0, 1 ou plusieurs résultats.
2.5.1.1. Définition de la procédure
Procédure nom_de_procédure (liste d’arguments : type) ;
Début
Corps de la procédure ;
Fin ;
La première ligne s’appelle l’en-tête (ou la
signature) de la procédure. La liste d’arguments est une
suite de données à échanger avec d’autres programmes.
77
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.1. La procédure
2.5.1.2. Appel de la procédure
nom_de_la_procédure (liste d’arguments) ;
Remarques :
Si une liste d’arguments apparaît dans la définition
d’un sous-programme, lors de l’appel à ce dernier, elle
doit également apparaître dans l’action d’appel ;
La liste d'arguments dans la définition d’un sous-
programme contient le type de chaque argument. Ce
n’est pas le cas de celle de l’appel.

78
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.1. La procédure
2.5.1.2. Appel de la procédure
nom_de_la_procédure (liste d’arguments) ;
Remarques :
Les listes d'arguments dans la définition d’un sous-
programme et dans son appel doivent correspondre.
C'est-à-dire, il doit y avoir le même nombre d'arguments
dans les deux listes. L’ordre d’apparition des arguments
dans les deux listes doit être le même. Chaque argument
d'une liste doit être de même type que son homologue de
l'autre liste.

79
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.1. La procédure
2.5.1.2. Appel de la procédure
Exemple :
On veut écrire un algorithme qui calcule le salaire
des commerciaux d’une entreprise. Celui-ci est composé
d’un fixe différent d’un employé à un autre et d’une prime
d’intéressement de 10% du chiffre d’affaire réalisé si
celui-ci dépasse les 50000 F, de 3% sinon. On isolera la
suite d'actions qui permet de rentrer les salaires fixes de
chacun ainsi que leur chiffre d’affaire.

80
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.1. La procédure
2.5.1.2. Appel de la procédure
Procédure Saisie (Var Sal,CA : entier) ;
Début
Lire (‘Entrer le salaire du commercial :‘, Sal);
Lire (‘Entrer son chiffre d’affaire : ‘, CA) ;
Fin ;

81
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.2. La fonction
Une fonction est un sous programme qui retourne
obligatoirement une valeur. Cette dernière sera stockée
dans une variable qui porte le même nom que la fonction.
2.5.2.1. Définition de la fonction
Fonction nom_de_fonction (liste d’arguments : type) : type ;
Début
Corps de la fonction ;
Fin ;
Le nom de la fonction est utilisé comme
identificateur d’une variable, on déclare alors le type de
cette dernière.
82
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.2. La fonction
2.5.2.2. Appel de la fonction
Var:=expression (…nom_de_la_fonction (liste
d’arguments)…)
Exemple (suite) : De la même manière, on isole les
actions permettant de calculer la commission de chaque
commercial.

83
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.2. La fonction
2.5.2.2. Appel de la fonction
Fonction Commission (Montant : réel):réel;
Const plafond=50000;
Var taux:réel;
début
Si Montant≥plafond Alors taux:=0.1
Sinon taux:=0.03
FinSi;
Commission:=Montant*taux;
fin;
84
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.2. La fonction
2.5.2.2. Appel de la fonction
On peut construire un troisième sous programme
qui calculera le salaire de chacun.
Procédure Calcul_Salaire;
Var Salaire,Sal_fixe,Chif_Aff:réel;
début
Saisie (Sal_fixe, Chif_Aff);
Salaire:=Sal_fixe+Commission (Chif_Aff );
Afficher (‘Le salaire est de :’,Salaire);
fin;
85
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.2. La fonction
2.5.2.2. Appel de la fonction
Commentaires :
Les listes d’arguments sont optionnelles ;
La procédure Calcul_Salaire est le programme
appelant. La procédure Saisie et la fonction Commission
sont les programmes appelés ;
N’importe quel sous programme peut être appelant ou
appelé (il faut éviter les appels circulaires) ;

86
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.2. La fonction
2.5.2.2. Appel de la fonction
Les arguments des procédures/fonctions appelées sont
les paramètres formels (ou fictifs). Ils peuvent porter les
mêmes noms (ou des noms différents) que leurs
correspondants des programmes appelant qualifiés de
paramètres réels (ou effectifs) ;
Dans la procédure Calcul_Salaire, à l’appel de la
procédure Saisie, les paramètres réels Sal_fixe, Chif_Aff
sont vides (ou contiennent plutôt n’importe quoi). Au
retour du sous programme, ils posséderont
respectivement le salaire et le chiffre d’affaire réalisé ;
87
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.2. La fonction
2.5.2.2. Appel de la fonction
Dans l’appel à la fonction Commission (action qui
calcule le salaire), le paramètre réel Chif_Aff possède
déjà la valeur du chiffre d’affaire retournée par Saisie.
Au retour de cette fonction, la variable commission
contiendra la valeur de la prime.

88
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.3. La portée des données
Les sous programmes communiquent entre eux
par des paramètres. Une Procédure/Fonction peut avoir
des variables internes qui ne sont pas visibles par les
autres. Il s’agit de variables locales. Elles ne sont
accessibles que par le sousprogramme où elles sont
définies. Par conséquent, différents sous-programmes
peuvent avoir des variables locales portant le même nom
éventuellement. Celles-ci n’auront pas la même
signification pour chacun d’eux. On dira également que
la portée d’une variable locale est le sous-programme où
elle a été définie.
89
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.3. La portée des données
Exemple : Sal_fixe et Chif_Aff sont des variables
locales à Calcul_Salaire.
Si une variable doit être accessible par tous les
sous-programmes, il faut la définir comme une variable
globale. Ce qui veut dire qu’elle est visible par tout sous-
programme et que sa valeur peut être utilisée ou
modifiée n’importe où. La portée d’une variable globale
est l’ensemble des sous-programmes pouvant l’utiliser.

90
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.3. La portée des données
Remarques :
La déclaration des variables globales dépend du
langage de programmation utilisé. Certains les
définissent dans le programme principal (programme
d’appel aux Procédures/Fonctions) ; d’autres dans une
section spéciale.
La notion de portée s’applique également aux
constantes et aux types.
Exemple : Dans la fonction Commission, plafond est une
constante locale.

91
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.4. Le passage des paramètres entre sous-programmes
Lors de l’échange de données entre sous-
programmes, on peut soit autoriser, soit interdire la
modification des valeurs.
Il existe deux modes de passage de paramètres :
passage par valeur : dans les sous-programmes
appelés, les valeurs des paramètres transmis sont
utilisées sans qu’il soit possible de les modifier. Les
paramètres formels contiennent une copie des valeurs
des paramètres réels.
Exemple : Dans la fonction Commission, la valeur
initiale du paramètre montant est conservée.
92
Algorithmique
2. Les éléments de base
2.5. La notion de sous-programmes
2.5.4. Le passage des paramètres entre sous-programmes
passage par adresse : les sous-programmes appelés
peuvent modifier les valeurs des paramètres réels
transmis. Les paramètres formels contiennent l’adresse
des paramètres réels. Les modifications de valeurs
effectuées dans le programme appelé seront effectives au
retour dans le programme appelant.
Exemple : Dans la procédure Saisie, les valeurs affectées
aux paramètres formels Sal et CA seront disponibles
dans le programme appelant Calcule_Salaire.

93
Algorithmique
3. Ordinogramme
3.1. Définition
Outil d’analyse de représentation graphique de
l’enchaînement logique des opérations.
3.2. Finalités
Visualiser une succession logique d’opérations ;
Faire apparaître des incohérences logiques ;
Aider à l’élaboration d’un processus ;
Représenter l’enchaînement des opérations ;
Analyser la logique de construction ;
Décrire et représenter l’enchaînement des différentes
tâches d'un processus.
3.3. Symboles
Pour la représentation de l’enchaînement des
opérations, on utilise les symboles suivants :
94
Algorithmique
3. Ordinogramme
3.3. Symboles
L’ovale représente le point de départ ou d’arrivée du
processus. Selon le cas, il y figurera le mot « Début » ou le mot
« Fin » dans le symbole.
Le rectangle représente une opération du processus, dont la
nature, résumée par une courte phrase commençant par un
verbe d’action, est indiquée à l’intérieur du symbole.
Le losange représente un choix qui aboutit à des opérations
différentes selon qu’il est répondu « oui » ou « non » à la
question inscrite dans le symbole.

Le connecteur permet de relier un bloc à un autre situé sur


une autre page (ou à un autre emplacement).
Le parallélogramme permet l’entrer d’une information
(lecture) ou la sortie d’une information (écriture dans un
fichier ou afficher à l’écran).
Ce symbole est particulièrement utilisé pour la sortie
d’informations sur papier.

95
Algorithmique
3. Ordinogrammes
3.4. Les structures
Tout processus peut ainsi se décrire au moyen de
trois principales structures.
3.4.1. La structure consécutive
1 2 3

3.4.2. La structure alternative


? ?

1 2 1

Structure alternative réduite


96
Algorithmique
3. Ordinogrammes
3.4. Les structures
3.4.3. Structure alternative multiple (SELON)

10 11 12 13

20 20 20 20

97
Algorithmique
3. Ordinogrammes
3.4. Les structures
3.4.4. Structure itérative
a) La structure Tant que

Oui Traitement
?

Non

98
Algorithmique
3. Ordinogrammes
3.4. Les structures
3.4.4. Structure itérative
b) La structure répéter … jusque

No

Traitement
?

Oui

99
Algorithmique
3. Ordinogrammes
3.4. Les structures
3.4.5. Règles de lisibilité
Un bon ordinogramme tient sur une ou deux pages ;
Si un processus nécessite plusieurs pages pour être
décrit, il faut le décomposer en plusieurs sous-
processus ;
Les deux branches d’une alternative doivent être
symétriques ;
Les deux branches d’une alternative se rejoignent ;
On détermine un côté unique pour les remontées de
flux.
100
Algorithmique
3. Ordinogrammes
3.4. Les structures
3.4.6. Exemple Début

Traitement

Traitement1 Traitement2

Fin

101
Algorithmique
3. Ordinogrammes
3.4. Les structures
3.4.7. Les avantages
une représentation claire et synthétique du
déroulement d’un processus ;
une approche précise d’un processus ;
une mise en évidence des incohérences.
3.4.8. Inconvénients
la lecture est parfois compliquée ;
il y a absence de quantification. Pour remédier à cette
situation, l’ajout d’une étiquette sous la tâche est la
seule possibilité de faire apparaître les quantités ;
la dimension « QUI » (les acteurs) n’y figurent pas.

102
Algorithmique
4. Exercices
4.1. Faire un algorithme ainsi que le flowchart
correspondant qui affiche si un nombre donné est
parfait ou pas

103
Algorithmique
Algorithme parfait;
Var nombre,i,som:entier;
Début
Répéter
Aficher(‘Donner un nombre’);
Lire(nombre);
Jusqu’à nombre>1;
som:=0;
Pour i:=1 à (nombre div 2) faire
Si (nombre mod i)=0 Alors som:=som+i;
Si som=nombre Alors Afficher(nombre,’ est parfait’)
sinon Afficher(nombre,’ n est pas parfait’);
Finsi;
Fin.

104
Algorithmique
Début

A
Afficher(‘Donner un nombre’)

Lire(nombre) V F
som=nombre

F
Nombre>1 Afficher(nombre, Afficher(nombre,
V ’ est Parfait’) ’ n’’est pas Parfait’)

Som←0

i←1
Fin
i<=(nombre div 2)

V
V F
(nombre mod i)=0

som←som+i

A
i←i+1

105
Algorithmique et Programmation

2 Partie :
ème

Introduction à
Python
106