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

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Module Systèmes d’exploitation
Structures de données avancées : Principales structures de données
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : Introduction
Introduction a L’algorithme
Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Machines de Turing Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Sémantique des déclarations pour le langage Z minimal
Algorithmique (suite)
Gestion de FICHIERS.
C.
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
Chap. 1 Structures séquentielles : listes linéaires
FLSI602 Génie Informatique et Réseaux
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Initiation à la programmation et algorithmique cours 3
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Partie 1 Etude de l'existant
Section XI Traitement de fichiers
Les éléments de base de l’algorithmique
TP Fichiers et Tableaux Avril Un fichier Permet le stockage de données sur des supports de mémoire externes (donc les données ne seront pas perdues.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Programmation fonctionnelle Le langage LISP
Pr ZEGOUR Djamel Eddine
FICHIERS : Définition : Algorithme général:
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Semaine #1 INF130 par Frédérick Henri.
Semaine #1 INF135 par Frédérick Henri.
Standard Template Library
Séance d’introduction
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Méthode et Outils pour la Programmation
1 Le fichier séquentiel Suite finie déléments dun même type Exemples : – fichier des livres dune bibliothèque – enregistrements sur un magnétophone – ensemble.

Tableaux Introduction aux tableaux à une dimension. Déclaration, stockage, initialisation et accès en lecture ou en écriture aux composantes d’un tableau.
Les pointeurs L'opérateur &.
Structures complexes Pr ZEGOUR DJAMEL EDDINE
Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Les variables et les types standard des données
Un survol du language C.
Sémantique des expressions arithmétiques pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
 Syntaxe du langage PHP
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
L’analyse lexicale Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Expressions sur les chaînes de caractères Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Les fichiers 1ère partie
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Les bases de l’algorithmique
Fonctions standards Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Module algorithmique et programmation
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) C O M P I L Z.
COMPIL - Z Compilateur visible
Structures de données avancées : Introduction D. E ZEGOUR Institut National d ’Informatique.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Objets et Actions Élémentaires.
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Transcription de la présentation:

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

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.

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 )

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 )

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 )

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 )

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 )

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 )

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

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}*

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 }*) |

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

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

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

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

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

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

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

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

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

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

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

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

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

Sémantique des fichiers : Exemple1(suite) ‘L’180 ‘C’310 ‘L’ ‘C’ ‘X’915 ‘C’ ‘X’ 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’ ‘Ecrse’11 ‘+E’585 ‘Br’7 ‘Aff-en’ TABTYP F(SE)*SEB 0 ‘SE’, ‘f1.pas’, ‘N’, ‘1’, ‘3’, ‘2’,’Z’ TABCONS TABCOMP 4,5,6,7, ‘-E’5813 ‘Aff-en’0213 ‘Ferm’

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

Sémantique des fichiers : Exemple2 (suite) ‘L’180 ‘C’310 ‘L’241 ‘C’ ‘Y’312 ‘C’414 ‘Y’413 ‘X’ 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’ TABTYP F(SE)*SEB 0 ‘SE’, ‘f1.pas’, ‘A’, ‘1’, ‘2’ TABCONS TABCOMP

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.

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;

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.

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

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

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

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

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

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.