Vous êtes sur la page 1sur 55

République Tunisienne

Ministère de l’enseignement supérieur et recherche scientifique


Institut Supérieur d’informatique du Kef

Support de cours

ALGORITHMIQUE &
STRUCTURES DE DONNEES 1

Support de cours adressé aux étudiants de la première année licence en ingénierie des réseaux
et systèmes informatique

Réalisé par : AJILI Sondes

Année universitaire : 2019-2020


Algorithmique et Structure de données 1

Préface

Ce support est un travail réalisé au sein du département informatique à l’ISIT du Kef


en 2014/2015 et mis à jour en 2019/2020. Notre objectif principal est de mettre à la
disposition des étudiants de L’ISI, un support d'assistance permettant de bien assimiler les
concepts théoriques de l’algorithmique et structure de données 1, et d'évaluer le degré de
compréhension et de connaissance atteint par l'étudiant.
Le cours met l'accent sur les concepts et techniques adéquats pour résoudre un problème
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 itératives ;
 Chapitre 4 : Les chaines de caractères ;
 Chapitre 5 : Les procédures et les fonctions ;
 Chapitre 6 : Les tableaux ;
 Chapitre 7 : Les Enregistrements ;
 Chapitre 8 : Les Fichiers.
Algorithmique et Structure de données 1

Sommaire

PRÉSENTATION DU COURS...............................................................................................1
BUT DU COURS : OBJECTIFS GÉNÉRAUX ET SPÉCIFIQUES...................................2
CHAPITRE 1 : NOTIONS FONDAMENTALES.................................................................9
I. DÉFINITIONS....................................................................................................................9
II. DÉMARCHE D’ÉCRITURE D’ALGORITHMES......................................................................9
III. CONSTANTES ET VARIABLES...........................................................................................9
IV. TYPES............................................................................................................................10
V. LES EXPRESSIONS..........................................................................................................11
VI. LES INSTRUCTIONS DE BASE..........................................................................................12
VII. STRUCTURE GÉNÉRALE D’UN ALGORITHME..............................................................14
CHAPITRE 2 : LES STRUCTURES CONDITIONNELLES...........................................17
I. INTRODUCTION..............................................................................................................17
II. LES STRUCTURES CONDITIONNELLES SIMPLES..............................................................17
III. LES STRUCTURES CONDITIONNELLES MULTIPLES..........................................................18
CHAPITRE 3 : LES STRUCTURES ITÉRATIVES..........................................................22
I. INTRODUCTION..............................................................................................................22
II. BOUCLE POUR..............................................................................................................22
III. LA BOUCLE TANT QUE...............................................................................................23
IV. LA BOUCLE REPETER … JUSQU’A...........................................................................24
V. PASSAGE D’UNE STRUCTURE ITÉRATIVE À UNE AUTRE.................................................25
CHAPITRE 4 : LES CHAÎNES DE CARACTÈRES.........................................................27
I. INTRODUCTION..............................................................................................................27
II. LE TYPE CARACTÈRE.....................................................................................................27
III. LE TYPE CHAÎNE DE CARACTÈRES.................................................................................28
IV. PROCÉDURES ET FONCTIONS STANDARDS SUR LES CHAÎNES........................................29
CHAPITRE 5 : LES PROCÉDURES ET LES FONCTIONS...........................................32
I. INTRODUCTION..............................................................................................................32
II. PROCÉDURE...................................................................................................................32
III. FONCTIONS....................................................................................................................35
CHAPITRE 6 : LES TABLEAUX........................................................................................37
I. INTRODUCTION..............................................................................................................37
II. TABLEAUX UNIDIMENSIONNELS....................................................................................37
III. TABLEAUX MULTIDIMENSIONNELS................................................................................43
CHAPITRE 7 : LES ENREGISTREMENTS......................................................................46
I. INTRODUCTION..............................................................................................................46
II. SYNTAXE.......................................................................................................................46
III. MANIPULATION DES VARIABLES DE TYPE ENREGISTREMENT.......................................47
CHAPITRE 8 : LES FICHIERS...........................................................................................49
Algorithmique et Structure de données 1

I. INTRODUCTION..............................................................................................................49
II. DÉFINITION....................................................................................................................49
III. LES FICHIERS SÉQUENTIELS...........................................................................................50
IV. LES FICHIERS TEXTE.....................................................................................................52
RÉFÉRENCES BIBLIOGRAPHIQUES.......................ERREUR ! SIGNET NON DÉFINI.
Algorithmique et Structure de données 1ere année LIRI

Présentation du cours

Mots-Clés
Algorithme, Structures de contrôle, Tableau, Matrice, Chaîne, Fonction, Procédure,
Récursivité, Tri, Enregistrement et Fichier.
Pré-requis
Néant.
Eléments de contenu 
 Les Préalables à l’algorithmique.
 Actions simples : Lecture, Ecriture et Affectation, Structures Alternatives : les
schémas Si et Selon.
 Structures Répétitives (Boucles) : Répéter, Tant que et Pour, Les Types Tableau,
Matrice et Chaîne de caractères, Les Algorithmes de Recherche : Séquentielle et
Dichotomique, Les Fonctions et les Procédures, Les Algorithmes de Tri et les types
Enregistrement et Fichier.
Moyens et outils pédagogiques
 Supports : Résumé du cours, TD.

But du cours : objectifs généraux et spécifiques

1 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

ALGORITHMIQUE ET STRUCTURES DE DONEES 1


Objectifs Les éléments du Objectifs
Chapitre
généraux cours spécifiques
Chapitre 1 : Connaitre la  L’intérêt des Comprendre c’est
Notions définition d’un algorithmes. quoi un algorithme,
Fondamentales algorithme et son  Définition d’un connaitre son intérêt,
importance. algorithme. son utilité dans la
 Démarche de phase de production
réalisation d’un d’un logiciel ainsi que
algorithme la démarche de sa
réalisation.
Connaître la  Les variables Savoir déclarer des
notion de  les constantes variables et des
variable et  Types des variables, constantes, après
comprendre type Entier, type avoir
son utilité Réel, type caractère, compris ces nouvelles

type Booléen notions.

 Priorité des Connaître les types

Opérations simples et les

 Opérations opérations

Arithmétiques définies sur ces types.


Connaitre les
 Opérations Logiques
différentes priorités
des opérations
Les instructions  Définition d’une Connaitre la notion
simples instruction d’instruction.
 Instruction de lecture Apprendre à
 Instruction d’écriture manipuler les

 L’instruction instructions simples

d’affectation (affectation, lecture,


écriture)
Connaitre la  structure générale Réalisation des
structure générale d’un algorithme Algorithmes à l’aide

2 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

d’un algorithme. d’instructions


simples.
Maitriser les
TD notions vues en
cours
Connaitre les  Introduction
problèmes à 2 ou
plusieurs
traitements
possibles.
 structure alternative Connaitre les

Chapitre 2 : Connaître les structures


structures  Alternative simple et conditionnelles à 1 ou
les structures
conditionnelles et complète 2 choix (si…fin si, si
conditionnelles
écrire des … sinon…fin si)
algorithmes en
 structure de choix Connaitre les
utilisant ces structures
nouvelles conditionnelles à
notions. choix multiples (selon
(sélecteur) … faire, et
les si imbriqués)
Maitriser les
TD notions vues en
cours
Chapitre 3 : Les Comprendre  Introduction Comprendre le besoin
structures l’intérêt des boucles
itératives de la structure  La structure Pour Connaitre la syntaxe

itératif et connaître de la boucle Pour et

sa les conditions de son

signification. utilisation.
 La structure Tant Connaitre la syntaxe
que…Faire de la boucle Tant que
et les conditions de
son utilisation.
 la structure Connaitre la syntaxe
de la boucle Répéter

3 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Répéter…Jusqu’à et les conditions de


son utilisation.

 choix d’une structure D’après l’énoncé du


itérative problème l’étudiant
doit savoir quelle est
la structure itérative la
mieux adapter pour la
résolution du
problème.
Maitriser les
TD notions vues en
cours
 Introduction
 Le type caractère Mieux connaitre le
type caractère,
connaitre les
fonctions standards
sur les caractères.
Connaître le type  type chaine de Se familiariser avec
Chapitre 4 : Les
chaîne de caractère caractères les chaines de
chaines de
et les manipuler.  opération sur les caractères, appliquer
caractères
chaines de caractères les fonctions et les
 Procédures et procédures standards
Fonctions standards sur les chaines de
sur les chaines de caractères.
caractères

Maitriser les
TD notions vues en
cours
Chapitre 5: Comprendre la  Introduction Connaitre la notion de
les procédures nécessité de la module
et les fonctions décomposition (programmation par
d’un problème en module).
sous problèmes.

4 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 Les procédures Maitriser la notion de


Réaliser des  Les Fonctions procédure, connaitre
algorithmes en le la signification de
décomposant en passage de paramètres
modules et les différents
modes de passages de
paramètres.
Maitriser la notion de
fonctions.
Connaitre la
différence entre
procédure et fonction.
Maitriser les
TD notions vues en
cours
Comprendre  Introduction Comprendre la
l’intérêt des difficulté à utiliser un
tableaux. grand nombre de
variables.
 Tableaux Comprendre qu’est
unidimensionnels qu’un tableau ainsi
 Représentation que ses
Algorithmique caractéristiques.
 Accès à un élément
Savoir manipuler les
du tableau
tableaux : déclarer,
 Opérations de bases
remplir et afficher des
sur les tableaux
tableaux
 Remplissage d’un Comprendre la notion
tableau de recherche.
 Affichage d’un Maitriser les deux
Chapitre 6 : tableau techniques de
Connaitre la  Recherche dans un
les tableaux recherche suivantes :
notion de type tableau recherche séquentielle
composé.  Recherche et recherche par

5 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Manipuler des séquentielle dichotomie.


tableaux uni et  Recherche par
bidimensionnels. dichotomie
 Algorithme de tri Comprendre la notion
d’un tableau de tri.
 Tri par Sélection Maitriser le tri par
 Tri par Insertion sélection, par

 Tri à Bulles insertion et le tri à


bulles
 Les Tableaux à deux Comprendre la notion
dimensions : Les de matrice.
Matrices Comprendre la
différence entre
matrice et tableau.
Savoir manipuler des
matrices.
Maitriser les
TD notions vues en
cours
 Introduction Comprendre l’intérêt
Comprendre la des types composés
notion de type  Manipulation des Comprendre la notion

composé variables de type d’Enregistrement.

hétérogène enregistrements Manipuler des


Enregistrements
(déclaration, lecture,
Chapitre 7 : Les écriture, affectation et
Enregistrements comparaison entre
deux
enregistrements).
Maitriser les
TD notions vues en
cours
Comprendre le  Introduction Connaitre les
besoin et l’intérêt  Définition différentes

6 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

aux fichiers et à la organisations des


sauvegarde fichiers ainsi que les
permanente des différents modes
données d’accès
 Les Fichiers Se familiariser avec
Chapitre 8 :
Séquentiels les fichiers
Les Fichiers
 Manipulation des séquentiels et
Fichiers Séquentiels apprendre à les
manipuler.

 Les fichiers textes Connaitre les fichiers


texte et les manipuler
Maitriser les
TD notions vues en
cours

7 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Cha
pitre
1

Notions Fondamentales
Objectifs

 Savoir déclarer des variables et des constantes


 Manipuler les instructions simples
 Ecrire des algorithmes complets

Chapitre 1 : Notions Fondamentales


I. Définitions

8 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

1. Définition 1
Le mot algorithme vient du nom latinisé du mathématicien perse Al-Khawarizmi,
surnommé « le père de l'algèbre ».
Le domaine qui étudie les algorithmes est appelé l'algorithmique.
2. Définition 2
L'algorithme est le résultat d'une démarche logique de résolution d'un problème pour la mise
en œuvre pratique sur ordinateur et afin d'obtenir des résultats concrets.
3. Définition 3
Un algorithme décrit une succession d'opérations qui, si elles sont fidèlement exécutées,
produiront le résultat désiré.
II. Démarche d’écriture d’algorithmes
Pour résoudre un problème on commence par identifier les données, les résultats recherchés
et par quel moyen on peut obtenir les résultats à partir des données. C’est l’étape d’analyse du
problème qui aboutit à un procédé de résolution appelé algorithme (figure I.1).

Analyse
Problème Algorithme

Figure. I.1 : Démarche d’écriture d’un algorithme

III. Constantes et variables


Les constantes et les variables identifient les données manipulées dans un algorithme. Ces
identificateurs doivent commencer par une lettre suivie de chiffres ou de lettres. Le choix d’un
nom significatif pour les identificateurs permet d’augmenter la lisibilité des algorithmes.
1. Constantes
Une constante est une donnée dont la valeur reste fixe tout au long de l’exécution d’un
programme.

Exemple :
Pi = 3.14
TVA = 0.18
2. Variables

9 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Une variable est un identificateur auquel on assigne une valeur. La variable peut changer de
valeur durant l’exécution d’un programme. Une variable est identifiée par un nom, une valeur
et un type.
IV. Types
Le type attribué à une variable permet de définir l’ensemble de valeurs que peut prendre la
variable ainsi que les opérations qu’on peut appliquer sur celle-ci.
Les principaux types utilisés en algorithmique sont :
- Le type entier
- Le type réel
- Le type caractère
- Le type logique ou booléen
La syntaxe de déclaration est la suivante :
Variable 1, Variable 2, … : Type
1. Le type entier
Ce type désigne les entiers relatifs et supporte les opérations suivantes :
- Addition : +
- Soustraction : -
- Multiplication : *
- Division entière : DIV
- Modulo (reste de division) : MOD
Exemples :
 15 div 6 = 2
 15 mod 6 = 3
 15 * 6 = 90
 15 – 6 = 9
 15 + 6 = 21
2. Le type réel
Ce type désigne les valeurs appartenant à R et supporte les opérations suivantes :
- Addition : +
- Soustraction : -
- Multiplication : *
- Division : /
Exemples :

10 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 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 caractère
Ce type désigne les caractères majuscules ("A"… "Z"), minuscules ("a"… "z"), numériques
("0"…  "9") et spéciaux ("!", "?",":", "&", "#", …).
Les opérateurs définis sur ce type sont :
- Égal : =
- Différent : #
- Inférieur : <
- Inférieur ou égal : <=
- Supérieur : >
- Supérieur ou égal : >=
La comparaison entre les caractères se fait selon leurs codes ASCII :
Exemple :
” ” < ”0” < ”1” < ”A” < ”B” < ”a” < ”b” < ”{”
4. Le type logique ou booléen
Les variables de ce type peuvent prendre seulement une des deux valeurs :
"VRAI" ou "FAUX".
Ces variables sont utilisées pour évaluer une condition.
Les opérations de base définies sur ce type sont : la négation (NON), l’intersection (ET) et
l’union (OU).
A B 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

V. Les expressions
Une expression est la combinaison entre des constantes et des variables à l’aide d’opérateurs
arithmétiques ou logiques. L’expression obtenue exprime un calcul ou une relation.

1. Les expressions arithmétiques


L’ordre d’évaluation des expressions arithmétiques se fait à partir des règles de priorités sur
les opérateurs allant du plus prioritaire au moins prioritaire :

11 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 signe négatif –
 parenthèses ( )
 puissance ^
 multiplication et division * et /
 addition et soustraction + et -
Remarque :
Si dans une expression l’ordre d’évaluation entre deux ou plusieurs opérateurs est le même,
l’évaluation se fait de gauche à droite.
2. Les expressions logiques
Une expression logique exprime une condition qui peut être formulée à l’aide :
- de variables et de constantes reliées par des opérateurs relationnels (<, >, =, <=, >=, #)
- de variables et de constantes logiques reliées par des opérateurs logiques (NON, ET, OU)
La priorité des opérateurs logiques est la suivante allant du plus prioritaire au moins
prioritaire :
 NON
 ET
 OU
La priorité des opérateurs relationnels est la suivante allant du plus prioritaire au moins
prioritaire :
 >
 >=
 <
 <=
 =
 #
VI. Les instructions de base
1. La lecture
L’opération de lecture permet la réception de données de l’utilisateur à partir de périphériques
d’entrée (clavier), pour les ranger ensuite dans des cases mémoires réservées aux variables.

Syntaxe :
LIRE (variable1 [[, variable2] …])
Exemple :
12 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

LIRE (A) qui permet d’attribuer une valeur à la variable A.


2. L’écriture
Permet de communiquer un résultat ou un message à l’utilisateur via un périphérique de sortie
(écran, imprimante, …)
Syntaxe :
ECRIRE (paramètre1 [[, paramètre2]…])
Paramètre = variable | expression | constante
Constante = nombre | message
Exemple1 :
ECRIRE ("La résultat de 3 +2 est : ", 3+2)
 
Message expression
ECRIRE ("La moyenne est", Moy)

Variable
Exemple2 :
Quelle sera le résultat de l'exécution des instructions suivantes:
 A a
 Matiere  ”Algo”
 Ecrire(A)
 Ecrire( "A")
 Ecrire(Matiere)
3. L’affectation
L’opération d’affectation permet de charger une valeur dans une variable. La valeur peut être
une constante, la valeur d’une autre variable ou le résultat d’une expression.

Syntaxe :
Variable1  variable2 | expression | constante
Remarques :
 A gauche d’une affectation ne peut apparaître qu’une variable. Les constantes et les
expressions sont interdites.
 Après une affectation la valeur de la variable à gauche de l’affectation est écrasée et
remplacée par la valeur à droite.

13 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Exemple :
A 5
B3
CB–A
VII. Structure générale d’un algorithme
ALGORITHME nom_algorithme
CONST
{Définition des constantes}
VAR
{Déclaration de variables}
DEBUT
{Suite d’instructions}
FIN

Exemple :
1.
ALGORITHME Hello_world
DEBUT
ECRIRE ("Hello World")
FIN
2.
ALGORITHME total
CONST
coefficient = 3
VAR
x, t : entier
DEBUT
ECRIRE ("donner un entier")
LIRE (x)
t  x * coefficient
ECRIRE ("Le total est = ", t)
FIN

14 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Chapitre
2

15 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Les Structures
Conditionnelles
Objectifs

 Manipuler les structures conditionnelles simples


 Manipuler les structures conditionnelles multiples

Chapitre 2 : Les Structures Conditionnelles


I. Introduction
Souvent les problèmes nécessitent l'étude de plusieurs situations qui ne peuvent pas être
traitées par les séquences d'actions simples.
Puisqu'on a plusieurs traitements, on est amené à choisir un traitement parmi deux ou
plusieurs.
Le choix de l’un de ces traitements n’est pas possible avant l’exécution puisqu’il dépend
d’une condition d’où la notion de traitement conditionnel.
On distingue deux types de structures conditionnelles :
 les structures conditionnelles simples (si)
 les structures conditionnelles multiples (selon)
II. Les structures conditionnelles simples
1. Forme simple
Syntaxe :
SI <condition> ALORS
<Séquence d’instructions>

16 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

FIN SI
 Dans cette primitive les instructions ne sont exécutées que si la condition est vérifiée
(figure II.1).

SI

FAUX
Condition
VRAI
Séquence d’instructions

Suite de l’algorithme
Figure. II.1 : Instruction conditionnelle simple

Exemple :
Le tarif d’un bus est de 0.550 DT pour les voyageurs de plus de 6 ans. Les voyageurs âgés de
moins de 6 ans bénéficient d’une réduction de 50%.
Ecrire un algorithme qui lit l’âge du voyageur et qui affiche le prix de son ticket.

2. Forme alternative
Syntaxe :
SI <Condition> ALORS
<Séquence d’instructions 1>
SINON
<Séquence d’instructions 2>
FIN SI
 Cette primitive permet d’exécuter la séquence d’instruction 1 si la condition est
vérifiée, sinon elle exécute la séquence d’instructions 2.
SI

VRAI FAUX
Condition

Séquence d’instructions 1 Séquence d’instructions 2

Suite de l’algorithme

Figure. II.2 : Instruction conditionnelle alternative


Exemple 1 :

17 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Ecrire un algorithme qui permet de lire un nombre réel à partir du clavier, et dire s'il est
positif ou strictement négatif.
Remarque :
L’un ou les deux blocs d’instructions de l’instruction si peuvent contenir d’autres instructions
si on parle alors d’instructions si imbriquées.
Exemple 2:
Ecrire un algorithme qui permet de lire un nombre réel à partir du clavier, et dire s'il est
positif, négatif ou nulle.
III. Les structures conditionnelles multiples
Cette structure est appelée aussi à choix multiple ou sélective car elle sélectionne entre
plusieurs choix à la fois, et non entre deux choix alternatifs (le cas de la structure SI).

Syntaxe :
SELON <sélecteur> FAIRE
liste de valeurs 1 : <Séquence d’instructions 1>
liste de valeurs 2 : <Séquence d’instructions 2>
………………………….
liste de valeurs n : <Séquence d’instructions n>
SINON
<Autre séquence d’instructions>
FIN SELON
Remarques :
 Le sélecteur peut être une variable ou expression de type scalaire (le résultat est un
entier ou un caractère)
 La structure SELON évalue le "sélecteur", 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 exécutées.
 liste de valeurs (i) peut y avoir une seule valeur, une suite de valeurs séparées par des
virgules et/ou un intervalle de valeurs.
 Le sélecteur doit avoir le même type que les valeurs dans les liste de valeurs.
 Le type de ces valeurs ne doit être, ni réel ni chaîne de caractères.
 Après avoir traité la suite d'actions correspondante, l'exécution se poursuit après le
FIN.

18 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Exemple :
Ecrire un algorithme qui lit un chiffre de 0 à 9 puis affiche le chiffre en toute lettre.
Remarque :
Le même traitement peut être écrit à l’aide d’instructions si imbriqué mais l’algorithme
devient très lourd.
ALGORITHME chiffre
VAR
chiffre : entier
DEBUT
ECRIRE ("donner un chiffre")
LIRE (chiffre)
SI chiffre = 0ALORS
ECRIRE ("Zéro")
SINON
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

19 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Chapitre
3

20 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Les Structures
Itératives
Objectifs

 Manipuler les structures itératives (pour, Tant Que, répéter… jusqu’à)


 Savoir comment passer d’une structure itérative à une autre.

Chapitre 3 : Les Structures Itératives


I. Introduction
Il est bien rare que dans un programme, il n'y ait pas nécessité de répéter une action un certain
nombre de fois... on parle de séquence répétitive ou itérative.
Le nombre d’itération peut être connu à l’avance ou non. Dans ce dernier cas, l’arrêt de
l’itération est déclenché par une condition sur l’état des variables dans le programme.
II. Boucle POUR
1. Syntaxe
POUR c DE vi A vf [PAS p] FAIRE
Traitement
FIN POUR

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

21 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 vi : la valeur initiale du compteur c


 vf : la valeur finale du compteur c
 p : le pas ou l’incrément de la boucle de même type que c
2. Principe de fonctionnement
A l’entrée de la boucle le compteur c est initialisé à vi ensuite le corps de la boucle (itération)
est exécuté. A la fin de chaque itération c est incrémenté. Ce processus se répète jusqu’à ce
que c dépasse vf (Figure. III.1).

POUR

c vi

VRAI FAUX
c <= vf

Traitement Suite de l’algorithme

c vi + p

Figure. III.1 : Boucle POUR

Remarques :
 Si vi ≤ vf alors p > 0
 Si vi ≥ vf alors p < 0
 La valeur par défaut du pas p est 1
 Le nombre d’itérations d’une boucle POUR est connu à l’avance (= vf – vi + 1)
 Une boucle « pour » peut être exécutée 0, 1 ou n fois
Exemple1 :
On veut afficher les nombres (>0) pairs et inférieurs à 20 :
Solution 1 :
POUR i DE 1 A 20 FAIRE
SI (i MOD 2 = 0) ALORS
ECRIRE (i)
FIN SI
FIN POUR
22 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Exercice :
Ecrire un algorithme qui permet de lire les notes de 20 étudiants et de calculer la moyenne de
la classe pour une matière donnée.
III. La boucle TANT QUE
1. Syntaxe
TANT QUE condition FAIRE
Traitement
FIN TQ
Où condition est une expression ou une variable a valeur booléenne.
2. Principe de fonctionnement

TANT
QUE

FAUX
Condition?

VRAI
Traitement Suite de l’algorithme

Figure. III.2 : Boucle TANT QUE


La boucle TANT QUE est exécutée aussi longtemps que la condition est vérifiée. Si dès le
début la condition est fausse le traitement ne sera exécuté aucune fois. Une boucle tant que
s’exécute 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
Réécrire l’algorithme qui permet de lire les notes de 20 étudiants et de calculer la moyenne de
la classe pour une matière donnée, à l’aide d’une boucle TANT QUE :

IV. La boucle REPETER … JUSQU’A


1. Syntaxe
REPETER
Traitement
JUSQU'A condition
Où condition est expression ou une variable a valeur booléenne.

23 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

2. Principe de fonctionnement
Le traitement de cette boucle est exécuté au moins une fois et il est ensuite répété jusqu'à ce
que la condition de sortie soit vérifiée.

REPETER

Traitement

Condition?
FAUX
VRAI
Suite de l’algorithme

Figure. III.3 : Boucle TANT QUE

Remarque :
 Dans cette boucle, le traitement est exécuté au moins une fois avant l'évaluation de la
condition d'arrêt.
Exercice
Réécrire l’algorithme qui permet de lire les notes de 20 étudiants et de calculer la moyenne de
la classe pour une matière donnée, à l’aide d’une boucle REPETER :
Remarque :
 La condition de la boucle REPETER est l’inverse de la condition de la boucle TANT
QUE.
V. Passage d’une structure itérative à une autre
 Le passage d’une boucle « répéter » ou « tantque » à une boucle « pour » n’est
possible que si le nombre de parcours est connu à l’avance.
 Lors du passage d’une boucle « pour » ou « tantque » à une boucle « répéter », faire
attention aux cas particuliers (le traitement sera toujours exécuté au moins une fois).

24 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Chapitre
4

les chaînes de
caractères
Objectifs

 Manipuler les types caractère et chaine de caractères


 Connaitre les fonctions standards des caractères
 Connaitre les fonctions et procédures standards des chaines de caractères

Chapitre 4 : les chaînes de caractères


I. Introduction
Autre que les types de données définies dans le chapitre I, il y a le type chaîne de caractère.
II. Le type caractère

25 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

1. Définition
Ce type s’applique à tous les caractères du code ASCII (American Standard Code for
Information Interchange).
La liste comprend :
 Les lettres : ”A”… ”Z” et ”a”…”z”
 Les chiffres : ”0”…”9”
 Les caractères spéciaux : ”/” ; ”*” ; ”?” ; ”&” ; etc.
 Les caractères de contrôle : <Retour Chariot> ; <Echap> ; etc.
Chaque caractère est défini par son numéro d’ordre unique compris entre 0 et 255
2. Fonctions standards sur les caractères
 Asc(c) : retourne le code ASCII du caractère c .
Exemple :
i  Asc(”A”)
i contiendra 65
 Car(i) : retourne le caractère dont le code ASCII est égal à i.
Exemple :
c Car(65)
c contiendra ”A”
 Succ(c) : retourne le successeur du caractère c .
Exemple :
c Succ(”a”)
c contiendra ”b”
 Pred(c) : retourne le prédécesseur du caractère c.
Exemple :
c  Pred(”b”)
c contiendra ”a”
 Majus(c) :retourne le majuscule du caractère c.
Exemple :
c Majus(”a”)
c contiendra ”A”
Exercice :
Ecrire un algorithme qui lit 10 caractères puis affiche leurs codes ASCII, leurs prédécesseurs,
leurs successeurs et l’équivalent en majuscule de leurs successeurs.

26 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

III. Le type chaîne de caractères


Une chaîne est une suite de caractères.
Une chaîne qui ne contient aucun caractère est appelée chaîne vide.
1. Déclaration d’une chaîne
Var
ch : Chaîne
chn : Chaîne[20]
 La variable ch peut contenir jusqu’à 255 caractères alors que chn peut contenir au
maximum 20.
2. Opérations sur les chaînes de caractères
a. la concaténation
C’est l’assemblage de deux chaînes de caractères en utilisant l’opérateur « + ».
Exemple
chn1  ”Algo”
chn2  ”rithmique”
chn3  chn1+chn2
 la variable chn3 contiendra ”Algorithmique”
b. les opérateurs relationnels (>, >=, <, <=, =, #)
Il est possible d’effectuer une comparaison entre deux chaînes de caractères, le résultat est de
type booléen. La comparaison se fait caractère par caractère de la gauche vers la droite selon
le code ASCII.
Exemples
 L’expression (”b” > ”a”) est vraie puisque le code ASCII de ”b” est (98) est supérieur
à celui de ”a” est (97)
 L’expression (”” = ” ”) est fausse (le vide est différent du caractère espace).
c. accès à un caractère dans une chaîne
Pour accéder à un caractère de la chaîne, il suffit d’indiquer le nom de la chaîne suivi d’un
entier entre crochets qui indique la position du caractère dans la chaîne.
Exemple
chn ”Algorithmique”
c chn[7]
 la variable c contiendra le caractère ”t”.
 En général, chn[i] désigne le ième caractère de la chaîne chn.

27 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

IV. Procédures et fonctions standards sur les chaînes


1. Procédures
 Efface (Ch, P, N) : efface N caractères de la chaîne Ch à partir de la position P
donnée.
Exemple :
ch  ”Algorithmique”
efface (ch,1,4)
ch contiendra ”Algo”
 Insert (Ch1, Ch2, P) Insère la chaîne Ch1dans la chaîne 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 chaîne de caractères Ch.
Exemple :
Nb = 255
convch(Nb,ch)
ch contiendra la chaîne ”255”
2. Fonctions
 Long (Ch) : retourne la longueur de la chaîne Ch.
Exemple :
ch  ”Algorithmique”
n  Long(ch)
n contiendra 13
 Copie (Ch, P, N) : copie N caractères de chaîne 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 première occurrence de la chaîne Ch1
dans la chaîne Ch2.
Exemple :

28 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

ch1  ”or”
ch2  ” Algorithmique”
n  Position(ch1,ch2)
n contiendra 3

29 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Chapitre
5

Les Procédures et les


Fonctions
Objectifs

 Connaitre la notion de sous-programme


 Manipuler les procédures et les fonctions

Chapitre 5 : Les Procédures et les Fonctions


I. Introduction
Pour les problèmes complexes il est toujours conseillé de les décomposer en des sous-
problèmes de complexité inférieure.

30 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Les sous-problèmes peuvent a leurs tours être décomposés jusqu’à atteindre des traitements
élémentaires facile à implémenter.
Ce type de programmation s’appelle programmation modulaire ou chaque module traite un
sous-problème et qui peut être soit une procédure soit une fonction.
II. Procédure
Une procédure est un sous algorithme ayant une structure semblable à celle d’un algorithme et
qui possède un ensemble de paramètres et permet de transmettre un ensemble de résultats.

1. Syntaxe
PROCEDURE nom_procédure ([liste des paramètres])
CONST
{Définition des constantes}
VAR
{Déclaration de variables}
DEBUT
{Suite d’instructions}
FIN
Remarque :
 Les variables déclarées dans le bloc VAR d’une procédure sont appelées variables
locales et ne peuvent être utilisées qu’à l’intérieure de celle-ci.

2. Appel d’une procédure


PROCEDURE diviseurs (N : entier)
VAR
i : entier
DEBUT
POUR i de 1 à N faire
SI (N mod i =0) ALORS
ECRIRE (i)
FIN SI
FIN POUR
FIN
ALGORITHME afficher_diviseurs

31 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

VAR
n :entier
DEBUT
ECRIRE ("donner un entier")
LIRE (n)
diviseurs(n)
FIN
Remarques :
 La structure d’une procédure est similaire à celle d’un algorithme.
 Elle possède un entête, une partie déclarative et un corps.
 Le paramètre N de la procédure est un paramètre formel, alors que le paramètre n de la
procédure dans l’algorithme principale est un paramètre effectif.
 Lors de l’appel d’une procédure il faut respecter le nombre, l’ordre et le type des
paramètres.
 Une variable globale est déclarée au début de l’algorithme. Elle peut être utilisée dans
le corps principal de l’algorithme ou par les différents modules.
3. Modes de passage des paramètres
La substitution des paramètres effectifs aux paramètres formels s’appelle passage de
paramètres. Elle correspond au transfert d’information entre l’algorithme et la procédure
appelée. Les paramètres des procédures peuvent être de trois types : données, résultats,
données-résultats.
 Un paramètre « donnée » est une information nécessaire pour le fonctionnement de la
procédure. Il ne subit aucun changement au cours de l’exécution de la procédure.
 Un paramètre « résultat » est un paramètre qui est l’aboutissement d’un traitement. Sa
valeur initiale n’a aucune signification.
 Un paramètre « donnée-résultat » est un paramètre qui est à la fois une donnée et un
résultat c'est-à-dire que sa valeur sera changée au cours de l’exécution de la procédure.
 Pour chaque type de paramètre on indique dans le tableau ci-dessus le mode de
passage. Le passage par variable est mentionné à l’aide du mot clé VAR :
Type de paramètre Sens de transfert Mode de passage
Donnée AlgorithmeProcédure Par valeur
Résultat AlgorithmeProcédure Par variable
Donnée-résultat AlgorithmeProcédure
(Par adresse)
Exemple :

32 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Soit les deux procédures échange suivantes :


PROCEDURE echange1 (a, b : entier)
VAR
c : entier
DEBUT
c←a
a←b
b←c
FIN
PROCEDURE echange2 (VAR a, b : entier)
VAR
c : entier
DEBUT
c←a
a←b
b←c
FIN
 Après l’appel de la procédure échange1 les deux paramètres de la procédure gardent
leurs valeurs initiales puisque le passage est un passage par valeur.
 Après l’appel de la procédure échange2 les deux paramètres de la procédure échangent
leurs valeurs (permutation) puisque le passage est un passage par variable.
 Dans le mode de passage par valeur la procédure travaille sur une copie des
paramètres effectifs alors que dans le cas du passage des paramètres par variable la
procédure travaille sur les paramètres originaux.

III. Fonctions
Une fonction est une procédure particulière qui possède un seul résultat. Une fonction possède
en plus un type de retour qui le type de son résultat.
1. Syntaxe
FONCTION nom_fonction([liste des paramètres]) : type_de_la_valeur_de_retour

33 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

{Déclarations}
DEBUT
{Suite d’instructions}
Nom_fonction←résultat
FIN
Remarques :
 Dans une fonction tous les paramètres sont passés par valeurs.
 Le nom de la fonction joue un double rôle il est nom et variable locale à la fois.
 Dans le corps de la fonction il doit exister une instruction qui affecte le résultat au
nom de la fonction.
2. Appel d’une fonction
L’appel d’une 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 :
x2
y6
zmin(x,y)
ECRIRE (min(x, y))
SI (min(x, y)>0) ALORS …

34 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Chapitre
6

Les Tableaux
Objectifs

 Manipuler des tableaux uni et multidimensionnels.


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

Chapitre 6 : Les Tableaux


I. Introduction
On désire lire les 20 notes d’algorithmique de notre classe et d’afficher ensuite les notes
supérieure à la moyenne de la calasse dans la matière.

35 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Ceci suppose qu’on doit sauvegarder toutes les notes pour calculer la moyenne et faire ensuite
la recherche de celles supérieure à la cette moyenne.
Ce genre de traitement comporte deux inconvénients majeurs :
 Le nombre de variables de l’algorithme devient très élevé.
 On doit réécrire le même traitement (comparaison à la moyenne et affichage éventuel)
pour chaque variable.
 L’algorithmique offre une solution qui s’appelle tableau qui permet de combiner
plusieurs valeurs de même type sous un même nom permettant ainsi d’optimiser leur
traitement.
II. Tableaux unidimensionnels
Un tableau à une dimension peut être considéré comme un vecteur (mathématique). Le
tableau est une structure de données est une structure de données constituée d’un nombre fini
d’éléments de même type et directement accessibles par leurs indices.
1. Déclaration
Pour définir une variable de type tableau, il faut préciser :
 le nom (identifiant du tableau)
 l’indice (généralement de type entier ou caractère)
 le type des éléments (entier, réel, caractère, etc.)
Exemple :
On veut déclarer un tableau T de dix entiers :
 T : Tableau [1 .. 10] de entier
Remarque :
On peut aussi déclarer un tableau comme suit :
CONST
N=10
TYPES
Tab=Tableau [1 .. N] de entier
VAR
T : Tab
2. Accès aux éléments d’un tableau
Soit T : Tableau [1 .. 10] de entier
 T[4] est le 4ème élément du tableau
 T[i] est le ième élément du tableau avec 1≤i≤10

36 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 T[2*j+1] permet d’accéder l’élément numéro (2*j+1)


Pour chaque élément du tableau on peut appliquer toutes les opérations de base qu’on peut
appliquer sur le type de base :
 T[3]←T[4]
 LIRE (T[i])
 ECRIRE (T[2*i])
3. Opérations usuelles
a. Remplissage
Le remplissage d’un tableau se fait élément par élément. Le tableau est passé par variable
puisqu’il va être changé par la procédure :
Remarque :
 On va utiliser la 2éme méthode de déclaration du tableau

PROCEDURE remplissage (VAR T : tab)


VAR
i : entier
DEBUT
POUR i de 1 à N FAIRE
ECRIRE ("Donner l’élément n° : ", i , " du tableau")
LIRE (T[i])
FIN POUR
FIN
b. Affichage
L’affichage du tableau se fait également élément par élément. Le passage du tableau se fait
par valeur puisque le tableau est un paramètre donné :
PROCEDURE affichage (T : tab)
VAR
i : entier
DEBUT
POUR i de 1 à N FAIRE
ECRIRE (T[i])
FIN POUR
FIN

37 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

c. Recherche
La recherche d’un élément dans un tableau consiste à retourner la position de sa première
occurrence :
FONCTION recherche (T : tab, E :entier) : entier
VAR
i, pos : entier
DEBUT
pos 0
i←0
Répéter
ii + 1
Jusqu’à ((T[i] = E) ou (i > N))
SI (T[i] = E) ALORS
Posi
FIN SI
Recherchepos
FIN
4. Tri d’un tableau
Le tri d’un tableau est l’organisation de tous ces éléments dans un ordre croissant ou
décroissant.
Il existe plusieurs algorithmes qui permettent de trier les éléments d’un tableau. Parmi ces
algorithmes on va étudier :
 Le tri par sélection.
 Le tri à bulle.
 Le tri par insertion.
a. Le tri par sélection (par minimum)
Le principe de fonctionnement consiste à :
 Chercher l’indice du plus petit élément du tableau T [1 .. N] et permuter l’élément
trouvé avec l’élément d’indice 1.
 Chercher l’indice du plus petit élément du tableau T [2 .. N] et permuter l’élément
trouvé avec l’élément d’indice 2.
 Faire le même travail pour le reste du tableau
 Enfin chercher l’indice du plus petit élément du tableau T [N-1 .. N] et permuter
l’élément trouvé avec l’élément d’indice (N-1).
38 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

PROCEDURE Tri_Selection (VAR T : tab)


VAR
i, j, x, min : entier
DEBUT
POUR i de 1 à (n-1) FAIRE
mini
POUR j de (i+1) à n FAIRE
SI T[j] < T[min] ALORS
minj
FIN SI
FIN POUR
xT[i]
T[i]T[min]
T[min]x
FIN POUR
FIN
b. Le tri à bulle
Le principe de fonctionnement consiste à :
 Parcourir les éléments du tableau de 1 à (n–1), si l’élément i est supérieur à l’élément
(i+1), alors on les permute.
 Le programme s’arrête lorsqu’aucune permutation n’est réalisable après un parcours
complet du tableau.
PROCEDURE Tri_Bulle (Var T : Tab)
VAR
i, x : Entier
permut : Booléen
DEBUT
Répéter
permutFaux
POUR i de 1 à (n-1) FAIRE
SI (T[i] > T[i+1]) ALORS
xT[i]
T[i] T[i+1]
T[i+1] x
39 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

permut Vrai
FIN SI
FIN POUR
Jusqu’à (permut = Faux)
FIN
c. Le tri par insertion.
Le principe de fonctionnement consiste à prendre les éléments du tableau un par un et insérer
chacun dans sa bonne place de façon que les éléments traités forment un sous-tableau trié.
 Comparer et permuter si nécessaire T[1] et T[2] de façon à placer le plus petit dans la
case du tableau d’indice 1.
 Comparer et permuter si nécessaire l’élément T[3] avec ceux qui le précèdent dans
l’ordre (T[2] puis T[1]) afin de former une sous-tableau trié T[1..3].
 Faire le même travail pour le reste du tableau.
 Enfin comparer et permuter si nécessaire l’élément T[n] avec ceux qui le précèdent
dans l’ordre (T[n-1], T[n-2], T[n-3], …) afin d’obtenir 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]
j←i
TANTQUE (j>0 et T[j-1]>x) FAIRE
T[j]T[j-1]
j  j-1
FIN TQ
T[j]x
FIN POUR
FIN
5. Recherche dichotomique
Soit T un tableau contenant n éléments triés dans le sens croissant, on veut écrire une
procédure qui affiche l’indice de la première apparition d’un élément x dans le tableau s’il
existe.

40 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Le principe de fonctionnement consiste à :


 Diviser l’intervalle de recherche par 2 à chaque itération.
 Soient premier et dernier les extrémités gauche et droite de l’intervalle dans lequel on
cherche la valeur de x.
 on calcule M, l’indice de l’élément médian :
 M = (premier + dernier) div 2
Il y a 3 cas possibles :
 x = T[M] : l’élément de valeur x est trouvé, donc ce cas la recherche est terminée
 x < T[M] : l’élément x, s’il existe, se trouve dans l’intervalle [premier .. M-1]
 x > T[M] : l’élément x, s’il existe, se trouve dans l’intervalle [M+1 .. dernier]
 Refaire ce travail jusqu’à ce que l’on trouve x ou que l’intervalle de recherche soit
vide (premier > dernier).
PROCEDURE Rech_dicho(T : Tab , x : entier)
VAR
premier, dernier, m : Entier
trouve : Booléen
DEBUT
premier  1
dernier  n
trouve  Faux
Répéter
m (premier + dernier) div 2
SI (x < T[m]) ALORS
dernier m - 1
SINON
SI (x > T[m]) ALORS
premier  m + 1
SINON
trouve  Vrai
FIN SI
FIN SI
Jusqu’à ((trouve = Vrai) ou (premier > dernier))
SI (trouve = Vrai) ALORS

41 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Ecrire (”l’indice de ", x, "est = ”,m)


SINON
Ecrire (”Elément introuvable…”)
FIN SI
FIN
III. Tableaux multidimensionnels
1. Définition
Soit n le nombre de dimensions, la déclaration du tableau se présente alors comme suit :
T : Tableau [i1 .. j1, i2 .. j2, …, in .. jn] de valeur
Cette définition est équivalente à :
T : Tableau [i1 .. j1] de tab1
Tab1=Tableau [i2 .. j2] de tab2

Tabn-1=Tableau [in .. jn] de valeur
Accès à un élément : T [p1, p2, …, pn]
Remarque :
 Les tableaux à deux dimensions implémentent les matrices.
Cette matrice peut être définie de la façon suivante :
CONST
n=10
m=10
Types
Mat : Tableau [1..n,1..m] de Entier
VAR
M : Mat
2. Remplissage d’une matrice
PROCEDURE remplir_Mat (VAR M : Mat)
VAR
i, j : entier
DEBUT
POUR i de 1 à n FAIRE
POUR j de 1 à m FAIRE
ECRIRE ("donner l’élément ",i , " ", j, "de la matrice")

42 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

LIRE (M[i, j])


FIN POUR
FIN POUR
FIN

43 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Chapitre
7

Les Enregistrements
Objectifs

 Manipulation des types composés

Chapitre 7 : Les Enregistrements


I. Introduction

44 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

On a vu jusqu’ici que les variables peuvent être de type simple tel que les caractères et les
réels.
On a vu ensuite qu’un tableau permet de rassembler un ensemble d’éléments de même type
sous un même nom.
Un enregistrement permet de rassembler plusieurs informations de types différents sous un
nom unique.
Le type enregistrement forme donc un type composé.
II. Syntaxe
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 déclaration ci-dessus constitue une définition d’un nouveau type Nom_type de type
enregistrement.
 Les Var i constituent les membres de l’enregistrement qui sont appelés champs.
 Les champs peuvent être de type simple, Tableau ou enregistrement.
Exemple :
date=ENREG
jour : entier
mois : chaîne
annee : entier
FIN ENREG
Var
dt :date
III. Manipulation des variables de type enregistrement

45 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 On ne peut pas référencés globalement un enregistrement dans une instruction car ils
sont composés d’éléments de types différents. Par contre, il est possible de faire
référence à chaque élément d’un enregistrement.
 Pour cela, il est nécessaire de préciser le nom (identificateur) de l’enregistrement,
suivi d’un suffixe indiquant l’identificateur du champ concerné.
 Les deux identificateurs sont séparés par un point.
Exemple :
dt.jour 12
dt.moisjuin
dt.annee 2012
Remarques :
 Il est possible d’affecter un enregistrement à un autre de même type:
Exemple :
date1, date2 : date
date1 date2  date1.jourdate2.jour
date1.moisdate2.mois
date1.anneedate2.annee
 on peut effectuer une comparaison égalitaire ou inégalitaire entre deux
enregistrements de même type :
Exemple :
 SI (d1=d2) Alors
Exercice :
On veut représenter un étudiant identifié par un matricule, un nom, un prénom et une date de
naissance.
1. Définir la structure de donné représentant un étudiant et une date.
2. Ecrire une procédure qui permet de remplir un tableau de 20 étudiants.

46 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Chapitre
8

Les Fichiers
Objectifs

 Manipuler les fichiers séquentiels


 Manipuler les fichiers texte

Chapitre 8 : Les Fichiers


47 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

I. Introduction
Jusqu’ici les données utilisées étaient stockées de manière temporaire, mais souvent on a
besoin de stocker les données et les résultats des programmes de façon permanente. Parmi les
moyens utilisés qui permettent de stocker les données de façon permanente sont les bases de
données et les fichiers.
Dans ce chapitre on va s’intéresser aux fichiers.
II. Définition
Un fichier structuré est une collection d’informations de même type stockées 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 l’analogie avec un fichier manuel comportant des fiches chaque fiche
correspond à une information et le fichier correspond à la boite d’archive.
Exemples :
 Un fichier d’étudiants
 Un fichier d’articles
 Un fichier d’employé
1. Caractéristiques d’un fichier
 Un fichier a un nom, un mode d’organisation et un mode d’accès.
 On ce qui concerne le nom d’un 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
d’extension.
 Pour le mode d’organisation d’un fichier on trouve le mode séquentiel, le mode
séquentiel indexé, le mode relatif ou sélectif.
 Pour le mode d’accès d’un fichier on trouve l’accès séquentiel et l’accès direct.
 Un fichier séquentiel permet uniquement d'accéder aux données dans l'ordre de leur
écriture (accès séquentiel).
 Un fichier à accès direct (fichier à organisation relative) correspond à un tableau en
mémoire : toutes ses composantes ont la même taille, on peut donc accéder
directement au Nème enregistrement. Comme pour un tableau, les insertions et les
suppressions nécessitent des décalages des composantes du fichier.

48 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 Pour les fichiers séquentiels indexés ou sélectifs Les composantes sont stockées dans
le fichier dans l'ordre de leur création. On utilise alors un tableau d'index, donnant en
première position le numéro de la première composante, puis de la seconde, etc.
III. Les fichiers séquentiels
1. Déclaration d’un fichier séquentiel
Syntaxe :
Types
Nom_fichier= Fichier de type
Var
F : Nom_ficher
Exemple :
Types
Voiture=ENREG
Marque : chaîne
Prix: réel
Nserie : entier
Fin ENREG
Fichier_Voiture=Ficher de voiture
Var
V : Voiture
F : Fichier_Voiture
2. Manipulation des fichiers séquentiels
a. Ouverture d’un fichier
Syntaxe :
Ouvrir (Nom_fichier, mode)
Remarques :
 On peut ouvrir un fichier pour consultation on appelle ça mode lecture(L).
 On peut l’ouvrir pour modification on appelle ça mode écriture(E).
 Après l’ouverture du fichier on aura un pointeur qui pointe sur la 1ère donnée du
fichier.

Exemple :
Ouvrir (F, E)

49 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

 On va ouvrir le fichier F qui est un fichier de voiture en mode écriture afin d’ajouter,
de modifier ou de supprimer des voitures.
b. Lecture d’un Fichier
Syntaxe :
Lire (Nom_fichier, x)
Remarque :
 Lors de la lecture d’un fichier on commence toujours par la 1ère donnée du fichier.
 Chaque donnée lue est récupérée dans une variable (tampon) qui a le même type que
les éléments du fichier.
 Si on veut lire une donnée particulière il faut commencer depuis le début jusqu’à
atteindre l’information voulue.
c. Ecriture dans d’un Fichier
Syntaxe :
Ecrire (Nom_fichier, x)
Exemple :
V.Marque  fiat
V.Prix  15000
V.Nserie 100
Ecrire (F, V)
Le contenu de l’enregistrement V sera copié dans le fichier F.
Remarque :
 Dans un fichier séquentiel l’insertion se fait toujours à la fin du fichier.
d. Fermeture d’un fichier
Syntaxe :
Fermer (Nom_fichier)
Remarque :
 Apres toute utilisation du fichier on doit obligatoirement le fermer.
Exemple :
Fermer(F)

e. Test de la fin d’un fichier


Syntaxe :
X  FDF (Nom_fichier)

50 AJILI Sondes
Algorithmique et Structure de données 1ere année LIRI

Remarque :
 Pour tester si on a atteint la fin du fichier ou non, on utilise cette fonction qui retourne
vrai si c’est le cas sinon elle retourne faux.
Exercice 1:
Écrire une procédure qui permet de remplir un fichier de 10 articles, un article et caractérisé
par son libellé, son prix et sa quantité.

Exercice 2 :
Écrire une procédure qui permet d’afficher le contenu d’un fichier d’un article.
IV. Les fichiers Texte
1. Définition
Les fichiers de texte se sont des fichiers séquentiels.
Souvent sont des fichiers à accès direct aux caractères (on peut accéder directement au N ème
caractère d’une ligne), mais l'accès est séquentiel au niveau des lignes (pour accéder à la N ème
ligne, il faut lire le fichier depuis le début, jusqu'à compter N-1 signes de fin de ligne).
Les fichiers de texte peuvent également être utilisés pour stocker des valeurs numériques (les
nombres sont alors formatés pour être écrits en décimal à l'aide de caractères 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 caractères
Var
F : Nom_fichier
Remarques :
 Un fichier texte est une suite de caractère organisée en ligne.
 Un fichier texte peut être traité caractère par caractère ou ligne par ligne.
 Pour lire une ligne on utilise la procédure 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 procédure qui permet d’afficher le contenu d’un fichier texte.

51 AJILI Sondes

Vous aimerez peut-être aussi