IFT-20403-A-cours-6-fichiers-pdf
11 pages
Français

IFT-20403-A-cours-6-fichiers-pdf

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
11 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Précisions d’ordre administratif• Vous avez eu une première séance de Compléments VB :complément de Mathieu Boudreault, une Gestion de fichiersseconde est à venir (TP1 et Examen) :– le jeudi 23 octobre 2003 PLT-2551 de 10h30 à 12h30Structures d’enregistrements, • Vous avez probablement commencé à travailler Fichiers à accès séquentiel, fichiers sur le TP numéro 1 (vous avez tous les éléments à accès directen main).• Rendu du TP (10 novembre) : vous utiliserez mon casier (casier jaune, en bas à gauche, face au Philippe Pasquierlocal PLT 3910)• Gestion des retards : -20% par jour de retard• Astuce : dites-vous que c’est pour le vendredi 7Philippe Pasquier, Octobre 20032IFT-20403-A Basic et Visual BasicPrécisions d’ordre administratif Rappels d’algorithmique• Nous avons vu : • Aujourd’hui, dernière séance avant l’examen – Définition : Un algorithme est une suite finiepartiel du 3 novembre prochain (de 15h30 à d’instructions qui, étant donné des paramètres typés, 18h30) : calcule une solution d’un problème donné– salle PLT-2341 jusqu’à Annie Jacques (incluse)– Variables Nom– salle PLT-2551 de Annie Jacques (exclue) à la fin– Constantes Valeur– Tout ce dont vous aurez besoin se trouve dans les – Opérateurs, fonctionsquatre premiers cours (c.à.d. pas de gestion – Expressionsd’erreur et pas de traitement de fichiers)– Une instruction : l’affectation– En fait, nous sommes en train de consolider ces – Une méthode de programmation ...

Informations

Publié par
Nombre de lectures 92
Langue Français

Extrait

Compléments VB :
Gestion de fichiers
Structures d’enregistrements,
Fichiers à accès séquentiel, fichiers
à accès direct
Philippe Pasquier
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
2
Précisions d’ordre administratif
Vous avez eu une première séance de
complément de Mathieu Boudreault, une
seconde est à venir (TP1 et Examen) :
le jeudi 23 octobre 2003 PLT-2551 de 10h30 à 12h30
Vous avez probablement commencé à travailler
sur le TP numéro 1 (vous avez tous les éléments
en main).
Rendu du TP (10 novembre) : vous utiliserez mon
casier (casier jaune, en bas à gauche, face au
local PLT 3910)
Gestion des retards : -20% par jour de retard
Astuce : dites-vous que c’est pour le vendredi 7
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
3
Précisions d’ordre administratif
Aujourd’hui, dernière séance avant l’examen
partiel du 3 novembre prochain (de 15h30 à
18h30) :
salle PLT-2341 jusqu’à Annie Jacques (incluse)
salle PLT-2551 de
Annie Jacques (exclue) à la fin
Tout ce dont vous aurez besoin se trouve dans les
quatre premiers cours (c.à.d. pas de gestion
d’erreur et pas de traitement de fichiers)
En fait, nous sommes en train de consolider ces
bases en étudiant des sujets connexes et
importants tout en appliquant les éléments déjà
étudiés
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
4
Rappels d’algorithmique
Nous avons vu :
Définition : Un algorithme est une suite finie
d’instructions qui, étant donné des paramètres typés,
calcule une solution d’un problème donné
Variables
Constantes
Opérateurs, fonctions
Expressions
Une instruction : l’affectation
Une méthode de programmation utilisant tout
ça : la programmation événementielle
Un environnement de programmation (Visual
Studio 6)
Nom
Valeur
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
5
Rappels d’algorithmique
Notion de tableau :
Collection de valeurs d’un
même type
Accessibles par indexation
1 ou plusieurs dimensions
De taille statique (fixe) ou
dynamique
Généralement parcourus
ou traités à l’aide de boucles
Nom
index
0
1
254
255
Valeur
Valeur
Valeur
Valeur
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
6
Notion de structure de contrôle
Branchement conditionnel :
Select Case expression
Case ListeValeurs1
[
Instructions
]
Case ListeValeurs2
[
Instructions
]
Case Else
[Instructions]
End Select
If condition Then
[instructions]
Else
[instructions]
End If
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
7
Notion de structure de contrôle
Itérations et itérations conditionnelles :
For
Compteur
=
Début
To
Fin
[Step
Incrément
]
[
Instructions
]
Next [
Compteur
]
Do While Condition
Instructions
Loop
Do
Instructions
Loop While
Condition
Do Until
Condition
Instructions
Loop
Do
Instructions
Loop Until
Condition
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
8
Notion de structure de contrôle
Exemples d’utilisation de l’itération :
Sommes :
i=
exp1
résulat = 0 ‘élément neutre pour l’addition
For i=exp1 To exp2
résultat=résultat + exp(i)
Next i
Produits :
i=exp1
résulat = 1 ‘élément neutre pour la multiplication
For i=exp1 To exp2
résultat = résultat * exp(i)
Next i
i=exp2
i=exp2
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
9
Procédures et fonctions
Procédures :
Une procédure est un ensemble d'instructions
qui participent à une même tâche.
[Public/Private][Static] Sub nom([liste_arguments])
déclarations
instructions
End Sub
Fonctions :
[Public/Private]Function Nom([liste_arguments])As type
déclarations
instructions
Nom = exp_du_bon_type
End Sub
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
10
Passage de paramètres/arguments
Private Sub Affiche(Message As String)
MsgBox(Message)
End Sub
Private Sub cmdAllez_Click()
Dim news As String
News=« cool ! »
Affiche(«Ift-20403»)
‘ affiche ift-20403
Affiche News
‘ affiche cool !
Affiche (News)
‘ affiche cool !
Call Affiche(«news»)
‘ affiche news
Call Affiche News
‘erreur compilation
End Sub
Passage par référence
Passage par valeur
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
11
Notion de portée / durée de vie
Option Explicit
‘ force la déclaration
Public x As Integer
‘ variable publique
Dim y As Integer
‘ variable globale
Private Sub CmdLancer_Click()
‘ procédure évènementielle
Dim x As Integer
‘ variable locale
x = 3
‘ initialisation
y = 3
‘ initialisation
Call calcul(x, (y))
‘ appel de procédure
MsgBox ("x=" & x & " y=" & y)
‘ affichage
Call calcul(x, (y))
‘ appel de procédure
MsgBox ("x=" & x & " y=" & y)
‘ affichage
End Sub
‘ destruction de x
Private Sub calcul(w As Integer, z As Integer)
Static count As Integer
‘ variable static initialisée à 0
count = count + 1
‘ incrémentation
MsgBox ("appel de calcul numero:" & count) ‘ affichage
w = w + 1
‘ incrémentation
z = z + 1
‘ incrémentation
End Sub
‘ destruction des identifiants z/w
module
procédure
procédure
Nous avons vu différents niveaux de visibilité :
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
12
Récursivité
Pas récursif : appel récursif
Condition d’arrêt : bien définir le cas de base qui
terminera la séquence d’appels récursifs
Exemple de la factorielle :
Private Function Factorial(Byval y As Double) As Double
If y <= 1 Then
Factorial = 1
‘Cas de base
Else
Factorial = y * Factorial(y-1)
‘Pas récursif
End if
End function
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
13
Gestion des erreurs
Outils pour la mise au point de programme :
Faciliter l’écriture du code
Tester le code (pas à pas, variables
espionnes,…)
Traitement des erreurs à l’exécution :
Certaines erreurs ne surviennent qu’à
l’exécution, pas à la compilation :
Fichier absent
Division par zéro
Entrée de l’utilisateur erronée
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
14
Traitement des erreurs à l’exécution
Routine de gestion d’erreur, syntaxe :
Private Sub nom(arguments)
<déclarations>
On error Goto <étiquette>
<Traitement normal>
Exit Sub
étiquette :
<Traitement erreur>
resume/resume next/Exit Sub ‘mode de retour
End Sub
Si une erreur se produit pendant traitement normal,
l’exécution est routée vers l’
étiquette
.
On peut consulter
Err.number
pour connaître la nature
de l’erreur
Ré-exécute l’instruction fautive
Quitte la procédure
Ré-exécute l’instruction suivant la fautive
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
15
Caractères ANSI
Le tutoriel 6 du livre de cours vous en a dit long sur la
manipulation des chaînes.
En VB, les caractères alphanumériques sont codés sur
un octet (8bits = 256 valeurs possibles), selon la norme
ANSI[American National Standards Institute] A = 65, a
= 97. Voir le lien dans la section Link du site du cours.
Les 128 premiers caractères de ce code,
correspondent aux caractère ASCII [American
standard Code for Information Interchange]
La fonction
Chr(<numASCII>)
permet d’identifier les
caractères par leur numéro ANSI.
Certains caractères ANSI ne sont manipulables que
sous cette forme (par exemple, le retour chariot :
Chr(13)
ou
CR
)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
16
Type de donnée utilisateur
Souvent, pour modéliser un objet, nous
avons besoin de plusieurs variables
Exemple : une voiture
Modèle
Marque
Immatriculation
Date de Fabrication
Prix à l’achat
Si on manipule de
nombreuses voitures
Cela peut devenir
compliqué de s’y
retrouver
Une structure de donnée appropriée
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
17
Les structures d’enregistrement
Les structures d’enregistrement, structure
d’agrégation, agrégat ou structures
Type
sont des types de données définis par
l’utilisateur.
Syntaxe : dans la section de déclaration d’un
module
Public Type <nom_du_type>
‘déclaration des différents champs
‘de taille fixe de la forme
<nom> As Type
End Type
Ou
Private
(obligatoire dans un module de formulaire)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
18
Les structures
Type
Exemple :
Public Type Voiture ‘création du type voiture
Modèle As String * 25
Marque As String * 25
Immatriculation As String * 6
DateFabrication As Date
Prix As Single
End Type
Private Type ClientRecord
accountNumber As Integer
lastName As String * 15
firstName As String * 15
balance As Currency
End Type
Fixe la taille de
la chaîne
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
19
Les structures
Type
La déclaration d’un nouveau type autorise la
déclaration et l’utilisation de variables du type
ainsi défini.
Exemples de déclarations :
‘ déclaration d’une variable de type voiture
Dim voitureCourante As Voiture
‘ déclaration d’un tableau de 100 variables
‘ de type Voiture
Dim StockVoitures(99) As Voiture
‘ on suppose Option base 0
Contrainte : un seul identifiant à la fois
Dim voitureCourante, voitres As Voiture
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
20
Les structures
Type
Manipulation des champs de l’enregistrement à
l’aide de la notation pointée (comme pour les
propriétés d’un contrôle)
Exemple :
voitureCourante
.
marque = « Alpha Romeo »
Sucre syntaxique (d’une portée plus large) :
With voitureCourante
.Modèle=«R5»
.Marque=«Renault»
.Immatriculation=«LNA012»
.DateFabrication =
#
12/03/1981
#
.Prix=69
End with
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
21
Stockage de données
Le stockage des données dans les variables et
tableaux est temporaire :
Nous avons vu la notion de durée de vie des
variables
Pour les données en entrée : elles sont soit
recueillies manuellement soit assignées de manière
statique dans le code (constantes)
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
Il nous faut une solution permettant la (ré)utilisation
des données d’une exécution à l’autre
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
22
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).
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
23
Gestion de fichiers
La norme pour les noms de fichiers sous
windows 9x / 2000 / Me / XP :
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, …)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
24
Gestion de fichier
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.Ouverture
2.Traitement
3.Fermeture
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
25
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.
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
26
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
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
27
Fichiers à accès séquentiel
00010110
01100101 01101001 11001100
J
u
d
y
Bit / octet
Chaîne
(String)
Enregistrement
Caractère alphanumérique ASCII
Fichier
J
u
d
y
CR LF
CR LF
CR LF
Chr(13)&Chr(10)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
28
Fichiers à accès séquentiel
Syntaxe :
Dim Canal As Integer ‘déclaration du canal
Canal = FreeFile
‘initialisation du canal
Open <nomfichier> For <mode> As #Canal
‘ Traitement
Close #Canal ‘fermeture du fichier
<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
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
29
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)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
30
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 (« »)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
31
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
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
32
Fichiers à accès séquentiel
Exemple :
Private Sub CParti_Click()
Dim canal As Integer
'déclaration du canal
Dim courante As String
'déclaration de la ligne courante
canal = FreeFile
'initialisation du canal
MsgBox(CurDir)
'affiche le répertoire courant
ChDir "c:\test"
'change le répertoire courant
MsgBox(CurDir)
'affiche le nouveau répertoire
Open "test.txt" For Input As #canal 'ouvre le fichier
Do Until EOF(canal)
'tant que pas fini
Line Input #canal, courante
'lire la prochaine ligne
MsgBox(courante)
'l'afficher
Loop
'fin de boucle
Close #canal
'fermeture du fichier
End Sub
'fin de procédure
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
33
Autre exemples
Vous devez être capable de réaliser les
programmes suivants :
Routine de traitement d’erreur pour
l’ouverture du fichier
Recherche d’informations : étant
donnée une chaîne, appartient elle
(est-elle une ligne) à un fichier donné ?
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
34
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, …)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
35
Hiérarchie de données
00010110 01100101 01101001 11001100
J
u
d
y
Bit / octet
Alpha-
numérique
Enregistrement
Champ
Fichier
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
36
Fichiers à accès direct / aléatoire
Ouverture / crétation d’un fichier à accès direct :
Dim Canal1 As Integer ‘déclaration du canal
Canal1 = FreeFile
‘initialisation du canal
Open <nomfichier> For Random [Access <mode>] As
#
Canal1 Len=Len(<variable_enregistrement>)
‘ Traitement des données
Close
#
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
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
37
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).
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
38
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
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
39
Fichiers à accès direct / aléatoire
Exemple d’utilisation :
Private Type ClientRecord
accountNumber As Integer
lastName As String * 15
firstName As String * 15
balance As Currency
End Type
Sub Initialisation() ‘procédure d’initialisation du fichier
Dim BlankClient As ClientRecord
' type utilisateur
Dim x as integer
Open "c:\clients.rnd" For Random Access Write As #1 Len=Len(BlankClient)
For x = 1 To 100
Put #1, x, udtBlankClient
' écrit 100 enregistrements
Next
Close #1
' ferme le fichier
End Sub
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
40
Contrôles VB associés aux fichiers
Si vous voulez que l’utilisateur puisse
paramétrer certains emplacements/nom de
fichier, il y a les contrôles :
Liste de fichiers (FileListBox)
Structure de répertoires (DirListBox)
Structure des périphériques d’accès (DriveListBox)
Ces trois contrôles partagent de nombreuses
propriétés
Les contrôles sont indépendant les uns des
autres (vous devrez créer les dépendances
nécessaires)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
41
Les objets de la gestion de fichiers
En outre, d’autres outils sont
disponibles.
Les objets de système de fichiers (FSO)
sont des objets au même titre que les
contrôles.
Pour pouvoir les utiliser, il faut que la
Microsoft Scripting Runtime Library soit
chargée (Projects/référence)
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
42
Après la pause
Nous allons nous retrouver en PLT
3910 pour faire ensemble les
exercices actuariels numéro 3 et 4
Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic
43
Questions
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents