Le fichier séquentiel [fs]



Documents pareils
alg - Classes, instances, objets [oo] Exercices résolus

C++ - Classes, instances, objets [oo] Exercices résolus

Programmation impérative

Playzilla - Chargement par clé usb

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Algorithmique et programmation : les bases (VBA) Corrigé

Leçon 1 : Les principaux composants d un ordinateur

Le langage C. Séance n 4

Programmation système I Les entrées/sorties

PROJET ALGORITHMIQUE ET PROGRAMMATION II

TP3 : Manipulation et implantation de systèmes de fichiers 1

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if


V- Manipulations de nombres en binaire

SYSTÈME DE GESTION DE FICHIERS

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Programmation Objet - Cours II

Les fichiers. Chapitre 4

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Initiation. àl algorithmique et à la programmation. en C

Manuel du logiciel PrestaTest.

SPF FIN. Patris Spécification de Use Case: 15-UC01 Obtenir de l'information patrimoniale. Version 1.1

TP : Gestion d une image au format PGM

Algorithmes récursifs

Cours d Algorithmique et de Langage C v 3.0

Algorithme. Table des matières

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Organigramme / Algorigramme Dossier élève 1 SI

Bases de programmation. Cours 5. Structurer les données

Architecture des Systèmes d Information Architecture des Systèmes d Information

Présentation du module Base de données spatio-temporelles

Guide de l administrateur DOC-OEMCS8-GA-FR-29/09/05

Programmation système de commandes en C

RECUPEREZ DES FICHIERS SUPPRIMES AVEC RECUVA

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

COURS WINDEV NUMERO 3

Généralités sur les systèmes d Exploitation

Algorithmique et Programmation, IMA

Projet Active Object

données en connaissance et en actions?

Accéder à ZeCoffre via FTP

CHARTE INFORMATIQUE LGL

Écriture de journal. (Virement de dépense)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Adama MBODJI MBODJ.SYSTEM

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

L informatique en BCPST

Généralités sur les systèmes d Exploitation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Créer le schéma relationnel d une base de données ACCESS

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

4D v11 SQL Release 5 (11.5) ADDENDUM

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Cours d initiation à la programmation en C++ Johann Cuenin

Compression de Données - Algorithme de Huffman Document de Conception

Présentation du langage et premières fonctions

CORRECTION EXERCICES ALGORITHME 1

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Introduction à l informatique en BCPST

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

26 Centre de Sécurité et de

Préconisations Techniques & Installation de Gestimum ERP

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Gestion des sauvegardes

les outils de vérification de la comptabilité et la clôture de la comptabilité

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Chapitre 1 : Introduction aux bases de données

Groupe Eyrolles, 2006, pour la présente édition, ISBN :

Initiation à Excel. Frédéric Gava (MCF)

PROGRAMMES D INFORMATIQUE

Rappels sur les suites - Algorithme

Module Communication - Messagerie V6. Infostance. Messagerie

Créer et partager des fichiers

PG208, Projet n 3 : Serveur HTTP évolué

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Exonet : sauvegarde automatisée d une base de données

CPLN 20/08/2009 MBO Service ICT et Pédagogie

REALISATION d'un. ORDONNANCEUR à ECHEANCES

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Cours d algorithmique pour la classe de 2nde

INITIATION A L INFORMATIQUE. MODULE : Initiation à l'environnement Windows XP. Table des matières :

Introduction à MATLAB R

Le stockage. 1. Architecture de stockage disponible. a. Stockage local ou centralisé. b. Différences entre les architectures

NOOBÉ GUIDE DE PRISE EN MAIN SOMMAIRE. INSTALLER Installer le logiciel Lancer le logiciel Découvrir NOOBÉ

Adressage des données des contrôleurs du WAGO-I/O-SYSTEM 750. Note d application

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

I00 Éléments d architecture

INSTALLATION ET CONFIGURATION DE OPENLDAP

Procédure appropriée pour éditer les diagrammes avec ECM Titanium

Partie 7 : Gestion de la mémoire

Transcription:

Le fichier séquentiel [fs] Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 17 avril 2015 Table des matières 1 Présentation 2 2 Exploitation d un document 3 3 Primitives 5 3.1 Déclaration de fichier............................. 5 3.2 Ouverture d un canal d entrée/sortie.................... 5 3.3 Fermeture d un canal d entrées/sorties................... 6 3.4 Lecture depuis un canal d entrée....................... 6 3.5 Écriture sur un canal de sortie........................ 6 3.6 Détection de fin de contenu......................... 7 4 Exemples d utilisation 8 4.1 Algorithme de base.............................. 8 4.2 Exemple : Copie d un fichier......................... 8 4.3 Le cas des fichiers vides............................ 9 4.4 Exemple : Calcul de la moyenne....................... 10 5 Exercice résolu : Fichier clients séquentiel 11 5.1 Création d un fichier clients......................... 11 5.2 Affichage du fichier clients.......................... 11 6 Compléments 11 Introduction Mots-Clés Algorithmique, Programmation, C++, Fichier séquentiel. Requis Structuration de l information. Toutes les informations que nous avons traitées jusqu à présent ont été placées dans une mémoire dite volatile à l aide de variables que nous avons au préalable déclarées. Cela signifie que, dès que l algorithme ou le programme se termine, les variables disparaissent 1

Unisciel algoprog fs00acours-texte, April 17, 2015 2 de la mémoire. Par voie de conséquence les données stockées disparaissent également. S il faut pourvoir les stocker dans une mémoire permanente c est là qu intervient la notion de fichier. Ce module présente le fichier séquentiel, décrit les primitives des fichiers séquentiels, donne des exemples d utilisation et analyse le cas des fichiers vides.

Unisciel algoprog fs00acours-texte, April 17, 2015 3 1 Présentation Fichier informatique Est une unité informationnelle physiquement stockée sur un support de mémoire de masse permanent (disque dur, CD-ROM, clé USB par exemple). Fichier séquentiel Le qualificatif séquentiel (il existe également des fichiers à accès direct ; cf. @[Les fichiers]) signifie que lorsqu on lit un fichier, pour accéder à un élément de position donnée, il faut d abord avoir lu tous les éléments précédents. De même, lorsqu on écrit dans un fichier séquentiel, les éléments sont ordonnés dans l ordre dans lequel ils sont écrits : une prochaine lecture les donnerait dans ce même ordre. Lecture ou Écriture Nous allons considérer qu un fichier peut être lu ou écrit mais pas les deux en même temps (Certains systèmes et langages mettent à disposition des fichiers en lecture/écriture simultanées). On considère aussi qu un fichier doit explicitement être ouvert avant toute lecture/écriture et qu il doit être fermé après la dernière lecture/écriture. Élément courant Lors d une lecture de fichier, on appelle «élément courant», le prochain élément qui sera lu. L ensemble étant fini, il doit être possible d en détecter la fin : on peut imaginer la présence d une marque particulière caractérisant cette fin (marque de fin de fichier). Nous utilisons la convention qu une lecture infructueuse est nécessaire pour détecter la fin d un fichier. (Il existe une autre convention de lecture que l on rencontre dans certains langages et qui stipule qu on peut détecter la fin de fichier juste après la dernière lecture utile.) Le fichier n est pas la seule structure qui peut être accédée en séquence. On peut faire de même pour un tableau, une liste ou encore d autres structures.

Unisciel algoprog fs00acours-texte, April 17, 2015 4 2 Exploitation d un document Un algorithme qui lit des données ou écrit des résultats dans un fichier accomplit une opération d entrée/sortie. Un tel transfert d information est effectué via un canal d entrées/sorties. L information traitée via un canal d entrées/sorties est présentée sous forme textuelle (c.-à-d. une séquence de caractères) dans le document visé. On considère un canal d entrées/sorties comme une séquence de caractères et les références à un canal d entrées/sorties se font via un nom de canal. Fichier en lecture La logique pour accéder à un fichier en lecture (fichier existant, non modifié par l algorithme) est toujours la même : Une ouverture (voir Ouvrir) Des lectures (voir Prendre et FinDeFichier) Une fermeture (voir Fermer) Fichier en écriture L accès à un fichier en écriture (fichier créé par l algorithme) répond à la logique : Une ouverture (voir Ouvrir) Des écritures (voir Mettre) Une fermeture (voir Fermer) Remarque : Ouvrir Le système peut être dans l impossibilité d ouvrir le fichier spécifié pour une ou l autre des raisons suivantes : L algorithme tente d ouvrir un fichier inexistant en mode lecture. L algorithme tente d ouvrir un fichier qui est déjà ouvert. L algorithme tente d ouvrir un fichier sur un canal d entrées/sorties invalide. Le nom du fichier est invalide : ceci peut être dû au dossier inexistant, au nom du fichier contenant des caractères interdits par le système d exploitation ou à l unité de stockage défectueuse ou non disponible. Modes d ouverture Trois modes sont supportés : Lecture : Permet de lire le contenu du document. Si le document est inexistant, l exécution de l algorithme est interrompue. Écriture : Permet d écrire des résultats dans le document. Le contenu antérieur à l ouverture du document est «détruit». Si le document est un fichier inexistant, celui-ci est créé. Ajout : Permet d écrire des résultats à la fin du document. Le contenu antérieur à l ouverture du document est conservé. Si le document est un fichier inexistant, celui-ci est créé. Seule l instruction de lecture (Prendre) est autorisée sur un canal d entrées/sorties associé à un document ouvert en mode Lecture. Similairement, seule l instruction d écriture (Mettre) est autorisée sur un canal d entrées/sorties associé à un document ouvert en

Unisciel algoprog fs00acours-texte, April 17, 2015 5 mode Écriture ou Ajout. Toute instruction de lecture ou d écriture invalide sur un canal d entrées/sorties provoque l arrêt de l exécution de l algorithme avec affichage d un message d erreur.

Unisciel algoprog fs00acours-texte, April 17, 2015 6 3 Primitives 3.1 Déclaration de fichier alg : Déclaration de fichier Variable varfich : Fichier C++ : Déclaration de fichier #include <fstream> ifstream is ; // fichier en lecture (Input) ofstream os ; // fichier en écriture (Ouput) Explication Déclare une variable varfich de type Fichier. 3.2 Ouverture d un canal d entrée/sortie alg : Ouverture d un canal Ouvrir ( varfichier, nomfichier, utilisation ) C++ : Ouverture d un canal #include <fstream> ifstream variablefichier ( nomfichier ) ; // fichier en Lecture ofstream variablefichier ( nomfichier ) ; // fichier en Ecriture Explication Associe un canal d entrées/sorties à un fichier et indique le mode d accès (l Utilisation) du canal d entrée/sortie : Lecture, Ecriture ou Ajout. La varfichier sera utilisée pour toutes les opérations sur ce fichier jusqu à sa fermeture. Si aucun chemin de dossiers n est spécifié avec le nom du fichier, le système ouvre le fichier dans le dossier courant (habituellement le dossier où est sauvegardé le projet en exécution). Lorsqu il y a erreur à l ouverture d un fichier, le système provoque l interruption du programme et affiche un message d erreur précisant la cause de l erreur. Cette primitive est nécessaire avant toute opération sur un fichier, existant ou non.

Unisciel algoprog fs00acours-texte, April 17, 2015 7 3.3 Fermeture d un canal d entrées/sorties alg : Fermeture d un canal Fermer ( variablefichier ) C++ : Fermeture d un canal variablefichier.close() ; Explication Ferme le canal d entrées/sorties associé au document. Dans le cas où le fichier a été ouvert en écriture, cette primitive place la marque spéciale de fin de fichier dans l élément courant. Une fois le fichier fermé, il n est plus permis de l utiliser. Un fichier créé et non refermé risque de contenir des données aléatoires et invalides. 3.4 Lecture depuis un canal d entrée alg : Lecture depuis un canal d entrée Prendre ( variablefichier, nomvar1, nomvar2... ) C++ : Lecture depuis un canal d entrée variablefichier >> nomvar1 >> nomvar2... ; Explication Lit dans le fichier référencé par la variablefichier, ouvert en lecture, des valeurs qui seront affectées aux variables nomvari. Cette opération peut échouer si la fin de fichier est atteinte. Ceci est décelable grâce à la fonction FinDeFichier. Le canal d entrées/sorties doit obligatoirement être associé à un document ouvert en mode Lecture. Toute tentative de lecture visant un canal d entrées/sorties associé à un document ouvert en mode Ecriture ou Ajout cause l arrêt d exécution de l algorithme. 3.5 Écriture sur un canal de sortie alg : Écriture sur un canal de sortie Mettre ( variablefichier, expr1, expr2...)

Unisciel algoprog fs00acours-texte, April 17, 2015 8 C++ : Écriture sur un canal de sortie variablefichier << expr1 << expr2... ; Explication Rajoute des données dans le fichier référencé par la variablefichier, ouvert en écriture, les valeurs des expressions expri. Cette opération peut échouer si le support utilisé pour le fichier est plein. Le canal d entrées/sorties doit obligatoirement être associé à un document ouvert en mode Ecriture ou Ajout. Toute tentative d écriture visant un canal d entrées/sorties associé à un document ouvert en mode Lecture provoque l arrêt d exécution de l algorithme. 3.6 Détection de fin de contenu alg : Détection de fin de contenu FinDeFichier ( variablefichier ) C++ : Détection de fin de contenu variablefichier.eof() «eof» signifie «EndOfFile». Explication Renvoie la valeur Vrai si la fin de fichier a été détectée, Faux sinon. Dans certains langages, il s agira d une variable en lecture seule ; dans d autres langages, ce sera un appel de module ou de méthode. La primitive n est applicable qu aux canaux d entrées/sorties associés en mode Lecture. Toute invocation de la primitive sur un canal d entrées/sorties associé à un document ouvert en mode Ecriture ou Ajout cause l arrêt d exécution de l algorithme.

Unisciel algoprog fs00acours-texte, April 17, 2015 9 4 Exemples d utilisation 4.1 Algorithme de base L algorithme type dont la structure se retrouve dans la majorité des algorithmes exploitant un fichier est le suivant : Algorithme Action parcoursfichier ( nomfichier : Cha^ıne ) Variable is : Fichier Variable enregistrement : T Début Ouvrir ( is, nomfichier, Lecture ) Prendre ( is, enregistrement ) TantQue Non FinDeFichier ( is ) traiter ( enregistrement ) Prendre ( is, enregistrement ) FinTantQue Fermer ( is ) Fin Programme A FINIR 4.2 Exemple : Copie d un fichier Voici un algorithme qui recopie les données d un fichier (en lecture) dans un autre (en écriture). Algorithme Action parcoursfichier ( nomfichier : Cha^ıne ) Variable is : Fichier Variable enregistrement : T Début Ouvrir ( is, nomfichier, Lecture ) Prendre ( is, enregistrement ) TantQue Non FinDeFichier ( is ) traiter ( enregistrement ) Prendre ( is, enregistrement ) FinTantQue Fermer ( is ) Fin

Unisciel algoprog fs00acours-texte, April 17, 2015 10 Programme A FINIR 4.3 Le cas des fichiers vides Dans tout algorithme de manipulation de fichiers, il faut se demander ce qu il advient du cas d un fichier vide (rappelons que c est la première lecture qui permet d identifier ce cas). Il y a trois cas de figure : 1. C est un cas particulier qui est traité correctement par l algorithme général. 2. Il demande un traitement spécial qui n est pas couvert par le cas général. 3. Il dénote un problème mal posé qui ne peut être résolu. Exemple Si le problème est de calculer la somme, la moyenne ou encore le maximum de nombres contenus dans un fichier, alors la solution ne peut être donnée dans le cas d un fichier vide (cas 3) à moins que l analyse n ait clairement indiqué la réponse à donner dans ce cas (cas 2). Il faut donc traiter le cas particulier de fichier vide juste après la première lecture. Réécrivons alors l algorithme général de traitement d un fichier séquentiel. Algorithme général Action traiterfichier ( nomfichier : Cha^ıne ) Variable is : Fichier Variable enregistrement : T Début Ouvrir ( is, nomfichier, Lecture ) Prendre ( is, enregistrement ) Si FinDeFichier ( is ) Alors traitementspecialfichiervide ( ) Sinon TantQue Non FinDeFichier ( is ) traiter ( enregistrement ) Prendre ( is, enregistrement ) FinTantQue FinSi Fermer ( is ) Fin

Unisciel algoprog fs00acours-texte, April 17, 2015 11 Programme général A FINIR Lorsque le «traitement spécial du fichier vide» consiste à générer une «ERREUR» alors le Si peut être changé en un Si-Alors suivi du traitement normal. 4.4 Exemple : Calcul de la moyenne La fonction calcule et renvoie la moyenne d une série de réels contenus dans un fichier. Fonction calculmoyenne Fonction calculmoyenne ( nomfichier : Cha^ıne ) : Réel Variable somme, nombre : Réel Variable cpt : Entier Variable is : Fichier Début Ouvrir ( is, nomfichier, Lecture ) cpt <- 0 somme <- 0 Prendre ( is, nombre ) Si FinDeFichier ( is ) Alors Fermer ( is ) erreur ( "Fichier vide" ) Sinon TantQue Non FinDeFichier ( is ) cpt <- cpt + 1 somme <- somme + nombre Prendre ( is, nombre ) FinTantQue FinSi Fermer ( is ) Retourner ( somme / cpt ) Fin @[fsmoyennea1.alg] Fonction calculmoyenne A FINIR @[fsmoyennea1.cpp]

Unisciel algoprog fs00acours-texte, April 17, 2015 12 5 Exercice résolu : Fichier clients séquentiel 5.1 Création d un fichier clients 5.2 Affichage du fichier clients 6 Compléments