Vous êtes sur la page 1sur 63

Rpublique Tunisienne

Ministre de lenseignement suprieur et recherche scientifique


Institut Suprieur des Etudes Technologique du Kef

Support de cours

ALGORITHMIQUE &
STRUCTURES DE DONNEES 1
Support de cours adress aux tudiants de la premire anne licence applique
Technologies de l'Informatique

Ralis par :Hamdi Mohamed


Olfa Arfaoui

Anne universitaire : 2011-2012

Algorithmique et Structure de donnes 1


Prface

Ceci est un travail ralis au sein du dpartement informatique de lISET du Kef en


2011/2012 et mis jour en 2013/2014 qui a pour objectif principal de mettre la disposition
des tudiants des ISETs, un support d'assistance permettant de bien assimiler les concepts
thoriques de lalgorithmique et structure de donnes 1, et d'valuer le degr de
comprhension et de connaissance atteint par l'tudiant.

La structure et le contenu des chapitres de ce document ont t synchroniss avec le


contenu du programme tabli par la Direction Gnrale des tudes technologiques. Le cours
met l'accent sur les concepts et techniques adquats pour rsoudre un problme structur selon
la logique algorithmique.
Le cours est subdivis en huit chapitres:

Chapitre 1 : Notions Fondamentales ;

Chapitre 2 : Les structures conditionnelles ;

Chapitre 3 : Les structures itratives ;

Chapitre 4 : Les chaines de caractres ;

Chapitre 5 : Les procdures et les fonctions ;

Chapitre 6 : Les tableaux ;

Chapitre 7 : Les Enregistrements ;

Chapitre 8 : Les Fichiers.

Algorithmique et Structure de donnes 1

Sommaire

PRESENTATION DU COURS............................................................................................... 1
BUT DU COURS : OBJECTIFS GENERAUX ET SPECIFIQUES .................................. 2
CHAPITRE 1 : NOTIONS FONDAMENTALES ................................................................ 9
I.
II.
III.
IV.
V.
VI.
VII.

DEFINITIONS .................................................................................................................... 9
DEMARCHE DECRITURE DALGORITHMES....................................................................... 9
CONSTANTES ET VARIABLES............................................................................................ 9
TYPES ............................................................................................................................ 10
LES EXPRESSIONS .......................................................................................................... 11
LES INSTRUCTIONS DE BASE .......................................................................................... 12
STRUCTURE GENERALE DUN ALGORITHME ............................................................... 14

CHAPITRE 2 : LES STRUCTURES CONDITIONNELLES........................................... 17


I. INTRODUCTION .............................................................................................................. 17
II. LES STRUCTURES CONDITIONNELLES SIMPLES ............................................................... 17
III. LES STRUCTURES CONDITIONNELLES MULTIPLES .......................................................... 20
CHAPITRE 3 : LES STRUCTURES ITERATIVES ......................................................... 24
I.
II.
III.
IV.
V.

INTRODUCTION .............................................................................................................. 24
BOUCLE POUR ............................................................................................................. 24
LA BOUCLE TANT QUE ............................................................................................... 26
LA BOUCLE REPETER JUSQUA ........................................................................... 27
PASSAGE DUNE STRUCTURE ITERATIVE A UNE AUTRE .................................................. 28

CHAPITRE 4 : LES CHAINES DE CARACTERES......................................................... 30


I.
II.
III.
IV.

INTRODUCTION .............................................................................................................. 30
LE TYPE CARACTERE ..................................................................................................... 30
LE TYPE CHAINE DE CARACTERES .................................................................................. 31
PROCEDURES ET FONCTIONS STANDARDS SUR LES CHAINES .......................................... 32

CHAPITRE 5 : LES PROCEDURES ET LES FONCTIONS ........................................... 35


I. INTRODUCTION .............................................................................................................. 35
II. PROCEDURE................................................................................................................... 35
III. FONCTIONS .................................................................................................................... 38
CHAPITRE 6 : LES TABLEAUX ........................................................................................ 40
I. INTRODUCTION .............................................................................................................. 40
II. TABLEAUX UNIDIMENSIONNELS .................................................................................... 40
III. TABLEAUX MULTIDIMENSIONNELS ................................................................................ 46
CHAPITRE 7 : LES ENREGISTREMENTS ..................................................................... 49
I. INTRODUCTION .............................................................................................................. 49
II. SYNTAXE ....................................................................................................................... 49
III. MANIPULATION DES VARIABLES DE TYPE ENREGISTREMENT ......................................... 50

Algorithmique et Structure de donnes 1


CHAPITRE 8 : LES FICHIERS........................................................................................... 53
I.
II.
III.
IV.

INTRODUCTION .............................................................................................................. 53
DEFINITION ................................................................................................................... 53
LES FICHIERS SEQUENTIELS ........................................................................................... 54
LES FICHIERS TEXTE ...................................................................................................... 57

REFERENCES BIBLIOGRAPHIQUES ............................................................................. 59

Algorithmique et Structure de donnes 1

Prsentation du cours
Domaine de formation : Sciences et technologies

Mention

TI

Mention : technologies de linformatique (TI)

Spcialit

TC

Parcours : Tronc Commun(TC)

Semestre

S1

Crdit : 4

Coeff : 4

UNITE DENSEIGNEMENT (UE) :


ALGORITHMIQUE ET STRUCTURE DE DONNEES I

Elment constitutif

Algorithmique

Vol. Horaire/Semestre

et Cours TD

structures de donnes 45

TP

22.5

1.5

Coefficient
4

Crdits Evaluation
4

Contrle
Continu

67.5

1
Ventilation / Semaine

3
4.5

Mots-Cls
Algorithme, Structures de contrle, Tableau, Matrice, Chane, Fonction, Procdure,
Rcursivit, Tri, Enregistrement et Fichier.

Pr-requis
Nant.

Elments de contenu

Les Pralables lalgorithmique.

Actions simples : Lecture, Ecriture et Affectation, Structures Alternatives : les


schmas Si et Selon.

Structures Rptitives (Boucles) : Rpter, Tant que et Pour, Les Types Tableau,
Matrice et Chane de caractres, Les Algorithmes de Recherche : Squentielle et
Dichotomique, Les Fonctions et les Procdures, Les Algorithmes de Tri et les types
Enregistrement et Fichier.

Moyens et outils pdagogiques

Supports : Rsum du cours, TD.

Algorithmique et Structure de donnes 1

But du cours : objectifs gnraux et spcifiques


ALGORITHMIQUE ET STRUCTURES DE DONEES 1
Chapitre

Objectifs

Les lments du

Objectifs

gnraux

cours

spcifiques

Connaitre la

dfinition dun
algorithme et son

importance.

Lintrt des

Comprendre cest

algorithmes.

quoi un algorithme,

Dfinition dun

connaitre son intrt,

algorithme.

son utilit dans la

Dmarche de

phase de production

ralisation dun

dun logiciel ainsi que

algorithme

la dmarche de sa
ralisation.

Chapitre 1 :

Connatre la

Les variables

Savoir dclarer des

notion de

les constantes

variables et des

variable et

Types des variables,

constantes, aprs

comprendre

type Entier, type

avoir

son utilit

Rel, type caractre,

compris ces nouvelles

type Boolen

notions.

Priorit des

Connatre les types

Oprations

simples et les

Oprations

oprations

Arithmtiques

dfinies sur ces types.

Oprations Logiques

Connaitre les

Notions

Fondamentales

diffrentes priorits
des oprations
Les instructions

Dfinition dune

Connaitre la notion

instruction

dinstruction.

Instruction de lecture

Apprendre

Instruction dcriture

manipuler les

Linstruction

instructions simples

daffectation

(affectation, lecture,

simples

criture)

Algorithmique et Structure de donnes 1


Connaitre la

structure gnrale

structure gnrale

Ralisation des

dun algorithme

Algorithmes laide

dun algorithme.

dinstructions
simples.

Maitriser les
TD

notions vues en
cours
Connaitre la

Introduction

structure alternative

Connaitre les

Alternative simple et

structures

complte

conditionnelles 1 ou

problmatique des
problmes 2 ou
plusieurs
traitements
possibles.
Chapitre 2 :
les structures
conditionnelles

Connatre les
structures
conditionnelles et

2 choix (sifin si,

crire des

si sinonfin si)

algorithmes en

structure de choix

utilisant ces

Connaitre les
structures

nouvelles

conditionnelles

notions.

choix multiples (selon


(slecteur) faire, et
les si imbriqus)

Maitriser les
TD

notions vues en
cours
Comprendre

Introduction

lintrt
Chapitre 3 : Les
structures
itratives

de la structure

Comprendre le besoin
des boucles

La structure Pour

Connaitre la syntaxe

itratif et connatre

de la boucle Pour et

sa

les conditions de son

signification.

utilisation.

Algorithmique et Structure de donnes 1

La structure Tant

Connaitre la syntaxe

queFaire

de la boucle Tant que


et les conditions de
son utilisation.

la structure

Connaitre la syntaxe

RpterJusqu

de la boucle Rpter
et les conditions de
son utilisation.

choix dune structure

Daprs lnonc du

itrative

problme ltudiant
doit savoir quelle est
la structure itrative la
mieux adapter pour la
rsolution du
problme.

Maitriser les
TD

notions vues en
cours

Introduction

Le type caractre

Mieux connaitre le
type caractre,
connaitre les
fonctions standards
sur les caractres.

Chapitre 4 : Les
chaines de
caractres

Connatre le type
chane de caractre
et les manipuler.

type chaine de

Se familiariser avec

caractres

les chaines de

opration sur les

caractres, appliquer

chaines de caractres

les fonctions et les

Procdures et

procdures standards

Fonctions standards

sur les chaines de

sur les chaines de

caractres.

caractres

Algorithmique et Structure de donnes 1


Maitriser les
TD

notions vues en
cours
Comprendre la

Introduction

Connaitre la notion de

ncessit de la

module

dcomposition

(programmation par

dun problme en

module).

sous problmes.

Chapitre 5:

Raliser des

Les procdures

Maitriser la notion de

Les Fonctions

procdure, connaitre

les procdures

algorithmes en le

la signification de

et les fonctions

dcomposant en

passage de paramtres

modules

et les diffrents
modes de passages de
paramtres.
Maitriser la notion de
fonctions.
Connaitre la
diffrence entre
procdure et fonction.

Maitriser les
TD

notions vues en
cours
Comprendre

Introduction

Comprendre la

lintrt des

difficult utiliser un

tableaux.

grand nombre de
variables.

Tableaux

Comprendre quest

unidimensionnels

quun tableau ainsi

Reprsentation

que ses

Algorithmique

caractristiques.

Accs un lment
Savoir manipuler les

Algorithmique et Structure de donnes 1

Chapitre 6 :
les tableaux

Connaitre la
notion de type

compos.
Manipuler des

tableaux uni et
bidimensionnels.

du tableau

tableaux : dclarer,

Oprations de bases

remplir et afficher des

sur les tableaux

tableaux

Remplissage dun

Comprendre la notion

tableau

de recherche.

Affichage dun

Maitriser les deux

tableau

techniques de

Recherche dans un

recherche suivantes :

tableau

recherche squentielle

Recherche

et recherche par

squentielle

dichotomie.

Recherche par
dichotomie

Algorithme de tri

Comprendre la notion

dun tableau

de tri.

Tri par Slection

Maitriser le tri par

Tri par Insertion

slection, par

Tri Bulles

insertion et le tri
bulles

Les Tableaux deux

Comprendre la notion

dimensions : Les

de matrice.

Matrices

Comprendre la
diffrence entre
matrice et tableau.
Savoir manipuler des
matrices.

Maitriser les
TD

notions vues en
cours

Introduction

Comprendre la
notion de type
compos

Comprendre lintrt
des types composs

Manipulation des

Comprendre la notion

variables de type

dEnregistrement.

Algorithmique et Structure de donnes 1


htrogne

enregistrements

Manipuler des
Enregistrements

Chapitre 7 : Les

(dclaration, lecture,

Enregistrements

criture, affectation et
comparaison entre
deux
enregistrements).
Maitriser les

TD

notions vues en
cours
Comprendre le

Introduction

Connaitre les

besoin et lintrt

Dfinition

diffrentes

aux fichiers et la

organisations des

sauvegarde

fichiers ainsi que les

permanente des

diffrents modes

donnes

daccs

Chapitre 8 :
Les Fichiers

Les Fichiers

Se familiariser avec

Squentiels

les fichiers

Manipulation des

squentiels et

Fichiers Squentiels

apprendre les
manipuler.

Les fichiers textes

Connaitre les fichiers


texte et les manipuler

Maitriser les
TD

notions vues en
cours

Algorithmique et Structure de donnes 1

Objectifs

Savoir dclarer des variables et des constantes


Manipuler les instructions simples
Ecrire des algorithmes complets

Algorithmique et Structure de donnes 1

Chapitre 1 : Notions Fondamentales


Dfinitions

I.

1. Dfinition 1
Le mot algorithme vient du nom latinis du mathmaticien perse Al-Khawarizmi,
surnomm le pre de l'algbre .
Le domaine qui tudie les algorithmes est appel l'algorithmique.
2. Dfinition 2
L'algorithme est le rsultat d'une dmarche logique de rsolution d'un problme pour la mise
en uvre pratique sur ordinateur et afin d'obtenir des rsultats concrets.

3. Dfinition 3
Un algorithme dcrit une succession d'oprations qui, si elles sont fidlement excutes,
produiront le rsultat dsir.

Dmarche dcriture dalgorithmes

II.

Pour rsoudre un problme on commence par identifier les donnes, les rsultats recherchs
et par quel moyen on peut obtenir les rsultats partir des donnes. Cest ltape danalyse du
problme qui aboutit un procd de rsolution appel algorithme (figure I.1).

Problme

Analyse

Algorithme

Figure. I.1 : Dmarche dcriture dun algorithme

Constantes et variables

III.

Les constantes et les variables identifient les donnes manipules dans un algorithme. Ces
identificateurs doivent commencer par une lettre suivie de chiffres ou de lettres. Le choix dun
nom significatif pour les identificateurs permet daugmenter la lisibilit des algorithmes.
1.

Constantes

Une constante est une donne dont la valeur reste fixe tout au long de lexcution dun
programme.

Exemple :
Pi = 3.14
TVA = 0.18

Algorithmique et Structure de donnes 1


2.

Variables

Une variable est un identificateur auquel on assigne une valeur. La variable peut changer de
valeur durant lexcution dun programme. Une variable est identifie par un nom, une valeur
et un type.

Types

IV.

Le type attribu une variable permet de dfinir lensemble de valeurs que peut prendre la
variable ainsi que les oprations quon peut appliquer sur celle-ci.
Les principaux types utiliss en algorithmique sont :
-

Le type entier

Le type rel

Le type caractre

Le type logique ou boolen

La syntaxe de dclaration est la suivante :


Variable 1, Variable 2, : Type
1.

Le type entier

Ce type dsigne les entiers relatifs et supporte les oprations suivantes :


-

Addition : +

Soustraction : -

Multiplication : *

Division entire : DIV

Modulo (reste de division) : MOD

Exemples :

2.

15 div 6 = 2

15 mod 6 = 3

15 * 6 = 90

15 6 = 9

15 + 6 = 21
Le type rel

Ce type dsigne les valeurs appartenant R et supporte les oprations suivantes :


-

Addition : +

Soustraction : -

Multiplication : *

Division : /

10

Algorithmique et Structure de donnes 1


Exemples :

15.2 + 6.0 = 21.2

15.2 - 6.0 = 9.2

15.2 * 6.0 = 91.2

15.2 / 6.0 = 2.53

3.

Le type caractre

Ce type dsigne les caractres majuscules ("A" "Z"), minuscules ("a" "z"), numriques
("0" "9") et spciaux ("!", "?",":", "&", "#", ).
Les oprateurs dfinis sur ce type sont :
-

gal : =

Diffrent : #

Infrieur : <

Infrieur ou gal : <=

Suprieur : >

Suprieur ou gal : >=

La comparaison entre les caractres se fait selon leurs codes ASCII :


Exemple :
< 0 < 1 < A < B < a < b < {

4.

Le type logique ou boolen

Les variables de ce type peuvent prendre seulement une des deux valeurs :
"VRAI" ou "FAUX".
Ces variables sont utilises pour valuer une condition.
Les oprations de base dfinies sur ce type sont : la ngation (NON), lintersection (ET) et
lunion (OU).

V.

NON (A)

A ET B

A OU B

VRAI

VRAI

FAUX

VRAI

VRAI

VRAI

FAUX

FAUX

FAUX

VRAI

FAUX

VRAI

VRAI

FAUX

VRAI

FAUX

FAUX

VRAI

FAUX

FAUX

Les expressions
Une expression est la combinaison entre des constantes et des variables laide doprateurs
arithmtiques ou logiques. Lexpression obtenue exprime un calcul ou une relation.

11

Algorithmique et Structure de donnes 1


1.

Les expressions arithmtiques

Lordre dvaluation des expressions arithmtiques se fait partir des rgles de priorits sur
les oprateurs allant du plus prioritaire au moins prioritaire :

signe ngatif

parenthses ( )

puissance ^

multiplication et division * et /

addition et soustraction + et -

Remarque :
Si dans une expression lordre dvaluation entre deux ou plusieurs oprateurs est le mme,
lvaluation se fait de gauche droite.
2.

Les expressions logiques

Une expression logique exprime une condition qui peut tre formule laide :
-

de variables et de constantes relies par des oprateurs relationnels (<, >, =, <=, >=, #)

de variables et de constantes logiques relies par des oprateurs logiques (NON, ET, OU)

La priorit des oprateurs logiques est la suivante allant du plus prioritaire au moins
prioritaire :

NON

ET

OU

La priorit des oprateurs relationnels est la suivante allant du plus prioritaire au moins
prioritaire :

>

>=

<

<=

Les instructions de base

VI.

1.

La lecture

Lopration de lecture permet la rception de donnes de lutilisateur partir de priphriques


dentre (clavier), pour les ranger ensuite dans des cases mmoires rserves aux variables.

12

Algorithmique et Structure de donnes 1


Syntaxe :
LIRE (variable1 [[, variable2] ])
Exemple :
LIRE (A) qui permet dattribuer une valeur la variable A.
Lcriture

2.

Permet de communiquer un rsultat ou un message lutilisateur via un priphrique de sortie


(cran, imprimante, )
Syntaxe :
ECRIRE (paramtre1 [[, paramtre2]])
Paramtre = variable | expression | constante
Constante = nombre | message
Exemple1 :
ECRIRE ("La rsultat de 3 +2 est : ", 3+2)

Message

expression

ECRIRE ("La moyenne est", Moy)

Variable
Exemple2 :
Quelle sera le rsultat de l'excution des instructions suivantes:

A a

Matiere Algo

Ecrire(A)

Ecrire( "A")

Ecrire(Matiere)

Solution :

3.

Algo
Laffectation

Lopration daffectation permet de charger une valeur dans une variable. La valeur peut tre
une constante, la valeur dune autre variable ou le rsultat dune expression.

13

Algorithmique et Structure de donnes 1


Syntaxe :
Variable1 variable2 | expression | constante
Remarques :

A gauche dune affectation ne peut apparatre quune variable. Les constantes et les
expressions sont interdites.

Aprs une affectation la valeur de la variable gauche de laffectation est crase et


remplace par la valeur droite.

Exemple :
A 5
B3
CBA

Structure gnrale dun algorithme

VII.

ALGORITHME nom_algorithme
CONST
{Dfinition des constantes}
VAR
{Dclaration de variables}
DEBUT
{Suite dinstructions}
FIN

Exemple :
1.
ALGORITHME Hello_world
DEBUT
ECRIRE ("Hello World")
FIN
2.
ALGORITHME total
CONST
coefficient = 3
VAR
x, t : entier

14

Algorithmique et Structure de donnes 1


DEBUT
ECRIRE ("donner un entier")
LIRE (x)
t x * coefficient
ECRIRE ("Le total est = ", t)
FIN

15

Algorithmique et Structure de donnes 1

Objectifs
Manipuler les structures conditionnelles simples
Manipuler les structures conditionnelles multiples

16

Algorithmique et Structure de donnes 1

Chapitre 2 : Les Structures Conditionnelles


Introduction

I.

Souvent les problmes ncessitent l'tude de plusieurs situations qui ne peuvent pas tre
traites par les squences d'actions simples.
Puisqu'on a plusieurs traitements, on est amen choisir un traitement parmi deux ou
plusieurs.
Le choix de lun de ces traitements nest pas possible avant lexcution puisquil dpend
dune condition do la notion de traitement conditionnel.
On distingue deux types de structures conditionnelles :

les structures conditionnelles simples (si)

les structures conditionnelles multiples (selon)

Les structures conditionnelles simples

II.
1.

Forme simple

Syntaxe :
SI <condition> ALORS
<Squence dinstructions>
FIN SI

Dans cette primitive les instructions ne sont excutes que si la condition est vrifie
(figure II.1).

SI
Condition

FAUX

VRAI
Squence dinstructions
Suite de lalgorithme
Figure. II.1 : Instruction conditionnelle simple

Exemple :
Le tarif dun bus est de 0.550 DT pour les voyageurs de plus de 6 ans. Les voyageurs gs de
moins de 6 ans bnficient dune rduction de 50%.
Ecrire un algorithme qui lit lge du voyageur et qui affiche le prix de son ticket.

17

Algorithmique et Structure de donnes 1


Solution :
ALGORITHME tarif_ticket_bus
CONST
Tarif_base = 0.550
VAR
age : entier
tarif : rel
DEBUT
tarif Tarif_base
ECRIRE ("Donner lge du voyageur : ")
LIRE (age)
SI (age < 6) ALORS
tarif tarif * 0.5
FIN SI
ECRIRE ("Le voyageur doit payer, tarif, "DT")
FIN
2.

Forme alternative

Syntaxe :
SI <Condition> ALORS
<Squence dinstructions 1>
SINON
<Squence dinstructions 2>
FIN SI

Cette primitive permet dexcuter la squence dinstruction 1 si la condition est


vrifie, sinon elle excute la squence dinstructions 2.
SI
VRAI

FAUX

Condition

Squence dinstructions 1

Squence dinstructions 2

Suite de lalgorithme

Figure. II.2 : Instruction conditionnelle alternative

18

Algorithmique et Structure de donnes 1


Exemple 1 :
Ecrire un algorithme qui permet de lire un nombre rel partir du clavier, et dire s'il est
positif ou strictement ngatif.
Solution :
ALGORITHME signe_posi_negat
VAR
a : rel
DEBUT
ECRIRE ("Donner un nombre : ")
LIRE (a)
SI (a < 0) ALORS
ECRIRE (a, " est ngatif ")
SINON
ECRIRE (a, " est positif ")
FINSI
FIN
Remarque :
Lun ou les deux blocs dinstructions de linstruction si peuvent contenir dautres instructions
si on parle alors dinstructions si imbriques.
Exemple 2:
Ecrire un algorithme qui permet de lire un nombre rel partir du clavier, et dire s'il est
positif, ngatif ou nulle.
Solution :
ALGORITHME signe_posi_negat_null
VAR
a : rel
DEBUT
ECRIRE("Donner un nombre ")
LIRE(a)
SI (a< 0) ALORS
ECRIRE(a, " est ngatif ")
SINON
SI (a > 0)ALORS
ECRIRE(a, " est positif ")

19

Algorithmique et Structure de donnes 1


SINON
ECRIRE (a, "est nulle")
FINSI
FINSI
FIN

Les structures conditionnelles multiples

III.

Cette structure est appele aussi choix multiple ou slective car elle slectionne entre
plusieurs choix la fois, et non entre deux choix alternatifs (le cas de la structure SI).
Syntaxe :
SELON <slecteur> FAIRE
liste de valeurs 1 : <Squence dinstructions 1>
liste de valeurs 2 : <Squence dinstructions 2>
.
liste de valeurs n : <Squence dinstructions n>
SINON
<Autre squence dinstructions>
FIN SELON
Remarques :

Le slecteur peut tre une variable ou expression de type scalaire (le rsultat est un
entier ou un caractre)

La structure SELON value le "slecteur", compare celui-ci respectivement avec les


valeurs dans les listes de valeurs. En cas d'galit avec une valeur, les actions
correspondantes, qui sont devant cette valeur seront excutes.

liste de valeurs (i) peut y avoir une seule valeur, une suite de valeurs spares par des
virgules et/ou un intervalle de valeurs.

Le slecteur doit avoir le mme type que les valeurs dans les liste de valeurs.

Le type de ces valeurs ne doit tre, ni rel ni chane de caractres.

Aprs avoir trait la suite d'actions correspondante, l'excution se poursuit aprs le


FIN.

Exemple :
Ecrire un algorithme qui lit un chiffre de 0 9 puis affiche le chiffre en toute lettre.

20

Algorithmique et Structure de donnes 1


Solution :
ALGORITHME chiffre
VAR
chiffre : entier
DEBUT
ECRIRE ("donner un chiffre")
LIRE (chiffre)
SELON chiffre FAIRE
0 : ECRIRE ("Zro")
1 : ECRIRE ("Un")
2 : ECRIRE ("Deux")
3 : ECRIRE ("Trois")
4 : ECRIRE ("Quatre")
5 : ECRIRE ("Cinq")
6 : ECRIRE ("Six")
7 : ECRIRE ("Sept")
8 : ECRIRE ("Huit")
9 : ECRIRE ("Neuf")
SINON
ECRIRE ("valeur errone")
FIN SELON
FIN
Remarque :
Le mme traitement peut tre crit laide dinstructions si imbriqu mais lalgorithme
devient trs lourd.
ALGORITHME chiffre
VAR
chiffre : entier
DEBUT
ECRIRE ("donner un chiffre")
LIRE (chiffre)
SI chiffre = 0ALORS
ECRIRE ("Zro")
SINON

21

Algorithmique et Structure de donnes 1


SI chiffre = 1ALORS
ECRIRE ("Un")
SINON
SI chiffre = 2ALORS
ECRIRE ("Deux")
SINON
SI chiffre = 3 ALORS
ECRIRE ("Trois")
SINON

FIN SI
FIN SI
FIN SI
FIN SI
FIN

22

Algorithmique et Structure de donnes 1

Objectifs
Manipuler les structures itratives (pour, Tant Que, rpter jusqu)
Savoir comment passer dune structure itrative une autre.

23

Algorithmique et Structure de donnes 1

Chapitre 3 : Les Structures Itratives


Introduction

I.

Il est bien rare que dans un programme, il n'y ait pas ncessit de rpter une action un certain
nombre de fois... on parle de squence rptitive ou itrative.
Le nombre ditration peut tre connu lavance ou non. Dans ce dernier cas, larrt de
litration est dclench par une condition sur ltat des variables dans le programme.

Boucle POUR

II.
1.

Syntaxe

POUR c DE vi A vf [PAS p] FAIRE


Traitement
FIN POUR
O

2.

c : une variable de type entier qui forme le compteur de la boucle

vi : la valeur initiale du compteur c

vf : la valeur finale du compteur c

p : le pas ou lincrment de la boucle de mme type que c


Principe de fonctionnement

A lentre de la boucle le compteur c est initialis vi ensuite le corps de la boucle (itration)


est excut. A la fin de chaque itration c est incrment. Ce processus se rpte jusqu ce
que c dpasse vf (Figure. III.1).
POUR

c vi

VRAI

c <= vf

Traitement

FAUX

Suite de lalgorithme

c vi + p

Figure. III.1 : Boucle POUR

24

Algorithmique et Structure de donnes 1

Remarques :

Si vi vf alors p > 0

Si vi vf alors p < 0

La valeur par dfaut du pas p est 1

Le nombre ditrations dune boucle POUR est connu lavance (= vf vi + 1)

Une boucle pour peut tre excute 0, 1 ou n fois

Exemple1 :
On veut afficher les nombres (>0) pairs et infrieurs 20 :
Solution 1 :
POUR i DE 1 A 20 FAIRE
SI (i MOD 2 = 0) ALORS
ECRIRE (i)
FIN SI
FIN POUR
Solution 2 :
POUR i DE 1 A 10 FAIRE
ECRIRE (2*i)
FIN POUR
Solution 3 :
POUR i DE 1 A 20 PAS 2 FAIRE
ECRIRE (i)
FIN POUR
Solution 4 :
POUR i DE 20 A 1 PAS -2 FAIRE
ECRIRE (i)
FIN POUR
Exercice :
Ecrire un algorithme qui permet de lire les notes de 20 tudiants et de calculer la moyenne de
la classe pour une matire donne.
ALGORITHME moyenne
VAR
m, n : rel

25

Algorithmique et Structure de donnes 1


DEBUT
m0
POUR i DE 1 A 20 FAIRE
Ecrire ("donner une note")
LIRE (n)
mm + n
FIN POUR
ECRIRE ("La moyenne de la classe est :",m/20)
FIN

La boucle TANT QUE

III.
1.

Syntaxe

TANT QUE condition FAIRE


Traitement
FIN TQ
O condition est une expression ou une variable a valeur boolenne.
2.

Principe de fonctionnement
TANT
QUE

Condition?

FAUX

VRAI
Traitement

Suite de lalgorithme

Figure. III.2 : Boucle TANT QUE

La boucle TANT QUE est excute aussi longtemps que la condition est vrifie. Si ds le
dbut la condition est fausse le traitement ne sera excut aucune fois. Une boucle tant que
sexcute 0 ou plusieurs fois.
Remarques :

Il doit y avoir une action dans le traitement qui modifie la valeur de la condition.

Toute boucle TANT QUE peut tre transform en une boucle POUR

Exercice
Rcrire lalgorithme qui permet de lire les notes de 20 tudiants et de calculer la moyenne de
la classe pour une matire donne, laide dune boucle TANT QUE :
ALGORITHME moyenne

26

Algorithmique et Structure de donnes 1


VAR
m, n : rel
DEBUT
m0
i1
TANT QUE i<= 20 FAIRE
Ecrire ("donner une note")
LIRE (n)
mm + n
ii+1
FIN TQ
ECRIRE ("La moyenne de la classe est :",m/20)
FIN

La boucle REPETER JUSQUA

IV.
1.

Syntaxe

REPETER
Traitement
JUSQU'A condition
O condition est expression ou une variable a valeur boolenne.
2.

Principe de fonctionnement

Le traitement de cette boucle est excut au moins une fois et il est ensuite rpt jusqu' ce
que la condition de sortie soit vrifie.
REPETER

Traitement

Condition?
FAUX
VRAI
Suite de lalgorithme
Figure. III.3 : Boucle TANT QUE

Remarque :

Dans cette boucle, le traitement est excut au moins une fois avant l'valuation de la
condition d'arrt.

27

Algorithmique et Structure de donnes 1

Exercice
Rcrire lalgorithme qui permet de lire les notes de 20 tudiants et de calculer la moyenne de
la classe pour une matire donne, laide dune boucle REPETER :
ALGORITHME moyenne
VAR
m, n : rel
DEBUT
m0
i1
REPETER
Ecrire ("donner une note")
LIRE (n)
mm + n
ii+1
JUSQU'A (i>20)
ECRIRE ("La moyenne de la classe est :",m/20)
FIN
Remarque :

La condition de la boucle REPETER est linverse de la condition de la boucle TANT


QUE.

V.

Passage dune structure itrative une autre


Le passage dune boucle rpter ou tantque une boucle pour nest
possible que si le nombre de parcours est connu lavance.

Lors du passage dune boucle pour ou tantque une boucle rpter , faire
attention aux cas particuliers (le traitement sera toujours excut au moins une fois).

28

Algorithmique et Structure de donnes 1

Objectifs
Manipuler les types caractre et chaine de caractres
Connaitre les fonctions standards des caractres
Connaitre les fonctions et procdures standards des chaines de caractres

29

Algorithmique et Structure de donnes 1

Chapitre 4 : les chanes de caractres


Introduction

I.

Autre que les types de donnes dfinies dans le chapitre I, il y a le type chane de caractre.

Le type caractre

II.
1.

Dfinition

Ce type sapplique tous les caractres du code ASCII (American Standard Code for
Information Interchange).
La liste comprend :

Les lettres : A Z et az

Les chiffres : 09

Les caractres spciaux : / ; * ; ? ; & ; etc.

Les caractres de contrle : <Retour Chariot> ; <Echap> ; etc.

Chaque caractre est dfini par son numro dordre unique compris entre 0 et 255
2.

Fonctions standards sur les caractres

Asc(c) : retourne le code ASCII du caractre c .

Exemple :
i Asc(A)
i contiendra 65

Car(i) : retourne le caractre dont le code ASCII est gal i.

Exemple :
c Car(65)
c contiendra A

Succ(c) : retourne le successeur du caractre c .

Exemple :
c Succ(a)
c contiendra b

Pred(c) : retourne le prdcesseur du caractre c.

Exemple :
c Pred(b)
c contiendra a

Majus(c) :retourne le majuscule du caractre c.

Exemple :
c Majus(a)

30

Algorithmique et Structure de donnes 1


c contiendra A
Exercice :
Ecrire un algorithme qui lit 10 caractres puis affiche leurs codes ASCII, leurs prdcesseurs,
leurs successeurs et lquivalent en majuscule de leurs successeurs.
Solution :
Algorithme manip_caract
Var
c : Caractre
Dbut
Pour i de 1 10 faire
Ecrire (Entrer un caractre: )
Lire(c)
Ecrire (asc (c))
Ecrire (pred(c))
Ecrire (succ(c))
Ecrire (majus(succ(c)))
Fin Pour
Fin.

Le type chane de caractres

III.

Une chane est une suite de caractres.


Une chane qui ne contient aucun caractre est appele chane vide.
1.

Dclaration dune chane

Var
ch : Chane
chn : Chane[20]

La variable ch peut contenir jusqu 255 caractres alors que chn peut contenir au
maximum 20.

2.

Oprations sur les chanes de caractres


a. la concatnation

Cest lassemblage de deux chanes de caractres en utilisant loprateur + .


Exemple
chn1 Algo
chn2 rithmique

31

Algorithmique et Structure de donnes 1


chn3 chn1+chn2

la variable chn3 contiendra Algorithmique

b. les oprateurs relationnels (>, >=, <, <=, =, #)


Il est possible deffectuer une comparaison entre deux chanes de caractres, le rsultat est de
type boolen. La comparaison se fait caractre par caractre de la gauche vers la droite selon
le code ASCII.
Exemples

Lexpression (b > a) est vraie puisque le code ASCII de b est (98) est suprieur
celui de a est (97)

Lexpression ( = ) est fausse (le vide est diffrent du caractre espace).

c. accs un caractre dans une chane


Pour accder un caractre de la chane, il suffit dindiquer le nom de la chane suivi dun
entier entre crochets qui indique la position du caractre dans la chane.
Exemple
chn Algorithmique
c chn[7]

la variable c contiendra le caractre t.

En gnral, chn[i] dsigne le ime caractre de la chane chn.

Procdures et fonctions standards sur les chanes

IV.
1.

Procdures

Efface (Ch, P, N) : efface N caractres de la chane Ch partir de la position P


donne.

Exemple :
ch Algorithmique
efface (ch,1,4)
ch contiendra Algo

Insert (Ch1, Ch2, P) Insre la chane Ch1dans la chane Ch2 partir de la position P.

Exemple:
Ch2 Algo
Ch1 rithmique
insert(Ch1,Ch2,5)
Ch2 contiendra Algorithmique

Convch (Nb, Ch) Converti le nombre Nb en une chane de caractres Ch.

32

Algorithmique et Structure de donnes 1


Exemple :
Nb = 255
convch(Nb,ch)
ch contiendra la chane 255
2.

Fonctions

Long (Ch) : retourne la longueur de la chane Ch.

Exemple :
ch Algorithmique
n Long(ch)
n contiendra 13

Copie (Ch, P, N) : copie N caractres de chane Ch partir de la position P.

Exemple :
ch1 Algorithmique
ch2 Copy(ch1,7,6)
ch2 contiendra hmique

Position (Ch1, Ch2) : retourne la position de la premire occurrence de la chane Ch1


dans la chane Ch2.

Exemple :
ch1 or
ch2 Algorithmique
n Position(ch1,ch2)
n contiendra 3

33

Algorithmique et Structure de donnes 1

Objectifs

Connaitre la notion de sous-programme


Manipuler les procdures et les fonctions

34

Algorithmique et Structure de donnes 1

Chapitre 5 : Les Procdures et les Fonctions


Introduction

I.

Pour les problmes complexes il est toujours conseill de les dcomposer en des sousproblmes de complexit infrieure.
Les sous-problmes peuvent a leurs tours tre dcomposs jusqu atteindre des traitements
lmentaires facile implmenter.
Ce type de programmation sappelle programmation modulaire ou chaque module traite un
sous-problme et qui peut tre soit une procdure soit une fonction.

Procdure

II.

Une procdure est un sous algorithme ayant une structure semblable celle dun algorithme et
qui possde un ensemble de paramtres et permet de transmettre un ensemble de rsultats.

1.

Syntaxe

PROCEDURE nom_procdure ([liste des paramtres])


CONST
{Dfinition des constantes}
VAR
{Dclaration de variables}
DEBUT
{Suite dinstructions}
FIN
Remarque :

Les variables dclares dans le bloc VAR dune procdure sont appeles variables
locales et ne peuvent tre utilises qu lintrieure de celle-ci.
Appel dune procdure

2.

PROCEDURE diviseurs (N : entier)


VAR
i : entier
DEBUT
POUR i de 1 N faire
SI (N mod i =0) ALORS
ECRIRE (i)

35

Algorithmique et Structure de donnes 1


FIN SI
FIN POUR
FIN
ALGORITHME afficher_diviseurs
VAR
n :entier
DEBUT
ECRIRE ("donner un entier")
LIRE (n)
diviseurs(n)
FIN
Remarques :

La structure dune procdure est similaire celle dun algorithme.

Elle possde une entte, une partie dclarative et un corps.

Le paramtre N de la procdure est un paramtre formel, alors que le paramtre n de la


procdure dans lalgorithme principale est un paramtre effectif.

Lors de lappel dune procdure il faut respecter le nombre, lordre et le type des
paramtres.

Une variable globale est dclare au dbut de lalgorithme. Elle peut tre utilise dans
le corps principal de lalgorithme ou par les diffrents modules.

3.

Modes de passage des paramtres

La substitution des paramtres effectifs aux paramtres formels sappelle passage de


paramtres. Elle correspond au transfert dinformation entre lalgorithme et la procdure
appele. Les paramtres des procdures peuvent tre de trois types : donnes, rsultats,
donnes-rsultats.

Un paramtre donne est une information ncessaire pour le fonctionnement de la


procdure. Il ne subit aucun changement au cours de lexcution de la procdure.

Un paramtre rsultat est un paramtre qui est laboutissement dun traitement. Sa


valeur initiale na aucune signification.

Un paramtre donne-rsultat est un paramtre qui est la fois une donne et un


rsultat c'est--dire que sa valeur sera change au cours de lexcution de la procdure.

36

Algorithmique et Structure de donnes 1

Pour chaque type de paramtre on indique dans le tableau ci-dessus le mode de


passage. Le passage par variable est mentionn laide du mot cl VAR :
Type de paramtre

Sens de transfert

Mode de passage

Donne

AlgorithmeProcdure

Par valeur

Rsultat

AlgorithmeProcdure

Par variable

Donne-rsultat

AlgorithmeProcdure (Par adresse)

Exemple :
Soit les deux procdures change suivantes :
PROCEDURE echange1 (a, b : entier)
VAR
c : entier
DEBUT
ca
ab
bc
FIN
PROCEDURE echange2 (VAR a, b : entier)
VAR
c : entier
DEBUT
ca
ab
bc
FIN

Aprs lappel de la procdure change1 les deux paramtres de la procdure gardent


leurs valeurs initiales puisque le passage est un passage par valeur.

Aprs lappel de la procdure change2 les deux paramtres de la procdure changent


leurs valeurs (permutation) puisque le passage est un passage par variable.

Dans le mode de passage par valeur la procdure travaille sur une copie des
paramtres effectifs alors que dans le cas du passage des paramtres par variable la
procdure travaille sur les paramtres originaux.

37

Algorithmique et Structure de donnes 1

Fonctions

III.

Une fonction est une procdure particulire qui possde un seul rsultat. Une fonction possde
en plus un type de retour qui le type de son rsultat.
1.

Syntaxe

FONCTION nom_fonction([liste des paramtres]) : type_de_la_valeur_de_retour


{Dclarations}
DEBUT
{Suite dinstructions}
Nom_fonctionrsultat
FIN
Remarques :

Dans une fonction tous les paramtres sont passs par valeurs.

Le nom de la fonction joue un double rle il est nom et variable locale la fois.

Dans le corps de la fonction il doit exister une instruction qui affecte le rsultat au
nom de la fonction.
Appel dune fonction

2.

Lappel dune fonction se fait toujours dans une expression.


Exemple :
FONCTION min (a, b : entier) : entier
DEBUT
SI a<b ALORS
min a
SINON
min b
FIN SI
FIN
Exemple :
x2
y6
zmin(x,y)
ECRIRE (min(x, y))
SI (min(x, y)>0) ALORS

38

Algorithmique et Structure de donnes 1

Objectifs

Manipuler des tableaux uni et multidimensionnels.


Utiliser les algorithmes de tri.
Utiliser les algorithmes de recherche.

39

Algorithmique et Structure de donnes 1

Chapitre 6 : Les Tableaux


Introduction

I.

On dsire lire les 20 notes dalgorithmique de notre classe et dafficher ensuite les notes
suprieure la moyenne de la calasse dans la matire.
Ceci suppose quon doit sauvegarder toutes les notes pour calculer la moyenne et faire ensuite
la recherche de celles suprieure la cette moyenne.
Ce genre de traitement comporte deux inconvnients majeurs :

Le nombre de variables de lalgorithme devient trs lev.

On doit rcrire le mme traitement (comparaison la moyenne et affichage ventuel)


pour chaque variable.

Lalgorithmique offre une solution qui sappelle tableau qui permet de combiner
plusieurs valeurs de mme type sous un mme nom permettant ainsi doptimiser leur
traitement.

Tableaux unidimensionnels

II.

Un tableau une dimension peut tre considr comme un vecteur (mathmatique). Le


tableau est une structure de donnes est une structure de donnes constitue dun nombre fini
dlments de mme type et directement accessibles par leurs indices.
1.

Dclaration

Pour dfinir une variable de type tableau, il faut prciser :

le nom (identifiant du tableau)

lindice (gnralement de type entier ou caractre)

le type des lments (entier, rel, caractre, etc.)

Exemple :
On veut dclarer un tableau T de dix entiers :

T : Tableau [1 .. 10] de entier

Remarque :
On peut aussi dclarer un tableau comme suit :
CONST
N=10
TYPES
Tab=Tableau [1 .. N] de entier
VAR
T : Tab

40

Algorithmique et Structure de donnes 1


Accs aux lments dun tableau

2.

Soit T : Tableau [1 .. 10] de entier

T[4] est le 4me lment du tableau

T[i] est le ime lment du tableau avec 1i10

T[2*j+1] permet daccder llment numro (2*j+1)

Pour chaque lment du tableau on peut appliquer toutes les oprations de base quon peut
appliquer sur le type de base :

T[3]T[4]

LIRE (T[i])

ECRIRE (T[2*i])

3.

Oprations usuelles
a. Remplissage

Le remplissage dun tableau se fait lment par lment. Le tableau est pass par variable
puisquil va tre chang par la procdure :
Remarque :

On va utiliser la 2me mthode de dclaration du tableau

PROCEDURE remplissage (VAR T : tab)


VAR
i : entier
DEBUT
POUR i de 1 N FAIRE
ECRIRE ("Donner llment n : ", i , " du tableau")
LIRE (T[i])
FIN POUR
FIN
b. Affichage
Laffichage du tableau se fait galement lment par lment. Le passage du tableau se fait
par valeur puisque le tableau est un paramtre donn :
PROCEDURE affichage (T : tab)
VAR
i : entier
DEBUT

41

Algorithmique et Structure de donnes 1


POUR i de 1 N FAIRE
ECRIRE (T[i])
FIN POUR
FIN
c. Recherche
La recherche dun lment dans un tableau consiste retourner la position de sa premire
occurrence :
FONCTION recherche (T : tab, E :entier) : entier
VAR
i, pos : entier
DEBUT
pos 0
i0
Rpter
ii + 1
Jusqu ((T[i] = E) ou (i > N))

SI (T[i] = E) ALORS
Posi
FIN SI
Recherchepos
FIN
Tri dun tableau

4.

Le tri dun tableau est lorganisation de tous ces lments dans un ordre croissant ou
dcroissant.
Il existe plusieurs algorithmes qui permettent de trier les lments dun tableau. Parmi ces
algorithmes on va tudier :

Le tri par slection.

Le tri bulle.

Le tri par insertion.

a. Le tri par slection (par minimum)


Le principe de fonctionnement consiste :

Chercher lindice du plus petit lment du tableau T [1 .. N] et permuter llment


trouv avec llment dindice 1.

42

Algorithmique et Structure de donnes 1

Chercher lindice du plus petit lment du tableau T [2 .. N] et permuter llment


trouv avec llment dindice 2.

Faire le mme travail pour le reste du tableau

Enfin chercher lindice du plus petit lment du tableau T [N-1 .. N] et permuter


llment trouv avec llment dindice (N-1).

PROCEDURE Tri_Selection (VAR T : tab)


VAR
i, j, x, min : entier
DEBUT
POUR i de 1 (n-1) FAIRE
mini
POUR j de (i+1) n FAIRE
SI T[j] < T[min] ALORS
minj
FIN SI
FIN POUR
xT[i]
T[i]T[min]
T[min]x
FIN POUR
FIN
b. Le tri bulle
Le principe de fonctionnement consiste :

Parcourir les lments du tableau de 1 (n1), si llment i est suprieur llment


(i+1), alors on les permute.

Le programme sarrte lorsquaucune permutation nest ralisable aprs un parcours


complet du tableau.

PROCEDURE Tri_Bulle (Var T : Tab)


VAR
i, x : Entier
permut : Boolen
DEBUT
Rpter

43

Algorithmique et Structure de donnes 1


permutFaux
POUR i de 1 (n-1) FAIRE
SI (T[i] > T[i+1]) ALORS
xT[i]
T[i] T[i+1]
T[i+1] x
permut Vrai
FIN SI
FIN POUR
Jusqu (permut = Faux)
FIN
c. Le tri par insertion.
Le principe de fonctionnement consiste prendre les lments du tableau un par un et insrer
chacun dans sa bonne place de faon que les lments traits forment un sous-tableau tri.

Comparer et permuter si ncessaire T[1] et T[2] de faon placer le plus petit dans la
case du tableau dindice 1.

Comparer et permuter si ncessaire llment T[3] avec ceux qui le prcdent dans
lordre (T[2] puis T[1]) afin de former une sous-tableau tri T[1..3].

Faire le mme travail pour le reste du tableau.

Enfin comparer et permuter si ncessaire llment T[n] avec ceux qui le prcdent
dans lordre (T[n-1], T[n-2], T[n-3], ) afin dobtenir un tableau tri.

PROCEDURE Tri_Insertion(Var T : Tab)


VAR
i, j, x, pos : Entier
DEBUT
POUR i de 2 n FAIRE
x T[i]
ji
TANTQUE (j>0 et T[j-1]>x) FAIRE
T[j]T[j-1]
j j-1
FIN TQ
T[j]x

44

Algorithmique et Structure de donnes 1


FIN POUR
FIN
5.

Recherche dichotomique

Soit T un tableau contenant n lments tris dans le sens croissant, on veut crire une
procdure qui affiche lindice de la premire apparition dun lment x dans le tableau sil
existe.
Le principe de fonctionnement consiste :

Diviser lintervalle de recherche par 2 chaque itration.

Soient premier et dernier les extrmits gauche et droite de lintervalle dans lequel on
cherche la valeur de x.

on calcule M, lindice de llment mdian :

M = (premier + dernier) div 2

Il y a 3 cas possibles :

x = T[M] : llment de valeur x est trouv, donc ce cas la recherche est termine

x < T[M] : llment x, sil existe, se trouve dans lintervalle [premier .. M-1]

x > T[M] : llment x, sil existe, se trouve dans lintervalle [M+1 .. dernier]

Refaire ce travail jusqu ce que lon trouve x ou que lintervalle de recherche soit
vide (premier > dernier).

PROCEDURE Rech_dicho(T : Tab , x : entier)


VAR
premier, dernier, m : Entier
trouve : Boolen
DEBUT
premier 1
dernier n
trouve Faux
Rpter
m (premier + dernier) div 2
SI (x < T[m]) ALORS
dernier m - 1
SINON
SI (x > T[m]) ALORS
premier m + 1

45

Algorithmique et Structure de donnes 1


SINON
trouve Vrai
FIN SI
FIN SI
Jusqu ((trouve = Vrai) ou (premier > dernier))
SI (trouve = Vrai) ALORS
Ecrire (lindice de ", x, "est = ,m)
SINON
Ecrire (Elment introuvable)
FIN SI
FIN

Tableaux multidimensionnels

III.
1.

Dfinition

Soit n le nombre de dimensions, la dclaration du tableau se prsente alors comme suit :


T : Tableau [i1 .. j1, i2 .. j2, , in .. jn] de valeur
Cette dfinition est quivalente :
T : Tableau [i1 .. j1] de tab1
Tab1=Tableau [i2 .. j2] de tab2

Tabn-1=Tableau [in .. jn] de valeur


Accs un lment : T [p1, p2, , pn]
Remarque :

Les tableaux deux dimensions implmentent les matrices.

Cette matrice peut tre dfinie de la faon suivante :


CONST
n=10
m=10
Types
Mat : Tableau [1..n,1..m] de Entier
VAR
M : Mat
2.

Remplissage dune matrice

PROCEDURE remplir_Mat (VAR M : Mat)

46

Algorithmique et Structure de donnes 1


VAR
i, j : entier
DEBUT
POUR i de 1 n FAIRE
POUR j de 1 m FAIRE
ECRIRE ("donner llment ",i , " ", j, "de la matrice")
LIRE (M[i, j])
FIN POUR
FIN POUR
FIN

47

Algorithmique et Structure de donnes 1

Objectifs
Manipulation des types composs

48

Algorithmique et Structure de donnes 1

Chapitre 7 : Les Enregistrements


Introduction

I.

On a vu jusquici que les variables peuvent tre de type simple tel que les caractres et les
rels.
On a vu ensuite quun tableau permet de rassembler un ensemble dlments de mme type
sous un mme nom.
Un enregistrement permet de rassembler plusieurs informations de types diffrents sous un
nom unique.
Le type enregistrement forme donc un type compos.

Syntaxe

II.
Types

Nom_enreg=ENREG
Var 1 : type 1
Var 2 : type 2

Var i : type i

Var n : type n
FINENREG
VAR
Enrg1 : Nom_enreg
Remarques :

La dclaration ci-dessus constitue une dfinition dun nouveau type Nom_type de type
enregistrement.

Les Var i constituent les membres de lenregistrement qui sont appels champs.

Les champs peuvent tre de type simple, Tableau ou enregistrement.

Exemple :
date=ENREG
jour : entier
mois : chane
annee : entier
FIN ENREG
Var

49

Algorithmique et Structure de donnes 1


dt :date

Manipulation des variables de type enregistrement

III.

On ne peut pas rfrencs globalement un enregistrement dans une instruction car ils
sont composs dlments de types diffrents. Par contre, il est possible de faire
rfrence chaque lment dun enregistrement.

Pour cela, il est ncessaire de prciser le nom (identificateur) de lenregistrement,


suivi dun suffixe indiquant lidentificateur du champ concern.

Les deux identificateurs sont spars par un point.

Exemple :
dt.jour 12
dt.moisjuin
dt.annee 2012
Remarques :

Il est possible daffecter un enregistrement un autre de mme type:

Exemple :
date1, date2 : date
date1 date2

date1.jourdate2.jour
date1.moisdate2.mois
date1.anneedate2.annee

on peut effectuer une comparaison galitaire ou ingalitaire entre deux


enregistrements de mme type :

Exemple :

SI (d1=d2) Alors

Exercice :
On veut reprsenter un tudiant identifi par un matricule, un nom, un prnom et une date de
naissance.
1. Dfinir la structure de donn reprsentant un tudiant et une date.
2. Ecrire une procdure qui permet de remplir un tableau de 20 tudiants.
Solution :
1.
TYPE
date=ENREG
jour : entier

50

Algorithmique et Structure de donnes 1


mois : chane
annee : entier
FIN ENREG
etudiant=ENREG
matricule : entier
nom : chane
prenom : chane
date_nais : date
FIN ENREG
Tab = Tableau [1..20] de etudiant
2.
PROCEDURE remplir_tab_et(VAR T : Tab)
VAR
i : entier
DEBUT
POUR i de 1 20 FAIRE
ECRIRE ("donner les informations de ltudiant n", i)
ECRIRE ("donner le matricule :")
LIRE (T[i].matricule)
ECRIRE ("donner le nom :")
LIRE (T[i].nom)
ECRIRE ("donner le prnom :")
LIRE (T[i].prenom)
ECRIRE ("donner le jour de naissance :")
LIRE (T[i]. date_nais.jour)
ECRIRE ("donner le mois de naissance :")
LIRE (T[i]. date_nais.mois)
ECRIRE ("donner lanne de naissance :")
LIRE (T[i]. date_nais.annee)
FIN POUR
FIN

51

Algorithmique et Structure de donnes 1

Objectifs
Manipuler les fichiers squentiels
Manipuler les fichiers texte

52

Algorithmique et Structure de donnes 1

Chapitre 8 : Les Fichiers


Introduction

I.

Jusquici les donnes utilises taient stockes de manire temporaire, mais souvent on a
besoin de stocker les donnes et les rsultats des programmes de faon permanente. Parmi les
moyens utiliss qui permettent de stocker les donnes de faon permanente sont les bases de
donnes et les fichiers.
Dans ce chapitre on va sintresser aux fichiers.

Dfinition

II.

Un fichier structur est une collection dinformations de mme type stockes les unes la
suite des autres sur un support physique (disque dur, cd, dvd, etc.) et termin par une
marque de fin de fichier.
On peut faire lanalogie avec un fichier manuel comportant des fiches chaque fiche
correspond une information et le fichier correspond la boite darchive.
Exemples :

Un fichier dtudiants

Un fichier darticles

Un fichier demploy
Caractristiques dun fichier

1.

Un fichier a un nom, un mode dorganisation et un mode daccs.

On ce qui concerne le nom dun fichier on distingue le nom interne qui est le nom
avec lequel un fichier est identifi dans un algorithme et un nom externe qui comporte
le chemin du fichier (nom du support physique), le nom du fichier ainsi que son
dextension.

Pour le mode dorganisation dun fichier on trouve le mode squentiel, le mode


squentiel index, le mode relatif ou slectif.

Pour le mode daccs dun fichier on trouve laccs squentiel et laccs direct.

Un fichier squentiel permet uniquement d'accder aux donnes dans l'ordre de leur
criture (accs squentiel).

Un fichier accs direct (fichier organisation relative) correspond un tableau en


mmoire : toutes ses composantes ont la mme taille, on peut donc accder
directement au Nme enregistrement. Comme pour un tableau, les insertions et les
suppressions ncessitent des dcalages des composantes du fichier.

53

Algorithmique et Structure de donnes 1

Pour les fichiers squentiels indexs ou slectifs Les composantes sont stockes dans
le fichier dans l'ordre de leur cration. On utilise alors un tableau d'index, donnant en
premire position le numro de la premire composante, puis de la seconde, etc.

Les fichiers squentiels

III.

Dclaration dun fichier squentiel

1.

Syntaxe :
Types
Nom_fichier= Fichier de type
Var
F : Nom_ficher
Exemple :
Types
Voiture=ENREG
Marque : chane
Prix: rel
Nserie : entier
Fin ENREG
Fichier_Voiture=Ficher de voiture
Var
V : Voiture
F : Fichier_Voiture
2.

Manipulation des fichiers squentiels


a. Ouverture dun fichier

Syntaxe :
Ouvrir (Nom_fichier, mode)
Remarques :

On peut ouvrir un fichier pour consultation on appelle a mode lecture(L).

On peut louvrir pour modification on appelle a mode criture(E).

Aprs louverture du fichier on aura un pointeur qui pointe sur la 1re donne du
fichier.

Exemple :
Ouvrir (F, E)

54

Algorithmique et Structure de donnes 1

On va ouvrir le fichier F qui est un fichier de voiture en mode criture afin dajouter,
de modifier ou de supprimer des voitures.

b. Lecture dun Fichier


Syntaxe :
Lire (Nom_fichier, x)
Remarque :

Lors de la lecture dun fichier on commence toujours par la 1re donne du fichier.

Chaque donne lue est rcupre dans une variable (tampon) qui a le mme type que
les lments du fichier.

Si on veut lire une donne particulire il faut commencer depuis le dbut jusqu
atteindre linformation voulue.

c. Ecriture dans dun Fichier


Syntaxe :
Ecrire (Nom_fichier, x)
Exemple :
V.Marque fiat
V.Prix 15000
V.Nserie 100
Ecrire (F, V)
Le contenu de lenregistrement V sera copi dans le fichier F.
Remarque :

Dans un fichier squentiel linsertion se fait toujours la fin du fichier.

d. Fermeture dun fichier


Syntaxe :
Fermer (Nom_fichier)
Remarque :

Apres toute utilisation du fichier on doit obligatoirement le fermer.

Exemple :
Fermer(F)
e. Test de la fin dun fichier
Syntaxe :
X FDF (Nom_fichier)

55

Algorithmique et Structure de donnes 1


Remarque :

Pour tester si on a atteint la fin du fichier ou non, on utilise cette fonction qui retourne
vrai si cest le cas sinon elle retourne faux.

Exercice 1:
crire une procdure qui permet de remplir un fichier de 10 articles, un article et caractris
par son libell, son prix et sa quantit.
Correction :
Type
Article= ENREG
Libelle : chaine
Prix : rel
Quantite : rel
Fin ENREG
Fich= Fichier darticle
Procdure Remplir (var F : Fich)
VAR
a : Article
i : entier
Dbut
Ouvrir (F, E)
Pour i de 1 10 Faire
Ecrire ("donner le nom du produit")
Lire (a.Libelle)
Ecrire ("donner le prix du produit")
Lire (a.Prix)
Ecrire ("donner la quantit du produit")
Lire (a.Quantite)
Ecrire (F, a)
Fin Pour
Fermer(F)
Fin
Exercice 2 :
crire une procdure qui permet dafficher le contenu dun fichier dun article.

56

Algorithmique et Structure de donnes 1


Correction :
Procdure Affiche_Fichier (F :Fich)
VAR
a : Article
Dbut
Ouvrir (F, L)
Lire (F, a)
Tant que (FDF(F)=faux) Faire
Ecrire ("le nom du produit est", a.Libelle)
Ecrire ("le prix du produit est", a.Prix)
Ecrire ("la quantit du produit est", a.Quantite)
Lire (F, a)
Fin Tant que
Fermer(F)
Fin

Les fichiers Texte

IV.
1.

Dfinition

Les fichiers de texte se sont des fichiers squentiels.


Souvent sont des fichiers accs direct aux caractres (on peut accder directement au Nme
caractre dune ligne), mais l'accs est squentiel au niveau des lignes (pour accder la Nme
ligne, il faut lire le fichier depuis le dbut, jusqu' compter N-1 signes de fin de ligne).
Les fichiers de texte peuvent galement tre utiliss pour stocker des valeurs numriques (les
nombres sont alors formats pour tre crits en dcimal l'aide de caractres ASCII).
Remarques :

Le retour chariot a 13 comme code ASCII.

Le saut de ligne a 10 comme code ASCII.

Syntaxe :
Types
Nom_fichier= Fichier de caractres
Var
F : Nom_fichier
Remarques :

Un fichier texte est une suite de caractre organise en ligne.

57

Algorithmique et Structure de donnes 1

Un fichier texte peut tre trait caractre par caractre ou ligne par ligne.

Pour lire une ligne on utilise la procdure suivante Lire_lig (Nom_fichier, x) qui
permet de lire une ligne du fichier et copier son contenu dans la variable x qui est de
type chaine.

Exercice :
crire une procdure qui permet dafficher le contenu dun fichier texte.
Correction :
Types
Ftext=Fichier de caractre
Procdure Affichage( F : Ftext)
VAR
a :chaine
Dbut
Ouvrir (F, L)
Lire_lig (F,a)
Tant que (FDF(F)=faux) Faire
Ecrire (a)
Lire_lig (F,a)
Fin Tant que
Fermer(F)
Fin

58

Algorithmique et Structure de donnes 1

Rfrences Bibliographiques

Algorithme et structures de donnes, Baghdadi zitouni, centre de publication


universitaire, 2003

Notes de cours de M. Zorgati Hichem

S. ROHAUT : Algorithmique et Techniques fondamentale de programmation, Edition


Eni 2007.

LIGNELET P., Algorithmique. Mthodes et modles. Paris : Masson, 1985.

59