21
Stockage de données

Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Embed Size (px)

Citation preview

Page 1: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Stockage de données

Page 2: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Présentation

• Le stockage des données dans les variables et tableaux est temporaire :– Nous avons vu la notion de durée de vie des

variables Les variables et donc les données sont détruites lorsque l’on quitte l’application. La mémoire est restituée au système d’exploitation

– Pour les données en entrée : elles sont soit recueillies manuellement soit assignées de manière statique dans le code (constantes) Il nous faut une solution permettant la (ré)utilisation des données d’une exécution à l’autre

Page 3: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Gestion de fichiers

• Les fichiers permettent la rétention permanente de larges quantités de données

• Les données contenues dans des fichiers sont dites permanentes

• Les fichiers sont stockés dans des unités périphériques : disques durs, disques et bande magnétiques, disques optiques,…

• Comme utilisateurs de Windows, vous êtes déjà familier avec la notion de fichier, leurs regroupements en répertoires et leur classification en arborescence (de fichiers).

Page 4: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Gestion de fichiers

• La norme pour les noms de fichiers sous windows (9x / 2000 / Me / XP/ 7) :– Composition : caractères

alphanumériques (lettres, chiffres), tirets, trait de soulignement, espace

– Maximum de 255 caractères– Extension facultative : un point et trois

caractères (qui indiquent le type du fichier : .bas, .prw, .wav, .txt, .exe, …)

Page 5: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Gestion de fichiers

• Le nombre total de fichiers pouvant être ouverts par le système est limité (cela dépend du système, avec VB c’est 255)

• Chaque fichier dispose d’un numéro de canal (la fonction FreeFile permet de laisser au système le soin de définir ce numéro)

• Le travail sur les fichiers ce décompose en trois phases :1. Ouverture2. Traitement3. Fermeture

Page 6: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Gestion de fichiers

• VB permet de lire et écrire toute sorte de fichiers (graphiques, sons, binaires, textes, données).

• On distingue les fichiers à accès séquentiel et les fichiers à accès aléatoire (ou accès direct).

• Il ne faut pas confondre les fichiers de code (exécutable ou sources) et les fichiers de données.

Page 7: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès séquentiel

• Par simplification, pour les fichiers à accès séquentiel, nous ne nous intéresserons qu’à la gestion des fichiers texte (contenant des données textuelles).

• Un fichier à accès séquentiel est composé d’une suite de lignes de texte séparé par un séparateur : un retour à la ligne (Chr(13)&Chr(10) ou CRLF)

Carriage Return / Line Feed

Page 8: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès séquentiel

CR LF

J u d y

J u d y

CR LF

LFCR

00010110 01100101 01101001 11001100

Fichier

Enregistrement

Chr(13)&Chr(10)

Chaîne (String)

Bit / Octet

Enregistrement

Page 9: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès séquentiel

• Syntaxe :Dim Canal As Integer ‘déclaration du canalCanal = FreeFile ‘initialisation du canalOpen <nomfichier> For <mode> As #Canal‘ TraitementClose #Canal ‘fermeture du fichier

• Où <mode> peut prendre trois valeurs :– Input : lecture seule– Output : accès en écriture, le fichier est vidé

de son contenu préalable– Append : ajout non destructif, les données sont

ajoutées à la fin du fichier

Page 10: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès séquentiel

• Les différents traitements sont :– Line Input #<canal>,<var> : fonction de

lecture d’une ligne de texte (ouvert en Input)– Print #<canal>,<var> : fonction d’écriture

dans un fichier (ouvert en Output ou en Append)

• EOF(<canal>) (End Of File) : fonction booléenne de repérage de fin de fichier (une lecture au-delà de la fin de fichier est une erreur système)

Page 11: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Gestion de fichiers

• VB dispose d’instructions équivalentes à celles du DOS pour les répertoires :– Chdrive <lecteur> : change le lecteur courant– ChDir <chemin> : change le répertoire courant– Curdir : retourne le nom du répertoire courant– Mkdir <répertoire> : crée le répertoire spécifié– Rmdir <répertoire> : détruit le répertoire (vide)

spécifié

• Les arguments (en entrée comme en sortie) doivent être des chaînes de caractère : variables (String) ou valeurs (« »)

Page 12: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Gestion de fichiers

• VB dispose d’instructions équivalentes à celles du DOS pour les fichiers :– Dir(masque, attribut): retourne le nom du premier

fichier correspondant au masque et possédant l’attribut considéré

– FileAttr, FileDate, File : retournent respectivement les attributs, la date de création et la longueur

– FileCopy source, destination : copie le fichier source sous le nom destination

– Kill <nom> : supprime le fichier indiqué (pas de corbeille)

– Name <ancien> As <nouveau> : renomme le fichier ancien en nouveau

Page 13: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès séquentiel• Exemple :

Private Sub ExempleFile()Dim canal As Integer 'déclaration du canalDim courante As String 'déclaration de la ligne courantecanal = FreeFile 'initialisation du canalMsgBox(CurDir) 'affiche le répertoire courantChDir "c:\test" 'change le répertoire courantMsgBox(CurDir) 'affiche le nouveau répertoireOpen "test.txt" For Input As #canal 'ouvre le fichierDo Until EOF(canal) 'tant que pas fini

Line Input #canal, courante 'lire la prochaine ligne

MsgBox(courante) 'l'afficherLoop 'fin de boucleClose #canal 'fermeture du fichier

End Sub 'fin de procédure

Page 14: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès direct /aléatoire

• Les fichiers à accès direct permettent un accès rapide à une donnée précise dans le fichier (d’où leur(s) nom(s)).

• Les fichiers à accès direct sont structurés différemment (ce n’est pas que le mode d’accès qui change) : ils sont une collection d’enregistrements de même taille. On utilise un type utilisateur (Type)pour définir ces enregistrements (avec une contrainte de définition précise de la taille: String * X, tableaux de taille fixe, …)

Page 15: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Hiérarchie de données

J u d y

00010110 01100101 01101001 11001100

Chaîne (String)

Bit / Octet

Enregistrement

Fichier

Page 16: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès direct / aléatoire

• Ouverture / crétation d’un fichier à accès direct :

Dim Canal1 As Integer ‘déclaration du canalCanal1 = FreeFile ‘initialisation du canalOpen <nomfichier> For Random [Access <mode>] As#Canal1 Len=Len(<variable_enregistrement>)‘ Traitement des donnéesClose #Canal ‘fermeture du fichier

• Par défaut, les fichiers à accès direct sont ouverts en lecture et en écriture, mais on peut préciser : read, write, read write

Page 17: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès direct / aléatoire

• Lecture des données, syntaxe :Get #Canal, <num>, variable_réception– Get affecte les valeurs de l’enregistrement

numéro <num> aux champs correspondants de variable_réception

– Adresser un enregistrement du fichier qui n’existe pas est une erreur dynamique.

– La fonction LOF(Canal) renvoie la taille du fichier en nombre d’octets du fichier.

– LOF(Canal)/Lenb(variable_réception) nous donne donc la taille du fichier en nombre d’enregistrements (pratique, mais peu sur).

Page 18: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès direct / aléatoire

• Écriture des données, syntaxe :Put #Canal, <num>,

variable_réception– Put affecte les valeurs de

l’enregistrement variable_réception aux champs correspondants de l’enregistrement numéro <num> du fichier de canal Canal

– EOF(Canal) renvoie vraie lorsque la fin du fichier est rencontrée

Page 19: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Fichiers à accès direct / aléatoire

• Exemple d’utilisation :Private Type ClientRecord

accountNumber As IntegerlastName As String * 15firstName As String * 15balance As Currency

End TypeSub Initialisation() ‘procédure d’initialisation du

fichierDim BlankClient As ClientRecord ' type utilisateurDim x as integerOpen "c:\clients.rnd" For Random Access Write As #1 Len=Len(BlankClient)For x = 1 To 100

Put #1, x, udtBlankClient ' écrit 100 enregistrementsNextClose #1 ' ferme le fichier

End Sub

Page 20: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Exercices- Fichiers séquentiels -

• Écrire un programme qui :– Ouvre un répertoire Tests dans Mes documents (vous

devez avoir déjà crée ce répertoire)– Y crée un fichier test.txt et y insère la liste des numéro,

nom et prénom d’au moins trois étudiants.– Ferme le fichier.

• Écrire un programme qui – Demande à l’utilisateur le numéro de l’étudiant

recherché,– Affiche toutes les informations sur cet étudiant

• Écrire un programme qui – Ouvre votre fichier précédemment créé– Affiche son contenu de manière « ergonomique » dans la

feuille Feuil1.

Page 21: Stockage de données. Présentation Le stockage des données dans les variables et tableaux est temporaire : –Nous avons vu la notion de durée de vie des

Exercices- Fichiers à accès direct -

• On se propose d’écrire un programme permettant de gérer les commandes des différents clients. – Un client est défini par un numéro, un nom et une adresse.– Une commande est définie par un numéro, une date, le numéro du

client qui a passé la commande et enfin par le numéro et la quantité du produit concerné.

– Un produit est défini par un numéro, une désignation, un prix unitaire et un stock.

• Ecrire un programme qui : – Crée un répertoire Commandes– Dans ce répertoire, il crée trois fichiers :

• Clients.mie contenant la liste des clients.• Commandes.mie contenant la liste des commandes. • Produits.mie contenant la liste des produits.

• Une fois ces trois fichiers crées, votre programme demande à l’utilisateur ce qu’il veut faire. Selon la réponse de l’utilisateur, le programme applique le traitement demandé :– 1 : l’utilisateur pourra saisir un nouveau client– 2 : il pourra saisir un nouveau produit– 3 : il pourra saisir une nouvelle commande.