La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Fichiers Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

Présentations similaires


Présentation au sujet: "Fichiers Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)"— Transcription de la présentation:

1 Fichiers Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dzd_zegour@esi.dz

2 Fichiers : Introduction On définit une machine abstraite sur les fichiers permettant l’initiation aux structures simples de fichiers. Cette machine abstraite offre les opérations de base sur les fichiers : OUVRIR, FERMER, LIRESEQ, ECRIRESEQ, LIREDIR, ECRIREDIR, RAJOUTER, FINFICH, ENTETE, AFF_ENTETE, ALLOC_BLOC Sémantique des fichiers : Il s’agit de les transformer en des formes internes qui permettent de faciliter leur interprétation ou génération de code.

3 Sémantique des fichiers : Quadruplés Déclaration de Fichier (Voir grammaire) A : pointeur dans TABOB vers l’objet fichier B : est égal à 1 (absence de l’entête), égal à 2 (présence de l’entête) C : pointeur dans TABOB vers la constante contenant le type de l’entête si B=2 (‘Df’,A,B, C )

4 Sémantique des fichiers : Quadruplés Ouverture/Fermeture : OUVRIR(F, Fichier physique, Mode), FERMER(F) A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers la constante contenant le nom du fichier physique C : pointeur dans TABOB vers la constante contenant le mode d’ouverture A, B non utilisés C : pointeur dans TABOB vers l’objet fichier (‘Ouvrir’,A,B, C ) (‘Fermer’,A,B, C )

5 Sémantique des fichiers : Quadruplés Accès séquentiel: : LIRESEQ(F,Tampon), ECRIRESEQ(F, Tampon), RAJOUTER(F, Tampon) A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers le tampon A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers le tampon A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers le tampon (‘Lireseq’,A,B, C ) (‘Ecrireseq’, A,B, C ) (‘Rajouter’,A,B, C )

6 Sémantique des fichiers : Quadruplés Accès direct : LIREDIR(F, Rang, Tampon), ECRIREDIR(F, Rang, Tampon) A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers le tampon C : pointeur dans TABOB vers le rang A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers le tampon C : pointeur dans TABOB vers le rang (‘Liredir’,A,B, C ) (‘Ecriredir’, A,B, C )

7 Sémantique des fichiers : Quadruplés Entête de fichier: : ENTETE(F, Rang), AFF_ENTETE(F, Rang, Exp) A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers le rang C : pointeur dans TABOB vers le résultat A : pointeur dans TABOB vers l’objet fichier B : pointeur dans TABOB vers le rang C : pointeur dans TABOB vers le résultat à affecter (‘Entete’,A,B, C ) (‘Aff_entete’, A,B, C )

8 Sémantique des fichiers : Quadruplés Autre : FINFICH(F), ALLOC_BLOC(F) A : pointeur dans TABOB vers l’objet fichier B : non utilisé C : pointeur dans TABOB vers le résultat A : pointeur dans TABOB vers l’objet fichier B : non utilisé C : pointeur dans TABOB vers le résultat (‘Finfich’,A,B, C ) (‘Alloc_bloc’, A,B, C )

9 Fichiers : Déclarations Types dans {Entier, Booleen, Car, Chaine} Sep dans {:, Un, Une, Des} Cste constante numérique entière Chaîne chaîne de caractères Idf un identificateur Opr dans {, >=, =, <> } Opa dans { +, -, Ou } Opm dans { *, /, Et } Sign dans {+, -} Tableau est synonyme de Vecteur Init_tableau est synonyme de Init_vecteur

10 Fichiers : Déclarations  [ ~Soit|Soient~ ] Debut Fin [;] { ~ | ~ [;] }*  Action Idf [ ( ) ] [;] [ ~Soit|Soient~ ] Debut Fin  Fonction Idf ( ) : [ ~Soit|Soient~ ] Debut Fin  ;{ [~Soit|Soient~] ;}*  [Sep ~ |~Action|Fonction( )~ ~]  Idf {, Idf}*

11 Fichiers : Déclarations  Types | | | Machine_car | Machine_nombre | [Pointeur vers [Sep] ] Liste [ De ~Types | ~ | Tableau ( ) [De~ | Types~ ] |  [Structure ](Types {, Types }*)  [Structure ]( ~ Types | Vecteur(Cste) De Types ~ {, ~ Types | Vecteur(Cste) De Types ~ }*)  Cste {, Cste}* Fichier De ~ Types | Vecteur(Cste) De ~Types | | ~ ~ Buffer [Entete] (Types {, types }*) |

12 Fichiers : Instructions  { ; }*  Idf := | Lire ( Idf {, Idf }* ) | Ecrire ( {, }* ) | Tantque [ : ] Fintantque | Si [:] [Sinon ] Fsi | Pour Idf:=, [, ][:] Finpour | Appel Idf [(Exp {, }*)] |

13 Fichiers : Instructions  ~Liberer| Allouer | ~ ( ) | ~ Aff_adr|Aff_val~ (, ) | ~ Creer_liste| Init_vecteur|Init_struct|Creer_mnombre ~ ( Idf, [[ ~ |[[ {, }*]] ~ {, ~ |[[ {, }*]]~}* ]] ) | Aff_element ( [[ {, }* ], ) | ~ Aff_struct | ~ (Idf, Cste, ) | Creer_mcar (Idf, [[ Chaine ]] ) | ~Lirecar|Lirenombre~ (Idf, Idf) | Fermer Ouvrir ((Idf, Chaine, Chaine) | Aff_entete

14 Fichiers : Instructions  ~Lireseq|Ecrireseq|Rajouter~(Idf, Idf) | ~ Liredir | Ecriredir ~ (Idf, Cste, Idf)

15 Fichiers : Expressions  [ Opr ]  [Sign] { Opa }*  {Opm }*  Idf [(Exp {, }*)] | Cste | ( ) | | Nil Non | Vrai | Faux | Chaine  ~Valeur|Suivant~ ( ) | Element ( [[ {, }* ]] ) | ~ Struct | ~ ( Idf, Cste) | ~Nbrcar|NbrNombre ~ (Idf) Entete Finfich|Alloc_bloc

16 Sémantique des fichiers : Fonctions sémantiques  Fichier De ~ Types | Vecteur(Cste) De ~Types | | ~ ~ Buffer [Entete] (Types {, types }*) | Description Fx Fonctions sémantiques et Descriptions à trouver

17 Sémantique des fichiers : Fonctions sémantiques  Fermer ( Idf ) Description Fx Fonctions sémantiques et Descriptions à trouver

18 Sémantique des fichiers : Fonctions sémantiques  Ouvrir ((Idf, Chaine, Chaine) Description Fx Fonctions sémantiques et Descriptions à trouver

19 Sémantique des fichiers : Fonctions sémantiques  Aff_entete (Idf, Cste, ) Description Fx Fonctions sémantiques et Descriptions à trouver

20 Sémantique des fichiers : Fonctions sémantiques  ~Lireseq|Ecrireseq|Rajouter~(Idf, Idf) Description Fx Fonctions sémantiques et Descriptions à trouver

21 Sémantique des fichiers : Fonctions sémantiques  ~ Liredir | Ecriredir ~ (Idf, Cste, Idf) Description Fx Fonctions sémantiques et Descriptions à trouver

22 Sémantique des fichiers : Fonctions sémantiques  Entete ( Idf, Cste) Description Fx Fonctions sémantiques et Descriptions à trouver

23 Sémantique des fichiers : Fonctions sémantiques  ~ Finfich|Alloc_bloc ~ ( Idf, Cste) Description Fx Fonctions sémantiques et Descriptions à trouver

24 Sémantique des fichiers : Exemple1 SOIT F1 UN FICHIER DE ( CHAINE, ENTIER ) ENTETE ( CHAINE, ENTIER ) BUFFER V1 ; S UNE CHAINE ; E, I :ENTIERS ; DEBUT OUVRIR ( F1, 'f1.pas', 'N' ) ; POUR I := 1, 3 LIRE ( S, E ) ; AFF_STRUCT ( V1, 1, S ) ; AFF_STRUCT ( V1, 2, E ) ; ECRIRESEQ ( F1, V1 ) ; FINPOUR ; AFF_ENTETE ( F1, 1, 'Z' ) ; AFF_ENTETE ( F1, 2, I - 1 ) ; FERMER ( F1 ) ; FIN

25 Sémantique des fichiers : Exemple1(suite) ‘L’180 ‘C’310 ‘L’241 312 313 314 ‘C’311 412 413 414 ‘X’915 ‘C’315 416 ‘X’316 0 1 2 TABOB 6 LONGZDD 3 Quadruplés générés ‘Df’021 ‘Ds’29 ‘Dc’3 ‘De’4 5 ‘Ouvrir’067 ‘Aff’58 ‘<=’5910 ‘B’10915 ‘Lire’01 ‘Aff_st’213 224 ‘Ecrse’11 ‘+E’585 ‘Br’7 ‘Aff-en’0112 1 2 3 TABTYP F(SE)*SEB 0 ‘SE’, ‘f1.pas’, ‘N’, ‘1’, ‘3’, ‘2’,’Z’ TABCONS 0 1 2 3 4 5 6 4 5 6 4 5 6 7 8 7 8 9 TABCOMP 4,5,6,7,8 0 2 1 10 11 12 13 9 10 11 14 15 12 13 ‘-E’5813 ‘Aff-en’0213 ‘Ferm’0 17 18 16

26 Sémantique des fichiers : Exemple2 SOIT F1 UN FICHIER DE ( CHAINE, ENTIER ) ENTETE ( CHAINE, ENTIER ) BUFFER V1 ; DEBUT OUVRIR ( F1, 'f1.pas', 'A' ) ; ECRIRE ( ENTETE ( F1, 1 ) ) ; ECRIRE ( ENTETE ( F1, 2 ) ) ; TQ NON FINFICH ( F1 ) LIRESEQ ( F1, V1 ) ; ECRIRE ( V1 ) FTQ ; FIN

27 Sémantique des fichiers : Exemple2 (suite) ‘L’180 ‘C’310 ‘L’241 ‘C’311 312 413 ‘Y’312 ‘C’414 ‘Y’413 ‘X’914 915 0 1 2 TABOB 5 LONGZDD 3 Quadruplés générés ‘Df’021 ‘Ds’29 ‘Ouvrir’034 ‘Entet’016 ‘Ecrire’01 ‘Entet’028 ‘Ecrire’11 ‘Finfic’09 ‘Non’910 ‘B’10 13 ‘Lirese’02 ‘Ecrire’21 ‘Br’7 1 2 3 TABTYP F(SE)*SEB 0 ‘SE’, ‘f1.pas’, ‘A’, ‘1’, ‘2’ TABCONS 0 1 2 3 4 4 5 6 4 5 6 7 8 7 8 9 TABCOMP 6 0 8 1 10 9 11 12 2 2

28 Fichiers : Interprétation Considérations :  Au niveau le plus bas, un fichier est considéré‚ comme un fichier d'octets ( FILE OF BYTE ).  Au plus, 5 fichiers (Maxfich) utilisateurs peuvent être ouvert en même temps, ce qui correspond aux fichiers internes f1, f2, f3, f4 et F5.  A tout fichier utilisateur, on associe un numéro permettant de faire l'association entre le fichier utilisateur et le fichier interne réellement implanté.  Le fichier interne est un ensemble d'octets découpé comme suit :...... caractéristiques article 1 article 2  Les articles de ce fichier sont de longueur fixe.

29 Fichiers : Interprétation Implémentation des fichiers (Description PASCAL) TYPE Typefichier = ^Elementfichier; Elementfichier = RECORD Num : BYTE; { association } Ouvert : BOOLEAN; { Ouvert / fermé } Longueur : INTEGER;{ Longueur d'un article } Longcaract : BYTE;{ Longueur de la zone des caractéristiques } Caract : STRING[20]; { types des caractéristiques } Adrcaract : Pointer;{ adresse vers zone des caractéristiques } END;

30 Fichiers : Interprétation Déclaration de fichier (Df) allocation d'une zone de type Elementfichier ouvert := faux num := 0 adrcaract := nil caract : type des caract. longueur : longueur des articles longcaract : longueur de la zone des caract.

31 Fichiers : Interprétation Ouvrir(F, Flogique, Fphysique ) Si le fichier n'est pas ouvert ouvert := vrai incrémenter le nombre de fichiers ouverts lui associer un fichier logique interne fi lien entre fi et fichier physique utilisateur SI mode ='N' ouverture de fi en écriture SI mode ='A' ouverture de fi en lecture/écriture Fsi

32 Fichiers : Interprétation Ouvrir(F, Flogique, Fphysique ) (Suite) SI fichier avec caractéristique SI mode='N'. réserver dans le fichier la zone pour les caractéristiques en recopiant des blancs. Allocation d'une zone contenant les adresses vers les caractéristiques. Adrcaract := adresse de cette zone SINON { 'A' } S’il n’était pas ouvert :. Allocation d'une zone contenant les adresses vers les caractéristiques. Adrcaract := adresse de cette zone. récupérer les caractéristiques ( Fichier ===> Mémoire ) FSI

33 Fichiers : Interprétation Fermer(F) Si le fichier n'est pas ouvert : erreur Sauvegarde des caractéristiques et libération de la zone mémoire réservée pour les caractéristiques. fermer le fichier interne associé Num := 0 Ouvert := faux; décrémenter le nombre de fichiers ouverts

34 Fichiers : Interprétation Ecrireseq(F, V), Ecriredir(F, V), Rajouter(F, V) Si le fichier n'est pas ouvert : erreur S'il s'agit d'une écriture directe, se positionner sur la position donnée si elle existe. S'il s'agit de rajouter, se positionner en fin de fichier Ecrire l'article dans le fichier

35 Fichiers : Interprétation Lireseq(F, V), Liredir(F, V, n) Si le fichier n'est pas ouvert : erreur S'il s'agit d'une lecture directe, se positionner sur la position donnée si elle existe. Lire l'article du fichier

36 Fichiers : Interprétation Aff_entete (F, i, Exp ) Si le fichier n'est pas ouvert : erreur Affecter l'expression scalaire Exp comme i-ème caractéristique. Entete( F, i ) : Si le fichier n'est pas ouvert : erreur Récupérer la i-ème caractéristique. Alloc_bloc (F) Si le fichier n'est pas ouvert : erreur Se positionner en fin de fichier et rendre cette position comme résultat de la fonction. Finfich (F) Si le fichier n'est pas ouvert : erreur Si la position est en fin de fichier, la fonction rend la valeur VRAI sinon FAUX.


Télécharger ppt "Fichiers Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)"

Présentations similaires


Annonces Google