cours algorithmique et programmation 4 si .pdf



Nom original: cours algorithmique et programmation 4 si.pdfTitre: Cours Algorithmique & ProgrammationAuteur: Chraiet Khaled

Ce document au format PDF 1.6 a été généré par Acrobat PDFMaker 11 pour Word / Adobe PDF Library 11.0, et a été envoyé sur fichier-pdf.fr le 06/10/2014 à 17:13, depuis l'adresse IP 197.8.x.x. La présente page de téléchargement du fichier a été vue 1771 fois.
Taille du document: 5.2 Mo (222 pages).
Confidentialité: fichier public


Aperçu du document


REPUBLIQUE TUNISIENNE
MINISTERE DE L’EDUCATION ET DE LA FORMATION

-

Cours Algorithmique & Programmation
4ème Science informatique
Exercices et sujets bac corrigés

Prof : Mr. Chraiet Khaled
Lycée El Hawaria (Nabeul)

2014-2015

Edition 2.1
A tous les lecteurs : afin de réussir ce travail n’hésitez pas de me signaler tout type d’erreurs ou de fautes.
e-mail : khaledchraiet@yahoo.fr

Facebook : www.facebook.com/khaled.chraiet.3

1

Chap I

Les enregistrement et les fichiers

Rappel du cours de 2ème et 3ème
I-

Les types de données:
Algorithme Pascal
Byte
Octet
Word
Mot
Entier

Réel
caractère
Chaîne
booléen

II-

Valeur

Longueur

Shortint
Integer
Longint

0..255
0..65535
-128..127
-32768..32767
-2147483648..2147483647

real
single
Double
extended
Char
String
boolean

2.9e-39..1.7e38
1.5e-45..3.4e38
5.0e-324..1.7e308
3.4e-4932..1.1e4932
'a'..'z','A'..'Z','*','-','(','?','0'..'9'
'Tunisie','info'…
Vrai / Faux

Unsigned 8-bit
Unsigned 16-bit
Signed 8-bit
Signed 16-bit
Signed 32-bit
6 Octets
4 Octets
8 Octets
10 Octets
8 bits
0..255 caractères
1 octet

Les actions élémentaires:
Action

Algorithme

Lecture

Lire ( var)

Affichage

Ecrire (" texte ", var)

Affectation



Turbo Pascal
Read (var)
Readln(var)
write(’texte’, var)
writeln(’texte’, var)
:=

III- Les structures conditionnelles :
Structure Conditionnelle
Simple

En algorithme

En Pascal

Structure Conditionnelle
à choix multiple
Selon <Var> Faire
Val1 : Action1
Val2 : Action 2
Val3,val4 : Action 3
Sinon
Action N
Fin Selon
Case <Var> of
Val1 : Action1
Val2 : Action 2
Val3,val4 : Action 3
Else
Action N
End ;

Si <conditions> Alors
Traitement 1
Sinon
Traitement 2
FinSi

if <conditions> Then
begin
Traitement 1 ;
End
Else
begin
Traitement 2 ;
End ;
2

cours de 2ème et 3ème

Rappel

IV- Les structures répétitives :
Structure itérative
Complète
Pour <compteur> de Vi à Vf Faire

En
algorithme

En Pascal

Les instructions à répéter

Structure itérative à condition d'arrêt
Au moins une fois
Init <conditions>
Répéter

Init <conditions>
Tant que <conditions> Faire

Les instructions à répéter
Les instructions à répéter

Fin Pour

Jusqu'à <conditions>

…………

…………
……….. ;{init}
Repeat
……. ;
{suite d’instructions à
répéter}
Until <condition-arrêt> ;

……….. ;{init}
For <compteur> : = Vi to Vf Do
Begin
…;
{suite d’instructions à répéter}
……….. ;
End ;

Peut être aucune fois

Fin Tant que

……….. ;{init}
While <conditions> Do
begin
………. ;
{suite d’instructions à répéter}
End ;

Forme générale d’un programme Pascal
Program nom_prog ;
Uses wincrt ; { une bibliothèque}
Const
Déclaration des constantes
Type
Déclaration des nouveaux types
Var
Déclaration des variables globales
Procedure Nom-proc (liste des paramètres formels)
Var
Déclaration des variables locales
Begin
{Corps de procédure}
End ;
Function nom-fonct (liste des paramètres formels) : type-résultat
Var
Déclaration des variables locales
Begin
{Corps de la fonction}
End ;
{***************** programme principal ************************}
Begin
Corps du programme
Nom-proc (liste des paramètres effectifs)
//appel d’une procédure
Nom-var : = nom-fonct (liste des paramètres effectifs)
// appel d’une fonction
End.

3

cours de 2ème et 3ème

Rappel

 Les fonctions arithmétiques standard:
(Uses transcend: bibliothèque mathématique)
Nom en
algorithme

Code en
Pascal

Rôle
Supprime la partie décimale
pour ne laisser que la
composante entière de x
Donne un entier qui est la
valeur du réel x arrondie à la
plus proche valeur
Donne la valeur absolue de x.

Tronc(x)

Trunc(x)

Arrondi(x)

Round(x)

Abs(x)

Abs(x)

Carré(x)

Sqr(x)

RacineCarré(x)

Sqrt(x)

Sin(x)

Sin(x)

Cos(x)

Cos(x)

Exp(x)

Exp(x)

Ln(x)

Ln(x)

Ent (x)

Int (x)

Frac(x)

Frac(x)

Aléa

Random

Aléa ( n )

Random( n)

Type du
paramètre
Entier ou Réel

Type du
résultat
entier

Entier ou Réel

entier

Réel/Entier

Exemples
Trunc(3.14) vaut 3
Trunc(3.50) vaut 3
Trunc(-8.575) vaut -8
Round(9.499) vaut 9
Round(9.50) vaut 10
Round(9.99) vaut 10
Abs(-5) vaut 5

Donne le carré de x.

Réel ou entier

Donne la racine carrée de x si
x n’est pas négatif et
provoque une erreur sinon
Donne le sinus de x (x en
radians).
Donne le cosinus de x (x en
radians)
Donne l’exponentielle de x.
Donne
le
logarithme
népérien de x si x est positif
et provoque une erreur
sinon.
Renvoi la partie entière de x

Entier ou Réel

Type du
paramètre
Type du
paramètre
Réel

Entier ou réel

Réel

Sin(Pi/2) vaut 1

Entier ou réel

Réel

Cos(Pi/2) vaut 0

Entier ou réel
Entier ou réel

Réel
Réel

Exp(0.0) vaut 1
Ln (1.0) vaut 0

Entier ou réel

Réel

réel

réel

Int(5.26) vaut 5.0
Int (-5.5) vaut -5.0
Frac(5.26) vaut 0.26

-

réal

entier

entier

Renvoi la partie fractionnaire
de x
Donne un réel aléatoire de 0
à 1 exclus.
Donne un entier aleatoire de
0 à n exclus

Sqr(5) vaut 25
Sqrt(5) vaut 2.236..

 La table de vérité:
X

Y

NON(x)

x ET y

x OU y

x OUex y

FAUX
FAUX
VRAI
VRAI

FAUX
VRAI
VRAI
FAUX

VRAI
VRAI
FAUX
FAUX

FAUX
FAUX
VRAI
FAUX

FAUX
VRAI
VRAI
VRAI

FAUX
VRAI
FAUX
VRAI

4

cours de 2ème et 3ème

Rappel

 Les fonctions prédéfinies sur les caractères sont :
Nom

Code en Pascal

ORD(c)

ORD(c)

CHR(n)

CHR(n)

Renvoie le code ASCII du caractère c. le
résultat est un entier positif.
Renvoie le caractère dont le code ASCII est n.

Rôle

Exemple

SUCC(c)

SUCC(c)

Renvoie le caractère successeur de c s’il existe

PRED(c)

PRED(c)

MAJUS(c)

UPCASE(c)

Renvoie le caractère prédécesseur de c s’il
existe
Convertit le caractère c en majuscule s’il est
possible

ORD("A") vaut 65
ORD("a") vaut 97
CHR(65) vaut "A"
CHR(97) vaut "a"
SUCC("C") vaut "D"
SUCC("2") vaut "3"
PRED("C") vaut "B"
PRED("2") vaut "1"
MAJUS("d") vaut "D"

 Les fonctions et les procédures standards sur les chaînes de caractères
Nom

En Pascal

Concat(ch1,ch2,… , chN)

CONCAT(ch1, ch2,… chN)

Long(ch)

LENGTH ( ch )

Sous_Chaîne ( ch , p , nbc )

COPY ( ch , p , nbc )

Pos ( ch1 , ch2 )

POS ( ch1 , ch2 )

Efface ( ch , p , n )

DELETE ( ch , p, n )

Insère ( ch1 , ch2 , p )

INSERT ( ch1 , ch2 , p )

Convch ( d, ch )

STR ( d , ch )

Valeur ( ch , d , erreur)

VAL ( ch , d , erreur )

rôle
Fonction qui retourne la
concaténation des chaînes
ch1, ch2, …, chN
Fonction qui retourne un
entier
représentant
la
longueur en caractères de la
chaîne ch.
Fonction qui retourne une
sous-chaîne d’une longueur
nbc à partir de la position p
dans ch.
Fonction qui retourne la
position de la chaîne ch1
dans la chaîne ch2, si ch1
n’est pas dans ch2, elle
retourne 0.
Procédure qui enlève n
caractères de ch à partir de
la position p.
Procédure qui insère la
chaîne ch1 dans la chaîne
ch2 à partir de la position p.
le caractère numéro p et les
suivants sont décalés vers la
droite.
Procédure qui convertit un
nombre décimal d en chaîne
de caractère et l’affecte à la
variable ch
Procédure qui convertit une
chaîne en une valeur
numérique
décimale
et
l’affecte à la variable d. le
paramètre erreur est une
variable de type entier qui
contiendra 0 si la conversion
s’est déroulée sans erreur,
sinon elle contiendra le
numéro (la position du
caractère qui a déclenché
l’erreur).

5

Exemple
"Bac"+"2007" ="Bac2007"
Ch"Bac" , Long(ch)=3
Long("Bac 2007")=8

Sous_chaîne("Bonjour",1,3)= "Bon"

Pos("bo","Bonbon")=4
Pos("ON","Bonbon")=0
Ch "Toujour"
Efface(ch,1,3)  ch devient "jour"
ch1  "Ben " ch2  "Ali Hmida"
Insère(ch1,ch2,5)
 ch2 devient "Ali Ben Hmida"

Convch(2008,ch)  ch="2008"

Valeur("2008",d,e)
 d=2008 et e=0 (pas d’erreur)
Valeur("15 Mars 2008",d,e)
 d=0 et
e=3 (position de l’erreur)

Chap I

Les enregistrement et les fichiers

Les enregistrements et les fichiers

6

Chap I

Les enregistrement et les fichiers

Les enregistrements et les fichiers

Objectifs :




Définir la structure enregistrement.
Définir les fichiers et les modes d’accès
Mettre à profit les structures enregistrement et fichiers pour résoudre des problèmes.

Rappel:

En rappel que en 2ème et en 3ème année nous avons vu dans le cours de programmation qu'une donnée
(ou information) peut être que de valeur constante ou de valeur variable et on peut la stocker ou la
garder dans :
• Une constante: si sa vaaleur est stable
• Une variable: si sa valeur change au cour de programme.
• Un tableau: si on a plusieur valeur de même nature.
Donc les structures de données utilisée en 2ème et en 3ème sont:
• Les constantes
• Les variables
• Les tableaux
Question : Est ce que ces informations seront enreistrer d’une façon temporaire ou permanent ?
Réponse : Temporaire car sont enregistrer dans la RAM.

A- Les enregistrements
I- Introduction :
Activité 1:
Un établissement scolaire utilise une application informatique pour saisir, manipuler, et
mémoriser les informations concernant ses élèves (exemple des informations).
Numéro
Nom
Prénom sexe moyenne
1000

cherni

Sihem

1001

Barhoumi Mourad M

12.75

1030

Dziri

16.50

Fahmi

F

M

14.25

Question :
Afin d’écrire ce programme proposer une structure de donnée adéquate a ce problème.
Réponse :
1- Utiliser des variables simples :
Num : pour numéro
Nom : pour nom
Moy : pour la moyenne
Cette proposition valable peut être que pour un seul élève.
2- Utiliser les tableaux : on propose un tableau pour chaque colonne ( ou champs)
- Un tableau pour les Numéros NU
1000 1001 …. …. 1030
-

Un tableau pour les noms

Cherni Barhoumi …. …. Dziri
7

Chap I

Les enregistrement et les fichiers

- Un tableau pour les prénoms
- Un tableau pour les moyennes
Cette proposition à plusieurs anomalies : d’abord elle nécessité beaucoup d’espace
mémoire qui est le plus couteux. De plus a chaque modification dans un tableau doit être
suivit obligatoirement par modification de tous les tableaux pour assurer la cohérence des
informations de chaque élève.
3- Utiliser une nouvelle structure : pour rendre le traitement plus facile on doit grouper
toutes les informations concernant un élève dans une seule structure (qui est impossible
pour un tableau) cette nouvelle structure s’appelle Enregistrement ou Article( en Pascal
s’appelle Record).
On la représente comme suite :

Num
(Entier)

Nom
(Chaine)

Prénom
(Chaine)

Sexe
(caractère)

Moy
(Réel)

Une seule entité qui s’appelle enregistrement : E
On désigne par :

E.Num
E.Nom
E.Prenom
.
.
E.Moy

: un champ qui représente le Numéro
: un champ qui représente le Nom
: un champ qui représente le prénom

: un champ qui représente la moyenne

En général :
Champ 1
(type 1)

Champ 2
(type 2)

Champ 3
(type 3)

Champ 4
(type 4)

Champ 5
(type 5)

Une seule entité d’une variable enregistrement
Nous venons de voir que les variables simples ou les tableaux ne permettent pas de ranger des
données de types différents.
Si nous voulons établir par exemple une structure comportant en même temps des informations
alphanumériques, numériques, nous devons créer un nouveau TYPE qui permet de les regrouper.
II- Définition et déclaration:
Un enregistrement ou Article (record) est un type de donnée structuré défini par
l'utilisateur qui permet de regrouper un nombre fini des données (champs) de différents types
(alphabétique, numérique, logique,...) sous un nom commun.
Contrairement aux tableaux qui ne permettent de grouper que des éléments du même type, les
enregistrements nous permettent de combiner différents types de données.

8

Chap I

Les enregistrement et les fichiers

Déclaration d’une structure enregistrement :
T.D.N.T
Type
Nom_type = Enregistrement
Champ 1 : Type 1
Champ 2 : Type 2

Var

Nom_type = Record

End ;

Objet

Type/Nature

Nom_var Nom_type

Champ 3 : Type n
Fin Nom_type
En Pascal
Type

T.D.O

Rôle
Enregistrement pour …..

Champ1 : type1 ;
Champ2 : type2 ;
.
.
Champn : type n ;

Nom_var : Nom_type ;

N.B :

Les types (type1, type2,…, type n) peuvent être soit prédéfinit (entier, réel, booléenne…),
soit définis par l’utilisateur (tableau, semaine,…)
Applications :
Proposer une structure de données adéquate pour chaque objet :
1. Chaque étudiant doit présenter les informations suivantes : CIN (entier), Nom et prénom
(chaine de longueur max 35 cc), date de naissance (sou la forme jj/mois/aaaa), sexe (M/F),
Discipline (chaine), nom de l’établissement (chaine).
2. Chaque voiture a vendre doit possède les informations suivantes : Matricule (chaine),
Marque (chaine), Modèle (chaine), année de modèle, km parcouru, (prix de vente).
3. Chaque médicament dans une pharmacie doit avoir les informations suivantes : Référence,
nom commercial, date de fabrication, durée de validité, et le prix.
4. Dans une annonce publicitaire on trouve la liste suivante des téléphones à vendre.
Référence Marque
Modele
Prix (€ )
1000
Nokia
C2-05
35
1001
Nokia
Asha 302
114
1002
Samsung Galaxy S III Mini
250
1003
Sony
Xperia Z
407
III- Tableau (Vecteur) d’enregistrement
Activité 2 :
Même activité 1 mais dans le cas ou il y a plusieurs élève (n).
Réponse
Dans le cas ou il ya plusieurs élèves on peut utiliser les tableaux. Chaque case du tableau comporte
un enregistrement. On appelle donc ce tableau, tableau d’enregistrement.

9

Chap I

Les enregistrement et les fichiers

Pour n élèves

Num

Nom

Prénom

Sexe

Moy

1

Num

Nom

Prénom

Sexe

2

Moy

……

……

Num

Nom

Prénom

Sexe

Moy

n

Pour accéder aux informations de l’élève N° 2 on écrit :
T [ 2 ] . Num : pour accéder au Numéro
T [ 2 ] . Nom : pour accéder au nom
T [ 2 ] . Moy : pour accéder au moyenne
Déclaration :
T.D.N.T

Type
Fiche = Enregistrement
Num : entier
Nom : chaine
Prénom : chaine
Sexe : caractère
Moy : réel
Fin fiche
Tab = Tableau [1 .. 50 ] de Fiche

T.D.O

Objet Type/Nature
Rôle
EEL
Fiche
Enregistrement pour définir un élève
T
Tab
Tableau de 50 enregistrements d’élèves

IV- Utilisation des enregistrements:
Rappel sur l’utilisation d’une variable simple
Pour une variable simple on peut faire les actions suivantes :
- La lecture (lire (var))
- L’écriture (écrire (var))
- L’affectation ( var  valeur )
Même chose pour un enregistrement on peut faire la lecture l’affectation et l’écriture mais
autrement
a) La lecture d’un enregistrement :
Puisque l’enregistrement est composé par plusieurs champs la lecture ce faire champs par
champs
Exemple : pour faire la lecture de l’enregistrement EEL
Ou on peut écrire :
AVEC EEL Faire

Lire ( EEL. Num)
Lire ( EEL . Nom)
Lire ( EEL.Prenom)
Lire ( EEL .sexe )
Lire ( EEL . Moy )

Lire (
Lire (
Lire (
Lire (
Lire (
Fin avec

Num )
Nom )
Prenom )
Sexe )
Moy )

Et en Pascal :
With EEL DO
begin

end ;

10

readln ( Num ) ;
readln ( Nom ) ;
readln ( Prenom );
readln( Sexe );
readln ( Moy ) ;

Chap I

Les enregistrement et les fichiers

Syntaxe
Au niveau de l’analyse
Venrg.champ = Donnée

Au niveau du pascal
Au niveau de l’algorithme
Lire (venrg.champ)
Readln( venrg.champ)

La structure : Avec… Faire
An niveau de l’analyse et de l’algorithme

An niveau du Pascal

Avec venrg Faire
Ensemble d’actions
Fin Avec

With venrg Do
Begin
Ensemble d’actions
End;

b) L’écriture ou l’affichage :
Même que la lecture on affiche le contenu d’un enregistrement champ par champ.
Exemple : pour faire l’affichage de l’enregistrement EEL. On écrit
Ou on peut écrire :

Ecrire ( EEL. Num)
Ecrire ( EEL . Nom)
Ecrire ( EEL.Prenom)
Ecrire ( EEL .sexe )
Ecrire ( EEL . Moy )

AVEC EEL Faire

Ecrire (
Ecrire (
Ecrire (
Ecrire (
Ecrire (
Fin avec

Et en Pascal on écrit :

Num )
Nom )
Prenom )
Sexe )
Moy )

With EEL DO
begin

end ;

writeln ( Num ) ;
writeln ( Nom ) ;
writeln ( Prenom );
writeln( Sexe );
writeln ( Moy ) ;

Syntaxe :
Au niveau de l’analyse et l’algforithme
Ecrire (venrg.champ)

Au niveau du Pascal
Writeln (venrg.champ)

c) L’affectation
1. on peut affecter une valeur a un champ de l’enregistrement
Exemple :
EEL. Num  1000
EEL . Nom  ‘Barhoumi’
EEL.Prenom)  ‘Mourad’
EEL .sexe  ‘M’
EEL . Moy  15.25

Avec EEL faire
Num  1000
Nom  ‘Barhoumi’
Prenom  ‘Mourad’
sexe  ‘M’
Moy  15.25
Fin avec

11

Chap I

Les enregistrement et les fichiers

2. on peut aussi affecter un enregistrement E2 a un enregistrement E1. Si les deux de même
type (c.a.d qui ont le même nombre de champs et de même rang de type).
On ecrit donc :
E1  E2
Chaque champ de E1 va recevoir son homologue de E2.
Exemple :
Soit E1, E2 de type Fiche.
On peut écrire :
E1  E2 c.a.d E1.Num  E2.Num ; E1.Nom  E2.Nom, …, et E1.moy  E2.moy
Application :
Dans un établissement scolaire, un élève est identifié par : son matricule (entier), son nom
et prénom (chaine) et sa moyenne (réel).
On se propose d’écrire un programme modulaire permettant de saisir les informations de
N élèves (N<=50) et d’afficher la liste des élèves classé par moyenne (dans l’ordre décroissant).

B- Les fichiers
I- Introduction :

Notons que les constantes, les variables simples, les tableaux et même les enregistrements perdre
leurs contenus dé qu’on ferme le programme en cours d’exécution et sur tout lorsque en éteindre
l’ordinateur puisque ils font partie de la mémoire centrale (RAM). Or dans le plus part des cas on a
besoin de conserver les informations dans des supports de stockage magnétique, ce qui nécessite
l'utilisation des fichiers.

II- Définition :

Un fichier est un ensemble structuré de données de même type, nommé et enregistré sur un
support physique par l’ordinateur ( disque dur, flash disk, CD, DVD,…).
Un fichier peut contenir des caractères (fichiers textes), des programmes, des valeurs (fichiers des
données). Donc On distingue deux types de fichiers :




Fichiers de données ou typés : se sont des fichiers contenant du code binaire
représentant chaque élément (enregistrement). Ces fichiers ne doivent être manipulés
que par des programmes! (fichier des entiers, fichier de réels, fichier de caractères, mais
généralement fichier d’enregistrements).
Fichiers textes : (appelés aussi imprimables) contenant des caractères et susceptibles
d'être lus, éditées, imprimés... (généralement on peut l’éditer par un logiciel éditeur de
texte)

N.B :




La taille d’un fichier peut être quelconque, la seule limitation étant la taille de la mémoire
auxiliaire.
La fin de fichier est matérialisée par un caractère spécial qui sert de marqueur.

12

Chap I

Les enregistrement et les fichiers

III- Organisation et accès :

Les blocs de données formant un fichier sont enregistrer les uns à la suite des autres de façon
linéaire comme indiqué dans le schéma suivant :
Bloc 1
Enregistrement
0

Bloc 2
Enregistrement
1

Bloc 3
Enregistrement
2

………………

Bloc 4
Enregistrement
(n-1)

Fin
fichie

Pointeur
Pour accéder (lire/ modifier) a un bloc (enregistrement) nous devons tout d’abord le localiser c.a.d
le pointer (faire référence).

Organisation séquentielle

Organisation relative

L’organisation d’un fichier est la manière dont sont rangés les enregistrements du fichier sur le
support physique.
L’organisation est choisie à la création du fichier (rapidité d’accès et espace mémoire).
Il existe plusieurs types d’organisations des fichiers. Les plus importants sont :
• L’organisation séquentielle : elle ne permet qu’un seul accès le séquentiel (pour accéder
un enregistrement on doit passer par les enregistrements qui le précède).
• L’organisation relative (directe) : les enregistrements sont contigus (touche l’un l’autre) et
identifiés par un numéro d’ordre. L’indication d’un numéro permet donc un accès direct à
l’information ainsi référencée.

IV- Les fichiers typés:
1. Déclaration d’un fichier :
En analyse :
T.D.N.T
Type
Nom_fichier = Fichier de type_composants

T.D.O
Objet
Type/nature
Nom_logique Nom_fichier

Rôle
Fichier pour….

Le type_composants représente le type des composants du fichier, ces composants
doivent être de même type, exemple : entier, réel, enregistrement, etc

13

Chap I

Les enregistrement et les fichiers

En pascal
Program test ;
Uses wincrt ;
Type
Nom_fichier = File of type_composants ;
Var
Nom_logique : nom_fichier;
Exemple :
T.D.N.T
Type
fentier = Fichier d’entier
Feleve = fichier de fiche
T.D.O
Objet Type/nature

Rôle

Fent

Fentier

Fichier des entiers

Fel

Feleve

Fichier pour les fiches élèves

V- Les fichiers a accès séquentiel :
1- Association (ou Assignation) :
Permet la liaison entre le nom logique (ou nom interne) et le nom physique (ou
nom externe) du fichier.
Remarque :
• Le nom interne (ou nom logique) correspond au nom utilise dans le
programme. C'est donc l'identificateur déclare comme variable (ex : var f :
file of ...).
Il s'agit donc du nom de fichier vu par le programmeur et par le programme Pascal.
• Le nom externe (ou nom physique) représente quant a lui le nom utilise sur
le disque, visible dans le répertoire (dossier ou directory).
Il s'agit donc du nom de fichier vu par l'utilisateur et par le système d'exploitation.
Syntaxe :
En analyse et en algorithme
En Pascal
Associer (nom logique, nom physique ) ASSIGN (nom logique, nom physique )

14

Chap I

Les enregistrement et les fichiers

Exemple:
Soit la declaration suivante:
Type
Eleve = fichier de fiche
Var
Fel : Eleve
Soit les instructions suivantes:
Nom interne

Nom externe

En algorithme
Associer ( fel , ‘’ c : \4si\scolaire.dat’’)
En Pascal
Assign ( fel , ‘ c : \4si\scolaire.dat ‘)
2- Ouverture d’un fichier
Après l’association, nous pouvons maintenant ouvrir le fichier soit en lecture, soit
en écriture ou en réécriture.
a- Ouverture et création :
A l’aide de l’instruction « Recréer » on peut créer un fichier s’il n’existe pas, ou
ouvrir et effacer son contenu s’il existe déjà et de remettre son pointeur a zéro
Syntaxe :
En analyse et en algorithme
Recréer (nom logique )

En Pascal
Rewrite ( nom logique )

b- Ouverture et remise à zéro :
Pour ouvrir un fichier existant et repositionner ou remettre à zéro son pointeur on
utilise la commande « ouvrir (Reset )»
Syntaxe :
En analyse et en algorithme
En Pascal
Ouvrir (nom logique )

Reset ( nom logique )

3- Ecriture dans un fichier
Pour ajouter ou modifier une valeur ou un enregistrement dans un fichier on utilise
la commande « Ecrire ( write) »
Syntaxe :
En analyse et en algorithme

En Pascal

Ecrire (nom logique , variable ) Write( nom logique , variable )

15

Chap I

Les enregistrement et les fichiers

Application :
Toujours avec la même activité, un élève est identifié par :
Son numéro, son nom et son prénom et sa moyenne
Ecrire une suite d’instruction permettant de saisir les informations de n élèves dans un fichier
scolaire.dat.
Solution
Associer ( fel , ‘C:\4si3\scolaire.dat’)
Recréer ( fel )

Association entre le nom logique fel le nom
physique c:\4si3\scolaire
Création et ouverture du fichier en mode écriture

Ecrire (' Entrer le nbre des élèves),
Lire (n)

Determiner le nombre des élèves

Pour i de 1 à n faire
Avec EEl faire
Ecrire (‘entrer le numero’),lire(num)
Ecrire(‘entrer le nom ‘), lire (nom)
Ecrire (entrer le prenom ‘), lire (pr)

Remplir l’enregistrement

Ecrire (‘entrer la moyenne : ‘), lire( moy)
Fin avec
Ecrire ( fel , EEl )
Fin pour

Ecriture de l’enregistrement dans le fichier

4- Lecture à partir d’un fichier :
La lecture d’une valeur ou d’un enregistrement du fichier se fait par l’instruction
« lire »
Syntaxe :
En analyse et en algorithme

En Pascal

lire (nom logique , variable )

Read ( nom logique , variable )

Lire( Fcl , Ecl)

Read( Fcl , Ecl ) ;

16

Chap I

Les enregistrement et les fichiers

5- Fermeture d’un fichier
A la fin du traitement, nous devons fermer le (ou les) fichier(s) ouvert(s)
Syntaxe :
En analyse et en algorithme
Fermer (nom logique )

En Pascal
Close( nom logique )

6- Test de fin du fichier
Pour tester si la fin de fichier est atteinte ou non on utilise la commande « Fin_fichier » qui
est une fonction booléenne qui retourne vrai si la fin de fichier est atteinte et faux si non.
Syntaxe :
En analyse et en algorithme
Fin_Fichier (nom logique )

En Pascal
EOF( nom logique )

VI- Les fichiers à accès direct :
Dans les fichiers à accès direct les enregistrements sont numérotés a partir de zero. Ce qui
fait que pour accéder au nème élément il faut se positionner sur le n-1ème enregistrement.
1- Positionner sur un enregistrement :
Syntaxe :
En analyse et en algorithme
En Pascal
Pointer (nom logique , numéro )

Seek ( nom logique , numéro )

2- Savoir la taille du fichier
Pour savoir combiens d’éléments se trouvent dans le fichier on peut utiliser la
commande « Taille_Fichier (FileSize) ».
Syntaxe :
En analyse et en algorithme
En Pascal
Taille_Fichier (nom logique )

FileSize( nom logique )

17

Chap I

Les enregistrement et les fichiers

VII- Autres fonctions et procédures prédéfinies
Ces fonctions et ces procédure sont valable aussi bien pour l’accès direct que l’accès
séquentiel.
1- Position actuel de pointeur :
Syntaxe :
En analyse et en algorithme

En Pascal

Position_fichier (nom logique ) FilePos( nom logique )
Fonction qui fournit le numéro d’ordre (la position) de l’élément sur le quel se trouve le
pointeur du fichier.
Application :
Signe fin
Soit le fichier F qui contient les enregistrements suivants :
Fichier
Enreg 0

Enreg 1

Enreg 2

Enreg 3

Enreg 4

Enreg 5

Pointeur
- Pour savoir le nombre d’enregistrement dans ce fichier on écrit :
Taille_Fichier ( F )  renvoi 6 c.a.d il existe 6 enregistrements.
- Pour savoir la position actuelle du pointeur on écrit :
Position_Fichier (F)  Renvoi 3 c.a.d enregistrement N° 3.
- Pour positionner le pointeur a la fin du fichier on écrit :
Pointer (F , 6 ) = Pointeur ( F , Taille_Fichier ( F ) )
- Pour positionner le pointeur sur l’enregistrement qui précède la position actuelle de pointeur
Pointer ( F , 2 ) = Pointer ( F , Position_Fichier ( F ) -1 )
2- Effacer un fichier
Syntaxe :
En analyse et en algorithme
Effacer (nom logique )

En Pascal
Erase( nom logique )

3- Renommer un fichier
Syntaxe :
En analyse et en algorithme

En Pascal

Renommer (ancien_nom_log , nouveau_nom_log )

Rename(ancien_nom_log , nouveau_nom_log)

18

Chap I

Les enregistrement et les fichiers

4- Tronquer un fichier
Tronquer un fichier sa veut dire Tout ce qui se trouve au delà de la position actuelle du pointeur
sera perdu.
Syntaxe :
En analyse et en algorithme
Tronquer (Nom_logique )

En Pascal
Truncate( Nom_logique )

VIII- Les fichiers texte
Un fichier texte (fichier ASCII) est un fichier dont le contenu représente uniquement une suite de
caractères.
Les fichiers textes constituent une catégorie particulière. En effet à la différence des autres fichiers,
ils contiennent des caractères
- De type retour chariot (CR)
- De fin de ligne (Eoln)
- Fin de texte (code CTRL-Z).
1. Déclaration d’un fichier texte:
En analyse :
T.D.O
Objet

Type/nature

Nom_logique texte

Rôle
Fichier texte ….

En pascal
Program test ;
Uses wincrt ;
Var
Nom_logique : text ;
Remarque :
Comme pour les autres fichiers on peut utiliser les commandes suivantes sur les fichiers
texte s: Associer, Ouvrir, Fermer, Fin_fichier, Renommer, Effacer, Tronquer
Sauf les commandes suivantes : FilePos, FileSize et Seek.
2. Tester la fin d’une ligne :
Syntaxe :
En analyse et en algorithme
Fin_ligne (nom logique )

En Pascal
Eoln( nom logique )

Fonction logique qui retourne Vrai si l’on trouve sur le caractère CR (retour chariot) et Faux
dans le cas contraire.

19

Chap I

Les enregistrement et les fichiers

3. Ajouter un élément dans un fichier texte
Syntaxe :
En analyse et en algorithme
Ajouter (nom logique )

En Pascal
Append( nom logique )

Procédure qui ouvre le fichier texte et positionne son pointeur à la fin de ce dernier afin
d’ajouter un élément.
4. Lecture d’une ligne a partir d’un fichier texte
Syntaxe :
En analyse et en algorithme

En Pascal

Lire_nl (nom logique , variable_ch ) Readln ( nom logique , variable_ch )
Procédure qui lit le contenu d’une ligne, puis pointe la prochaine ligne.
5. Ecriture une ligne dans un fichier texte
Syntaxe :
En analyse et en algorithme

En Pascal

Ecrire_nl (nom logique , variable_ch ) Writeln ( nom logique , variable_ch )
Procédure qui introduire dans un fichier texte une ligne de type chaine puis une séquence CRLF pour marquer la fin de ligne.
Application 1 : (ex 1 bac blanc 2014)
TDNT

TDO

Soient les tableau de déclaration des types et des objets suivants :
Type
Etat = (Celibataire, Marie, Divorce, Veuf)
Renseignement = Enregistrement
Nom : Chaine
Num : Octet
Etat_Civil : Etat
Fin renseignement

F
E
B
P

Objet

Nature /Type
Texte
Renseignement
Booléen
Octet

Rôle

20

Chap I

Les enregistrement et les fichiers

Question :
Recopier le tableau ci-dessous sur la copie de l’examen puis le complèter en mettant dans la 2ème
colonne en mettant Valide si l’instruction donnée dans la 1ère colonne est valide ou en mettant
Invalide dans le cas contraire, tout en justifiant la réponse si l’instruction est Invalide.
Instruction

Valide/Invalide

Justification

B  Fin_Fichier ( F )
Pointer ( F , P )
Ecrire ( F , E.Etat_Civil)
B  E.Num > 10
P  Taille_Fichier ( F )
E.Etat_Civil  Succ ( Marie )
Application 2: ( Sujet bac pratique 2010 )
On se propose d’écrire un programme qui permet de :
• Remplir un fichier nommé Nombre.dat par n chiffres aléatoires non nuls ( avec 2 < n ≤ 50 )
• Déterminer et afficher le plus petit nombre (pn) et le plus grand nombre (gn) formés par
tous les chiffres de ce fichier.
• Vérifier si les écarts entre tous les chiffres symétriques de gn forment des termes successifs
d’une suite arithmétique, dans l’affirmative, afficher sa raison ( r ).
Deux chiffres Ci et Cj de gn sont dits symétriques si leurs positions respectives i et j dans gn
vérifient : i + j = k + 1, avec k le nombre de chiffres de gn, pour tout i allant de 1 à k div 2.
N.B : Une suite U est dite arithmétique si Un = Un-1 + r
Exemple 1 : soit le fichier Nombres.dat suivant pour n = 7.
8
6
4
3
9
7
4

Le plus petit nombre (pn) est : 3446789
et le plus grand nombre (gn) est : 9876443

Les écarts 6, 4 et 3 calculés entre tous les chiffres symétriques de gn ne forment pas des
termes successifs d’une suite arithmétique. En effet U1=U0 – 2  r1 = - 2
et U2 = U 1 – 1  r2 = -1. Comme r1 <> r2 alors U n’est pas une suite arithmétique.
21

Chap I

Les enregistrement et les fichiers

9

8

7

6

4

4

3

U2 = 7 – 4 = 3
U1 = 8 - 4 =4
U0 = 9 - 3 =6
Travail demandé :



Décomposez le problème en modules et déduisez les analyses de chaque module.
Déduisez les algorithmes de chaque analyse.

22

Chap I

Les enregistrement et les fichiers

Série N° 1
Exercice N°1
Soit l’enregistrement suivant qui définit la facture du Steg
Type
Fact = Enregistrement
Ref : mot
Ancqt : Entier
Nvqt : Entier
Prixkilo : Réel
Fin Fact
Tab = Tableau [ 1 . . 100 ] de Fact
Var
T : Tab
F , F1 : Fact
Question
Rependre aux propositions suivantes par vrai ou faux
Lire ( F)
F F1
F T
T[2]F
F . Ref  T [ 2 ] . Ref

F . Ancqt  33274
F. Ref  72130
Lire ( F . prixkilo )
Lire ( T [ 3 ] )
Lire ( T [ 3 ] . prixkilo )

Exercice N° 2

Un club vidéo possède N films (avec 10 <= N <= 200), chaque film est identifier par
- Une référence (un entier de 4 chiffres)
- Le titre de film (une chaine)
- Durée de film en minute
- Année de sortie de film
Ecrire un programme qui permet de saisir les informations de l’ensemble des films, puis d’afficher
la liste du film classé par l’année de sortie (de nouveau a l’ancien).

Exercice N°3

Une société veut informatiser la gestion de ses employés. Elle détient pour chacun les informations
suivantes :
- Le nom et le prénom (chaine de caractères)
- Le grade : uniquement A, B, C, ou D.
- Le code fiscal (un entier non signé)
- L’assurance maladie (O pour oui et N pour non)
Le nombre d’employés est N avec ( 4<= N <= 120).

Questions :

Ecrivez un programme modulaire nommé GESTION qui permet la saisie de toutes les fiches de
renseignements puis d’afficher :
1- Toutes les fiches (une par une et avec une attente jusqu'à l’appui sur la touche ENTREE).
2- Le nombre d’employés ayant un grade donné et leur pourcentage par rapport au nombre total des
employés.
Traduisez ce programme en Pascal et l’enregistrez sous le nom societé.pas.

23

Chap I

Les enregistrement et les fichiers

Série N° 2
Exercice N° 1
Dans un kiosque de journaux le plus part des journaux sont connus par :
-

Un numéro de série (entier signé)
Un titre (chaine)
La période : Q : Quotidien, H : Hebdomadaire, M : Mensuel, T : Trimestriel, et A : Annuel.
Spécialité : Economique, culturelle, sportif, …
Le prix : en millième (un entier)

Ecrire un programme modulaire utilisant un menu de choix qui permet de gérer le stock
de journaux dans ce kiosque. Le programme permet de :


Saisir les informations de tous les journaux vendus dans ce kiosque dans un fichier
Journal.dat sur l’unité C dans un dossier kiosque.



Ajouter un nouveau journal a la fin de fichier journal.dat.



Afficher la liste de journaux selon une période donnée.



Chercher le journal (ou les journaux) dont son nom commence par une chaine donnée.



Modifier les prix des journaux selon une période donnée et de pourcentage donnée
(exemple tous les journaux Mensuels subit une augmentation de prix de 10%)

Exercice N° 2
Ecrire l’analyse et l’algorithme d’un programme qui permet de :






Remplir un fichier « nombre.dat » par N entiers aléatoires < 1000 (avec 5 < N < 100).
Copier le contenu de fichier dans un tableau T.
Trier le tableau T dans l’ordre croissant.
Retourner le contenu du Tableau dans le fichier
Afficher le contenu de fichier avant et après le tri.

24

Chap I

Les enregistrement et les fichiers

Exercice N° 3
Un récepteur numérique mémorise les chaines télévisions et radios sous cette forme :


Nom de la chaine : Tunis TV, Al Jazeera, Dream TV…



Nom du satellite : Nilesat, Hotbird, Astra …



Fréquence en Hz un entier de 9000 à inferieur 13000 : exemple 10775, 11995,…



Symbole : 3/4 , 5 /6, …



Polarisation : 27500 ,23000 ,…



Crypté ou Clair : O : pour crypté ou codé et N : pour non codé ou Clair.

Ecrire un programme modulaire utilisant un menu de choix qui permet de gérer les
chaines dans un récepteur. Le programme permet de :
1- Saisir les informations de N chaines ( avec 10 <= N <= 2000) dans un fichier Chaine.dat sur
l’unité C : dans un dossier récepteur.
2- Ajouter les informations d’une chaine a la fin du fichier Chaine.dat.
3- Afficher la liste des chaines d’un satellite donnée.
4- Eclater le fichier Chaine.dat en deux fichiers texte, le premier pour les chaine crypte appelé
Crypté.txt et le deuxième pour les chaine clair appelé Clair.txt.

Exercice N° 4
On se propose d’écrire l’analyse d’un programme pour remplir un fichier texte puis
d’afficher la fréquence de chaque lettre alphabétique (majuscule ou minuscule) du texte. Le
résultat doit être stocké dans un deuxième fichier texte sous la forme suivante :
Fréquence de A = 12
Fréquence de B = 9
…..
Travail demandé :


Donner la structure de données à utiliser.



Analyser le problème on le décompose en modules.



Donner l’analyse de chaque module envisagé

25

Chap I

Les enregistrement et les fichiers

Correction d’exercice N° 1 de la série N° 2
1- Analyse programme principal
Nom = kiosque
Résultat = aff
Aff = [ ] Répéter
Clrscr
Ecrire (‘************* Menu *********** ‘)
Ecrire (‘’ 1 - Création de fichier Journal ‘’)
Ecrire (‘’ 2 – Saisir les informations des journaux ‘’)
Ecrire (‘’ 3 – Ajouter un nouveau journal ‘’)
Ecrire (‘’ 4 – Afficher la liste de journaux par période ‘’)
Ecrire (‘’ 5 – Recherche des journaux par une partie de nom ‘’)
Ecrire ( ‘’ 6 – Mise à jour des prix ‘’)
Ecrire (‘’ 7 – Quitter ‘’)
Répéter
Chx= Donnée( ‘’ Entrer votre choix : ‘’ )
Jusqu'à Chx dans [ 1 . . 7 ]
Proc association( Fj )
Selon chx faire
1 : proc Création ( Fj)
2 : proc saisie ( Fj )
3 : proc ajout ( Fj )
4 : proc liste ( Fj )
5 : proc recherche ( Fj)
6 : proc maj (fj )
7 : Exit
Fin Selon
Jusqu'à ( Chx=7 )
Fin kiosque
T.D.O
T.D.N.T
Type
Fiche = Enregistrement
Num : mot
Titre : chaine
Pr : caractère
Sp : chaine
Prix : entier
Fin Fiche
Journal = Ficher de fiche

Objet

Type/Nature

Rôle

Ej

Fiche

Enregistrement pour identifier un journal

Fj

Journal

Chx

entier

Fichier pour regrouper les informations des
journaux
choix

Association Procédure

Proc association

Création

Procédure

Proc création du fichier

Saisie

Procédure

Proc saisie les infos des journaux

Ajout

Procédure

Proc ajout d’un journal

Liste

Procédure

Proc affichage de la liste des journaux

Recherche

Procédure

Proc recherche d’un journal

Maj

Procédure

Proc mise à jour des prix des journaux

26

Chap I

Les enregistrement et les fichiers

2- Analyse procédure association
Def proc association ( VAR Fj : journal )
Résultat = ass
Ass = [ ] associer ( Fj , ‘’C:\ kiosque\ journal.Dat ‘’ )
Fin association
3- Analyse procédure création
Déf Proc Création ( var Fj : journal )
Résultat = FJ
Fj = [ Recréer ( Fj )]
Fin Création
4- Analyse procédure saisie
Déf Proc Saisie ( var Fj : journal )
Résultat = Fj
Fj = [ Ouvrir ( Fj) ]
Répéter
Clrscr
Avec Ej faire
Num = Donnée (‘’ entrer numéro de série : ‘’)
Répéter
Titre = Donnée(‘’ Entrer le titre : ‘’)
Jusqu'à ( long ( titre) > 0)
Repeter
Pr = Donnée ( ‘’Entrer la période : ‘’)
Jusqu'à Majus(pr) dans [ ‘’Q’’, ‘’H’’, ‘’M’’, ‘’T’’, ‘’A’’]
Répéter
Sp = Donnée( ‘’ Entrer le spécialité : ‘’)
Jusqu'à Long ( sp ) > 0
Répéter
Prix= Donnée (‘’ Entrer le prix : ‘’ )
Jusqu'à ( prix > 0 )
Fin Ej
Ecrire ( Fj , Ej )
Répéter
Rep = Donnée ( ‘’ Autre saisie O/N : ‘’)
Jusqu'à ( Majus (rep ) dans [ ‘’O’’ , ‘’N’’ ] )
Jusqu'à ( Majus ( Rep ) = ‘’N’’ )
Fin Saisie
T.D.O
Objet
Ej
Rep

Type / Nature
Fiche
Caractère

rôle
Enregistrement identifiant un journal
réponse

27

Chap I

Les enregistrement et les fichiers

5- Analyse procédure Ajout
Déf Proc Ajout ( var Fj : journal )
Résultat = Fj
Fj = [ Ouvrir ( Fj) , Pointer ( Fj , Taille_Fichier ( Fj) )]
Répéter
Clrscr
Avec Ej faire
Num = Donnée (‘’ entrer numéro de série : ‘’)
Répéter
Titre = Donnée(‘’ Entrer le titre : ‘’)
Jusqu'à ( Long ( titre) > 0)
Répéter
Pr = Donnée ( ‘’Entrer la période : ‘’)
Jusqu'à Majus( pr ) dans [ ‘’Q’’, ‘’H’’, ‘’M’’, ‘’T’’, ‘’A’’]
Répéter
Sp = Donnée ( ‘’ Entrer le spécialité : ‘’)
Jusqu'à Long ( sp ) > 0
Répéter
Prix= Donnée (‘’ Entrer le prix : ‘’ )
Jusqu'à ( prix > 0 )

Fin Ajout
T.D.O
Objet
Ej
Rep

Fin Avec
Ecrire ( Fj , Ej )
Répéter
Rep = Donnée ( ‘’ Autre Ajout O/N : ‘’)
Jusqu'à ( Majus ( rep ) dans [ ‘’O’’ , ‘’N’’ ] )
Jusqu'à ( Majus ( Rep ) = ‘’N’’ )

Type / Nature
Fiche
Caractère

rôle
Enregistrement identifiant un journal
Réponse

28

Chap I

Les enregistrement et les fichiers

6- Analyse procédure affiche
Déf Proc affiche ( var Fj : journal )
Résultat = aff
Aff = [ ouvrir ( Fj ) ] Tant que Non (Fin_Fichier ( FJ ) ) Faire
Lire ( Fj , Ej )
Avec Ej Faire
Si Majus ( pr ) = Majus ( p ) Alors
Ecrire (‘’ le numéro de série est : ‘’, num )
Ecrire (‘’ le titre du journal : ‘’, titre)
Ecrire (‘’ la spécialité est : ‘’ , sp )
Ecrire (‘’ le prix du journal : ‘’, prix)
Fin Si
Fin avec
Fin tant que
P =[ ] Répéter
P = Donnée (‘’ Entrer la période : ‘’ )
Jusqu'à Majus ( p ) dans dans [ ‘’Q’’, ‘’H’’, ‘’M’’, ‘’T’’, ‘’A’’]
Fin affiche
T.D.O
Objet
Ej
p

Type / Nature
Fiche
Caractère

Rôle
Enregistrement identifiant un journal
Désigne la période

7- Analyse procédure recherche
Déf Proc recherche ( var Fj : journal )
Résultat = aff
Aff = [ Ouvrir ( Fj ) ]
Tant que Non (Fin_Fichier ( FJ ) ) Faire
Lire ( Fj , Ej )
Avec Ej Faire
Si Nom = sous_chaine (titre , 1 , Long( nom)) Alors
Ecrire (‘’ le numero de serie est : ‘’, num )
Ecrire (‘’ le titre du journal : ‘’, titre)
Ecrire (‘’ la période est : ‘’, pr )
Ecrire (‘’ la spécialité est : ‘’ , sp )
Ecrire (‘’ le prix du journal : ‘’, prix)
Fin Si
Fin avec
Fin tant que
Nom= [ ] Répéter

Nom = Donnée (‘’ Entrer le nom d’un journal : ‘’ )
Jusqu'à Long (nom ) > 0
fin recherche
T.D.O
Objet
Ej
Nom

Type / Nature
Fiche
Chaine

rôle
Enregistrement identifiant un journal
Titre d’un journal
29

Chap I

Les enregistrement et les fichiers

8- Analyse procedure mise à jour
Déf Proc Maj ( var Fj : journal )
Résultat = Fj
Fj = [ Ouvrir ( Fj) ]
Tant que Non (Fin_Fichier ( FJ ) ) Faire
Lire ( Fj , Ej )
Avec Ej Faire
Si Majus ( pr ) = Majus ( p ) Alors
Prix  prix + ( ( prix *px) Div 100 )
N  Position_Fichier ( Fj )
Pointer ( Fj , n-1 )
Ecrire ( Fj , Ej )
Fin Si
Fin avec
Fin tant que
P =[ ] Répéter
P = Donnée (‘’ Entrer la période : ‘’ )
Jusqu'à Majus ( p ) dans [ ‘’Q’’, ‘’H’’, ‘’M’’, ‘’T’’, ‘’A’’]
Px =[ ] Répéter
P x= Donnée (‘’ Entrer la valeur de réduction ou d’’augmentation de prix : ‘’)
Jusqu'à Px > - 100
Fin Maj
T.D.O
Objet
Ej
P
Px

Type / Nature
Fiche
Caractère
Entier

Rôle
Enregistrement identifiant un journal
Désigne la période
Valeur de réduction ou d’augmentation

30

Chap I

Les enregistrement et les fichiers

Correction ex 2 série N° 2

1- Analyse programme principal
Nom : Ex2
Résultat = aff
Aff =[ ] Répéter
Ecrire (‘’ ************ Menu ******************* ‘’)
Ecrire (‘’1- Remplir le fichier Nombre par N entiers aléatoires : ‘’)
Ecrire (‘’ 2- Trier le contenu du fichier utilisant un tableau ‘’)
Ecrire (‘’3 – Afficher le contenu du fichier Nombre ‘’)
Ecrire (‘’ 4 – Quitter ‘’)
Répéter
Chx = Donnée (‘’ Entrer votre choix : ‘’)
Jusqu'à chx dans [ 1 . . 4 ]
Selon chx faire
1 : Proc remplir ( Fn )
2 : Proc trif ( Fn )
3 : Proc affiche ( fn )
4 : Exit
Fin Selon
Jusqu'à ( Chx = 4 )
Fin Ex2
T.D.N.T

Type
Nombre = Ficher d’entier

T.D.O
Objet
Fn
Chx

Type / Nature
Nombre
Entier

Rôle
Fichier de n entiers
choix

2- Analyse procédure remplir
Déf Proc Remplir ( var Fn : Nombre )
Résultat = Fn
Fn = [ Recréer ( Fn ) ] Pour i de 1 à N faire
m  Aléatoire(1000)
Ecrire ( Fn , m )
Fin Pour
N = Répéter
N = Donnée ( ‘’ Entrer le nombre des entiers : ‘’ )
Jusqu'à N dans [ 6 . . 99 ]
Fin Remplir
T.D.O
Objet
i
m

Type / Nature
entier
entier

Rôle
Compteur
Nombre aléatoire

31

Chap I

Les enregistrement et les fichiers

3- Analyse procédure trif
Déf Proc trif ( var Fn : nombre )
Résultat = Fn
Fn = [ ]
Recréer ( Fn )
Pour i de 1 à n faire
Ecrire ( Fn , T [ i ] )
Fin Pour
T = [ Ouvrir ( FN ) , n  0]
Tant que Non (Fin_Fichier ( Fn ) ) Faire
NN+1
Lire ( Fn , T [ N ] )
Fin Tant que
Répéter
B  faux
Pour i de 1 à (n-1) faire
Si T [ i ] < T [ i + 1 ] Alors
Aux  T [ i ]
T[i]T[i+1]
T [ i + 1 ]  Aux
B  Vrai
Fin Si
Fin Pour
Jusqu'à ( Non (B ) )
Fin trif
T.D.O
Objet
I
b
N
Aux
T

Type / Nature
Entier
Booléenne
Entier
Entier
Tableau [1 .. 100] d’entier

Rôle
Compteur
Il y a permutation ou non
Nombre des entiers
Variable temporaire
Tableau de 100 entiers

4- Analyse procédure affiche
Déf Proc Affiche ( Var Fn : Nombre )
Résultat = Aff
Aff = [ ouvrir( fn) ] Tant que Non (Fin_Fichier ( Fn ) ) Faire
Lire ( Fn , n)
Ecrire ( n )
Fin Tant que
T.D.O
Objet
N

Type / Nature
entier

Rôle
Entier du fichier

32

Chap I

Les enregistrement et les fichiers

Traduction en Turbo Pascal
Exercice N° 1

program journal;
uses wincrt;
type
Article = record
num : integer;
titre : string[10];
per : char;
spec : string[10];
prix : longint;
end;
fichier = file of article;
var
Ejour:article;
Fjour:fichier;
choix:integer;
procedure ass (var Fjour:fichier);
begin
assign (Fjour,'C:\journal.dat');
end;
procedure creation ( var Fjour:fichier);
begin
rewrite (Fjour);
end;
procedure saisi (var Fjour:fichier; Ejour:article);
var
rep:char;
begin
reset(Fjour);
repeat
with Ejour do
begin
repeat
write ('Entrer la numéro de serie du journal : ');
readln (num);
until (num>0) ;
repeat
write ('Entrer le titre du journal : ');
readln (titre);
until (length(titre)>0);
repeat
write ('Entrer la periode du journal : ');
readln(per);
until upcase(per) in ['Q','H','M','T','A'];
repeat
33

Chap I

Les enregistrement et les fichiers

write ('Entrer la specialité du journal : ');
readln(spec);
until (length (spec)>0);
repeat
write ('Entrer la prix du journal en millimes : ');
readln(prix);
until (prix>0) ;
clrscr
end;
write(Fjour,Ejour);
Repeat
write ('Voulez vous saisi un autre journal (O/N) ? : ');
readln (rep);
until upcase (rep) in ['O','N'];
clrscr;
until upcase (rep) = 'N';
close(Fjour);
end;
procedure ajout (var Fjour:fichier; Ejour:article);
var
rep : char;
p:integer;
begin
reset (Fjour);
seek(Fjour,filesize(Fjour));
repeat
with Ejour do
begin
repeat
write ('Entrer la numéro de serie du journal : ');
readln (num);
until (num>0) ;
repeat
write ('Entrer le titre du journal : ');
readln (titre);
until (length(titre)>0);
repeat
write ('Entrer la periode du journal : ');
readln(per);
until upcase(per) in ['Q','H','M','T','A'];
repeat
write ('Entrer la specialité du journal : ');
readln(spec);
until (length (spec)>0);
repeat
write ('Entrer la prix du journal en millimes : ');
readln(prix);
34

Chap I

Les enregistrement et les fichiers

until (prix>0) ;
clrscr
end;
write(Fjour,Ejour);
Repeat
write ('Voulez vous saisi un autre journal (O/N) ? : ');
readln (rep);
until upcase (rep) in ['O','N'];
clrscr;
until upcase (rep) = 'N';
close(Fjour);
clrscr;
end;
procedure affiche (var Fjour:fichier; Ejour:article);
var
periode : char;
begin
reset(Fjour);
repeat
write ('Entrer la periode souhaité : ');
readln(periode);
until upcase(periode) in ['Q','H','M','T','A'];
while not(eof(Fjour)) do
begin
read(Fjour,Ejour);
with Ejour do
begin
if upcase(periode) = upcase(per) then
begin
writeln('numero du serie : ',num);
writeln('titre : ',titre);
writeln('periode : ',per);
writeln ('Specialité : ',spec);
writeln ('prix : ',prix);
writeln;
readln;
end;
end;
end;
clrscr;
close(Fjour);
end;
procedure cherche (var Fjour:fichier; Ejour:article);
var
ch,mot:string;
begin
reset(Fjour);
repeat
35

Chap I

Les enregistrement et les fichiers

write ('Entrer le mot qui tu vient le rechcerche : ');
readln(mot);
until (length(mot)>0);
while not(eof(Fjour)) do
begin
read(Fjour,Ejour);
with Ejour do
begin
ch := copy (titre,1,length(mot));
if ch = mot then
begin
writeln (titre);
readln;
end;
end;
end;
clrscr;
close(Fjour);
end;
procedure misejour (var Fjour:fichier; Ejour:article);
var
p,x:integer;
periode:char;
pour:longint;
begin
reset(Fjour);
repeat
write ('Entrer la periode souhaité : ');
readln(periode);
clrscr;
until upcase(periode) in ['Q','H','M','T','A'];
repeat
write('Entrer la pourcentage : ');
readln(p);
clrscr;
until (p>=-100) and (p<=100);
while not(eof(Fjour)) do
begin
read(Fjour,Ejour);
with Ejour do
begin
if upcase(periode) = upcase(per) then
begin
pour:= (prix*p) div 100;
prix := prix+pour ;
x := filepos(Fjour);
seek(Fjour,x-1);
write(Fjour,Ejour);
end;
end;
36

Chap I

Les enregistrement et les fichiers

end;
clrscr;
close(Fjour);
end;
{programme principale}
begin
clrscr;
repeat
writeln ('**********************************************');
writeln ('******************** Menu ********************');
writeln ('**********************************************');
writeln ('* 1) creation du fichier
*');
writeln ('* 2) saisie les informations des journales
*');
writeln ('* 3) ajout d''une journale
*');
writeln ('* 4) affichage des journeaux
*');
writeln ('* 5) chercher les journeux
*');
writeln ('* 6) mise à jour des prix
*');
writeln ('* 7) exite
*');
writeln ('**********************************************');
writeln ('**********************************************');
repeat
write('Entrer votre choix : ');
readln (choix);
clrscr;
until choix in [1..7];
ass(Fjour);
case choix of
1:creation(Fjour);
2:saisi(Fjour,Ejour);
3:ajout(Fjour,Ejour);
4:affiche (Fjour,Ejour);
5:cherche (Fjour,Ejour);
6:misejour (Fjour,Ejour);
7:exit;
end;
until choix = 9 ;
end.

37

Chap I

Les enregistrement et les fichiers

Exercice N° 2

program tri_fichier_entier;
uses wincrt;
type
nombre = file of integer;
tab = array [1..100] of integer;
var
FE:nombre;
T:tab;
choix:integer;
n:integer;
procedure ass (var FE:nombre);
begin
assign (FE,'C:\4SI\nombre.dat');
end;
procedure creation (var FE:nombre);
begin
rewrite (FE);
end;
procedure Saisi (var FE:nombre; var n:integer);
var
i,m:integer;
begin
clrscr;
reset(FE);
randomize;
repeat
write ('Enter l''entier n : ');
readln (n);
until (n>5) and (n<100);
for i := 1 to n do
begin
m := random (1000);
write (FE,m);
end;
close(FE);
end;
procedure permute (var a,b:integer);
var
aux : integer;
begin
aux := a;
a := b;
b := aux;
end;

38

Chap I

Les enregistrement et les fichiers

procedure copier (var FE:nombre; var T:tab);
var
i,m:integer;
begin
reset (FE);
i:=0;
while not(EOF(FE)) do
begin
i:=i+1;
read(FE,m);
T[i] := m;
end;
close(FE);
end;
procedure TRI (var FE:nombre; var T:tab; n:integer);
var
i,j:integer;
begin
copier (FE,T);
rewrite (FE);
for i := 1 to n-1 do
begin
for j := 1 to n-1 do
begin
if T[j]>T[j+1] then
begin
permute (T[j],T[j+1]);
end;
end;
end;
for i := 1 to n do
begin
write(FE,T[i]);
end;
close(FE);
end;
procedure affichage (var FE:nombre);
var
i,m:integer;
begin
clrscr;
reset(FE);
while not(EOF(FE)) do
begin
read (FE,m);
writeln (m);
end;
readln;
end;
39

Chap I

Les enregistrement et les fichiers

begin
repeat
clrscr;
writeln('******************** MENU *********************');
writeln('* 1) Creation du fichier
*');
writeln('* 2) Remplir le fichier
*');
writeln('* 3) Tri du Fichier
*');
writeln('* 4) Affichage du fichier
*');
writeln('* 5) Quitter
*');
writeln('***********************************************');
repeat
write ('Entrer votre choix : ');
readln (choix);
until choix in [1..5];
ass (FE);
case choix of
1:creation(FE);
2:saisi(FE,n);
3:TRI (FE,T,n);
4:affichage (FE);
5:exit
end;
until choix = 5;
end.

40

Chap I

Les enregistrement et les fichiers

Correction exercice N° 4
1- Algorithme procédure Création
0) Def Proc Creation ( var ft , Ffreq : texte )
1) Ft , ffreq = [ ] associer ( ft , ‘’C:\4si3\ source.txt’’)
Associer ( ffreq , ‘’ C:\ 4si3\ frequence.txt’’)
Recreer ( ft )
Recreer ( ffreq )
2) Fin Creation
2- Algorithme procédure remplir
0) Def proc Remplir ( var ft : texte )
1) Ft = [ Ouvrir ( ft ) ]
Répéter
Ecrire (‘’ entrer une chaine : ‘’)
Lire ( ligne )
Si ( ligne ≠ ‘’’’ ) Alors
Ecrire ( ft , ligne )
Finsi
Jusqu'à (ligne = ‘’’’)
2) Fermer ( ft)
3) Fin remplir
3- Algorithme procédure fréquence
0) Def proc fréquence ( var ft , ffreq : texte )
1) T = [ ouvrir ( ft ) ]
Pour c de ‘’A’’ à ‘’Z’’ faire
T[c]0
Fin Pour ]
Tant que Non ( Fin_Fichier ( ft ) ) faire
Lire ( ft , ligne )
Pour i de 1 à Long ( ft ) Faire
c  Majus ( ligne [ i ] )
Si c dans [ ‘’ A ’’ . . ‘’ Z ’’ ] Alors
T[c]T[c]+1
Fin si
Fin Pour
Fin Tant que
2) Ffreq = [ Recreer ( ffreq ) ]
Pour c de ‘’A’’ à ‘’Z’’ faire
Convch ( T [ c ] , stf )
Ligne  ‘’La fréquence de ‘’+ c + ‘’ est : ‘’ + stf
Ecrire ( ffreq , ligne )
Fin Pour
3) Fermer (ft ), fermer (ffreq)
4) Fin fréquence
41

Chap I

Les enregistrement et les fichiers

4- Algorithme procédure affiche
0) Def proc affiche ( var f : texte )
1) Aff = [ ouvrir ( f ) ]
Tant que Non ( Fin_Fichier ( f ) ) faire
Lire ( f , ligne )
Ecrire ( ligne )
Fin Tant que
2) Fermer ( f )
3) Fin affiche
5- Algorithme programme principal
0) Debut ex4
1) Proc Creation ( ft , ffreq)
2) Proc remplir ( ft )
3) Proc frequence ( ft , ffreq)
4) Proc Affiche ( ft )
5) Proc affiche ( ffreq )
6) Fin ex4

42

Chap I

Les enregistrement et les fichiers

Traduction en Turbo Pascal
str( t[c], stf);
ligne :='La fréquence de ' + c+ ' est : ' +stf;
writeln(ffreq , ligne);
end;
close(ft);
close(ffreq);
end;
procedure affiche ( var f:text);
var
ligne:string;
begin
reset(f);
while Not (eof(f)) do
begin
readln(f, ligne);
writeln(ligne)
end;
close(f);
end;

program ex4;
uses wincrt;
var
ft, ffreq: text;
procedure creation ( var ft , ffreq : text );
begin
assign ( ft,'c:\4si\source.txt');
assign(ffreq,'c:\4si\frequence.txt');
rewrite(ft);
rewrite(ffreq);
end;
procedure remplir ( var ft :text);
var
ligne:string;
begin
repeat
write(' Entrer une chaine : ');
readln (ligne);
if ligne <>'' then
begin
write(ft, ligne)
end;
until ligne='';
end;
procedure frequence ( var ft,ffreq : text);
var
t: array['A'..'Z'] of integer;
i:integer;
c:char;
ligne,stf:string;
begin
reset(ft);
for c := 'A' to 'Z' do
begin
t[ c ] := 0;
end;
while not( eof(ft)) do
begin
readln ( ft , ligne);
for i := 1 to length( ligne) do
begin
c := upcase(ligne[i]);
if c in ['A'.. 'Z'] then
begin
t[c] := t[c] +1;
end;
end;
end;
rewrite (ffreq);
for c := 'A' to 'Z' do
begin

begin
creation(ft, ffreq);
remplir(ft);
frequence(ft,ffreq);
affiche(ft);
readln;
writeln;
affiche(ffreq);
end.

43

Chap I

Les enregistrement et les fichiers

Série N° 3
Exercice N°1

Une société de produit laitier décide d’automatiser la gestion de ses produits. On détient
pour chaque produit les informations suivantes :
• Numéro ‘‘ num ‘’ : Numéro unique de l’article
• Désignation ‘‘ design ‘’ : Nom de l’article (YAOURT, LAIT ou FROMAGE)
• Une matricule ‘‘ mat ‘’ : Remplie automatiquement par une chaîne représentée par les
deux remiers caractères de la désignation et le numéro de l’article. Exemple : Pour l’article
dont le numéro est 10, la désignation est "YAOURT" : La matricule sera ‘‘ YA10 »
• Une date de vente qui lui-même formée de trois champs :
o Jour ‘‘ j ’’ (1 à 31)
o Mois ‘‘ m ’’ (1 à 12)
o Année ‘‘ a ‘’ (≥2000)
• Quantité vendue ‘‘ qv ‘’
• Prix unitaire ‘‘ pu ‘’
Travail demandé :
On désire ecrire un programme permettant de :
1. Saisir et enregistrer les articles des différents produits dans un fichier ayant pour nom
logique "FPROD" et qui correspond à un nom physique "Produit.dat" qui sera créer sur la
racine de l’unité C:
La saisie s’arrête à la saisie d’un numéro négatif qui ne sera pas retenue dans le fichier.
2. Afficher le numéro et la date de vente d’un article qui correspond à une matricule donnée.
Si aucun article n’est trouvé, afficher un message d’erreur.
3. Organiser le fichier ‘‘FPROD » dans un autre fichier ‘‘ FPROD_ORD » en rangeant au début
les données relatives à l’article LAIT puis celles du YAOURT puis celle du FROMAGE.
4. Créer un fichier texte dont la structure est la suivante :
• La 1ére ligne comporte le message "Articles vendus le : " suivit par la date donnée (la date
saisie doit respecter la même condition indiquée ci-dessus).
• La 2ème ligne comporte la recette du jour pour la date donné précédée par le message
"Recette du jour : "
• La suite du fichier comporte les matricules des articles vendus à la date donnée précédés
par le message "Matricules des articles vendus : "
Ainsi, le fichier texte prendra la forme présentée par l’exemple suivant :
Articles vendus le : 12/03/2009
Recette du jour : 48.000
Matricule des articles vendus :
LA6
FR3

N.B : Le programme doit afficher le fichier "FPROD_ORD" et le fichier texte créer.
Questions :
1) Analyser le programme principal ainsi que les différents modules envisagés
2) En déduire l’algorithme du programme principal ainsi que ceux des modules envisagés.

44

Chap I

Les enregistrement et les fichiers

Correction exercice N°1 de la série N°3
A) Analyse programme principal Ex1s3

Résultat = aff
Aff=[ ] Répéter
Ecrire (‘‘******* Menu *********** ‘‘)
Ecrire (" 1-Création des fichiers " )
Ecrire("2- Saisie des article ‘‘ )
Ecrire(‘‘3- Afficher le numéro et la date de vente ‘‘)
Ecrire (‘‘4- Organiser le fichier FPROD dans un FPROD_ORD ‘‘)
Ecrire(‘‘5- Remplir le fichier Texte»)
Ecrire(‘‘6- Afficher le fichier typé FPROD»)
Ecrire(‘‘7- Afficher le fichier texte FART»)
Ecrire(‘‘8- Quitter ‘‘)
Répéter
Chx=donnée(‘‘ Entrer le choix : ‘‘)
Jusqu'à chx dans [1..8]
Proc association (FPROD,FPROD_ORD,FART)
Selon chx Faire
1: proc Création(FPROD, EPR)
2 : Proc Saisie (FPROD , EPR)
3 : Proc Affiche(FPROD, EPR)
4 : Proc Organiser(FPROD, FPROD_ORD, EPR)
5 : Proc Remplir (FPROD,FART, EPR)
6 : Proc AffichePROD( FPROD, EPR)
7 : Proc AfficheART (FART)
8 : Exit
Fin Selon
Jusqu'à chx = 8
Fin Ex1s3
T.D.N.T
T.D.O
Type
Date = Enregistrement
Objet
Type/Nature
rôle
J :1..31
FROD
Prd
Fichier de produit
M :1..12
FPROD_ORD
Prd
Fichier de produit organiser
A :mot
Fart
Texte
Fichier texte article
Fin Date
EPR
Article
Enregistrement article
Article = Enregistrement
Création
Procédure
Num : Entier
Affiche
Procédure
Desig : chaine
Organiser
Procédure
Mat : chaine[4]
remplir
procédure
Datv : Date
Qv : Réel
Pu : Réel
Fin article
Prd = Ficher d’Article

45

Chap I

Les enregistrement et les fichiers

Algorithme
0) Début Ex1S3
1) Aff =[ ]Répéter
Ecrire (‘‘******* Menu *********** ‘‘)
Ecrire (‘‘ 1-création des fichiers ‘‘ )
Ecrire(‘‘ 2- saisie des article ‘‘ )
Ecrire(‘‘ 3- afficher le numéro et la date de vente ‘‘)
Ecrire (‘‘4- organiser le fichier FPROD dans un FPROD_ORD ‘‘)
Ecrire(‘‘5- remplir le fichier Texte’’)
Ecrire(‘‘6- Afficher le fichier typé FPROD’’)
Ecrire(‘‘7- Afficher le fichier texte FART’’)
Ecrire(‘‘8- Quitter ‘‘)
Répéter
Chx=donnée(‘‘ Entrer le choix : ‘‘)
Jusqu'à chx dans [ 1 . . 8]
Proc association (FPROD,FPROD_ORD,FART)
Selon chx Faire
1: proc Création(FPROD, EPR)
2 : Proc Saisie (FPROD , EPR)
3 : Proc Affiche(FPROD, EPR)
4 : Proc Organiser(FPROD, FPROD_ORD, EPR)
5 : Proc Remplir (FPROD,FART, EPR)
6 : Proc AffichePROD( FPROD, EPR)
7 : Proc AfficheART (FART)
8 : Exit
Fin Selon
Jusqu'à chx = 8
2) Fin Ex1s3
B) Analyse Proc association ( Var FROD, FPROD_ORD : Prd ; Fart : texte)
Résultat = FPROD,FPROD_ORD,FART
Associer ( FPROD, ‘‘C:\4SI3\Produit.dat’’)
Associer (FROD_ORD, ‘‘C:\4SI3\Produitord.dat’’)
Associer (Fart, ‘‘C:\4SI3\article.txt’’)
Fin association
C) Analyse Proc Création (VAR FPROD :Prd, EPR :Article)
Résultat = FPROD, FPROD_ORD, FART
Recréer (FROD)
Recréer (FPROD_ORD)
Recréer (FART)
Fin création

46

Chap I

Les enregistrement et les fichiers

D) Analyse Proc Saisie (Var FPROD :Prd ; EPR : Article)
Résultat = FPROD
FPROD= [ ] Répéter
Avec EPR faire
Num=Donnée(‘‘Entrer Numéro : ‘‘)
Si Num > 0 Alors
Répeter
Design= Donnée(‘’ Entrer Désignation de produit’’)
Jusqu'à Long(Design)>0
Str(num,ch)
Mat copy(desig,1,2)+ch
Avec Datv faire
J= Donnée(‘‘Entrer le jour : ‘‘)
M= Donnée (‘‘Entrer le mois : ‘‘)
Répeter
A=Donnée(‘‘Entrer l’année’’)
Jusqu'à a >2000
Fin avec
Répeter
Qv = Donnée(‘‘Entrer la quantité : ‘‘)
Jusqu'à qv >0
Répeter
Pu = Donnée(‘‘Entrer prix : ‘‘)
Jusqu'à pu >0
FinSi
Fin avec
Ecrire(FPROD, EPR)
Fin Saisie
Algorithme
0) Début Déf Proc Saisie (Var FPROD :Prd ; EPR : Article)
1) FPROD= [ ] Répéter
Avec EPR faire
Ecrire (‘‘Entrer Numéro : ‘‘)
Lire (Num)
Si Num > 0 Alors
Répéter
Ecrire(Entrer Désignation de produit»)
Lire(Design)
Jusqu'à Long(Design)>0
Str(num,ch)
Mat copy(desig,1,2)+ch
Avec Datv faire
Ecrire(‘‘Entrer le jour : ‘‘)
Lire(j)
Ecrire (‘‘Entrer le mois : ‘‘)
Lire (m)
Répéter
Ecrire(‘‘Entrer l’année’’)
Lire (a)
Jusqu'à a >2000
Fin avec
47

Chap I

Les enregistrement et les fichiers

Répéter
Ecrire(‘‘Entrer la quantité : ‘‘)
Lire (qv)
Jusqu'à qv >0
Répéter
Ecrire(‘‘Entrer prix : ‘‘)
Lire (pu)
Jusqu'à pu >0

FinSi
Fin avec
Ecrire(FPROD, EPR)

2) Fin Saisie
E) Analyse Proc Affiche (VAR FPROD :Prd ; EPR :Article)
0) Début Déf Proc Affiche (VAR FPROD :Prd ; EPR :Article)
1) Mt =[ ] Répéter
Ecrire(‘‘Entrer un matricule : ‘‘)
lire (mt)
Val (copy(mt,2,2), n, e)
jusqu'à (e=0)
2) Aff =[ Ouvrir(FPROD), i  0 ]
Tant que Non(Fin_Fichier(FPROD)) Faire
lire (FPROD, EPR)
Si mat = mt Alors
Ecrire (‘‘le Numéro est : ‘‘, Num)
Ecrire (‘‘La date de vente : ‘‘, datv . j, ‘‘/ ‘‘ , datv. m , ‘‘/’’, datv . a)
i i+1
Finsi
Fin Tant que
Si i =0 Alors
Ecrire (‘‘Article n’existe pas ‘‘)
FinSi
3) Fin Affiche
F ) analyse Proc Organiser(Var FPROD,FPROD_ORD : Prd ; EPR : Aricle)
0) Début Déf Proc Organiser(Var FPROD,FPROD_ORD : Prd ; EPR : Aricle)
1) Org =[ Ouvrir(FPROD)] Tant Que Non (Fin_Fichier (FPROD)) Faire
Lire (FPROD , EPR)
Si EPR = ‘‘LAIT» Alors
Ecrire (FPROD_ORD, EPR)
Fin si
Fin Tant que
2) [ Ouvrir(FPROD)] Tant Que Non (Fin_Fichier (FPROD)) Faire
Lire (FPROD , EPR)
Si EPR = ‘‘YAOURT’’ Alors
Ecrire (FPROD_ORD, EPR)
Fin si
Fin Tant que
3) [ Ouvrir(FPROD)] Tant Que Non (Fin_Fichier (FPROD)) Faire
Lire (FPROD , EPR)
Si EPR = ‘‘FROMAGE’’ Alors
Ecrire (FPROD_ORD, EPR)
Fin si
48

Chap I

4) Fin Organiser

Les enregistrement et les fichiers

Fin Tant que

G) analyse Proc remplir (VAR FPROD : Prd ; FART : texte ; EPR : Article)
0) Début Déf Proc remplir (VAR FPROD : Prd ; FART : texte ; EPR : Article)
1) Avec Dats faire
Ecrire(‘‘Entrer le jour : ‘‘),
Lire(j)
Ecrire (‘‘Entrer le mois : ‘‘)
Lire (m)
Répéter
Ecrire(‘‘Entrer l’année’’)
Lire (a)
Jusqu'à a >2000
Str (j ,chj)
Str (m,chm)
Str(a, cha)
Fin Avec
2) Ch  chj + ‘‘/’’ + chm + ‘‘/’’ + cha
3) Ecrire (FART , “Articles vendus le : ‘‘ + Ch
4) FART = [ Ouvrir(FPROD), Rec  0 ] Tant que Non (Fin_Fichier(FPROD)) Faire
Lire ( FPROD , EPR)
Si EPR . Datv = Dats Alors
Rec  Rec + EPR . qv * EPR . pu
Fin si
Fin Tant que
Str( Rec , ch )
Ch  ‘‘Recette du jour’’ + Ch
Ecrire ( FART , Ch)
5) [ Ouvrir(FPROD) ] Tant que Non (Fin_Fichier(FPROD)) Faire
Lire ( FPROD , EPR)
Si EPR . Datv = Dats Alors
Ecrire (FART, EPR . mat)
Fin si
Fin Tant que
6) Fin Remplir

49

Chap I

Les enregistrement et les fichiers

H) Algorithme Affiche fichier typé ‘‘produit»
0) Début Déf Proc afficheProd (Var FPROD : Prd ; EPR : Article)
1) Aff = [ Ouvrir (FPROD)]
Tant Que Non (Fin_Fichier (FPROD)) faire
Lire (FPROD, EPR )
Avec EPR faire
Ecrire (‘‘ Le numéro : ‘‘, Num)
Ecrire (‘‘ Désignation : ‘‘, Desig)
Ecrire (‘‘ Le matricule : ‘‘, mat)
Ecrire (‘‘ La date vente : ‘‘ datv . j , ‘‘/» , datv . m , ‘‘/» , datv.a)
Ecrire(‘‘ la quantité vendue : ‘‘, qv)
Ecrire (‘‘ Le prix unitaire : ‘‘, pu)
Fin avec
2) Fin afficheProd
I)
Algorithme affiche fichier texte
0) Début Déf Proc AfficheART (Var FART :texte )
1) Aff =[ Ouvrir (FART)] Tant que Non (Fin_Fichier (FART)) Faire
Lire (FART , Ch)
Ecrire ( ch)
Fin Tant que
2) Fin AfficheART

50


cours algorithmique et programmation 4 si.pdf - page 1/222
 
cours algorithmique et programmation 4 si.pdf - page 2/222
cours algorithmique et programmation 4 si.pdf - page 3/222
cours algorithmique et programmation 4 si.pdf - page 4/222
cours algorithmique et programmation 4 si.pdf - page 5/222
cours algorithmique et programmation 4 si.pdf - page 6/222
 




Télécharger le fichier (PDF)


cours algorithmique et programmation 4 si.pdf (PDF, 5.2 Mo)

Télécharger
Formats alternatifs: ZIP



Documents similaires


139
lecon1
structures repetitives
resume si algo
les procedures
fiche1 ex sous programme