Académique Documents
Professionnel Documents
Culture Documents
Cours Algo
Cours Algo
*****
Institut Suprieur des tudes Technologiques de Kef
Dpartement INFORMATIQUE
*****
Matire : Algorithmique Niveau 1
Mots-cls du Support
Introduction lAlgorithmique, les Structures Simples, les Actions Simples, les
Types numrs, les Actions Alternatives, les Actions Itratives, les Tableaux
Simples, les Tableaux Multidimensionnels, les Chanes de Caractres, les
Algorithmes de Recherche, le Tri, la Programmation Procdurale, les Fonctions, les
Procdures etc.
Algorithmique Niveau 1
Sommaire
Fiche de prsentation
19
I. Dfinitions
19
19
19
20
V. La Dmarche
21
23
27
27
28
28
29
31
I. Rappel
31
31
33
34
36
40
I. Introduction
40
2/102
Algorithmique Niveau 1
40
41
IV. Laffectation
44
48
I. Problmatique
48
48
49
50
51
55
I. Problmatique
55
II. Dfinition
55
56
57
59
59
63
65
I. Problmatique
65
II. Dfinition
65
66
67
68
70
3/102
Algorithmique Niveau 1
71
76
I. Introduction
76
II. Dfinition
76
76
77
77
80
83
I. Introduction
83
83
85
85
88
I. Problmatique
88
90
94
96
98
I. Introduction
98
99
99
100
4/102
Algorithmique Niveau 1
Fiche de Prsentation
ALGORITHMIQUE ET STRUCTURES DE DONNEES 1
Enseignant Mossaab BOUKHCHIM
Population
Crdits
Volume Horaire
Pr-requis
Informatique de base
Langue
Franais
Objectifs du cours
Prsenter les principales structures de donnes ainsi que les algorithmes de traitement qui
leur sont associs.
Amener les tudiants construire de petites applications selon le principe de la
programmation structure par contrat, cest--dire en sappuyant sur les spcifications
valuations
Test N : 1 dune heure.
Devoir surveill dune heure.
Test N :2 dune heure.
Examen final crit de 2 heures sur tout le programme.
Moyens Pdagogiques
Support de cours papier.
Support de cours numrique.
Srie de travaux dirigs.
5/102
Algorithmique Niveau 1
Connatre la dfinition
dun algorithme, sa
structure gnrale et la
dmarche suivre pour
produire un algorithme.
Savoir dclarer des
variables et des
constantes, aprs avoir
compris ces nouvelles
notions.
Conditions de ralisation
Critres dvaluation de la
de la performance
performance
Etudier, comparer et
crire les structures
itratives.
Connatre et comprendre
les oprations simples
(affectation, criture et
lecture)
6/102
Algorithmique Niveau 1
Connatre le principe de
dcomposition des
problmes et saisir
limportance de
lutilisation des
procdures et fonctions.
Comprendre les
algorithmes de tri
7/102
Algorithmique Niveau 1
Elments du cours
I. Dfinitions
Connatre les concepts II. Le Matriel
indispensables pour
informatique
III. Les Logiciels
lapprentissage de
lalgorithmique.
IV. La Mthodologie
Suivre
V. La Dmarche
VI. Algorithme et
Connatre lutilit dun Algorithmique
algorithme dans la
1. Introduction
phase de production
2. Dfinitions
dun logiciel.
3. Algorithmique et
programmation
4. Les conventions
dun algorithme
Total
Mthodologies
Dure
30 min
60 min
1h30
Elments du cours
Mthodologies
Dure
30 min
Connatre la structure
dun algorithme.
I. Prsentation Sommaire
de la Structure dun
Algorithme
Connatre la notion de
variable et comprendre
son utilit.
Connatre la notion de
variable et comprendre
son utilit.
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Total
45 min
45 min
2h00
8/102
Algorithmique Niveau 1
Connatre Le type
caractre et les
oprations associes
ce type. comprendre
son utilit.
Connatre Le type
Boolen et les
oprations associes
ce type. comprendre
son utilit.
Elments du cours
I. Rappel
II. Le Type Entier
1. Dfinition
2. Reprsentation
Algorithmique
3. Les Oprations de
base sur le type Entier
III. Le Type Rel
1. Dfinition
2. Reprsentation
Algorithmique
3.. Les Oprations de
base sur le type Rel
IV. Le Type Caractre
1. Dfinition
2. Reprsentation
Algorithmique
3. Ordre dapparition
des lments du type
Caractre
4. Les Oprations de
base sur le type Caractre
V. Le Type Boolen ou
Logique
1. Dfinition
2. Reprsentation
Algorithmique
3. Oprateurs
Logiques
4. Exemple
5. Utilisation des
Oprateurs de
Comparaison
Total
Mthodologies
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Dure
45 min
45 min
45 min
45 min
3h00
9/102
Algorithmique Niveau 1
Connatre linstruction
dcriture
Connatre linstruction
daffectation
Elments du cours
I. Introduction
II. Laction de Lecture
1. Dfinition
2. Reprsentation
Algorithmique
III. Laction dcriture
1. Dfinition
2. Reprsentation
Algorithmique
IV. Laffectation
1. Dfinition
2. Reprsentation
Algorithmique
3. Exemple
4. Les Expressions
Numriques
5. Exercice
dapplication
Mthodologies
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Dure
30 min
30 min
30 min
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Exercices de TD
1h30
Total
3h00
10/102
Algorithmique Niveau 1
Elments du cours
Comprendre lintrt
de cette structure.
I. Problmatique
Connatre linstruction
conditionnelle simple.
Mthodologies
Dure
Connatre linstruction
conditionnelle deux
choix.
Connatre les
instructions
conditionnelles
imbriques.
Connatre linstruction
conditionnelle choix
multiples.
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
45 min
45 min
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
1h
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
1h
Exercices de TD
4h30
Total
8h30
11/102
Algorithmique Niveau 1
Objectif gnral (Chapitre 6 : Les Structures Rptitives Rpter Tant que Pour )
Etudier, comparer et crire les structures itratives.
Objectifs spcifiques
Comprendre lintrt
de la structure itratif et
connatre sa
signification.
Connatre la structure
itrative rpter
Connatre la structure
itrative tant que
Connatre la structure
itrative pour
Apprendre choisir
correctement une
structure bien
dtermine.
Exercices de TD
Elments du cours
I. Problmatique
II. Dfinition
Mthodologies
Dure
Total
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
Expos informel
(tableau, exemples
dapplications et Notes
de cours)
1h30
1h30
1h30
1h
6h
12h
12/102
Algorithmique Niveau 1
Elments du cours
Mthodologies
Dure
spcifiques
Comprendre
lintrt de
lapplication dun
type compos
Manipuler les
tableaux
unidimensionnels
Manipuler les
tableaux deux
dimensions.
I. Problmatique
II. Dfinition
Expos informel
(tableau et Notes de
cours)
III. Reprsentation
Algorithmique (tableau)
IV. Oprations de base
sur un tableau
V. Recherche dans un
Tableau
1. Introduction
2. Recherche
Squentielle
3. Recherche
Dichotomique
VI- Exercices
dapplication
VII. Les Tableaux deux
dimensions : Les
Matrices
1. Problmatique
2. Dfinition
3. Reprsentation
Algorithmique
4. Oprations de
base sur une Matrice
5. Exercice
dapplication
30 min
1h30min
Expos informel
(tableau, exemples
dapplications et
Notes de cours)
4h30min
Expos informel
(tableau, exemples
dapplications et
Notes de cours)
Exercices de TD
4h30
Total
13h
13/102
Algorithmique Niveau 1
Elments du cours
Mthodologies
Dure
spcifiques
Connatre le type
chane de caractre.
I. Introduction
II. Dfinition
Manipuler le type
chane de caractre.
III. Reprsentation
Algorithmique
IV. Les Oprations de
base sur les Chanes
1. Lecture dune
chane
2. Affichage
3. Initialisation
V- Les Fonctions
Prdfinies sur les
Chanes
1. La fonction
LONG
2. La fonction
CONCAT
3. La fonction POS
4. Les fonctions MAJ
et MIN
5. La fonction
SUBSTR
VI. Exercices
dapplication
Se familiariser avec
les chanes de
caractre.
Expos informel
(tableau et Notes de
cours)
30min
1h
Expos informel
(tableau, exemples
dapplications et
Notes de cours)
Expos informel
(tableau, exemples
dapplications et
Notes de cours)
1h30
Exercices de TD
1h30
Total
4h30
14/102
Algorithmique Niveau 1
Objectif gnral (Chapitre 9 : Les Types Construits Type numr, Type Enregistrement
et Type Intervalle )
Connatre les types intervalle, enregistrement et numr.
Objectifs
Elments du cours
Mthodologies
Dure
spcifiques
Connatre le type
numr.
Connatre le type
intervalle.
I. Introduction
II. Le Type numr
1. Dfinition
2. Reprsentation
Algorithmique
3. Application
Expos informel
Expos informel
(tableau, exemples
dapplications et
30 min
Notes de cours)
(tableau, exemples
30 min
dapplications et
Notes de cours)
Connatre le type
enregistrement
III. Le Type
Enregistrement
1. Dfinition
2. Reprsentation
Algorithmique
3. Accs aux
rubriques
Total
Expos informel
30 min
(tableau, exemples
dapplications et
Notes de cours)
1h30
15/102
Algorithmique Niveau 1
Elments du cours
Mthodologies
Dure
spcifiques
Comprendre
lintrt de la
dcomposition dun
problme donn.
Connatre la notion
des fonctions
Connatre la notion
des procdures
Connatre la porte
des variables
dclars.
I. Problmatique
Expos informel
(tableau et Notes de
cours)
Expos informel
(tableau, exemples
dapplications et
Notes de cours)
Expos informel
(tableau, exemples
dapplications et
Notes de cours)
Expos informel
(tableau, exemples
dapplications et
Notes de cours)
30min
1h30min
1h30min
30min
Exercices de TD
4h30
Total
11h30
16/102
Algorithmique Niveau 1
Elments du cours
Mthodologies
Dure
spcifiques
Comprendre
lintrt des
algorithmes de tri.
Connatre
lalgorithme de tri
par slection.
I. Introduction
Connatre
lalgorithme de tri
par Insertion.
Connatre
lalgorithme de tri
Bulles.
Exercices de TD
Expos informel
(tableau et Notes de
cours)
Expos informel
(tableau, exemples
dapplication et Notes
de cours)
Expos informel
(tableau, exemples
dapplication et Notes
de cours)
Expos informel
(tableau, exemples
dapplication et Notes
de cours)
30 min
30 min
30 min
30 min
30min
Total
2h30min
17/102
Introduction lAlgorithmique
Objectif
Connatre
les
concepts
indispensables
pour
lapprentissage
de
lalgorithmique.
Elments de contenu
Dfinitions
Le Matriel informatique
Les Logiciels
La Mthodologie Suivre
La Dmarche
Algorithme et Algorithmique
o Introduction
o Dfinitions
o Algorithmique et programmation
o Les conventions dun algorithme
Algorithmique Niveau 1
Chapitre I
Introduction lAlgorithmique
I. Dfinitions
Le terme informatique : linformatique est une science qui permet de traiter
automatiquement les informations.
Le terme systme informatique : un systme informatique est un ensemble de
moyens matriel et logiciels permettant de satisfaire les besoins informatiques de
lutilisateur.
19/102
Algorithmique Niveau 1
Par contre, un logiciel est plutt spcifique cest dire quil ne peut tre exploit que dans
un environnement industriel bien dtermin : un logiciel de production dans le domaine du textile
ne peut pas tre exploit dans la fabrication des pices de rechanges automobiles ou dans le
domaine de lemballage mtallique.
20/102
Algorithmique Niveau 1
V. La Dmarche
L'criture d'un programme n'est qu'une tape dans le processus de programmation comme le
montre le schma suivant :
L'analyse d'un problme pos consiste dfinir les diffrentes tapes de sa rsolution. C'est la
partie essentielle dans le processus de programmation. Elle permet de dfinir le contenu d'un
programme en termes de donnes et dactions. Une dmarche descendante permettrait de
dcomposer le problme initial en sous problmes , plus simples rsoudre. chacun de ces
derniers sera associ une spcification formelle ayant des conditions d'entre et le(s) rsultat(s)
que l'on souhaiterait obtenir. L'ensemble de ces spcifications reprsente l'algorithme.
21/102
Algorithmique Niveau 1
Dans la suite de ce cours, tous les problmes quon va rsoudre seront structurs cest
dire qui possdent lavance une solution mathmatique : rsolution dune quation du second
degr, classification ABC du stock, facturation, Bulletin de paie, etc.
Pourquoi on voque cette remarque, parce que certains problmes peuvent se prsenter dune
manire non structur : crire un algorithme qui permet de choisir quel fournisseur doit opter
pour lacquisition du matriel. Deux aspects peuvent tre retenus : loffre financire et loffre
SAV(service aprs vente) ; si le premier aspect est mesurable, le second ne peut pas ltre
objectivement ; cest pour cette raison que le problme prsent nest pas bien structur.
22/102
Algorithmique Niveau 1
23/102
Algorithmique Niveau 1
lun des points dlicats pour les rdacteurs de modes demploi : les rfrences culturelles, ou
lexicales, des utilisateurs, tant variables, un mme mode demploi peut tre trs clair pour
certains et parfaitement abscons pour dautres.
En informatique, heureusement, il ny a pas ce problme : les choses auxquelles ont
doit donner des instructions sont les ordinateurs, et ceux-ci ont le bon got dtre
tous strictement aussi idiots les uns que les autres.
3. Algorithmique et programmation
Pourquoi apprendre lalgorithmique pour apprendre programmer ? En quoi a-t-on besoin
dun langage spcial, distinct des langages de programmation comprhensibles par les
ordinateurs ? Parce que lalgorithmique exprime les instructions rsolvant un problme donn
indpendamment des particularits de tel ou tel langage. Pour prendre une image, si un
programme tait une dissertation, lalgorithmique serait le plan, une fois mis de ct la rdaction
et lorthographe. Or, vous savez quil vaut mieux faire dabord le plan et rdiger ensuite que
linverse Apprendre lalgorithmique, cest apprendre manier la structure logique dun
programme informatique. Cette dimension est prsente quelle que soit le langage de
programmation ; mais lorsquon programme dans un langage (en C, en Visual Basic, etc.) on doit
en plus se colleter les problmes de syntaxe, ou de types dinstructions, propres ce langage.
Apprendre lalgorithmique de manire spare, cest donc srier les difficults pour mieux les
vaincre.
cela, il faut ajouter que des gnrations de programmeurs, souvent autodidactes (mais
pas toujours, hlas !), ayant directement appris programmer dans tel ou tel langage, ne font pas
mentalement clairement la diffrence entre ce qui relve de la structure logique gnrale de toute
programmation (les rgles fondamentales de lalgorithmique) et ce qui relve du langage
particulier quils ont appris. Ces programmeurs, non seulement ont beaucoup plus de mal passer
ensuite un langage diffrent, mais encore crivent bien souvent des programmes qui mme sils
sont justes, restent laborieux. Car on nignore pas impunment les rgles fondamentales de
lalgorithmique Alors, autant lapprendre en tant que telle !
Un langage de programmation est une convention pour donner des ordres un
ordinateur. Ce nest pas cens tre obscur, bizarre et plein de piges subtils. a, ce sont les
caractristiques de la magie. Dave Small
24/102
Algorithmique Niveau 1
25/102
Elments de contenu
Prsentation Sommaire de la Structure dun Algorithme
Notion de Variable
Notion de Type
Notion de Constante
Algorithmique Niveau 1
Chapitre II
Les Structures de Donnes : Notions de base
I. Prsentation Sommaire de la Structure dun Algorithme
Dans un algorithme, on trouve deux parties essentielles :
Une partie dclarative contenant tous les objets qui seront impliqus par les
diffrentes actions de lalgorithme (constantes, types, variables, etc.).
Une partie rserve aux actions (en programmation, on dit les instructions) ; elle
est dlimite par les deux mots-cls Dbut et Fin.
En outre, un algorithme est caractris par son nom qui devrait tre significatif.
Algorithme nomalgo
Constante .
Type .
Partie dclarative
Variable .
Dbut
<action1>
<action2>
..
<action N>
Remarque :
Le nom dun algorithme et dune manire gnrale le nom dun objet impliqu dans les actions
de lalgorithme doivent respecter lors de leur dfinition les rgles dun identificateur qui disent :
Un identificateur doit tre significatif.
Un identificateur doit tre crit sur 8 positions (Taille <= 8 caractres).
Un identificateur doit commencer obligatoirement par une lettre.
Un identificateur ne doit pas comporter le caractre espace .
Un identificateur ne doit pas comporter de caractres spciaux autre que le tiret de
soulignement (_).
Algorithmique Niveau 1
28/102
Algorithmique Niveau 1
29/102
Elments de contenu
Rappel
Le Type Entier
Le Type Rel
Le Type Caractre
Le Type Boolen ou Logique
Algorithmique Niveau 1
Chapitre III
Les Structures de Donnes : Les Types Simples
I.
Rappel :
On a vu dans le chapitre prcdent que toute variable possde un type et on a distingu deux
familles de types : les types simples et les types composs. Dans le prsent chapitre, on va passer
en revue les types simples qui sont au nombre de quatre :
Le Type Entier.
Le Type Rel.
Le Type Caractre.
Le Type Boolen ou Logique.
II.
Le Type Entier
1. Dfinition
Le type Entier comprend un sous ensemble fini de nombres entiers, dont la taille varie en
fonction des performances techniques de la machine et celles du langage de programmation
utilis.
2. Reprsentation Algorithmique
Le type entier tant reconnu automatiquement, il nest pas ncessaire de le dclarer dans la partie
des types. Il suffit dindiquer devant le nom de la variable son type.
Algorithme nomalgo
Constante .
Type .
Variable .
Cest ici !!!!
Dbut
<action1>
<action2>
31/102
Algorithmique Niveau 1
Variable
Nomvar : Entier (Nomvar tant la variable qui sera utilise dans lalgorithme)
Si on plusieurs variables en mme temps, ce nest pas la peine de les dclarer sparment ; on
peut les regrouper en les sparant par une virgule.
Variable
Nomvar1, Nomvar2, ., NomvarN : Entier
Symbole
Exemple
Addition
Soustraction
Multiplication
Division (entire)
DIV
MOD
Remarques :
Le Reste de la division entire est not parfois par le symbole %.
On risque dans certaines oprations de dpasser les limites du type ; on dit quil y a
dpassement de capacit, ou dbordement ou en anglais Overflow.
32/102
Algorithmique Niveau 1
III.
Le Type Rel
1. Dfinition
Le type Rel comprend un sous ensemble fini de nombres rels, dont la taille varie en
fonction des performances techniques de la machine et celles du langage de programmation
utilis.
2. Reprsentation Algorithmique
Le type Rel tant reconnu automatiquement, il nest pas ncessaire de le dclarer dans la partie
des types. Il suffit dindiquer devant le nom de la variable son type.
Algorithme nomalgo
Constante .
Type .
Variable .
Cest ici !!!!
Dbut
<action1>
<action2>
Variable
Nomvar : Rel (Nomvar tant la variable qui sera utilise dans lalgorithme)
Si on plusieurs variables en mme temps, ce nest pas la peine de les dclarer sparment ; on
peut les regrouper en les sparant par une virgule.
Variable
Nomvar1, Nomvar2, ., NomvarN : Rel
33/102
Algorithmique Niveau 1
Symbole
Exemple
Addition
Soustraction
Multiplication
Division normale
IV.
Le Type Caractre
1. Dfinition
34/102
Algorithmique Niveau 1
Algorithme nomalgo
Constante .
Type .
Variable .
Cest ici !!!!
Dbut
<action1>
<action2>
.
Variable
Nomvar : Caractre (Nomvar tant la variable qui sera utilise dans lalgorithme)
Si on plusieurs variables en mme temps, ce nest pas la peine de les dclarer sparment ; on
peut les regrouper en les sparant par une virgule.
Variable
Nomvar1, Nomvar2, ., NomvarN : Caractre
Remarque :
Une variable de type caractre contient un instant donne un seul caractre. dfaut, on ne
parle plus de caractre mais de chane de caractres (voir chapitre chane de caractres).
3. Ordre dapparition des lments du type Caractre
Lapparition des diffrentes valeurs du type caractre suit lordre suivant :
0<1<2<3<4<5<6<7<8<9<A<B<Y<Z<a<b<..<y
<z<Return<< !< <#<$<%<&<<(<)<*<.</< :< ;<<<=<><
?
35/102
Algorithmique Niveau 1
Symbole
Exemple
Successeur ou Suivant
Succ ou Suiv
Prdcesseur ou Prcdent
Pred ou Prec
Remarques :
Les oprations successeur et prdcesseur respectent lordre dapparition des caractres
mentionn ci-dessus.
la fonction successeur et prdcesseur sappliquent sur des variables de type caractre ou
des constantes caractres.
Exemple : succ (A) envoie B par contre succ (A) avec A variable contenant le
caractre C renvoie D.
V.
Un type boolen dit galement logique est un ensemble qui est constitu de deux lments dont la
valeur de lun contredit celle de lautre.
Les valeurs attribues ces lments varient dun contexte un autre.
Pour reprsenter des nombres binaires, on dclare un type boolen form de 0 et 1.
Pour reprsenter une variable rponse, on dclare un type boolen form de Oui et Non.
Pour reprsenter une variable logique, on dclare un type boolen form de Vrai et Faux.
Pour reprsenter ltat dune lampe, on dclare un type boolen form de Allume et
teinte.
Pour reprsenter ltat dun interrupteur, on dclare un type boolen form de Ouvert et
Ferm.
36/102
Algorithmique Niveau 1
2. Reprsentation Algorithmique
Le type Boolen tant reconnu automatiquement, il nest pas ncessaire de le dclarer dans la
partie des types. Il suffit dindiquer devant le nom de la variable son type.
Algorithme nomalgo
Constante .
Type .
Variable .
Cest ici !!!!
Dbut
<action1>
<action2>
Variable
Nomvar : Boolen (Nomvar tant la variable qui sera utilise dans lalgorithme)
Si on plusieurs variables en mme temps, ce nest pas la peine de les dclarer sparment ; on
peut les regrouper en les sparant par une virgule.
Variable
Nomvar1, Nomvar2, ., NomvarN : Boolen
3. Oprateurs Logiques
Sur le type boolen, on applique des oprateurs logiques pour constituer une expression logique ;
ces oprateurs sont
Non
Et
Ou
En les appliquant sur des variables boolennes, voil ce que a donne :
Var1
Var2
Non Var1
Var1 Et Var2
Var1 Ou Var2
37/102
Algorithmique Niveau 1
4. Exemple
Var2 va contenir la valeur faux
Algorithme Essai
Variable
Var1, Var2 : Boolen
Dbut
Var1=vrai
Var2=Non(Var1)
Fin.
38/102
Elments de contenu
Introduction
Laction de lecture
Laction dcriture
Laction daffectation
Algorithmique Niveau 1
Chapitre IV
Les Actions Simples
I.
Introduction
On rappelle quun algorithme comporte deux parties : une partie dclarative et une partie rserve
aux actions. Parmi ces actions, on cite les actions simples qui couvrent laction de Lecture,
laction dcriture et laction dAffectation.
II.
LAction de Lecture
1. Dfinition
La lecture est une opration dentre qui seffectue des priphriques dentre (clavier, souris,
stylo optique, etc.) vers la mmoire centrale. Elle permet lutilisateur dintroduire les donnes
au programme pour quil produise les rsultats attendus.
2. Reprsentation Algorithmique
Une action de Lecture est reprsente par le terme Lire ; elle peut concerner une variable ou
plusieurs variables. Pour une variable laction de lecture ou encore la primitive de lecture doit se
prsenter comme suit : Lire (Nomvariable).
Pour plusieurs variables, deux formats de lecture peuvent tre appliqus :
soit une lecture de toutes les variables ensemble
Lire(Nomvariable1, Nomvariable2, ., NomvariableN).
soit une lecture pour chaque variable et dans ce cas on a le schma suivant :
Lire(Nomvariable1)
Lire(Nomvariable2)
Lire(NomvariableN)
Remarques :
Il est interdit de lire une constante.
Si PI=3.14 dclare comme constante, Lire (PI) est impossible.
40/102
Algorithmique Niveau 1
III.
LAction dcriture
1. Dfinition
Lcriture est une opration de sortie (de la mmoire ou du microprocesseur vers les
priphriques de sortie). Elle permet lutilisateur dafficher les rsultats dun programme sur
le(s) priphrique(s) de sortie, tels que : cran, imprimante, traceur, etc.
2. Reprsentation Algorithmique
Une action dcriture, parfois dite une primitive dcriture peut se faire :
sur une ou plusieurs variables,
sur des constantes,
sur des expressions arithmtiques et logiques,
sur des messages.
Une action dcriture peut tre mixte, cest dire quelle regroupe des variables, des constantes,
des expressions et des messages.
a) criture sur une ou plusieurs variables
Pour une variable laction dcriture ou encore la primitive dcriture doit se prsenter comme
suit : crire(Nomvariable).
crire(Nomvariable) consiste afficher le contenu de la variable Nomvariable lcran.
41/102
Algorithmique Niveau 1
crire (NomvariableN)
b) criture dune constante
Cest une opration qui consiste afficher la valeur dune constante.
crire(Valconstante) ou
crire(Nomconstante), sachant que cette constante contient la valeur Valconstante.
Exemples
crire(3.14)
crire(PI)
c) criture dune expression arithmtique ou logique
Dans certains programmes, et en vue doptimiser le nombre de variables ainsi que le nombre
dinstructions, on ralise directement une primitive dcriture sur une expression.
crire(expression)
Exemples :
crire(a+b*c) avec a,b,c des entiers
crire(a ou b et c) avec a,b,c des boolens
42/102
Algorithmique Niveau 1
Application directe
crire un algorithme qui calcule la somme de deux entiers a et b saisis partir du clavier.
Algorithme Somme
Variable a,b,S : entier
Dbut
Lire(a)
Lire(b)
S=a+b
crire(S)
Fin.
Algorithme Somme
Variable a,b : entier
Dbut
Lire(a)
Lire(b)
crire(a+b)
Fin.
Gain dune variable et dune instruction
43/102
Algorithmique Niveau 1
crire(message,Nomvariable,constante,message,.)
IV.
LAffectation
1. Dfinition
On utilise des variables pour manipuler des donnes. Il faut donc que ces variables contiennent
pralablement des valeurs, pour ce faire on leur affecte une valeur.
Laffectation se fait de la manire suivante :
V := expression
Nom de la variable
mme type
Variable
2. Reprsentation Algorithmique :
Nomvariable := Valeur
3. Exemple
crire un algorithme qui permet de saisir deux entiers puis les permute.
Solution
Cest un problme classique ; imaginez que vous dsiriez changer le contenu dun plat dans un
autre plat qui est dj plein, que faut-il faire ? il suffit de chercher un plat vide et procder
lchange. De mme dans ce problme, on va utiliser une variable dite intermdiaire.
Algorithme permute2
Variable a,b,x : entier
Dbut
Lire (a)
Lire (b)
x:= a
a:= b
b :=x
crire(a)
crire(b)
Fin.
44/102
Algorithmique Niveau 1
45/102
Algorithmique Niveau 1
5. Exercice dapplication
Remplir le tableau suivant en respectant la priorit des oprateurs ?
A
A :=1
B :=2
C :=3
X :=A+B*C
X :=(A+B)/C
X := A+B/C
46/102
Algorithmique Niveau 1
Chapitre V
Les Structures Conditionnelles
I. Problmatique
Lors du cours sur les actions simples, les problmes traits possdent des solutions lmentaires
constitues dune suite finie et ordonne dactions simples. En ralit, les problmes sont plus
complexes que a. La rsolution de certains dentre eux ne peut se faire que sous condition et
pour chaque condition un traitement spcifique sera dclench et exclura les traitements des
autres conditions. On doit alors trouver une autre structure algorithmique capable de prendre en
charge les diffrents traitements relatifs aux diffrentes conditions et den dclencher
exclusivement le traitement qui respecte une certaine condition.
Une telle structure est appele Structure Conditionnelle. On distingue plusieurs formes :
Structure Conditionnelle un seul choix.
Structure Conditionnelle deux choix.
Structure Conditionnelle imbrique.
Structure Conditionnelle choix multiple.
48/102
Algorithmique Niveau 1
3. Exercice dapplication
crire un algorithme qui permet de rsoudre une quation de 1er degr :
ax+b=0 en supposant que a >0.
Solution
Algorithme Equation1
Variable a,b,x : rel
Dbut
Lire(a)
Lire(b)
Si ( a > 0 ) Alors x -b/a Finsi
crire(x)
Fin
49/102
Algorithmique Niveau 1
3. Exercice dapplication
crire un algorithme qui permet de rsoudre une quation de 1er degr :
ax+b=0 avec b non nul.
Solution
Algorithme Equation1
Variable a,b,x : rel
Dbut
Lire(a)
Lire(b)
Si ( a > 0 ) Alors
x -b/a
crire(x)
Sinon
crire(Pas de Solutions)
Finsi
Fin
50/102
Algorithmique Niveau 1
3. Exercice dapplication
Ecrire un algorithme Mois qui lit un numro de mois et affiche son nom respectif.
Algorithme Mois
Variable
NumMois : entier
DEBUT
Lire (NumMois)
SI NumMois = 1
ALORS Ecrire(Janvier)
SINON
SI NumMois = 2
ALORS Ecrire(Fvrier)
SINON
SINON
SI NumMois = 1
ALORS Ecrire(Dcembre)
SINON Ecrire(Erreur)
FINSI
FINSI
FINSI
FINSI
FIN
51/102
Algorithmique Niveau 1
2. Reprsentation Algorithmique
Selon (nomvariable) Faire
Val1 : <Traitement1>
Val2 : <Traitement2>
..
ValN : <TraitementN>
Sinon <Traitement_erreur>
FinSelon
Remarques :
nomvariable est appele Slecteur ou Variable de choix.
Le slecteur doit tre dclar et comporter une valeur avant dtre impliqu dans le Selon.
Si pour diffrentes valeurs, le traitement est le mme, on peut les regrouper ensemble en
les sparant par des virgules :
Val1, Val2, .., ValK : <Traitement>
Val1, Val2, ., ValN doivent tre de mme type que nomvariable.
Les valeurs Val1,., ValN ne peuvent avoir que les types suivants :
o Entier
o Caractre
o Intervalle dentiers
o Intervalle de caractres.
les traitements relatifs aux valeurs peuvent comporter galement dautres structures
conditionnelles.
52/102
Algorithmique Niveau 1
3. Exercice dapplication
Reprendre lalgorithme mois :
Algorithme Mois
Variable
NumMois : entier
DEBUT
Lire (NumMois)
DEBUT
SELON NumMois FAIRE
1
: Ecrire(Janvier)
2
: Ecrire(Fvrier)
12
: Ecrire(Dcembre)
SINON: Ecrire(Erreur)
FINSELON
FIN
53/102
Dfinition
o Dfinition
o Reprsentation
o Dfinition
o Reprsentation
Algorithmique
o Excution de la Boucle
Rpter
o Exemples
Le Schma Itratif avec Tant que
o Dfinition
o Reprsentation
Algorithmique
o Excution de la Boucle Tant
que
o Exemples
Algorithmique
o Excution de la Boucle
Pour
o Exercices
Exercice rcapitulatif
Tableau Comparatif des Trois
Schmas Itratifs
Algorithmique Niveau 1
Chapitre VI
Les Structures Rptitives
I. Problmatique
Supposons quon veuille afficher les 10 premiers entiers positifs. Si on utilise le traitement le plus
simple c'est--dire le traitement squentiel on aura lalgorithme suivant :
Algorithme affiche
Dbut
Ecrire(0)
Ecrire(1)
Ecrire(2)
Ecrire(9)
Fin
Cette mthode reste raisonnable pour un petit nombre mais si on veut afficher les n
premiers entiers avec n = 1000, lalgorithme devient alors absurde et impossible crire. Pour
pouvoir crire un tel algorithme, on aura besoin dune structure qui permet de rpter une
instruction ou un groupe dinstructions. On doit alors utiliser des structures rptitives.
II. Dfinition
Une structure rptitive est une structure qui rpte un mme traitement autant de fois que
lon veut pour vue que la condition dexcution soit satisfaite. Cette structure sarrte lorsque
cette condition nest plus vrifie. Il existe trois schmas de reprsentation dune structure
rptitive savoir :
le schma Rpter
le schma Tant que
le schma Pour
Lutilisation dun tel ou tel schma dpend essentiellement de la nature du problme rsoudre.
55/102
Algorithmique Niveau 1
Remarques :
Dans une boucle Rpter, le traitement est excut au moins une seule fois quelle que soit
la valeur de la condition darrt.
Dans une boucle Rpter, on parle de condition darrt ; quant elle est atteinte, on sort de
cette boucle.
Il est indispensable dinitialiser correctement les variables de la condition darrt et de les
mettre jour la fin de chaque itration : condition ncessaire et obligatoire pour pouvoir
reboucler.
La structure Rpter est conseille surtout pour les problmes indiquant dans leur nonc
une condition darrt.
56/102
Algorithmique Niveau 1
Dbut boucle
Action
Test
Fin boucle
Remarque : Si la condition darrt reste inchange (non mise jour), on risque de boucler
indfiniment et par consquent le programme se bloque.
57/102
Algorithmique Niveau 1
Remarques :
Dans une boucle Tant que, le traitement associ la boucle peut ne pas tre excut : la
condition dexcution nest pas vrifie ds le dpart.
Dans une boucle Tant que, on parle de condition dexcution ; quant elle nest plus
vrifie, on sort de cette boucle.
Il est indispensable dinitialiser correctement les variables de la condition dexcution et
de les mettre jour la fin de chaque itration : condition ncessaire et obligatoire pour
pouvoir reboucler.
La mise jour de ces variables peut se faire soit par une lecture, soit par une affectation.
La structure Tant que est conseille surtout pour les problmes indiquant dans leur nonc
une condition dexcution.
Une condition dexcution est la ngation de la condition darrt.
3. Excution de la Boucle Tant que
On suppose quon est dj entrain dexcuter un algorithme, et on a rencontr une boucle Tant
que.
On suppose galement que les variables impliques dans la condition dexcution sont
initialises.
1re tape : On teste si la condition dexcution est vrifie ou non : si oui alors aller la 2me tape
sinon aller la 5me tape.
2me tape : On excute le traitement associ la boucle.
3me tape : On met jour les variables de la condition dexcution.
4me tape : Aller la 1re tape.
5me tape : On sort de la boucle et on continue lexcution du programme partir de la premire
instruction qui vient aprs Fin Tant que.
Dbut boucle
Test
Action
Fin boucle
Remarque : Si la condition dexcution reste inchange (non mise jour), on risque de reboucler
indfiniment et par consquent le programme se bloque.
58/102
Algorithmique Niveau 1
59/102
Algorithmique Niveau 1
60/102
Algorithmique Niveau 1
61/102
Algorithmique Niveau 1
Exemple 2 :
En utilisant les 3 schmas itratifs, on vous demande dcrire les algorithmes
correspondants au calcul du factoriel dun entier N donn.
Solution : avec le schma Pour
Algorithme Factoriel
Variable N,I,F : entier
Dbut
Lire(N)
F :=1
Pour I allant de 1 jusqu N Faire
F := F * I
FinPour
crire(F)
Fin
Solution : avec le schma Tant que
Algorithme Factoriel
Variable N,I,F : entier
Dbut
Lire(N)
F :=1
I :=1 (* initialisation *)
Tant que (I <= N) Faire
F := F * I
I := I + 1 (* mise jour *)
FinTantque
crire(F)
Fin
Solution : avec le schma Rpter
Algorithme Factoriel
Variable N,I,F : entier
Dbut
Lire(N)
F :=1
I :=1 (* initialisation *)
Rpter
F := F * I
I := I + 1 (* mise jour *)
Jusqu (I > N)
crire(F)
Fin
62/102
Algorithmique Niveau 1
Critre
Rpter (1)
Pour (3)
Au moins 1 fois
De 0 N fois
Initialisation
Mise jour
Oui, Automatique en
fonction du Pas
Condition_arrt
atteinte
Expression logique
avec ET, OU, etc.
Condition_excution non
vrifie
Expression logique avec
ET, OU, etc.
Compteur dpassant
les bornes
Une seule variable de
type Entier
Traitement
variable
Sortie de la boucle
Type de la
condition
Passage dun
schma lautre
63/102
De Val_initiale
jusuq Val_finale
Oui : Val_initiale
Le Type Tableau
Objectif
Comprendre lintrt de lapplication dun type compos
Connatre les tableaux unidimensionnels
Connatre les tableaux deux dimensions.
Elments de contenu
Problmatique
Dfinition
Reprsentation Algorithmique (tableau)
Oprations de base sur un tableau
o Initialiser un Tableau
o Remplir un Tableau
o Affichage les lments d'un tableau
o Exercice d'application
Recherche dans un Tableau
o Introduction
o Recherche Squentielle
o Recherche Dichotomique
Exercices d'application
Les Tableaux deux dimensions : Les Matrices
o Problmatique
o Dfinition
o Reprsentation Algorithmique
o Oprations de base sur une Matrice
o Exercice d'application
Algorithmique Niveau 1
Chapitre VII
Le type Tableau
I. Problmatique
Jusque l, et avec les structures de donnes simple quon a dj dfinies (entier, rel,
caractre,), on nest capable de dfinir que des variables de types simples qui, un instant
donn, ne peut contenir quune seule valeur, et laffectation dune nouvelle valeur dtruit
lancienne.
Si par exemple ou voulais reprsenter les moyennes annuelle de 50 tudiants, la
dclaration de 50 variables de type Rel est alors absurde, il sera plus commode si on avait une
structure qui puisse englober toutes ces donnes. On parlera alors du type Tableau
II. Dfinition
Un tableau est une structure qui regroupe plusieurs lments de mme type, chaque
lment est repr par un ou plusieurs indices avec lesquels on pourra accder sa valeur ou lui
en affecter une nouvelle. Chaque indice est compris entre une borne infrieure et une borne
suprieure dfinie lors de la dclaration du tableau.
Un tableau est dit vecteur si le nombre de dimension est gal 1(unidimensionnel), matrice de
dimension n si gale n>1(multidimensionnel).
Remarques :
Un tableau est constitu dun nombre finie de cases contigus e situ en mmoire centrale.
Un tableau est caractris par :
son nom
sa taille (borne infrieure et borne suprieure connues lavance)
ses lments : chaque lment est dfini par son type et son contenu.
Laccs un lment du tableau se fait laide dun indice.
65/102
Algorithmique Niveau 1
01
02
03
04
10.5
08.2
12
09.7
66/102
Algorithmique Niveau 1
67/102
Algorithmique Niveau 1
68/102
Algorithmique Niveau 1
3. Recherche Dichotomique
Pour pouvoir appliquer la recherche dichotomique, il faut que :
le tableau T soit Rempli et
le tableau soit Tri.
Il sagit dune recherche qui consiste rduire le temps de recherche dun lment X dans un
tableau T qui doit tre obligatoirement tri.
On commence par comparer X avec le contenu de llment du milieu : si X est infrieur cette
valeur alors on va continuer la recherche dans la partie gauche du tableau T avec modification de
la borne suprieure, sinon on continuera la recherche dans partie droite du tableau avec
modification de la valeur de la borne infrieure. On sarrtera quand X serait gale la valeur du
milieu ou quand on dpasse les bornes du tableau.
Algorithme Dichoto
Constante N=Val1 M= Val2
Type TabEnt = Tableau [1..N] de Entier
Variable
T : TabEnt
I,inf,sup,mil : entier
X : entier (* X est llment chercher dans le tableau *)
Dbut
Lire(X)
inf N
sup M
Rpter
mil
(inf+sup) div 2
Si X < T(mil) Alors sup
mil 1
Sinon inf
mil +1
FinSi
Jusqu (X=T(mil)) ou (inf > sup)
Fin
69/102
Algorithmique Niveau 1
70/102
A viter
Algorithmique Niveau 1
71/102
Algorithmique Niveau 1
3. Reprsentation Algorithmique
Constante
Nbr_Lig = Val1 (* Nombre de Lignes *)
Nbr_Col = Val2 (* Nombre de Colonnes *)
Type
Matrice = Tableau [1..Nbr_Lig, 1..Nbr_Col] de Type_lment_Matrice
Variable
M : Matrice
I, J : Entier (* I tant lindice des lignes et J celui des colonnes *)
Remarques
Le Type_lment_Matrice peut tre simple ou structur.
Laccs un lment de la matrice ne peut se faire quavec deux indices : un lment
est identifi par son numro de ligne et son numro de colonne.
Si M est la matrice, M(I,J) dsigne llment de M situ la Ime Ligne et la Jme
Colonne.
4. Oprations de base sur une Matrice
On va supposer que le Type_lment_Matrice est Entier
a) Initialiser une matrice
Pour I allant de 1 Nbr_Lig Faire
Pour J allant de 1 Nbr_Col Faire
M(I,J) := 0
FinPour
FinPour
b) Remplir une matrice
Pour I allant de 1 Nbr_Lig Faire
Pour J allant de 1 Nbr_Col Faire
Lire(M(I,J))
FinPour
FinPour
Remarque : La primitive Lire(M(I,J)) consiste lire partir du clavier un lment et le placer
la Ime Ligne et la Jme Colonne.
72/102
Algorithmique Niveau 1
73/102
Algorithmique Niveau 1
74/102
Algorithmique Niveau 1
Chapitre VIII
Le Type Chane de Caractres
I.
Introduction
Il sagit de trouver une structure de donnes permettant de reprsenter une suite de
caractres. Deux structures peuvent tre envisages selon le mode de lexploitation quon veut
appliquer cette suite :
Si on veut la manipuler caractre par caractre, la solution est dans ce cas facile deviner
: il suffit dutiliser un tableau de caractres.
Si on veut exploiter cette suite dans sa totalit et en un seul coup, il conviendrait alors
dutiliser ne structure de donnes capable de regrouper cette suite en une seule variable
pour la manipuler dans sa totalit. Une telle structure sappelle Chane de Caractres.
II.
Dfinition
Une chane de caractres est une structure de donnes permettant de regrouper une suite
finie de caractres dans une mme variable pour pouvoir lexploiter dans sa totalit.
Dans certains ouvrages, on dit quune chane de caractres est un tableau de caractres.
Remarque
Une chane de caractres peut tre exploite en tant que variable chane, dans ce cas on
manipule des variables chanes : on peut lire un mot en un seul coup (Lire (nom)), ou bien en tant
que tableau de caractres : parcourir la chane caractre par caractre (compter le nombre
dapparition de la lettre A dans un nom).
III.
Reprsentation Algorithmique
Type
Nom_Chaine = Chaine[Taille_Maxi]
Variable
Nom_Variable : Nom_Chaine
Remarque
Taille_Maxi dsigne la taille maximale que peut avoir une chane de caractres ; il doit tre
strictement positif.
76/102
Algorithmique Niveau 1
Exemple
Type Nom = Chaine[20]
Variable Nom1, Nom2 : Nom
On a dclar une chane Nom qui est de taille maximale 20 et deux variables Nom1 et Nom2.
Remarque
Dans certains langages de programmation et lors de la dclaration dune chane de caractres, on
peut ne pas indiquer la taille maximale. En fait, cest le langage qui sen occupe et affectera
automatiquement la taille maximale quil puisse supporter. En Pascal, cette taille est de 255.
IV.
V.
77/102
Algorithmique Niveau 1
1. La fonction LONG
Cette fonction lorsquelle est applique une chane de caractres, retourne sa taille relle
et non pas la taille maximale.
Algorithmiquement, elle est note
LONG (nom_chaine)
Exemple
CH : chaine
X : entier
CH :=ISET du kef
X := LONG(CH)
crire(LONG(CH)
Dans la variable X, on va trouver la valeur 11.
Remarque
La longueur dune chane tant un entier, on ne peut pas le mettre isol dans un algorithme ; on
doit laffecter une variable de type entier ou on doit le mettre dans une primitive dcriture.
2. La fonction CONCAT
Cette fonction permet de concatner plusieurs chanes non ncessairement de mme taille, en une
seule.
Algorithmiquement, elle est note
CONCAT (CH1,CH2,,CHN)
o les CHI sont des chanes.
Exemple
Nom : Chane
Prenom : Chane
Etudiant : Chane
Etudiant
CONCAT(Nom, Prenom)
crire(CONCAT(Nom, Prenom)
Dans la variable Etudiant, on va trouver une chane contenant le nom et le prnom ensemble.
Remarque
La concatnation de plusieurs chane est une chane , on ne peut pas la mettre isole dans un
algorithme ; on doit laffecter une variable de type Chane ou on doit la mettre dans une
primitive dcriture.
78/102
Algorithmique Niveau 1
3. La fonction POS
La fonction POS retourne la position partir de laquelle une sous-chane apparaisse dans
une chane. Dans le cas o cette sous-chane nexiste pas, elle retourne la valeur zro.
Algorithmiquement, cette fonction est note POS et le rsultat est un entier.
X := POS (nom_chane, nom_sous_chane)
X prendre pour valeur, la position partir de laquelle la sous_chane apparaisse dans la chane.
Exemple
CH := ISET de Kef
CH1 := Kef
X :=POS (CH, CH1)
On trouvera dans X la valeur 9 ; de mme pour X POS(CH,Rads), on trouvera le mme
rsultat.
Remarque
La position tant un entier, on ne peut pas la mettre isole dans un algorithme ; on doit laffecter
une variable de type entier ou on doit la mettre dans une primitive dcriture.
4. Les fonctions MAJ et MIN
Ces fonctions permettent de transformer une chane en majuscules, respectivement en
minuscules, en une chane en minuscules, respectivement en majuscules.
Algorithmiquement, on les note par
MAJ (CH) ou MIN (CH)
Exemple
CH:=set
CH:=MAJ(CH) dans ce cas CH prendra la valeur ISET
CH:=MIN(CH), on aura dans CH la valeur iset.
79/102
Algorithmique Niveau 1
5. La fonction SUBSTR
Il sagit dextraire une sous-chane de taille p partir dune position dans une chane.
Algorithmiquement, elle est note sous-chane. Pour faciliter son utilisation, on va utiliser la
convention du langage Pascal qui est SUBSTR. Cette fonction retourne une chane de caractres.
CH1 :=SUBSTR(CH, pos, p)
o
CH tant la chane principale partir de laquelle on va faire lextraction.
pos est la position partir de laquelle on va procder lextraction
p est la taille de la sous-chane extraire.
Exemple
CH :=ISET de Kef
CH1 :=SUBSTR(CH,7,4)
Dans CH1 on va trouver la sous-chane e Ke.
VI.
Exercice dapplication
80/102
Algorithmique Niveau 1
Solution
Algorithme Message_code
Type
Message = Chaine
Lettre = A..Z
Lettre1 = a .. z
Variable
Ch : Chaine
I, Nblettre : entier
Dbut
Lire(Ch)
POUR I allant de 1 LONG(Ch) Faire
Selon Ch(I) Faire (* Codage *)
a,b,.y,A,B,.,Y : Ch(I):= Succ(Ch(I))
z,Z : Ch(I):=$
: Ch(I):= *
sinon : Ch(I):=-
FinSelon
FinPour
(* Affichage du message code *)
crire(Ch)
Nblettrre:=0
(* comptage du nombre de lettres dans le message cod *)
Pour I allant de 1 LONG(Ch) Faire
Si (Ch(I) dans lettre ou dans lettre1)
Alors Nblettre:= Nblettre + 1
FinSi
FinPour
crire(Nblettre)
(* formation dune sous-chane alphabtique *)
I:=1
Ch1:=
Tant que (I <= LONG(Ch)) Faire
Si (Ch(I) dans lettre ou dans lettre1)
Alors Ch1:=CONCAT(Ch1, Ch(I)) FinSi
I:=I+1
FinTantque
crire(Ch1)
Fin
81/102
Algorithmique Niveau 1
Chapitre IX
Les Types Composs : Type Enumr, Type Enregistrement et
Type Intervalle
I. Introduction
Un type compos contient une collection dinformations rparties en plusieurs
champs, accessibles individuellement ou collectivement.
Un type compos est homogne si toutes ses donnes sont de mme type, il est
htrogne sinon.
Exemple :
Type
Jour = (lundi, mardi, mercredi, jeudi, vendredi, samedi,
dimanche)
Variable j1, j2 : jour ;
On peut crire :
j1 := mardi
j2 := dimanche
83/102
Algorithmique Niveau 1
Remarques :
Les oprateurs de comparaison sappliquent sur les diffrentes valeurs de ce type.
Exemple : lundi < mardi < mercredi < jeudi < vendredi < samedi < dimanche.
Etant donn que les valeurs dun type numr sont ordonns, on peut appliquer les
fonction successeur et prdcesseur.
Exemple : successeur (lundi) donne mardi et prdcesseur (mardi) donne lundi.
Lutilisation dun tel type assure davantage de cohrence aux donnes introduites. En
effet, dans cette exemple on ne peut pas rencontrer une journe appele Pluie : elle
nappartient pas au type Jour.
3. Application
crire un algorithme qui permet de saisir un mois (nombre entier) et afficher son correspondant.
Dans le cas o la valeur est errone, on vous demande dafficher un message derreur.
Solution
Algorithme LibMois
Type
Mois=(janvier, fvrier, mars, avril, mai, juin, juillet, aot,
septembre, octobre, novembre, dcembre)
Variable
m : entier
mm : mois
Dbut
crire(donnez la valeur du mois )
Lire(m)
Si (m < 1) ou (m>12) Alors crire (Erreur)
Sinon crire(contenu(m,Mois))
Finsi
Fin
84/102
Algorithmique Niveau 1
85/102
Algorithmique Niveau 1
2. Reprsentation Algorithmique
TYPE
Nom_type = ENREGISTREMENT
Nom_rubrique1 : type_rubrique1
Nom_rubrique2 : type_rubrique2
Nom_rubrique3 : type_rubrique3
.
.
Nom_rubriqueN : type_rubriqueN
FinEnregistrement
VARIABLE
Nom_variable : Nom_type
Remarque :
Si certaines rubriques ont le mme type, on peut les dclarer ensemble en les sparant par des
virgules et en mentionnant une seule fois le type.
Exemple : dclaration de lenregistrement tudiant.
TYPE
tudiant = ENREGISTREMENT
Nom : Chaine(20)
Prnom(30)
CIN : entier
Age : entier
FinEnregistrement
VARIABLE
E : tudiant
86/102
Algorithmique Niveau 1
Chapitre IX
Les procdures et Fonctions
I.
Problmatique
Les problmes jusque l traits peuvent tre classs dans la catgorie des problmes
faciles ; cest dire que leur rsolution se ramne une suite finie dactions simples, qui, si elles
sont correctement excutes, fourniront le(s) rsultat(s) souhait(s).
En ralit, les problmes rencontrs sont plus complexes et leur solution nest pas immdiate :
pour obtenir le rsultat final, on doit passer par des rsultats intermdiaires solutions de sous
problmes inclus dans le problme principal. Cest pour cette raison , que pour rsoudre un
problme, on doit le dcomposer en sous problmes. Si la complexit persiste, on continuera la
dcomposition jusqu arriver un niveau de dcomposition o tous les sous problmes trouvs
seront faciles rsoudre.
Ce concept de dcomposition sappelle analyse descendante ; en programmation, on parle de
programmation procdurale. Ainsi, pour chaque sous problme on va lui associer son algorithme,
lui mme on lui fait correspondre un sous-programme.
On distingue alors deux catgories de sous-programmes : Les fonctions et les procdures.
Dans le mme ordre dides, Descartes avait dit : Diviser les difficults en autant de parcelles
quil se peut afin de les mieux rsoudre .
88/102
Algorithmique Niveau 1
Exemple de dcomposition :
A
A2
A1
A21
A22
Dbut A
A1
Dbut A2
A21
A22
Fin A2
Fin A
Les carrs reprsentent des actions primitives, les cercles reprsentent des actions complexes.
On a donc dcompos lalgorithme en plusieurs sous algorithmes appels modules. Le
recours ce type de dcomposition permet de structurer la solution et de loptimiser puisquun
module peut tre appel une ou plusieurs fois.
Exemple dappels multiples :
Dbut Algorithme
Action 1
Action 2
Action 1
Action 3
Fin
La rsolution dun algorithme se fait en suivant lalgorithme suivant :
Dbut
Dcomposer le problme en sous-problmes
Pour chaque sous-problme Faire
Si Solution vidente
Alors Ecrire le morceau dalgorithme
Sinon Analyser le sous-problme
Fin Si
Fin Pour
Fin
89/102
Algorithmique Niveau 1
Exemple:
On veut crire un algorithme permettant dafficher les trois premiers tudiants par ordre de
mrite, sachant quils ont pass trois preuves diffrentes.
Pour le rendre plus facile rsoudre, ce problme sera dcompos selon le schma suivant :
La dcomposition dun problme en sous problmes faciles rsoudre, permet dobtenir des
algorithmes qui sont :
Lisibles et faciles comprendre.
Facile maintenir : dtection rapide de lerreur et correction sans difficults.
Facile faire voluer : ajout facile dautres fonctionnalits.
Rutilisable : dans la rsolution dun problme, 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 ncessaire.
II.
Les Fonctions
1. Dfinition
Une fonction est sous-programme contenant un certain nombre dinstructions, qui retourne un
rsultat unique affect son nom. On peut dire autrement : Une fonction est un sous programme
qui retourne obligatoirement une valeur. Cette dernire sera stocke dans une variable qui porte le
mme nom que la fonction.
90/102
Algorithmique Niveau 1
Remarques
une fonction retourne un rsultat unique implique quune fonction possde
obligatoirement un type.
dans une fonction, on trouve des instructions qui produisent le rsultat ; ce dernier doit
tre affect en fin de traitement au nom de la fonction.
2. Reprsentation algorithmique
Algorithme nomalgo
Constante ..
Type
Fonction nomfonct(param1:type1,param2:type2,,paramN :TypeN) : typefonction
<partie dclarative>
Dbut (*fonction*)
<partie instructions>
nomfonct := Rsultat
(* le rsultat gnr par les instructions doit tre affect au nom de la fonction *)
Remarques :
param1, param2, , paramN sont appels paramtres : ce sont des variables qui
permettent la fonction de communiquer avec lextrieur.
Ces paramtres dclars lors de la dfinition de la fonction sont appels paramtres
formels.
On peut trouver certaines fonctions sans paramtres ; on dclarera alors la fonction de la
manire suivante : Fonction nomfonct() : typefonction.
Les paramtres de la fonction ne doivent jamais tre lus lintrieur de la fonction sans
que lnonc le prcise.
91/102
Algorithmique Niveau 1
Exemple
crire une fonction qui retourne la valeur absolue dun entier N.
Solution
Fonction Val_abs(N : entier) : entier
Variable a : entier
Dbut
Si (N > 0) Alors a := N
Sinon a := -N
FinSi
Val_abs := a (* affecter le rsultat a au nom de la fonction :
Val_abs *)
Fin
3. Appel de la fonction
Lappel de la fonction ne peut pas apparatre tout seul dans le programme appelant. En effet, si
dans un programme on appelle la fonction moyenne pour les rels a et b uniquement par son
nom, on obtient
Dbut (* programme appelant *)
Lire(a)
Lire(b)
Moyenne(a,b) ???????????
Fin
Or, Moyenne(a,b) est un rel et on na jamais vu dans un programme un rel qui se promne tout
seul !!.
Il faut donc soit mettre ce rel dans une variable de mme type en faisant une affectation, soit
afficher ce rel laide de la primitive dcriture. En fait, lappel dune fonction est une
expression, dont la valeur est le rsultat retourn par cette fonction ; son appel doit alors se faire
soit dans une affectation soit dans une criture.
Nomvar := nomfonct(var1, var2,, varN) ou bien
crire(nomfonct(var1,var2,..,varN)
92/102
Algorithmique Niveau 1
Remarques :
Nomvar et nomfonct doivent avoir le mme type.
On doit avoir autant de paramtres formels (param1, param2, , paramN) que de
paramtres utiliss par le programme appelant (var1, var2,., varN).
Les paramtres utiliss dans le programme appelant sont appels paramtres effectifs.
Lordre des paramtres formels doit tre respect lors de lappel : les varI doivent
correspondre aux paramI.
Si on revient lexemple moyenne, on doit le corriger comme suit :
Algorithme Calcul (* programme appelant *)
Variable a,b : rel
Fonction Moyenne(x : rel, y : rel) : rel
Dbut
Moyenne =(x+y)/2
Fin
Dbut (* programme appelant *)
Lire(a)
Lire(b)
crire(Moyenne(a,b))
Fin
Remarques :
Le programme qui appelle une fonction ou une procdure sappelle programme appelant.
Le programme (fonction ou procdure) qui est appel par un programme appelant est dit
programme appel.
93/102
Algorithmique Niveau 1
III.
Les Procdures
1. Dfinition
Une procdure est un sous-programme qui peut produire zro ou plusieurs rsultats.
2. Reprsentation algorithmique
Algorithme nomalgo
Constante ..
Type
<partie dclarative>
Dbut (*procdure*)
<partie instructions>
Fin (*fin procdure*)
Dbut (* nomalgo *)
<instructions et appel de la procdure>
Fin (* nomalgo *)
Remarques :
param1, param2, , paramN sont appels paramtres : ce sont des variables qui
permettent la procdure de communiquer avec lextrieur.
Ces paramtres dclars lors de la dfinition de la procdure sont appels paramtres
formels.
On peut trouver certaines procdures sans paramtres ; on dclarera alors la fonction de la
manire suivante : Procdure nomproc().
Les paramtres de la procdure ne doivent jamais tre lus lintrieur de la procdure
sans que lnonc ne lindique.
94/102
Algorithmique Niveau 1
Exemple
crire une procdure permettant dafficher la somme de deux entiers.
Solution
Procdure aff_somme(a :entier, b :entier)
Variable S : entier
Dbut
S := a + b
crire(S)
Fin
3. Appel de la procdure
la diffrence dune fonction, une procdure est appele par son nom et ses paramtres
effectifs, dans le programme appelant.
Nomproc(var1, var2, ., varN)
Exemple
Algorithme affiche
Variable x,y : entier
Procdure aff_somme(a :entier, b :entier)
Variable S : entier
Dbut (*proc*)
S := a + b
crire(S)
Fin (*proc*)
Dbut (*algo*)
crire(donnez un entier x : )
Lire(x)
crire(donnez un entier y : )
Lire(y)
(* appel de la procdure aff_somme *)
aff_somme(x,y)
Finalgo
Remarques
On doit avoir autant de paramtres formels (param1, param2, , paramN) que de
paramtres utiliss par le programme appelant (var1, var2,., varN).
Les paramtres utiliss dans le programme appelant sont appels paramtres effectifs.
Lordre des paramtres formels doit tre respect lors de lappel : les varI doivent
correspondre aux paramI.
95/102
Algorithmique Niveau 1
IV.
La porte dune variable est ltendue du programme dans laquelle la variable est reconnue et
peut tre par consquent utilise. Une variable peut tre dfinie de deux faons dans un
programme qui fait appel dautres sous-programmes : elle peut tre locale ou globale.
1. Variable Locale
Une variable locale a une porte qui se limite dans le programme ou le sous-programme dans
lequel est dfinie. Elle ne peut tre ni vue, ni utilise, par les autres sous-programmes.
2. Variable Globale
Une variable globale a une porte qui stend sur la structure gnrale du programme. Elle est
reconnue dans tout le programme Une variable globale est prcde par le terme Globale lors de
sa dclaration.
Remarque :
Par dfaut, une variable est dfinie comme locale.
Exemple
Algorithme principal
Variable g5 : entier
Globale G : entier
Fonction Test1(p1 :entier, p2 :entier) : entier
Variable g1 : entier
Dbut
g1:= p1*p2
G :=p1+p2
Test1:= G-g1
Fin
Procdure Test2(p3:entire, RES p4:entier)
Variable g2:entier
Globale G3 : entier
Dbut
g2:= p3*2
G3:=2*g2
G:=G3-g2
P4:=G3*G
Fin
Dbut (* principal *)
Test2(5,g5)
g5:=Test1(G,30)
g5 := G+G3+g5
crire(g5)
Finalgo
96/102
Algorithmique Niveau 1
Chapitre IX
Les Algorithmes de Tri
I.
Introduction
Trier = Ordonner = Classer=To sort (en anglais)
Lopration de trier consiste ordonner un ensemble dlments selon un critre bien dtermin
(appel aussi cl) et suivant une relation dordre (croissant ou dcroissant).
Il existe deux types de tri :
Tri interne : Applicable sur des donnes stockes en mmoire centrale, il correspond
gnralement un tri de tableaux ayant nimporte quel type de base (vecteurs ou matrices)
Tri externe : Applicable sur des donnes stockes en mmoire auxiliaire (disque dur), il
correspond gnralement un tri de fichier (exp : fichier Excel)
Dans le cadre de notre cours, on sintressera aux algorithmes de tri internes sur des
tableaux unidimensionnels (vecteurs) (En fait, le tri externe consiste stocker le contenu des
fichiers en mmoire centrale et appliquer alors des algorithmes de tri interne) et on va voquer
trois techniques de tri qui sont :
Tri par Slection
Tri par Insertion
Tri Bulles
98/102
Algorithmique Niveau 1
II.
puis changer la valeur de cet lment avec le premier lment du tableau. Le traitement doit se
poursuivre en cherchant le minimum parmi ceux qui restent : partir du deuxime lment du
tableau, puis faire lchange avec le deuxime lment jusqu atteindre T [n-1] et T[n].
2. Algorithme
Algorithme Tri_Slection
Constante
n : entier
Type
Tab_Entier = Tableau[1..n] de Entier
Variable
Min, ind, temp, i : entier
T : Tab_Entier
Dbut
Pour i allant de 1 (n-1) Faire
min := ind
Pour i allant de (ind+1) n Faire
Si (T(i) < T(min)) Alors min
i FinSi
FinPour
Temp := T(ind)
T(ind) := T(min)
T(min) := temp
FinPour
Fin
III.
1. Principe
On insre les lments un par un en les plaant correctement : on insre le second lment sa
place dans le sous tableau constitu du premier lment, on insre ensuite le troisime lment du
tableau sa place dans le sous tableau constitu du premier et du deuxime lment et ainsi de
suite jusquau dernier lment.
99/102
Algorithmique Niveau 1
2. Algorithme
Algorithme Tri_Insertion
Constante
n : entier
Type
Tab_Entier = Tableau[1..n] de Entier
Variable
i, j, aux : entier
T : Tab_Entier
Dbut
Pour i allant de 2 n Faire
aux := T(i)
j :=(i-1)
Tant que ( j > 0 ) et ( T(j) > aux ) Fair
T(j+1):=T(j)
J :=j-1
FinTantque
T(j+1) := aux
Finpour
Fin
IV.
Le Tri Bulles
1. Principe
Cette technique de tri consiste balayer tout le tableau en comparant les lments adjacents et en
les changeant sils ne sont pas dans le bon ordre. Un seul passage ne dplacera un lment
donn que dune position, mais en rptant le processus jusqu ce quaucun change ne soit
ncessaire.
100/102
Algorithmique Niveau 1
2. Algorithme
Algorithme Tri_Bulles
Constante
n : entier
Type
Tab_Entier = Tableau[1..n] de Entier
Variable
Permute : Boolen
i, temp : entier
T : Tab_Entier
Dbut
Rpter
permute :=faux
Pour i allant de 2 n Faire
Si (T(I-1) > T(i)) Alors
Permute :=vrai
Temp :=T(i-1)
T(i-1):= T(i)
T(i) :=temp
FinSi
FinPour
Jusqu (Non(permute))
Fin
101/102
Algorithmique Niveau 1
*****
Supports et Rfrences Bibliographiques
DUCHATEAU C., Images pour programmer (Vol 1), DUCHATEAU C., Images pour
programmer. Apprendre les concepts de base. Bruxelles : De Boeck-Wesmael, 1990
Mdia graphie
Sites Internet
[1]
Titre
URL
Langue
[2]
Titre
URL
Langue
Hobbes world
http://www.hobbesworld.com/algorithmes/
Franaise
[3]
Titre
URL
Langue
Les tris
http://asi.insa-rouen.fr/~fdelorme/cours-tris/
Franaise
[4]
Titre
URL
Langue
102/102