Documente Academic
Documente Profesional
Documente Cultură
Module : ASD2
Chargée de cours : S. ILTACHE 1/18
Série et corrigé : Les fichiers
___________________________________________________________________________
Exercice 1
Exercice 2
Exercice 3
Ecrire un programme qui permet de trier un fichier contenant N entiers. Utiliser des procédures pour
les différents traitements.
Exercice 4
On souhaite gérer différentes informations concernant un certain nombre de cartes de recharge
téléphonique. Pour cela, un fichier d’enregistrements 'c:\exo1\cartes.dat' est utilisé.
Une carte de recharge est caractérisée par :
Numéro de série (12 caractères)
Montant (entier)
Date d’expiration
Opérateur (code (entier), nom (10 caractères))
Exercice 5
Nous considérons un magasin qui commercialise des chaussures. Nous avons les informations
suivantes
- Il y’a 50 modèles de chaussures dans le magasin.
- Pour chaque modèle, il y’a 4 pointures différentes.
- Chaque chaussure est représentée par les informations suivantes :
- Son code permettant de désigner de façon unique un modèle de chaussure
- Une désignation (nom du modèle)
- Les pointures disponibles pour chaque modèle de chaussure et les quantités disponibles en
stock pour chaque pointure.
Nous représentons les articles de ce magasin par un fichier Mag illustré par le schéma suivant.
Questions :
Écrire un programme Pascal qui intègre toutes les fonctionnalités suivantes :
1/ Une procédure paramétrée qui permet de créer le fichier Mag relatif à ce magasin.
2/ Une procédure paramétrée qui donne les codes des chaussures dont la pointure 38 existe et le
nombre total de chaussures de pointure 38.
3/ Une procédure paramétrée qui permet de modifier le code d’une chaussure choisi par l’utilisateur.
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE 3/18
Série et corrigé : Les fichiers
___________________________________________________________________________
Corrigé Exercice 1
Program fichetudiants ;
Type
Etudiant = record
Num :integer ;
Nom :string[15] ;
End ;
Var
ET : Etudiant ;
Fet : file of etudiant ;
NomEt :string[15 ] ;
Numet,i :integer ;
Trouve :boolean ;
Rep :char ;
Begin
{Création du fichier Fet}
Assign (Fet, ‘D:\Fetudiant’) ;
Rewrite(Fet) ;
Repeat
Writeln(‘introduire le numéro de l étudiant ‘) ;
Readln(Et.num) ;
Writeln(‘introduire le nom de l étudiant ‘) ;
Readln(Et.nom) ;
Write(Fet, Et) ;
Writeln(‘saisir les information d un autre étudiant O/N ?’) ;
Readln(rep) ;
Until (upcase(rep)=’N’) ;
Corrigé Exercice 2
Program Multiples5 ;
Var
Fmul5 : file of integer ;
Mul,i :integer ;
Begin
{Création du fichier Fmul5}
Assign (Fmul5, ‘D:\Fichmul5’) ;
Rewrite(Fmul5) ;
i :=1 ;
Repeat
Mul :=i*5 ;
Write(Fmul5, Mul) ;
I :=i+1 ;
Until (Mul >=1000) ;
Close(Fmul5) ;
End.
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE 5/18
Série et corrigé : Les fichiers
___________________________________________________________________________
Corrigé Exercice 3
Program triefichier ;
Const
N=20 ;
Type
Fich = file of integer ;
Tab= array[1..N] of integer ;
Var
F : Fich ;
E,i,j,x :integer ;
A :Tab ;
Close(F1) ;
End ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE 6/18
Série et corrigé : Les fichiers
___________________________________________________________________________
Procedure AffectationF1_to_T (var F1 : fich ; var T :Tab ) ; {Affectation du contenu de F1 au vecteur T}
Var
E,i :integer ;
Begin
Assign (F1, ‘D:\FichF1’) ;
Reset(F1) ;
i :=1 ;
While (not EOF(F1)) do
Begin
Read(F1, E) ;
T[i] :=E ;
I :=i+1 ;
End ;
Close(F1) ;
End ;
Procedure trievecteur (Var T : Tab) ; { tri du vecteur T}
Var
i,j,x :integer ;
Begin
For i :=1 to N-1 do
For j := i+1 to N do
If (T[i]> T[j]) then
Begin
X :=T[i] ;
T[i] :=T[j] ;
T[j]:=X ;
End ;
End ;
Close(F1) ;
End ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE 7/18
Série et corrigé : Les fichiers
___________________________________________________________________________
Begin {programme principal}
Program Carte_tel ;
Type
Date= record
J,M,A :integer ;
End ;
Top= record
CodeOp :integer ;
NomOp :string[15] ;
End ;
Carte= record
Num,Mont :integer ;
DateExp :date ;
Op :Top ;
End ;
Tfcarte= file of carte ;
Chaine= string[15] ;
Var
Fmobilis, Fc :Tfcarte ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE 9/18
Série et corrigé : Les fichiers
___________________________________________________________________________
Procedure creation (var F : Tfcarte) ;
Var
C :carte ;
Rep :char ;
Begin
Assign (F , ‘D:\Fichecarte’) ;
Rewrite(F) ;
Repeat
With C do
Begin
Writeln (‘Numéro de la carte’) ;
Readln(Num ) ;
Writeln (‘Montant de la carte’) ;
Readln(Mont) ;
Writeln (‘Date d expirationde la carte : jour, mois et année’) ;
With DateExp do
Readln(J, M, A ) ;
With Op do
Begin
Writeln (‘Code opérateur’) ;
Readln(CodeOp) ;
Writeln (‘Nom opérateur’) ;
Readln(NomOp) ;
End ;
End ;
Write(F,C) ;
Writeln (‘Saisie des informations d une autre carte O/N ?’) ;
Readln(Rep) ;
Until (upcase(rep) = ‘N’) ;
Close (F) ;
End ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE Série et corrigé : Les fichiers
10/18
___________________________________________________________________________
Begin
For i := 1 to Length (S) do
S[i] :=Upcase (S[i]) ;
Majuscule := S ;
End ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE Série et corrigé : Les fichiers
11/18
___________________________________________________________________________
Begin
Assign (F , ‘D:\Fichecarte’) ;
Reset(F) ;
Assign (FichMobilis, ‘D:\ carteMobilis’) ;
Rewrite(FichMobilis) ;
While (not EOF(F)) do
Begin
Read(F,C) ;
If (Majuscule (C.Op.NomOp) = ‘MOBILIS’) then
Write(FichMobilis, C) ;
End ;
Close (F) ;
Close (FichMobilis) ;
End ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE Série et corrigé : Les fichiers
12/18
___________________________________________________________________________
Begin
Assign (F, ‘D:\ carteMobilis’) ;
Reset(F) ;
While (not EOF(F)) do
Begin
Read(F,C) ;
With C do
Begin
Writeln (‘Numéro de la carte ’,Num) ;
Writeln (‘Montant de la carte ’,Mont) ;
Writeln (‘Date d expiration de la carte : jour, mois et année ’) ;
With DateExp do
Writeln(J, ‘/’, M, ‘ /’, A ) ;
With Op do
Begin
Writeln (‘Code opérateur ’, CodeOp) ;
Writeln (‘Nom opérateur ’, NomOp) ;
End ;
End ;
Writeln ;
End ;
Close(F) ;
End ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE Série et corrigé : Les fichiers
13/18
___________________________________________________________________________
Const
Type
Chaussure = record
Code :integer ;
Desig :string[30] ;
Pt :array[1..2,1..4] of integer ;
End ;
Fich =file of chaussure ;
Fich38 = file of integer ;
Var
Mag :fich ;
Ch :chaussure ;
Mag38 :fich38 ;
Cd,cdnew, Tot :integer ;
UMMTO - Département MI
Module : ASD2
Chargée de cours : S. ILTACHE Série et corrigé : Les fichiers
15/18
___________________________________________________________________________