Structures et chiers Rodrigue DJEUMEN Rodrigue DJEUMEN Structures et chiers 1 /

Structures et chiers Rodrigue DJEUMEN Rodrigue DJEUMEN Structures et chiers 1 / 17 Les structures Dé nition de type structure Dé nition de type structure Une structure (ou enregistrement, ou article) est une collection d'objet de diérents types. Chaque objet composant un enregistrement, a un identi cateur et un type qui lui sont associées ; ces objets sont appelés les champs de l'enregistrement. Syntaxe : struct nom_de_enregistrement{ champ1 : type1; champ2 : type2 ... champN : typeN; }; Rodrigue DJEUMEN Structures et chiers 2 / 17 Les structures Dé nition de type structure Exemples de structure Exemple : struct Date{ short j, m; int a; }; typedef enum {lun, mar, mer jeu, ven, sam, dim} Jour; typedef struct{ Jour j; struct Date d; } UneDate; Rodrigue DJEUMEN Structures et chiers 3 / 17 Les structures Opérations sur les types structures Opérations sur les structures Déclaration de variables de type structurés : struct date d1,d2; UneDate demain; On peut faire des aectations entre des variables de même type structurés (par exemple d1 = d2). La sélection d'un champ se fait à l'aide de l'opérateur ”.” demain.j = sam; demain.d.a = 2015; demain.d.m = 12; demain.d.j = 5; On peut initialiser les variables structures lors de leur déclaration : UneDate d = {lun, {3, 5}}; L'opérateur int sizeof (identi cateur) délivre la taille en octet occupée par une structure déclarée. Rodrigue DJEUMEN Structures et chiers 4 / 17 Les structures Pointeurs et structures Pointeurs et structures Soit le type date ci-après : typedef struct{ short j,m; int a; } Date; et la déclaration d'un pointeur sur cette structure : Date *d; L'accès à un champ du pointeur d ce fait par : (*d).j = 2; (*d).m = 12; (*d).a = 2015; On peut également se servir de l'opérateur −> pour simpli er l'écriture et obtenir le même résultat : d->j = 2; d->m = 12; d->a = 2015; Rodrigue DJEUMEN Structures et chiers 5 / 17 Les structures Exercices Exercice 1 On voudrait créer un logiciel pour la gestion d'une banque ; sachant que : Un compte est caractérisé par son numéro, le nom et le prénom du titulaire, le solde et le type (épargne, courant, chèque,. . .) ; Une personne est caractérisée par le numéro de sa carte d'identité, son nom et son prénom, sa date de naissance. 1 Donner la dé nition des types suivants : 1 Le type Compte 2 Le type Personne 2 Écrire un programme permettant de lire les données d'un compte. 3 Écrire un programme permettant de lire et d'a cher les données d'une personne. Rodrigue DJEUMEN Structures et chiers 6 / 17 Les chiers Dé nition Notion de chier Un chier est une collection d'informations, structurée en unités d'accès appelées articles ( ou enregistrements) qui sont tous du même type, en général composé. Exemple : Le chier des résultats à un examen comprendra un article par étudiant, chaque article étant composé de 4 champs : char nom[40] char Prenom[40] char matricule[6] char DateNaissance[8] oat note Un chier est toujours enregistré sur un support externe à la mémoire centrale et tout programme de traitement échangera des informations avec le chier article par article. On distingue deux types de chiers : chiers textes et chiers binaires. Rodrigue DJEUMEN Structures et chiers 7 / 17 Les chiers Supports et organisation Supports On distingue deux catégories de supports : Les supports séquentiels : les informations sont écrites ici les unes à la suite des autres, et sont telles que l'accès à l'information i nécessite le passage sur toutes les informations qui précèdent i sur le support. Exemple : la bande magnétique, le streamer,... Les supports adressables : ces supports sont structurées en surfaces d'enregistrement individuellement adressables : les informations qui y sont enregistrées peuvent être retrouvées directement, grâce à leur adresse, sans que l'on ait à passer par des enregistrements intermédiaires. Exemple : les disques( Disque Dur, Disquette, CD-ROM, DVD,...) Rodrigue DJEUMEN Structures et chiers 8 / 17 Les chiers Supports et organisation Organisation & accès Selon les impératifs du traitement, on utilise deux techniques d'accès aux articles d'un chier : L'accès séquentiel : on accède au chier dans l'ordre d'enregistrement des articles. L'accès sélectif : on accède directement à un article particulier sans passer par les articles intermédiaires ; cet accès n'est possible qu'avec les supports adressables. L'organisation d'un chier, dé nit la manière dont les articles du chier sont disposés sur le support. On distingue trois organisations principales : Séquentielle qui ne permet que l'accès séquentielle. Directe conçue pour l'accès sélectif Séquentielle indexée qui permet l'accès séquentiel et l'accès sélectif. Rodrigue DJEUMEN Structures et chiers 9 / 17 Les chiers Opérations sur un chier Identi cation du chier Un chier F est identi é, de manière unique, par un nom externe qui lui est attaché. Il peut exister plusieurs programmes de traitement de F et, dans l'environnement de chacun d'eux, F est décrit avec son nom interne qui n'a en général, aucun rapport avec le nom externe. Au moment de traiter un chier, un programme doit s'assurer le contrôle de ce chier à l'aide d'une primitive d'ouverture de chier. le rôle d'une telle action est : d'établir la correspondance entre le nom interne et le nom externe, d'assurer au programme le contrôle du chier, d'eectuer le positionnement initial du dispositif de lecture/écriture sur le support de chier. Rodrigue DJEUMEN Structures et chiers 10 / 17 Les chiers Opérations sur un chier Ouverture de chier Si ch est le nom interne du chier, nous noterons fopen( ch, mode) la primitive qui permet d'ouvrir le chier ch, suivant mode. le pointeur NULL est retourné si le chier n'est pas trouvé. Modes r ouverture en lecture w ouverture en écriture (si chier existe, le contenu est eacé) a ouverture en allongement r+ Ouverture en lecture pour mise à jour w+ analogue à w, mais permet de lire a+ ouverture en lecture et en allongement Rodrigue DJEUMEN Structures et chiers 11 / 17 Les chiers Opérations sur un chier Fermeture de chier la primitive fclose( ch) permet de marquer la n de traitement du chier. L'exécution de la primitive de fermeture a deux but : Compléter le chier par une marque de n de chier (notée EOF), dans le cas où le traitement était une création de chier. Signaler l'abandon du chier. La primitive int feof (FILE ∗f ) permet de tester si la n de chier est atteinte. Rodrigue DJEUMEN Structures et chiers 12 / 17 Les chiers Opérations sur un chier Traitement sur un chier Il existe trois mode de traitement associé aux chiers : Traitement en lecture : Ici, le chier est ouvert, et parcouru à la recherche de l'information voulue. Pendant ce temps, il reste accessible en lecture à d'autres programmes. Traitement en écriture : Le chier est ouvert de manière exclusive, a n d'éviter que les données écrites ne soient incohérentes ; et l'ajout du nouvel élément se fait à la n du chier. Traitement en lecture/écriture ou mise à jour : le chier est ouvert de manière exclusive et une recherche est préalablement faite sur l'article à modi er ; une fois les modi cations faites, l'article est écrite dans le chier. Rodrigue DJEUMEN Structures et chiers 13 / 17 Les chiers Fichier texte Fichier textes Un chier de texte est formé d'éléments bien connus : les caractères. Les caractères contenus dans un chier de texte sont organisés en lignes, chacune terminée par une marque de n de ligne. Après la dernière ligne, le chier se termine par une marque de n de chier. La déclaration d'un chier texte se fait par l'instruction FILE ∗ ch; Les primitives de lecture sont : int fgetc(FILE ∗ ch); pour lire un caractère dans le chier, int fgets(char ∗ch, int n, FILE ∗ ch); pour lire n caractères sur ch et les ranger dans ch. int fscanf (FILE ∗ ch, char ∗format, ...); pour lire une donnée formatée dans le chier. Les primitives d'écriture sont : int fputc(char c, FILE ∗ ch); pour écrire le caractère c, dans le chier, int fputs(char ∗ch, FILE ∗ ch); pour écrire la chaîne ch sur ch. int fprintf (FILE ∗ ch, char ∗format, ...); pour écrire une donnée formatée dans le chier. Rodrigue DJEUMEN Structures et chiers 14 / 17 Les chiers Fichier texte Exemple #include<stdio.h> void main(){ int i ; double tab[2] ; FILE * chier ; chier = fopen(essais.txt,r) ; if( chier != NULL){ for(i=0 ;i<2 ;i++) fscanf( chier, %lf\n, tab+i) ; fclose( chier) ; } for(i=0 ;i<2 ;i++) printf(%lf\n, tab[i]) ; } Rodrigue DJEUMEN Structures et chiers 15 / 17 Les chiers Fichier binaire Fichier binaire Les types chier binaire sont structurés, le type de leurs éléments peut être n'importe lequel (sauf un type chier !). La déclaration d'un chier binaire se fait par l'instruction FILE ∗ ch; La primitive de lecture est : int fread(void ∗destination, int taille, int nombre, FILE ∗ ch); pour lire un bloc de données en binaire, pus retourner le nombre d'éléments uploads/Ingenierie_Lourd/ lecon-3.pdf

  • 27
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager