ALGORITHMIQUE – 2: STRUCTURES - FICHIERS
SMI-3
A.U: 2022 – 2023
DÉPARTEMENT INFORMATIQUE
Pr. Redouan Lahmyed ALGORITHMIQUE 2 1
Structure - Introduction
Une structure est une collection d’une ou plusieurs variables, généralement,
ayant des types différents.
Les structures permettent d’organiser les données compliquées. Les variables liées
sont groupés en seule entité au lieu des entités séparées.
Exemple-1, un employé peut être d´ecrit par:
• Nom,
• Prénom.
• SOM.
• Salaire.
• Adresse.
• ....
Exemple-2, un point est une paire de coordonnées, un rectangle est une paire de points, ...etc.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 2
Définition d’une structure
Le langage algorithmique permet au programmeur de construire ses propres types
de données agrégées.
Pour cela, le programmeur doit préciser :
Le nom donné au type;
La composition du type, c'est à dire le nom et la nature des données qu’il contient.
La syntaxe de définition d'un type nommé Nom_structure est:
Struct Nom_structure
Début
Champ 1 : Type 1 Les variables nommées dans la structure
Champ 2 : Type 2 sont appelées les “membres” ou “champs”
... de la structure.
Champ n : Type n
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 3
Définition d’une structure
Exemple: Un point d’un plan 2-D est caractérisé par ses coordonnées X et Y.
Supposant que les coordonnées sont des entiers, la structure décrivant
un point est déclarée en langage algorithmique par:
Pr. Redouan Lahmyed ALGORITHMIQUE 2 4
Définition d’une structure
Exemple: Un point d’un plan 2-D est caractérisé par ses coordonnées X et Y.
Supposant que les coordonnées sont des entiers, la structure décrivant
un point est déclarée en langage algorithmique par:
Struct Point
Début
X : Entier
Y : Entier
Fin
o Le mot-clé struct peut être suivi d’un nom qu’on souhaite attribuer à la structure.
Dans ce cas, “ Struct Point ”. Ce nom sera utilisé par la suite pour se référer à la
structure (déclaration des variables de ce type).
Pr. Redouan Lahmyed ALGORITHMIQUE 2 5
Définition d’une structure
Exemple:
Struct Complex Struct Date
Début Début
Fin
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 6
Définition d’une structure
Exemple:
Struct Complex Struct Date
Début Début
Real : Entier Jour : Entier
Imaginary : Entier Mois : Entier
Fin Annee : Entier
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 7
Structure - Déclaration
Définition de la structure Struct Point (le nouveau type) :
Struct Point
Début
X : Entier
Y : Entier
Fin
Déclaration d’une variable de type Struct Point :
/* une variable simple de la structure */
variable P1 : Struct Point
/* un tableau de 20 elements de la structure */
Tableau Tab_Points [20] : Struct Point
/* un pointeur de la structure */
variable P2 : ^Struct Point
Pr. Redouan Lahmyed ALGORITHMIQUE 2 8
Initialisation, accès aux membres
Algorithme: Initialisation_Points
• Les membres peuvent être
Struct Point initialisées après de la déclaration
Début de la variable de type structure
X : Entier
Y : Entier
Fin • Les valeurs d’initialisation sont
fournies entre " { " et " } " .
Variables:
Pt1 , Pt2 : Struct Point
Début • L’affectation des initialisations suit
l’ordre d’apparition des champs dans
la structure.
Pt1 ← { 7 , 2 } La Nième valeur est affectée au champ
introduit à la Nième position dans
définition de la structure.
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 9
Initialisation, accès aux membres
Algorithme: Initialisation_Points
• Les membres peuvent être
Struct Point initialisées après de la déclaration
Début de la variable de type structure
X : Entier
Y : Entier
Fin • Les valeurs d’initialisation sont
fournies entre " { " et " } " .
Variables:
Pt1 , Pt2 : Struct Point
Début • L’affectation des initialisations suit
l’ordre d’apparition des champs dans
Pt1 ← { 7 , 2 } la structure.
La Nième valeur est affectée au champ
Pt2 ← { 4 , 3 } introduit à la Nième position dans
définition de la structure.
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 10
Initialisation, accès aux membres
Algorithme: Initialisation_Points
Struct Point
Début
X : Entier
Y : Entier
Fin
Exemple: dans Pt1 = { 7 , 2 };
Variables: X reçoit 7 et Y reçoit 2.
Pt1 , Pt2 : Struct Point
Début
Pt1 ← { 7 , 2 }
Pt2 ← { 4 , 3 }
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 11
Initialisation, accès aux membres
• L’accès aux champs d’une structure, diffère selon le moyen utilisé :
Variable structure
Variable pointeur
Variable structure: L'accès aux champs d’une structure en la manipulant directement,
se fait en utilisant le nom de la variable suivi du point “.”, suivi du champ en
question.
Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 12
Initialisation, accès aux membres
Variable structure: L'accès aux champs d’une structure en la manipulant directement,
se fait en utilisant le nom de la variable suivi du point “.”, suivi du champ en
question. Algorithme: Initialisation_Points
Algorithme: Initialisation_Points
Struct Point
Struct Point Début
Début X : Entier
X : Entier Y : Entier
Y : Entier Fin
Fin
Variables:
Variables: Pt1 : Struct Point
Pt1 : Struct Point
Début
Début
Pt1.X ← 7
Pt1 ← { 7 , 2 } Pt1.Y ← 2
Fin Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 13
Initialisation, accès aux membres
Exercice
Écrire un algorithme qui :
- définit une structure "Complex" qui contient deux champs : reel , et imaginaire.
- déclare deux variables ‘C1’ et ‘C2’ de type Complex.
-Écrire un script permettant de calculer la somme de C1 et C2.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 14
Initialisation, accès aux membres
Algorithme: Operations_Complex
Ecrire (“Saisir le nombre réel de la deuxième valeur
Struct Complex complexe”)
Début Lire ( C2.reel )
reel : Entier
imaginaire : Entier Ecrire (“Saisir le nombre imaginaire de la deuxième
Fin valeur complexe”)
Lire ( C2.imaginaire )
Variables:
/* Affichage */
C1 , C2 , C3 : Struct Complex
Ecrire (“La première valeur complexe :” ,
Début C1.reel , “+” , C1.imaginaire , “i”)
Ecrire (“Saisir le nombre réel de la première Ecrire (“La deuxième valeur complexe :” ,
valeur complexe”) C2.reel , “+” , C2.imaginaire , “i”)
Lire ( C1.reel )
/* La somme */
Ecrire (“Saisir le nombre imaginaire de la C3.reel ← C1.reel + C2.reel
première valeur complexe”) C3. imaginaire ← C1. imaginaire + C2. imaginaire
Lire ( C1.imaginaire )
Ecrire (“La somme est :” , C3.reel , “+” , C3.imaginaire , “i”)
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 15
Initialisation, accès aux membres
Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.
Algorithme: Initialisation_Points Algorithme: Initialisation_Points
Struct Point Struct Point
Début Début
X : Entier X : Entier
Y : Entier Y : Entier
Fin Fin
Variables: Variables:
Pt1 : Struct Point Pt1 : ^Struct Point
Début Début
Pt1.X ← 7
Pt1.Y ← 2
Fin Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 16
Initialisation, accès aux membres
Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.
Algorithme: Initialisation_Points Algorithme: Initialisation_Points
Struct Point Struct Point
Début Début
X : Entier X : Entier
Y : Entier Y : Entier
Fin Fin
Variables: Variables:
Pt1 : Struct Point Pt1 : ^Struct Point
Début Début
Pt1.X ← 7 Pt1X ← 7
Pt1.Y ← 2
Fin Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 17
Initialisation, accès aux membres
Variable pointeur: On peut aussi accéder aux champs d’une variable structure en
utilisant un pointeur approprié (du même type).
•Une fois la variable est pointée, on peut y accéder via ce pointeur en utilsant
le nom du pointeur, suivi d’une flèche “”, suivi du champ en question.
Algorithme: Initialisation_Points Algorithme: Initialisation_Points
Struct Point Struct Point
Début Début
X : Entier X : Entier
Y : Entier Y : Entier
Fin Fin
Variables: Variables:
Pt1 : Struct Point Pt1 : ^Struct Point
Début Début
Pt1.X ← 7 Pt1X ← 7
Pt1.Y ← 2 Pt1 Y ← 2
Fin Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 18
Initialisation, accès aux membres
Exercice: Déclaration et affectation
Soit la structure suivante :
Struct Couleur
Début
R : Entier
G : Entier
B : ^Entier
Fin
Variables
Col1: Struct Couleur
Col2: ^Struct Couleur
1- Cochez ce qui est juste : ?
Pr. Redouan Lahmyed ALGORITHMIQUE 2 19
Initialisation, accès aux membres
Exercice: Déclaration et affectation
Soit la structure suivante :
Struct Couleur
Début
R : Entier
G : Entier
B : ^Entier
Fin
Variables
Col1: Struct Couleur
Col2: ^Struct Couleur
1- Cochez ce qui est juste : ?
Col1.R ← 81 Col1.B ← 12 Col1.G ← Col1.B^
Col2.G← 100 Col2←R← 255 Col2B^ ← 0
Pr. Redouan Lahmyed ALGORITHMIQUE 2 20
Initialisation, accès aux membres
Exercice: Déclaration et affectation
Soit la structure suivante :
Struct Couleur
Début
R : Entier
G : Entier
B : ^Entier
Fin
Variables
Col1: Struct Couleur
Col2: ^Struct Couleur
1- Cochez ce qui est juste : ?
Col1.R ← 81 Col1.B ← 12 Col1.G ← Col1.B^
Col2.G← 100 Col2←R← 255 Col2B^ ← 0
Pr. Redouan Lahmyed ALGORITHMIQUE 2 21
Structure imbriquée : Accès aux champs
Une structure peut comporter parmi ses champs d'autres structures.
Pour accéder aux champs d’une structure imbriquée, on est obligé d’utiliser deux
indexations.
Exemple
un rectangle peut être représenté par deux points (coins opposés diagonalement).
Pr. Redouan Lahmyed ALGORITHMIQUE 2 22
Structure imbriquée : Accès aux champs
Struct Point
Début
X : Entier
Y : Entier
Fin
Struct Rectangle
Début
Pt1 : Struct Point
Pt2 : Struct Point
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 23
Structure imbriquée : Accès aux champs
Variables Rect1 : Struct Rectangle
9 7
3 4
Pr. Redouan Lahmyed ALGORITHMIQUE 2 24
Structure imbriquée : Accès aux champs
Variables Rect1 : Struct Rectangle
/* Rectangle Rect1*/ 9 7
Rect1.Pt1.X ← 3
Rect1.Pt1.Y ← 4
Rect1.Pt2.X ← 9
Rect1.Pt2.Y ← 7
3 4
Pr. Redouan Lahmyed ALGORITHMIQUE 2 25
Structure imbriquée : Accès aux champs
Variables Rect2 : ^Struct Rectangle
9 7
3 4
Pr. Redouan Lahmyed ALGORITHMIQUE 2 26
Structure imbriquée : Accès aux champs
Variables Rect2 : ^Struct Rectangle
/* Rectangle Rect2*/ 9 7
Rect2Pt1.X ← 3
Rect2Pt1.Y ← 4
Rect2Pt2.X ← 9
Rect2Pt2.Y ← 7
3 4
Pr. Redouan Lahmyed ALGORITHMIQUE 2 27
Structure imbriquée : Accès aux champs
Exercice: Déclaration de la structure pixel
Pr. Redouan Lahmyed ALGORITHMIQUE 2 28
Structure imbriquée : Accès aux champs
Exercice: Déclaration de la structure pixel
Début
Algorithm: Pixel /* Position du pixel*/
Ecrire (“Saisir Num de ligne”)
Struct Couleur Lire (Pix.X)
Début
R : Entier Ecrire (“Saisir Num de colonne”)
G : Entier Lire (Pix.Y)
B : Entier
Fin /* Couleur du pixel*/
Struct Pixel Ecrire (“Saisir la valeur de la couleur rouge”)
Début Lire (Pix.Col.R)
X : Entier
Y : Entier Ecrire (“Saisir la valeur de la couleur verte”)
Col : Couleur Lire (Pix.Col.G)
Fin
Variables: Ecrire (“Saisir la valeur de la couleur bleue”)
Pix : Struct Pixel Lire (Pix.Col.B)
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 29
Structures & fonctions
Une structure peut être utilisée comme argument ou résultat d’une fonction.
Trois possibilités pour le passage des structures aux functions:
Passer les champs (membres) séparement;
Passer la structure entière;
Passer un pointeur sur la structure.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 30
Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point
Pr. Redouan Lahmyed ALGORITHMIQUE 2 31
Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point
Procedure Affichage_Point ( A: Entier , B: Entier)
Variables pt : Struct Point
Début .....
Ecrire (" (" , A " , " B , " ) " ) Début
Affichage_Point ( pt.X , pt.Y)
Fin Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 32
Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point
Procedure Affichage_Point ( A: Entier , B: Entier)
Début
Ecrire (" (" , A " , " B , " ) " )
Fin
Procedure Affichage_Point ( P: Struct Point)
Variables pt : Struct Point
Début .....
Début
Ecrire (" (" , P.X " , " P.Y , " ) " )
Affichage_Point ( pt )
Fin
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 33
Structures & fonctions
Exemple: Déclaration d'une procédure qui affiche les coordonnées d'un point
Procedure Affichage_Point ( A: Entier , B: Entier)
Début
Ecrire (" (" , A " , " B , " ) " )
Fin
Procedure Affichage_Point ( P: Struct Point)
Début
Ecrire (" (" , P.X " , " P.Y , " ) " )
Fin
Procedure Affichage_Point ( P: ^Struct Point) Variables pt : ^Struct Point
.....
Début Début
Ecrire (" (" , PX " , " PY , " ) " ) Affichage_Point ( pt^ )
Fin
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 34
Structures & fonctions
Exercice: Écrire un algorithme qui permet de :
- Définir un tableau permettant de stocker 10 points.
- Écrire une fonction qui renvoie la distance du point par rapport à l'origine.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 35
Structures & fonctions
Exercice: Écrire un algorithme qui permet de :
- Définir un tableau permettant de stocker 10 points.
- Écrire une fonction qui renvoie la distance du point par rapport à l'origine.
Algorithme: Tableau_Points Début
Struct Point
Début
X : Entier
Y : Entier
Fin
Variables:
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 36
Structures & fonctions
Fonction Distance_Origine ( X: Entier , Y: Entier) : Réel
Début
Retourne sqrt ( X * X + Y * Y )
Fin
y2 + x2
Fonction Distance_Origine ( P: Struct Point) :
Réel
Début 0 0
Retourne sqrt ( P.X * P.X + P.Y * P.Y )
Fin
Fonction Distance_Origine ( P: ^Struct Point) :
Réel
Début
Retourne sqrt ( PX * PX + PY * PY )
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 37
Structures & fonctions
Exercice: Écrire un algorithme qui permet de :
- Définir un tableau permettant de stocker 10 points.
- Écrire une fonction qui renvoie la distance du point par rapport à l'origine.
Algorithme: Tableau_Points Début
/* Remplissage du tableau*/
Pour i = 0 à 9 Pas de 1
Struct Point
Ecrire (" Donner les coordonnées du Point num “,
Début
i+1 , " : ")
X : Entier
Lire ( Tab_Pt [ i ].X , Tab_Pt [ i ].Y)
Y : Entier
Fin
FinPour
Fonction Distance_Origine ( P: Struct Point) : Réel
/* Distance Par rapport à l’origine*/
Début
Retourne sqrt ( P.X * P.X + P.Y * P.Y ) Pour i = 0 à 9 Pas de 1
Ecrire (" La distance du Point num “, i+1 , " Par
Fin
rapport à l’origine: " , Distance_Origine (Tab_Pt [ i ] ))
Variables:
Tableau Tab_Pt [ 10 ] : Struct Point FinPour
i : Entier
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 38
Organisation des champs
• Les champs sont organisés dans l'ordre de leurs déclarations dans la structure.
• L’adresse d’une structure = l’adresse de son premier champ.
Exemple
Algorithme: Addresse_Structure
Struct Ma_Str
Début
A : Entier
B : Caractère
C : Réel
Fin
Variables:
Var1 : Struct Ma_Str
Sortie
Début
Ecrire ( & Var1.A) 0xbfc98bb4
Ecrire ( & Var1.B)
0xbfc98bb8
Ecrire ( & Var1.C)
Ecrire ( & Var1)
0xbfc98bbc
Fin 0xbfc98bb4
Pr. Redouan Lahmyed ALGORITHMIQUE 2 39
Organisation des champs (Alignement des champs)
La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.
Exemple
Struct Ma_Str1 Struct Ma_Str2
Début Début
a : Caractère a : Entier
b : Entier b : Caractère
c : Caractère c : Caractère
d : Caractère d : Caractère
Fin Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 40
Organisation des champs (Alignement des champs)
La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.
Exemple
Struct Ma_Str1
Début
a : Caractère
b : Entier
c : Caractère
d : Caractère
Fin
La taille de la structure : 3 x 4 = 12 Octets
Pr. Redouan Lahmyed ALGORITHMIQUE 2 41
Organisation des champs (Alignement des champs)
La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.
Exemple
Struct Ma_Str2
Début
a : Entier
b : Caractère
c : Caractère
d : Caractère
Fin
La taille de la structure : 2 x 4 = 8 Octets
Pr. Redouan Lahmyed ALGORITHMIQUE 2 42
Organisation des champs (Alignement des champs)
La taille de la structure dépend du Nombre, le type et l’ordre de ses champs.
Exemple
Struct Ma_Str1 Struct Ma_Str2
Début Début
a : Caractère a : Entier
b : Entier b : Caractère
c : Caractère c : Caractère
d : Caractère d : Caractère
Fin Fin
Taille ( Ma_Str1): 12 Octets Taille ( Ma_Str1): 8 Octets
Pr. Redouan Lahmyed ALGORITHMIQUE 2 43
Fichiers
Un fichier est une séquence d'octets dont le rôle est de stocker, traiter et
transmettre des informations.
On distingue entre plusieurs types de fichiers et le critère important qui
différencie les fichiers est la façon dont les informations sont organisées sur ces
derniers.
Exemple
Pr. Redouan Lahmyed ALGORITHMIQUE 2 44
Fichiers
Un fichier est une séquence d'octets dont le rôle est de stocker, traiter et
transmettre des informations.
On distingue entre plusieurs types de fichiers et le critère important qui
différencie les fichiers est la façon dont les informations sont organisées sur ces
derniers.
Exemple
Fichier texte
- Formé de caractère ASCII
- Organisé en lignes
- Chacune se termine par un caractère
de contrôle de fin de ligne.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 45
Fichiers
Un fichier est une séquence d'octets dont le rôle est de stocker, traiter et
transmettre des informations.
On distingue entre plusieurs types de fichiers et le critère important qui
différencie les fichiers est la façon dont les informations sont organisées sur ces
derniers.
Exemple
Fichier binaire
- Contient des données non textuelles
- N’est pas organisé sous forme
d’enregistrement
…...
Pr. Redouan Lahmyed ALGORITHMIQUE 2 46
Fichiers
Traitement séquentiel des fichiers texte
Ouvrir un fichier
Fermer un fichier
Lire et écrire dans un fichier
Pr. Redouan Lahmyed ALGORITHMIQUE 2 47
Traitement séquentiel des fichiers texte
Ouvrir un fichier
• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,
d'ouvrir le fichier.
Syntaxe :
Ouvrir Nom_du_fichier en Num_Canal en Mode
Pr. Redouan Lahmyed ALGORITHMIQUE 2 48
Traitement séquentiel des fichiers texte
Ouvrir un fichier
• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,
d'ouvrir le fichier.
Syntaxe :
Ouvrir Nom_du_fichier en Num_Canal en Mode
Nom_du_fichier: C'est le nom physique du fichier.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 49
Traitement séquentiel des fichiers texte
Ouvrir un fichier
• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,
d'ouvrir le fichier.
Syntaxe :
Ouvrir Nom_du_fichier en Num_Canal en Mode
Num_Canal: C'est le nom logique du fichier. Pour ouvrir un fichier, il faut lui allouer un
numéro du canal valide et disponible.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 50
Traitement séquentiel des fichiers texte
Ouvrir un fichier
• Lorsqu'on désire à accéder à un fichier, il est nécessaire avant tout accès,
d'ouvrir le fichier.
Syntaxe :
Ouvrir Nom_du_fichier en Num_Canal en Mode
Mode: Il existe trois modes d'ouverture du fichier :
Lecture : Permet d'ouvrir le fichier en lecture seul.
• Écriture : Indique son accès en écriture.
• Ajout : Permet d'ajouter des données à un fichier séquentiel existant en
conservant le contenu précédent.
Pr. Redouan Lahmyed ALGORITHMIQUE 2 51
Traitement séquentiel des fichiers texte
Exemple: Écrire les instructions convenables pour ouvrir deux fichiers :
"File1.txt" (Mode d'ajout) , et
"File2.txt" (Mode de lecture).
Pr. Redouan Lahmyed ALGORITHMIQUE 2 52
Traitement séquentiel des fichiers texte
Exemple: Écrire les instructions convenables pour ouvrir deux fichiers :
"File1.txt" (Mode d'ajout) , et
"File2.txt" (Mode de lecture).
Ouvrir " File1.txt " en 1 en Ajout
Ouvrir " File2.txt " en 2 en Lecture
Pr. Redouan Lahmyed ALGORITHMIQUE 2 53
Traitement séquentiel des fichiers texte
Fermer un fichier
Une fois qu'on a terminé avec un fichier, il ne faut pas oublier de le fermer.
On libère ainsi le canal qu'il occupait
Syntaxe :
Fermer ( Nom_du_Fichier )
Ou bien
Fermer ( Nom_du_Canal )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 54
Traitement séquentiel des fichiers texte
Exemple: - Écrire les instructions convenables pour ouvrir deux fichiers :
"File1.txt" (Mode d'ajout) , et
"File2.txt" (Mode de lecture).
- Écrire les instructions convenables pour fermer
Ouvrir " File1.txt " en 1 en Ajout
Ouvrir " File2.txt " en 2 en Lecture
……..
Fermer ( " File1.txt " ) Ou bien Fermer ( 1 )
Fermer ( " File2.txt " ) Ou bien Fermer ( 2 )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 55
Traitement séquentiel des fichiers texte
Lire et écrire dans un fichier
Pour écrire dans un fichier :
EcrireFichier Num_Canal , “ Donnée”
Ou bien
Nom_Variable ← Donnée
EcrireFichier Num_Canal , Nom_Variable
Pr. Redouan Lahmyed ALGORITHMIQUE 2 56
Traitement séquentiel des fichiers texte
Exemple: - Enregistrer la valeur ‘5’ dans le fichier “ nombre.txt “
Pr. Redouan Lahmyed ALGORITHMIQUE 2 57
Traitement séquentiel des fichiers texte
Exemple: - Enregistrer la valeur ‘5’ dans le fichier “ nombre.txt “
…… ……
Ouvrir " nombre.txt " en 1 en Écriture Ouvrir " nombre.txt " en 1 en Écriture
EcrireFichier 1 , “ 5” X←5
Fermer (1 ) EcrireFichier 1 , X
Fermer (1 )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 58
Traitement séquentiel des fichiers texte
Pr. Redouan Lahmyed ALGORITHMIQUE 2 59
Traitement séquentiel des fichiers texte
Écrire un algorithme qui permet de :
Exercice:
- Définir un tableau permettant de stocker 10 points.
- Écrire un script permettant de créer un fichier «Point.txt »
puis saisir les informations du tableau dans ce fichier
Pr. Redouan Lahmyed ALGORITHMIQUE 2 60
Traitement séquentiel des fichiers texte
Exercice:
Algorithme: Tableau_Points Début
/* Remplissage du tableau*/
Pour i = 0 à 9 Pas de 1
Struct Point
Ecrire (" Donner les coordonnées du Point num “, i+1 ,
Début
X : Entier " : ")
Lire ( Tab_Pt [ i ].X , Tab_Pt [ i ].Y)
Y : Entier
Fin FinPour
/* Fichier Point.txt*/
Variables: Ouvrir " Point.txt " en 1 en Écriture
Tableau Tab_Pt [ 10 ] : Struct Point
i : Entier Pour i = 0 à 9 Pas de 1
EcrireFichier 1 , Tab_Pt [ i ]
FinPour
Fermer ( 1 )
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 61
Traitement séquentiel des fichiers texte
Pr. Redouan Lahmyed ALGORITHMIQUE 2 62
Traitement séquentiel des fichiers texte
Lire et écrire dans un fichier
Pour une operation de lecture, il suffit de recopier un enregistrement dans une
variable et d’écrire le syntaxe suivant:
LireFichier Num_Canal , Nom_Variable
Pr. Redouan Lahmyed ALGORITHMIQUE 2 63
Traitement séquentiel des fichiers texte
Exemple 1:
Pr. Redouan Lahmyed ALGORITHMIQUE 2 64
Traitement séquentiel des fichiers texte
Exemple 1:
……
Ouvrir " nombre.txt " en 1 en Lecture
LireFichier 1 , A
Fermer (1 )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 65
Traitement séquentiel des fichiers texte
Exemple 2:
Pr. Redouan Lahmyed ALGORITHMIQUE 2 66
Traitement séquentiel des fichiers texte
Exemple 2:
……
Ouvrir " Point.txt " en 1 en Lecture
Tantque Non EOF(1)
LireFichier 1 , Tab_Point [ i ]
Fin Tantque
Fermer (1 )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 67
ALGORITHMIQUE – 2: STRUCTURES - FICHIERS
SMI-3
A.U: 2022 – 2023
DÉPARTEMENT INFORMATIQUE
Pr. Redouan Lahmyed ALGORITHMIQUE 2 1