CPI/BTS 1 Algorithmique & Programmation Les Fichiers Algo – Prog CPI/BTS1 – M. Dravet – 21/04/2004 Dernière modification: 21/04/2004.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
Introduction a L’algorithme
Chap. 4 Recherche en Table
Stockage de données.
Informatique Deug2 Sciences Eco S. Maabout 2004/2005.
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
Chapitre I : Systèmes d’exploitation
Introduction Pour concrétiser l’enseignement assisté par ordinateur
auxiliaires ou mémoires de masse ou alors secondaire).
Gestion de FICHIERS.
INTRODUCTION.
Chap. 1 Structures séquentielles : listes linéaires
FLSI602 Génie Informatique et Réseaux
8. Les tableaux P. Costamagna – ISEN N1.
Systèmes d’exploitation
Les bases de l’Algorithmique
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Windows 7 Administration des comptes utilisateurs
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
Démarche de résolution de problèmes
Section XI Traitement de fichiers
Algorithmique et Programmation
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.
II. Chaînage, SDD séquentielles
Création d'un diaporama Création d'un diaporama
Larborescence ou lorganisation des dossiers et des fichiers du disque dur.
Algorithmique et Programmation
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.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Module 2 : Préparation de l'analyse des performances du serveur
ROLE DES DIFFERENTS ELEMENTS
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.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Plan cours La notion de pointeur et d’adresse mémoire.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Windows 7 et son explorateur
Tutorat en bio-informatique
Programmation Système et Réseau
GF-11: Tri Interne Efficace et Tri Externe
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Cours LCS N°4 Présenté par Mr: LALLALI
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.
GF-4: Storage Secondaire: Disques
En route vers le déploiement . . .
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Architecture Client/Serveur
Le disque dur “0” “1” Introduction
Une aide pour débutant éclairé
Architecture et technologie des ordinateurs II
Algorithmique Tableaux de données
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
INTRODUCTION AUX BASES DE DONNEES
Algorithmique Algorithmique  Pascal
Introduction Module 1.
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
Seconde 8 Module 7 M. FELT 03/11/ Module 7: Algorithmique #2  Objectifs:  AlgoBox.  Définition d’un algorithme.  Affectation de variable. 
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
Algorithmique Boucles et Itérations
Les mémoires la préparation de: chaimaa hamdou.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

CPI/BTS 1 Algorithmique & Programmation Les Fichiers Algo – Prog CPI/BTS1 – M. Dravet – 21/04/2004 Dernière modification: 21/04/2004

Introduction Fichier: –structure de données, formée de cellules contiguës –Est stocké en mémoire de masse: Disque dur Disquette Bandes CDs …

Introduction Les disques magnétiques (disque dur) –Ensemble de surfaces circulaires en rotation constante –Sur chacune de ces surfaces se trouve une tête de lecture/écriture –L’ensemble des têtes se déplace de façon solidaire suivant un rayon des surfaces –Sur chacune des surfaces circulaires se trouve un certain nombre de pistes concentriques –Sur ces pites, l’information est organisée en unités de taille fixe (typiquement 512 bytes) appelées « secteurs ». –Position d’un secteur = surface sur laquelle il se trouve + piste sur cette surface + position sur cette piste –Ensemble des pistes se trouvant à une position identique sur chaque surface = cylindre

Introduction Les disques magnétiques –Chaque position des têtes de lecture définit un cylindre constitué de l’ensemble des secteurs accessibles dans cette position des têtes. –La capacité de stockage d’un disque dépend du nombre de surfaces, du nombre de pistes par surface, et de la capacité de chaque piste. –Quelques ordres de grandeur courants: Nombre de surfaces: de 1 à 30 Nombre de pistes par surface: de 2000 à 5000 Capacité de stockage d’une piste: 50 à 300 secteurs de 512 bytes (le nbre de secteurs/piste peut varier d’une piste à l’autre pour exploiter le fait que les pistes extérieuressont plus longues que les pistes intérieures)

Introduction Les disques magnétiques –Exemple Un disque comporte 24 surfaces, 5000 pistes par surface, et une moyenne de 200 secteurs de 512 bytes par piste. Capacité totale de ce disque : 24 * 5000 * 200 * 512 = 12 GBytes

Introduction Les disques magnétiques –La taille des secteurs est fixée à la construction du disque. –Toutefois, les transferts entre l’ordinateur et le disque se font par blocs qui peuvent être constitués de un ou plusieurs secteurs. –Sur un disque dont les secteurs sont de 512bytes, il est par exemple possible d’utiliser des blocs de 1024 bytes ou de 2048 bytes (respectivement 2 et 4 secteurs).

Introduction Avantages de la mémoire de masse –Persistance des données –Capacité du support Inconvénients: –Lenteur extrême (10e6 * plus lent que la RAM) –Plusieurs types de fichiers: dépendant de l’OS pour leur gestion (Ex: accès direct) dépendant du support (bandes non adressables)

Notion de fichier La manière la plus directe d’exploiter un disque est d’utiliser les opérations d’entrées/sorties correspondantes. Ces opérations sont fournies par l’OS, et embellies ou améliorées par les différents langages de programmation. Ex: on pourrait utiliser un appel système du type: Write(Nom_DISQUE, ADR_DONNEE, ADR_DISQUE) Cela aurait pour effet d’écrire sur le disque portant le nom « Nom_Disque » la donnée contenue à l’adresse « ADR_DONNEE » en mémoire vive, le tout à l’adresse sur le disque correspondant à « ADR_DISQUE » …compliqué.

Notion de fichier De plus cela n’est pas suffisant: –Il faut pouvoir retrouver les données sur le disque une fois celles-ci écrites dessus. Quand on relance la machine, comment sait t’on dans quel bloc se trouve la donnée ? –Il est souvent nécessaire de structurer les données écrites sur un disque en vue d’en permettre une manipulation rapide. –Il faut assurer la protection des données, pour ne pas qu’on les efface accidentellement (système mono-utilisateur) ou que quelqu’un d’autre puisse les modifier facilement (multi-utilisateur)

Notion de fichier D’où la notion de fichier –On attribue à un ensemble de données un nom symbolique –L’OS prend alors en charge la tâche de créer un fichier avec ce nom symbolique. Il trouve donc sur le disque un nombre de blocs libres suffisant pour contenir les données du fichier et associe le nom symbolique à ces blocs du disque (par exemple dans une table réservée à cet usage) –Une fois le fichier créé, l’OS permet la manipulation des données qui y sont contenues à l’aide d’appels au système. Ex: nouvelle écriture de données ou lecture de son contenu. Pour toutes ces opérations, le fichier est identifié par son nom.

Organisation des fichiers Comment structure t’on un fichier ? –L’organisation des fichiers se fait en termes de groupements élémentaires de données que l’on appelle enregistrements (records). –L’enregistrement est l’unité de base dans les méthodes de structuration des fichiers et dans les opérations sur les fichiers. –Les ordres de lecture/écriture concernant un fichier seront donc donnés en termes d’enregistrements. –La nature des enregistrements est choisie au moment de la création du fichier. On l’adapte à l’utilisation que l’on compte faire du fichier.

Organisation des fichiers Comment structure t’on un fichier ? –Exemple: Considérons un fichier dont le contenu est le nom, prénom adresse et numéro de téléphone d’un ensemble de personnes. Dans ce fichier, un enregistrement sera l’ensemble des données concernant une seule personne. Dans le cas d’un fichier dont le contenu est un texte sans structure particulière, un enregistrement sera un caractère. On utilise la même notation que celle des types de données appelés enregistrements que l’on a déjà vu dans les cours précédents.

Organisation des fichiers Comment structure t’on un fichier ? –Exemple: Type personne = enregistrement Nom: chaîne[30] Prénom: chaîne[30] Adresse: chaîne[50] Téléphone: chaîne[10] Fin enregistrement fpersonne = fichier de personne Var p1: personne f: fpersonne

Organisation des fichiers Comment structure t’on un fichier ? –Dans l’exemple précédent, nous avons déclaré un enregistrement de données, constitué de plusieurs champs … –… et un fichier déclaré comme fichier allant stocker des enregistrements de personnes. –On peut donc maintenant lire et écrire directement des personnes dans notre fichier à l’aide d’instructions du type: //lit la personne en cours dans f et la copie dans p1 si p1 est une variable de type personne Lire(f, p1) //écrit la variable p1 dans le fichier Ecrire(f, p1)

Organisation des fichiers Comment structure t’on un fichier ? –Pour conclure: Un bloc est un ensemble de données manipulées en une seule opération au niveau du périphérique de stockage/ La taille des blocs est fixée une fois pour toute lors de l’installation du disque. Un enregistrement est un ensemble de données manipulées en une seule opération au niveau du fichier. Sa taille varie (en fonction des champs contenus dans l’enregistrement) et doit être définie pour chaque fichier. Rôle du système de gestion de fichier (OS + système): convertir les opérations de manipulation des enregistrements d’un fichier en opérations de manipulation de blocs.

Types de fichiers Types de fichiers: –Séquentiels On lit tout le fichier depuis le début jusqu’à la fin ou jusqu’à ce qu’on ai trouvé l’information voulue –Relatifs/Direct/Dynamiques Possibilité de se positionner à un endroit précis d’un fichier en vue d’une lecture. Cela fonctionne avec un système de « clés » associées à chaque enregistrement.

Manipulation des fichiers La description d’un fichier –Avant d’utiliser un fichier, il faut spécifier comment celui-ci est organisé et donner ses caractéristiques. Les informations suivantes sont habituellement requises: Nom du fichier Type des enregistrements (ou de données) Méthode d’organisation/d’accès: séquentiel, direct …

Manipulation des fichiers La description d’un fichier –En algo, cela s’écrit: Type fpersonne = fichier séquentiel de personnes Var f: fpersonne –En pascal: Type fpersonne = file of personnes Var f: fpersonne

Manipulation des fichiers L’attribution d’un nom de fichier –Après avoir définit un type de fichier, il faut lui associer un nom logique sur le disque. –En algo, cela s’écrit (dans le bloc de code du programme/fonction/procédure) Assigner(f, « c:\gestion_contact\repertoire.ext ») –En pascal: AssignFile(f, «c:\gestion_contact\repertoire.ext »)

Manipulation des fichiers Initialisation d’un fichier –Plusieurs cas: On veut ouvrir un fichier existant: –En algo: ouvrir(f) –En pascal: reset(f) Si le fichier n’existe pas, cela déclenche une erreur, qui si elle n’est pas traitée, fait planter le programme. On veut créer un fichier et l’ouvrir: –En algo: réécrire(f) –En pascal: rewrite(f) Si le fichier existe déjà, cela le recrée (efface tout le contenu)

Manipulation des fichiers Lecture/écriture dans un fichier –La lecture ou l’écriture se fait enregistrement par enregistrement comme nous l’avons déjà vu. –Opérations simples: En algo: –Lire(f, p1) –Ecrire(f,p1) En pascal: –Read(f,p1) –Write(f,p1)

Manipulation des fichiers Lecture/écriture dans un fichier –Il faut bien sur que p1 soit du même type que la déclaration du fichier, dans l’exemple précédent … –Les fichiers nous donnent aussi accès à un autre type de fonction: la détection de fin de fichier. En algo: fin_de_fichier(f) En pascal: eof(f) //pour « end of file » –Cela est très utile pour lire un fichier jusqu’au bout comme nous allons le voir …

Manipulation des fichiers Lecture/écriture dans un fichier –Exemple: on veut remplir un tableau de personnes, à partir d’un fichier de personnes. –En algo: Type Personne = enregistrement nom: chaîne[30] prenom: chaîne[30] age: entier Fin enregistrement Fpersonne: fichier de Personne Tpersonne: tableau[0..N] de Personne

Manipulation des fichiers Var t: Tpersonne f: Fpersonne i: entier Début Assigner(f, « c:\tmp\tmp.dat ») ouvrir(f) i  0 Tant que pas (fin_de_fichier(f)) Faire Début lire(f, t[i]) i  i+1 Fin Fin Tantque Fin

Manipulation des fichiers Lecture/écriture dans un fichier –Exemple: on veut remplir un fichier de personnes à partir d’un tableau de personnes –En algo: Type Personne = enregistrement nom: chaîne[30] prenom: chaîne[30] age: entier Fin enregistrement Fpersonne: fichier de Personne Tpersonne: tableau[0..N] de Personne

Manipulation des fichiers Var t: Tpersonne f: Fpersonne i: entier Début Assigner(f, « c:\tmp\tmp.dat ») réécrire(f) Pour i de 0 à N Faire Ecrire(f, t[i]) Fin Pour Fin

Manipulation des fichiers Fermeture d’un fichier –Un fichier ouvert consomme un descripteur de ressource en mémoire. –De plus, un fichier ouvert dans une application peut le rendre inaccessible à une autre application (problèmes d’accès concurrents). –Il est donc très important de bien gérer les accès aux fichiers, c’est-à-dire de les ouvrir quand on en a besoin, et de les refermer dès que c’est possible (à moins que cela ne puisse engendrer des problèmes, ceci est à définir lors de l’analyse de l’application). –En algo: fermer(f) –En pascal: close(f)

Erreurs E/S Gestion des erreurs –opérations de manipulation de fichiers sujettes à de nombreuses erreurs indépendantes du programme, tentative d'ouverture avec Reset d'un fichier qui n'existe pas, tentative de création avec Rewrite d'un fichier sur un disque qui n'existe pas Etc. –Lorsqu'une erreur survient, Turbo Pascal termine en général le programme en cours de façon brutale.

Erreurs E/S Gestion des erreurs –il existe cependant un moyen d'éviter cette fin prématurée. Il s'agit de la directive de compilation {$I-}. –Après cette directive, les erreurs dues aux fichiers ne provoquent plus un arrêt du programme. –La directive {$I+} rétablit la situation normale. –Le programme ainsi protégé d'une fin brutale doit cependant être en mesure de reconnaître si les opérations qu'il a demandées ont pu être effectuées correctement.

Erreurs E/S Gestion des erreurs –la fonction IOResult joue le rôle de détecteur d’erreur. –Elle renvoie un code sous forme d'entier de type Integer qui indique l'erreur survenue lors de la dernière opération effectuée sur un fichier. –Le code 0 indique une absence d'erreur. Tout autre code indique une erreur. –Utilisation conseillée d’une variable temporaire pour copier IOResult car le fait de lire IOResult vide son contenu

Erreurs E/S Gestion des erreurs –Codes courants de IOResult : 2-Fichier introuvable, 4-Répertoire introuvable, 5-Fichier protégé en écriture (attribut lecture seule ou disquette protégée contre l'écriture). –Aide de Delphi pour les autres …

Erreurs E/S Gestion des erreurs –Exemple: Assigner(f,'c:\datas\monfic.dat'); { associer f à un fichier DOS } {$I-} { protection erreur } ouvrir(f); { ouverture } {$I+}{ fin protection erreur } Erreur  IOresult { backup dans var temp } Si Erreur<>0 Alors { test erreur } Début Si erreur = 2 alors …{ test du type de problème } Fin

Exercice n°1 Tester les temps d’accès en lecture et écriture d’un fichier sur disque par rapport à un tableau en mémoire. Pour se faire: –Déclarez un tableau de 0 à N enregistrements (type de donnée simple ou composé) –Déclarez un fichier de même type que le tableau –Remplissez le tableau aléatoirement en mesurant le temps nécessaire à cette opération –Faites de même pour le fichier, et comparez les 2 temps

Exercice n°1 Indication: –Mesure du temps à un instant T: Uses DateUtils; Var h1, h2 : TDateTime; h1 := time(); h2 := time(); Writeln(‘Difference: ‘, SecondsBetween(h1, h2)); Précision à la seconde près. Pour la milliseconde: MilliSecondsBetween(h1, h2);

Exercice n°2 Modifiez votre gestionnaire de contact afin de pouvoir enregistrer votre liste sur un fichier Au lancement du programme, chargez le fichier et alimentez le tableau de contacts à partir du contenu du fichier. L’ensemble des opérations d’ajout, modification, suppression se fait sur le tableau en mémoire, comme jusqu’à présent. Enregistrez le tableau dans le fichier lorsqu’on quitte le programme. Donnez la possibilité à l’utilisateur de créer un fichier de backup.