Stockage de données. Présentation Le stockage des données dans les variables et tableaux est...

21
Stockage de données

Transcript of Stockage de données. Présentation Le stockage des données dans les variables et tableaux est...

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.