République Démocratique du Congo
ENSEIGNEMENT SUPERIEUR, UNIVERSITAIRE ET RECHERCHE
SCIENTIFIQUE
INSTITUT SUPERIEUR TECHNIQUE D’INFORMATIQUE APPLIQUEE
Kabinda
COURS DE Basic
A L’USAGE DES ETUDIANTS DE G1 INFORMATIQUE DE GESTION
Par :
Pathy Kri’ce WANKUNDA
Ingénieur
Année académique 2019-2020
Cours de basic
1
Introduction
Le Basic est un langage de programmation qui tourne sur tous les
matériels sans distinction de marques et des constructeurs.
B A S I C(veut
dire) Code
Instruction
Symbolic
All
Purpose
Beginner’s
Le Basic est un langage qui est construit vers les années 75 et connaît
plusieurs versions suivant les constructeurs variés, notamment :
- GWBASIC
- QBASIC
- BASICA
- BASIC
Objectifs du cours
- Le langage BASIC est un langage de programmation de haut
niveau et fait partie du groupe des langages dits évolués. Le lange
BASIC est le premier langage de programmation interactif
développé pour micro-ordinateur soit la PC (personnel
computer).
- Son objectif est essentiellement de mettre à la portée des
étudiants, un langage très simple pour l’apprentissage à la
programmation. Il est aussi un langage facile avec un nombre
relativement réduit d’instruction.
Prérequis
Pour bien assimiler ce cours, l’étudiant doit avoir :
Ir Pathy Kri’ce WANKUNDA
Cours de basic
2
- les notions sur la logique de programmation (algorithme) ;
- la logique de programmation linéaire ;
Contenu du cours
Chapitre I. Les variables
Chapitre II. Les instructions d’entrée et Sortie
Chapitre III. Les instructions de contrôles
Chapitre IV. Les tableaux
Chapitre V. Les fonctions
Chapitre VI. Les fichiers
L'interface de Visual studio 2010
Il faut installer Visual studio 2010 pour l’utiliser sur son ordinateur. En
passant, sachez que ce dernier est un IDE (environnement de
développement intégré) qui rassemble les fonctions de conception,
édition de code, compilation et débogage. Lors du premier lancement,
vous constatez qu'un petit temps de chargement apparaît : le logiciel
configure l'interface pour la première fois.
Page d'accueil
Nous voici sur la page de démarrage du logiciel (voir figure suivante).
Vous pouvez la parcourir, elle contient des informations utiles aux
développeurs (vous) et conservera l'historique de vos projets récents.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
3
Barre d'outils
La barre d'outils (voir figure suivante) vous sera indispensable afin de
travailler avec une parfaite ergonomie. Nous allons récapituler les
boutons présents (de gauche à droite), actifs ou non durant vos
travaux.
Respectivement le nom de chaque bouton :
✓ Nouveau projet : crée un projet.
✓ Ouvrir un fichier : à utiliser pour ouvrir un projet existant ou une
page simple.
✓ Ajouter un nouvel élément : disponible quand un projet est
ouvert ; il permet d'ajouter des feuilles au projet.
✓ Enregistrer : raccourci CTRL + S.
✓ Enregistrer tout : raccourci CTRL + MAJ + S.
✓ Couper : raccourci CTRL + X.
✓ Copier : raccourci CTRL + C.
✓ Coller : raccourci CTRL + V.
✓ Rechercher : fort utile dans le cas de gros projets ; raccourci CTRL
+ F.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
4
✓ Commenter les lignes : je reviendrai plus tard sur le principe des
commentaires.
✓ Décommenter les lignes.
✓ Annuler : raccourci CTRL + Z.
✓ Rétablir : raccourci CTRL + MAJ + Z.
✓ Démarrer le débogage : expliqué plus tard.
✓ Arrêter le débogage : expliqué plus tard.
✓ Pas à pas détaillé : expliqué plus tard.
✓ Pas à pas principal : expliqué plus tard.
✓ Pas à pas sortant : expliqué plus tard.
✓ Explorateur de solutions : affiche la fenêtre de solutions.
✓ Fenêtre des propriétés : affiche la fenêtre des propriétés.
✓ Boîte à outils : permet d'afficher la boîte à outils.
✓ Gestionnaire d'extensions : permet de gérer les extensions que
vous pouvez ajouter à Visual Studio.
✓ Liste d'erreurs : affiche la fenêtre des erreurs.
Toutes ces commandes ne seront pas forcément utiles ; au besoin,
n'hésitez pas à revenir voir cette liste.
Nouveau projet
Ici, nos programmes sont contenus dans des projets que nous allons
créer en suivant cette procédure : cliquer sur le bouton « Nouveau
projet », se rendre dans le menu Fichier > Nouveau projet, ou utiliser
le raccourci clavier CTRL + N
Notre premier programme
Créez un nouveau projet (CTRL + N) et cliquez sur Application
console. De nombreux mots de langue étrangère apparaissent.
Voici ce qui devrait s'afficher chez vous :
Module Module1
Sub Main()
End Sub
End Module
Ir Pathy Kri’ce WANKUNDA
Cours de basic
5
Si ce n'est pas exactement ce code que vous voyez, faites-en sorte que
cela soit le cas, afin que nous ayons tous le même point de départ.
Ces mots barbares figurant dans votre feuille de code sont
indispensables ! Si vous les supprimez, l'application ne se lancera pas.
C'est le code minimal que l'IDE (Visual Studio) génère lorsque l'on crée
un projet de type console.
Chaque grosse partie, telle qu'une fonction, un module, un sub, voire
une boucle conditionnelle (nous allons revenir sur ces termes), aura
une balise de début : ici, Module Module1 et Sub Main(), et une balise
de fin : End Module et End Sub.
Module1 est le nom du module, que vous pouvez modifier si l'envie
vous en prend. Il nous sera réellement pratique lorsque nous
utiliserons plusieurs feuilles.
Pour ce qui est du Main(), n'y touchez pas, car lorsqu'on va lancer le
programme la première chose que ce dernier va faire sera de localiser
la partie appelée Main() et de sauter dedans. S'il ne la trouve pas, cela
ne fonctionnera pas.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
6
Déroulement du programme
Le programme entre dans le Main() et exécute les actions de haut en
bas, instruction par instruction. Attention, ce ne sera plus le cas lorsque
nous aborderons des notions telles que les boucles ou les fonctions.
Voici nos lignes de code :
1. Module Module1 : le programme entre dans son module au
lancement. Forcément, sinon rien ne se lancerait jamais. La
console s'initialise donc.
2. Il se retrouve à entrer dans le Main(). La console est ouverte.
3. Il continue et tombe sur notre ligne qui lui dit « Affiche "Hello
World !" », il affiche donc « Hello World ! » dans la console.
4. Il arrive à la fin du Main() (End Sub). Rien ne se passe, « Hello
World ! » est toujours affiché.
5. Il rencontre le End Module : la console se ferme.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
7
Chapitre I. Les variables
Comme tous les langages de programmations, Basic va pouvoir
conserver des données grâce à des variables. Ce sont en fait des blocs
de mémoire qui vont contenir des nombres, des chaines de caractères,
des dates ou plein d’autres choses.
Les variables vont nous permettre d’effectuer des calculs
mathématiques, d’enregistrer l’âge du visiteur, de comparer des
valeurs, etc.
Une variable est représentée par son nom, caractérisée par son type
et contient une valeur.
I.1. Les types de variable
Les variables se déclinent sous différents types : il y a par exemple un
type spécifique pour stocker des nombres, un autre pour stocker du
texte, etc.
D'ailleurs, si vous tentez d'enregistrer du texte dans une variable créée
pour contenir un nombre, l'ordinateur va vous afficher une petite
erreur.
Au tableau suivant, vous trouverez un récapitulatif des types que nous
allons utiliser.
Nom Explication
Boolean Ce type n'accepte que deux valeurs : vrai ou faux.
Type de variable spécifique au stockage de
Integer
nombres entiers
Double Stocke des nombres à virgule.
Conçu pour stocker des textes ou des mots. Peut
String
aussi contenir des nombres.
Stocke une date et son heure sous la forme «
Date
12/06/2009 11:10:20 »
Il existe de nombreux autres types, mais ils ne vous seront pas utiles
pour le moment.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
8
Un peu de précision, le type Integer (abrégé Int) existait sous trois
déclinaisons : Int16, Int32 et Int64. Le nombre après le mot Int désigne
la place qu'il prendra en mémoire : plus il est grand (16, 32, 64), plus
votre variable prendra de la place, mais plus le nombre que vous
pourrez y stocker sera grand. Pour ne pas nous compliquer la vie, nous
utiliserons le Integer (Int) tout simple.
Tout d'abord, en BASIC, il faut déclarer une variable avant de l'utiliser.
Autrement, l'ordinateur ne saura pas de quel type est la variable et ne
saura donc pas comment réagir.
I.2. Déclaration d’une variable
Voici l'instruction servant à déclarer une variable, par exemple de type
Integer :
Dim MaVariable As Integer
Effectivement, les mots que vous allez utiliser et qui serviront
d'instructions dans vos programmes, comme par exemple Write, If,
Then, etc., sont en anglais ; mais si l'on décortique la ligne ci-haut, on
obtient ceci :
Code
Dim MaVariable As Integer
BASIC
Français Crée une variable de nom « MaVariable » en tant que entier
Plus d’exemples :
Dim MaVariableString As String
Dim MaVariableDouble As Double
Dim MaVariableSingle As Single
Dim MaVariableLong As Long
I.3. Opérations sur une variable
Nous allons à présent apprendre à modifier des variables, et effectuer
des opérations avec elles.
Voici un exemple : vous souhaitez créer un programme qui calcule la
somme de deux nombres ; pour ce faire, il vous faudra utiliser des
opérations.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
9
Reprenons notre programme, déclarons-y une variable MaVariable en
Integer et assignons-lui la valeur 5.
Déclarons maintenant une seconde variable intitulée MaVariable2, de
nouveau en Integer, et assignons-lui cette fois la valeur 0.
Module Module1
Sub Main()
Dim MaVariable As Integer
Dim MaVariable2 As Integer
MaVariable = 5
MaVariable2 = 0
[Link](MaVariable)
[Link]()
End Sub
End Module
Dans le cas où vous avez plusieurs variables du même type, vous
pouvez rassembler leur déclaration comme suit :
Dim MaVariable, MaVariable2 As Integer
Vous pouvez également initialiser vos variables dès leur déclaration,
comme ci-dessous, ce qui est pratique pour les déclarations rapides.
Dim MaVariable As Integer = 5
On va additionner un nombre à notre variable MaVariable. Pour ce
faire :
MaVariable + 5
En résumé, vous avez additionné 5 à la variable MaVariable. Le
programme a effectué cette opération. Seulement, le résultat n'est allé
nulle part : nous n'avons pas mis le signe égal (« = »)
Pour y remédier, il faut ajouter le signe égal, comme lorsque nous
initialisons nos variables.
MaVariable2 = MaVariable + 5
Vous savez à présent comment additionner un nombre à une variable.
Nous allons donc découvrir les autres opérations possibles.
Les différentes opérations possibles
Opération
Symbole
souhaitée
Ir Pathy Kri’ce WANKUNDA
Cours de basic
10
Addition +
Soustraction -
Multiplication *
Division /
Division entière \
Puissance ^
Modulo Mod
I.4. Les commentaires
Les commentaires vont nous servir à éclaircir le code. Ce sont des
phrases ou des indications que le programmeur laisse pour lui-même
ou pour ceux qui travaillent avec lui sur le même code.
Une ligne est considérée comme commentée si le caractère « ' »
(autrement dit, une simple quote) la précède ; une ligne peut aussi
n'être commentée qu'à un certain niveau.
Exemples :
'Commentaire
MaVariable = 9 * 6 ' Multiplie 9 et 6 et entre le résultat
dans MaVariable
Par exemple, voici notre programme dûment commenté :
Module Module1
Sub Main()
'Initialisation des variables
Dim MaVariable As Integer = 8
Dim MaVariable2 As Integer = 9
'Affiche "9 x 8 = " puis le résultat (multiplication
de MaVariable par MaVariable2)
[Link]("9 x 8 = " & MaVariable * MaVariable2)
'Crée une pause factice de la console
[Link]()
End Sub
End Module
Autre chose : si vous voulez commenter plusieurs lignes rapidement,
ce qui est pratique lorsque vous testez le programme avec d'autres
fonctions mais que vous souhaitez garder les anciennes si cela ne
fonctionne pas, Visual studio vous permet de le faire avec son
Ir Pathy Kri’ce WANKUNDA
Cours de basic
11
interface. Sélectionnez pour cela les lignes souhaitées, puis cliquez sur
le bouton commentaire dans la barre d'outils et qui porte le nom «
Commenter les lignes sélectionnées ».
I.5. Quelques fonctions sur les variables
Ici, nous allons manipuler les instructions permettant de modifier les
variables de manière à leur ajouter certaines propriétés.
I.5.1. Les opérations sur le string
1. Remplacer des caractères
On va commencer par la fonction la plus simple : le Replace() qui,
comme son nom l'indique, permet de remplacer des caractères ou
groupes de caractères au sein d'une chaîne.
La syntaxe est la suivante :
Dim MonString As String = "Phrase de test"
MonString = [Link]("test", "test2")
Le premier argument de cette fonction est le caractère (ou mot) à
trouver, et le second, le caractère (ou mot) par lequel le remplacer.
Dans cette phrase, le code remplacera le mot « test » par « test2 ».
Si vous avez bien assimilé le principe cette fonction, des variables
peuvent être utilisées à la place des chaînes de caractères en « dur ».
2. Mettre en majuscules
La fonction ToUpper() se rattachant à la chaîne de caractères en
question (considérée comme un objet) permet la conversion en
majuscule de cette chaine de caractères.
Elle s'utilise comme suit :
Dim MonString As String = "Phrase de test"
MonString = [Link]()
Cette phrase sera donc mise en MAJUSCULES.
3. Mettre en minuscules
Ir Pathy Kri’ce WANKUNDA
Cours de basic
12
Cette fonction s'appelle ToLower() ; elle effectue la même chose que
la précédente, sauf qu'elle permet le formatage du texte en minuscules.
Dim MonString As String = "Phrase de test"
MonString = [Link]()
4. Tronquer une chaine de caractères
Tronquer une chaine de caractères n’est rien d’autre que diminuer sa
taille ou amputer une partie de cette chaine. Pour ce faire, on utilisera
la fonction Substring() qui prend en paramètre la position à partir de
laquelle commence la coupure et le nombre de caractères pour la
nouvelle chaine de caractères.
Dim MonString As String = "Phrase de test"
Dim Portion As String = [Link](2,5)
5. LEN (Var. chaîne)
Donne le nombre de caractères de la variable chaîne. (C’est-à-dire le
nombre de caractères que contient une variable chaîne de caractère.
Module Module1
Sub Main()
Dim MaVariableString As String = "La valeur de
MaVariableString"
[Link](Len(MaVariableString))
End Sub
End Module
6. LEFT (VARCH, n)
Renvoi le n premier caractère (gauche) de la variable chaîne.
N = est une expresson numérique comprise entre 0 et 32767
déterminant ou spécifiant le nombre de caractères à extraire de la
chaine à partir de la gauche. Si n est plus grand que le nombre de
caractère contenu dans la chaîne, la chaine entière est renvoyée. Si n
= 0, la fonction LEFT retourne une chaîne nulle.
Module Module1
Sub Main()
Dim MaVariableString As String = "La valeur de
MaVariableString"
Dim CaractereSupprimer As Integer
Left(MaVariableString, CaractereSupprimer)
Ir Pathy Kri’ce WANKUNDA
Cours de basic
13
[Link]()
End Sub
End Module
7. RIGHT(VARCH, n)
Donne le n dernier caractères de la chaîne, ou encore elle donne le n
nombre de caractères à partir de la droite. Même comportement que
LEFT.
8. MID(EXPCH, P, N)
Donne le n caractères de la chaîne à partir de la position P.
P et N : Doivent être des expressions numériques, comprises entre 1 et
32 767.
Module Module1
Sub Main()
Dim MaVariableString As String = "La valeur de
MaVariableString"
[Link](Mid(MaVariableString, 2, 6))
[Link]()
End Sub
End Module
9. STR(exp num)
Convertit une expression numérique en une chaine de caractère. Le
premier caractère de la chaîne formée sera un blanc ou un signe (-)
selon le signe de l’expression numérique. Si l’expression est positive,
la chaîne formée commencera par un blanc non significatif.
Module Module1
Sub Main()
Dim MaVariableEntier As Integer = 5263
[Link](Str(MaVariableEntier))
[Link]()
End Sub
End Module
10. VAL (Chaîne)
Donne la 1ère valeur numérique rencontrée au début de la chaîne. Si
les premiers caractères de la chaîne ne sont pas numériques et
différents de zéro, la fonction VAL retourne une valeur nulle.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
14
Module Module1
Sub Main()
Dim MaVariableSrting As Integer = "56253"
Dim MaVariableEntier As Integer =
Val(MaVariableSrting)
[Link](Str(MaVariableEntier))
[Link]()
End Sub
End Module
11. SPACES (exp num) SPACES ( )
Fournit une chaîne composée de N caractères blanc. N est remplacé
par l’expression numérique. L’expression numérique est arrondie à un
entier et doit – être compris entre 0 et 32767.
Module Module1
Sub Main()
Dim MaVariableEspace As String = Space(2)
[Link]("Ce{0}texte{0}n'a{0}pas{0}d'espace",
MaVariableEspace)
[Link]()
End Sub
End Module
12. INSTR([P], chaîne 1, chaîne2)
Recherche à partir de la position P, l’emplacement de la chaîne 2 à
l’intérieur de la chaîne 1.
P = est un décalage facultatif servant à déterminer la position du
départ pour l’exploration de la chaîne et doit être compris entre 1 et
32767. Si P n’est pas précisé, la recherche commence à la 1ère position
de la chaine 1.
Module Module1
Sub Main()
Dim MaVariableString As String = "Pathy WANKUNDA"
Dim CaractereARetrouve As String = "a"
[Link](InStr(1, MaVariableString,
CaractereARetrouve))
[Link]()
End Sub
End Module
Ir Pathy Kri’ce WANKUNDA
Cours de basic
15
I5.2. Les fonctions arithmétiques
1. ABS (x)
Elle donne la valeur absolue de x. Cette fonction s’utilise avec la
bibliothèque Math
Exemple :
Module Module1
Sub Main()
Dim MaVariableEntie As Integer = -562
[Link]("La valeur abolue de {0} est de
{1}", MaVariableEntie, [Link](MaVariableEntie))
[Link]()
End Sub
End Module
2. SQRT (x)
Elle donne la racine carrée de x.
Module Module1
Sub Main()
Dim MaVariableEntie As Integer = -562
[Link]("La racine carré de {0} est de {1}",
MaVariableEntie, [Link](MaVariableEntie))
[Link]()
End Sub
End Module
3. SGN (x)
Elle donne le signe de x et elle retourne 1 si x est positif, O si x est
nulle et – 1 si x est une valeur négative.
Module Module1
Sub Main()
Dim MaVariableEntie As Integer = -562
[Link]("le signe de {0} est de {1}",
MaVariableEntie, [Link](MaVariableEntie))
[Link]()
End Sub
End Module
4. ROUND(x)
La fonction CINT arrondit l’expression x en entier le plus proche.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
16
Module Module1
Sub Main()
Dim MaVariableEntie As Double = 25.56
[Link]("La valeur arrondie de {0} est de
{1}", MaVariableEntie, [Link](MaVariableEntie))
[Link]()
End Sub
End Module
5. TRUNCATE(x)
Cette fonction donne la partie entière de x.
Module Module1
Sub Main()
Dim MaVariableEntie As Double = 25.56
[Link]("La partie entière de {0} est de
{1}", MaVariableEntie, [Link](MaVariableEntie))
[Link]()
End Sub
End Module
6. POW(x,y)
Cette fonction renvoie x à la puissance y.
Module Module1
Sub Main()
Dim MaVariableEntier As Double = 25
Dim MaVariableExposant As Integer = 2
[Link]("{0} Exposant {1} = {2}",
MaVariableEntier, MaVariableExposant,
[Link](MaVariableEntier, MaVariableExposant))
[Link]()
End Sub
End Module
7. Autres fonctions
• Cos(x)
• Exp(x)
• Log(x,y)
• Log10(x)
• Max(x,y)
• Min(x,y)
• Sin(x)
Ir Pathy Kri’ce WANKUNDA
Cours de basic
17
• Tan(x)
I.5.3. Les dates, le temps
Nous passons donc aux dates et à l'heure. Il s'agit d'un sujet assez
sensible puisque, lorsque nous aborderons les bases de données, la
syntaxe d'une date et son heure sera différente de la syntaxe lisible par
tout bon francophone.
Tout d'abord, pour travailler, nous allons avoir besoin d'une date.
Nous allons utiliser l'instruction [Link], qui nous donne la date et
l'heure d'aujourd'hui, sous la forme suivante :
16/12/2019 21:06:33
La première partie est la date ; la seconde, l'heure.
1. Récupérer uniquement la date
La première fonction que nous allons utiliser est celle qui convertit une
chaîne date uniquement dans sa partie « date ».
Au lieu de « 16/12/2019 21:06:33 », nous obtiendrons « 16/12/2019 ».
ToShortDateString()
Ceci est aussi mieux :
Module Module1
Sub Main()
'Initialisation des variables
Dim MaVariableDate As Date = [Link]
'Écriture de la forme courte de la date
[Link]([Link])
'Pause
[Link]()
End Sub
End Module
Voici le résultat qui est censé s'afficher dans la console : 16/12/2019
2. La date avec les libellés
Seconde fonction : récupérer la date avec le jour et le mois écrits en
toutes lettres. Rappelez-vous l'école primaire, où l'on écrivait chaque
matin « Lundi 16 décembre 2019 »
Ir Pathy Kri’ce WANKUNDA
Cours de basic
18
Donc, pour obtenir cela, notre fonction s'intitule ToLongDateString()
Le résultat obtenu est Lundi 16 Décembre 2019.
3. L'heure uniquement
Voici la fonction qui sert à récupérer uniquement l'heure :
ToShortTimeString()
Ce qui nous renvoie ceci : 21:06
L'heure avec les secondes
Même chose qu'au-dessus, sauf que la fonction se nomme :
ToLongTimeString()
Cela nous renvoie : 21:06:33
4. L’horloge
Module Module1
Sub Main()
'Initialisation des variables
Dim MaVariableDate As Date
'Boucle infinie
While 1
'Récupération de la date actuelle
MaVariableDate = [Link]
'Affichage des heures, minutes, secondes
[Link]("----------------")
[Link]("--- " &
[Link] & " ---")
[Link]("----------------")
'Pause de 1 seconde
[Link](1000)
'Efface l'écran de la console
[Link]()
End While
End Sub
End Module
5. Horloge avec date (TP)
Ir Pathy Kri’ce WANKUNDA
Cours de basic
19
CHAPITRE II : INSTRUCTIONS D’ENTREE ET SORTIE
II.1. Les instructions d’entrée
1. ReadLine
Cette instruction permet de récupérer une ligne ou une valeur saisie
au clavier par un utilisateur, cette valeur qui, de fois, est directement
affectée à une variable. Elle est d’une importance capitale dans la
programmation console. Elle s’utilise toujours avec la bibliothèque
Console.
Exemple : [Link]()
Module Module1
Sub Main()
'Initialisation des variables
Dim MaVariable As String
'Affectation de la variable
MaVariable = [Link]()
'Pause
[Link]()
End Sub
End Module
2. Read
La fonction est beaucoup plus utilisée pour faire une pause lors de
l’exécution du programme. Et aussi pour retourner le code ascii d’un
caractère saisi au clavier.
Module Module1
Sub Main()
'Initialisation des variables
Dim MaVariable As String
'Affectation de la variable
MaVariable = [Link]()
'Pause
[Link]()
End Sub
End Module
Le retour du code ascii
Module Module1
Ir Pathy Kri’ce WANKUNDA
Cours de basic
20
Sub main()
Dim MaVariable As String
[Link]("Entrer la valeur de : ")
MaVariable = [Link]()
[Link]("La valeur du code ASCII du
caractère est " & MaVariable)
[Link]()
End Sub
End Module
3. ReadKey
Comme la fonction Read, la fonction ReadKey est utilisée pour faire
une pause lors de l’exécution du programme. Aussi, importante si l’on
veut récupérer le caractère tapé au clavier en l’associant à
ConsoleKeyInfo.
On veut que le programme s’arrête si l’utilisateur tape la touche N et
O pour continuer.
Module Module1
Sub Main()
Dim MaVariable As Boolean = True
Dim ToucheAppuyée As ConsoleKeyInfo
While MaVariable
[Link]("Le programme contine tant qu'on
appuie sur la touche 'O'")
[Link]("Voulez - vous continuer (O/N) ???")
ToucheAppuyée = [Link]()
[Link]()
If ToucheAppuyé[Link] = ConsoleKey.O Then
MaVariable = True
ElseIf ToucheAppuyé[Link] = ConsoleKey.N Then
MaVariable = False
Else
[Link]()
End If
End While
End Sub
End Module
Ir Pathy Kri’ce WANKUNDA
Cours de basic
21
II.2. Les instructions de sortie
1. Write
La fonction Write est utilisée pour afficher une expression ou le
contenu d’une variable à l’écran. Beaucoup plus importante, pour
afficher les étiquettes pour l’affectation d’une valeur à une variable car
la ligne de code suivant cette fonction s’affiche sur la même ligne à
l’écran.
Module Module1
Sub Main()
Dim MaVariable As String
[Link]("Entrer la valeur de la variable STRING
")
MaVariable = [Link]()
[Link]()
End Sub
End Module
2. WriteLine
Beaucoup trop utile pour la programmation console, elle affiche les
expressions avec la possibilité de renvoyer automatiquement à la ligne
l’instruction suivante. Comme Write, WriteLine affiche aussi le
contenu d’une variable.
Module Module1
Sub Main()
[Link]("REPUBLIQUE DEMOCRATIQUE DU CONGO")
[Link]("UNIVERSITE DE LUSAMBO")
[Link]("UNILUS")
[Link]()
End Sub
End Module
On peut aussi afficher le contenu d’une variable avec cette fonction :
Module Module1
Sub Main()
Dim nom As String = "Pathy Kri'ce WANKUNDA"
[Link]("Le titulaire de ce cours c'est " &
nom)
[Link]()
Ir Pathy Kri’ce WANKUNDA
Cours de basic
22
End Sub
End Module
Ou en utilisant cette mise en forme :
Module Module1
Sub Main()
Dim nom As String = "ODUDU Marie"
Dim age As Integer = 25
Dim promotion As String = "G2"
[Link]("Moi, {0} étudiante de {1} je suis
âgée de {2}", nom, promotion, age)
[Link]()
End Sub
End Module
Pratique et visible, surtout quand on a plusieurs variables à afficher sur
la même ligne. Cette mise peut être aussi utilisée de la sorte :
Module Module1
Sub Main()
Dim nom As String = "ODUDU Marie"
Dim age As Integer = 25
Dim promotion As String = "G2"
Dim ValeurAffichée As String = [Link]("Moi, {0}
étudiante de {1} je suis âgée de {2}", nom, promotion, age)
[Link](ValeurAffichée)
[Link]()
End Sub
End Module
Ir Pathy Kri’ce WANKUNDA
Cours de basic
23
Chapitre III. Les instructions de contrôle
Dans ce chapitre, nous allons voir les quelques instructions basic
permettant de contrôler l’exécution d’un programme.
III.1. Les conditions
III.1.1. If (si)
L’instruction if permet d’exécuter du code si une condition est vraie (if
= si en français).
Une ligne commençant par If est toujours terminée par Then, ce qui
signifie « Si, alors ». C'est entre ces deux mots que vous placez la
condition souhaitée.
Donc, nous pouvons écrire le code If MaVariable = 10 Then, ce qui se
trouve en dessous ne sera exécuté que si la valeur de MaVariable est
égale à 10.
Eh bien oui, du moins jusqu'à ce qu'il rencontre End If, traduisible par
« Fin si ». Comme pour un Sub ou un Module, le compilateur exécute
toutes les instructions se trouvant après IF.
Exemple :
If MaVariable = 10 Then
MaVariable = 5
End If
III.1.2. Else », mot anglais traduisible par « sinon »
« Sinon », il faut y penser parfois pour gérer toutes les éventualités. Le
Else doit être placé dans une condition If, donc entre le Then et le End
If.
If MaVariable = 10 Then
'Code exécuté si MaVariable = 10
Else
'Code exécuté si MaVariable est différente de 10
End If
Ir Pathy Kri’ce WANKUNDA
Cours de basic
24
III.1.3. ElseIf
Dans le cas où les conditions à vérifier sont multiples et de fois non
dépendantes d’une seule variable, le ElseIf est utile pour vérifier toutes
les éventualités.
If MaVariable = 10 Then
'Code exécuté si MaVariable = 10
ElseIf MaVariable = 5 Then
'Code exécuté si MaVariable = 5
Else
'Code exécuté si MaVariable est différente de 10 et de 5
End If
III.1.4. Select (Choix)
Nous avons vu If, ElseIf et Else.
Mais pour ce qui est, par exemple, du cas d'un menu dans lequel vous
avez 10 choix différents, il est mieux d’utiliser le Select, qui est une
structure de choix. Une première façon de procéder serait la suivante :
If Choix = 1 Then
[Link]("Vous avez choisi le menu n° 1")
ElseIf Choix = 2 Then
[Link]("Vous avez choisi le menu n° 2")
ElseIf Choix = 3 Then
[Link]("Vous avez choisi le menu n° 3")
ElseIf Choix = 4 Then
[Link]("Vous avez choisi le menu n° 4")
ElseIf Choix = 5 Then
[Link]("Vous avez choisi le menu n° 5")
ElseIf Choix = 6 Then
[Link]("Vous avez choisi le menu n° 6")
ElseIf Choix = 7 Then
[Link]("Vous avez choisi le menu n° 7")
ElseIf Choix = 8 Then
[Link]("Vous avez choisi le menu n° 8")
ElseIf Choix = 9 Then
[Link]("Vous avez choisi le menu n° 9")
ElseIf Choix = 10 Then
[Link]("Vous avez choisi le menu n° 10")
Else
[Link]("Le menu n'existe pas")
Ir Pathy Kri’ce WANKUNDA
Cours de basic
25
End If
Ce qui n’est pas du tout mauvais mais enfantin, lorsque l’on évolue en
programmation. Cette façon de faire n’est pas mieux car dans certains
cas de fait risque d’apporter une erreur fatale.
La bonne syntaxe se construit de la manière suivante :
Select Case Choix
Case 1
[Link]("Vous avez choisi le menu n° 1")
Case 2
[Link]("Vous avez choisi le menu n° 2")
Case 3
[Link]("Vous avez choisi le menu n° 3")
Case 4
[Link]("Vous avez choisi le menu n° 4")
Case 5
[Link]("Vous avez choisi le menu n° 5")
Case 6
[Link]("Vous avez choisi le menu n° 6")
Case 7
[Link]("Vous avez choisi le menu n° 7")
Case 8
[Link]("Vous avez choisi le menu n° 8")
Case 9
[Link]("Vous avez choisi le menu n° 9")
Case 10
[Link]("Vous avez choisi le menu n° 10")
Case Else
[Link]("Le menu n'existe pas")
End Select
Une petite astuce du Select est de rassembler toutes les valeurs en un
seul Case. Par exemple, les deux codes sont identiques :
Select Case Choix
Case 3,4,5
'Choix 3, 4 et 5
End Select
Select Case Choix
Case 3
'Choix 3, 4 et 5
Case 4
'Choix 3, 4 et 5
Ir Pathy Kri’ce WANKUNDA
Cours de basic
26
Case 5
'Choix 3, 4 et 5
End Select
Astuce également valable pour de grands intervalles :
Select Case Choix
Case 5 to 10
'Choix 5 à 10
End Select
III.1.5. Instruction GOTO N° LIGNE
Fait un branchement inconditionnel à une étiquette ou à une ligne
dont le numéro est spécifié. Le numéro de ligne doit être une
constante entière.
Exemple : GOTO 30
Module Module1
Sub Main()
10: [Link]("Bonjour le monde")
GoTo 10
[Link]()
End Sub
End Module
III.2. Les boucles
En programmation, on appelle boucle un espace dans lequel le
programme reste pendant un temps choisi, c'est-à-dire qu'il tourne en
rond. Ou encore une structure permettant la répétition déterminée en
nombre d’une instruction ou un ensemble d’instruction.
III.2.1. While
While, mot anglais traduisible par « tant que »
Vu la traduction du mot « while », vous devriez vous attendre à ce que
va faire notre boucle. Elle va effectivement « tourner » tant que la
condition est vraie.
Retenez bien ce « vrai ». Vous souvenez-vous du concept des booléens
que nous avons étudié dans le chapitre sur les variables ? Eh bien voilà,
dans ce cas-ci, le While va vérifier que le booléen est vrai.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
27
La syntaxe :
While MaVariable = 10
'Exécuté tant que MaVariable = 10
End While
En clair, le programme arrive au niveau de l'instruction While, vérifie
que la condition est vraie et, si c'est le cas, entre dans le While, puis
exécute les lignes qui se trouvent à l'intérieur ; il arrive ensuite au End
While et retourne au While. Cela tant que la condition est vraie.
III.2.2. Do While
À l'instar du While, le Do While (traduisible par « faire tant que »)
passe au moins une fois dans la boucle.
Do
'Instruction exécutée au moins une fois
Loop While MaVariable = 10
Un code de ce type
Do
Loop Until MaVariable = 10
revient à écrire ceci :
Do
Loop While MaVariable <> 10
III.2.3. For
For, mot anglais traduisible par « pour ». For est indissociable de son
To, comme un If a son Then.
Si vous souhaitez effectuer une instruction dix fois de suite, vous
écrirez ceci
Dim x As Integer = 0
While x <> 10
'Instruction à exécuter 10 fois
x = x + 1 'Augmente x de 1
End While
Par cet exemple vous verrez qu’on est obligé d’incrémenter une
variable de 1 par l’écriture x += 1. Pas besoin de « = », cette instruction
seule remplace x = x + 1.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
28
N.B : x -= 1 remplace aussi x = x - 1.
La boucle sera parcourue à dix reprises. Eh bien, For remplace ce code
par celui-ci :
Dim x As Integer
For x = 1 to 10
'Instruction à exécuter 10 fois
Next
On peut déclarer les variables dans la ligne du For, de cette manière :
For x As Integer = 1 to 10
'Instruction à exécuter 10 fois
Next
Cela reviendra de nouveau au même.
Si vous voulez ajouter 2 au Next à la place de 1 (par défaut) :
For x As Integer = 1 to 10 step 2
'Instruction à exécuter 5 fois
Next
III.3. Les opérateurs de comparaison
Symbole Fonction
= Égal
<> Différent
> Strictement supérieur
< Strictement inférieur
<= Inférieur ou égal
>= Supérieur ou égal
And Et logique
Or Ou logique
Not Non
Travail pratique : concevoir une calculatrice simple en console.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
29
Chapitre VI. Les tableaux
VI.1. Les tableaux
Un tableau va servir à stocker plusieurs valeurs (de même type). Par
exemple, dans une boucle qui récupère des valeurs, si on demande dix
valeurs, on saisit ces valeurs dans un tableau.
1. Les dimensions
Pour déclarer un tableau d’un type donné en Basic, c'est très simple :
on écrit notre déclaration de variable, d'Integer (entier) par exemple,
et on place l'index du tableau entre parenthèses. Voici le code :
Dim MonTableau(4) As Integer
Oui, sa longueur est de 4. Vous devez savoir qu'un tableau commence
toujours par 0. Et donc, si vous avez compris, un tableau longueur 4
possède les cases 0, 1, 2, 3 et 4, soit cinq cases.
Le nombre de cases d'un tableau est toujours « indice + 1 ».
Réciproquement, l'index de sa dernière case est « taille - 1 ».
2. Ecrire dans un tableau
C'est très simple. Vous avez par exemple votre tableau de cinq cases
(index 4) ; pour écrire dans la case 0 (soit la première case), on écrit
ceci :
MonTableau(0) = 10
Eh oui, il s'utilise comme une simple variable. Il suffit juste de mettre
la case dans laquelle écrire, entre parenthèses.
3. Le tableau à deux dimensions
Il s'agit ici d'un tableau à deux dimensions : une pour la hauteur, une
autre pour la largeur. Pour créer ce type de tableau, le code est
presque identique :
Dim MonTableau(3,4) As Integer
Cela créera un tableau avec quatre lignes et cinq colonnes. Pour ce qui
est de le remplir, le schéma l'explique déjà très bien :
Ir Pathy Kri’ce WANKUNDA
Cours de basic
30
MonTableau(0,0) = 10
4. Autres manipulations avec les tableaux
Ici, nous allons découvrir quelques trucs et astuces supplémentaires
concernant les tableaux.
a. Redimensionner un tableau
La taille d'un tableau peut être redimensionnée au cours d'une
application. L'instruction Redim permet de modifier la taille du
tableau.
Redim monTableau(20)
Imaginons que ce tableau qui possédait 10 cases auparavant en
possède maintenant 21 pour stocker des informations. Le seul
problème, c'est que lorsque le programme rencontre cette ligne, le
contenu entier du tableau est supprimé de la mémoire lors du
redimensionnement.
Mais il existe une solution pour pouvoir conserver le contenu d'un
tableau lors d'un redimensionnement, il faut spécifier le mot-clé
Preserve après Redim.
Redim Preserve monTableau(20)
L'instruction Redim n'est valable que pour les tableaux à une seule
dimension, si vous utilisez cette instruction sur un tableau
multidimensionnel, seule la dernière dimension du tableau peut être
modifiée.
b. Retourner un tableau
Voici une fonction qui nous sera utile si l'on souhaite inverser le sens
d'un tableau.
Par exemple, j'ai un tableau qui contient les nombres de 1 à 10, je
souhaite avoir ce comptage de 10 à 1. Cette méthode peut alors être
utilisée pour effectuer cette opération.
Son utilisation :
[Link](monTableau)
Ir Pathy Kri’ce WANKUNDA
Cours de basic
31
On passe simplement le tableau à retourner en paramètre et l’IDE fait
le reste du travail sans vous posez de question.
c. Vider un tableau
Pour vider rapidement un tableau, une méthode existe. Supposons
que vous veniez de faire un traitement sur un tableau, vous voulez le
retrouver ensuite « comme neuf » pour pouvoir le réutiliser.
[Link](monTableau, 0, 10)
Trois paramètres sont nécessaires ici. Le premier est très simplement le
tableau à vider, le second spécifie à partir de quel index vider, et le
troisième indique le nombre de cases à vider.
d. Copier un tableau dans un autre
Dernière petite fonction utile, celle permettant de copier un tableau
dans un autre.
[Link](monTableau1, monTableau2, 5)
Trois paramètres, les deux premiers étant des tableaux. Le premier
tableau étant la source (celui dans lequel nous allons copier les
éléments) et le second est la destination (celui dans lequel nous allons
coller les éléments). Le troisième paramètre est le nombre d’éléments
à copier (depuis l'élément 0). Ainsi, 5 indique que 5 cases seront
copiées dans l'autre tableau.
VI.2. Les énumérations
Nous allons maintenant nous pencher sur un type un peu plus spécial
: les énumérations. Une énumération va nous permettre de définir un
ensemble de constantes qui sont liées entre elles.
Par exemple, il pourrait être très facile de représenter les jours de la
semaine dans une énumération plutôt que dans un tableau :
Enum jours
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Ir Pathy Kri’ce WANKUNDA
Cours de basic
32
Vendredi
Samedi
End Enum
On définit une énumération par le mot clé Enum, une énumération se
termine par End Enum.
Dans une énumération, la première valeur est initialisée à 0, la
suivante est augmentée de 1 : dans notre exemple Dimanche vaut 0,
Lundi vaut 1, Mardi vaut 2...
Il est possible d'entrer des valeurs pour chaque valeur de
l'énumération :
Enum jours
Dimanche = 10 'Dimanche vaut 10
Lundi 'Lundi vaut 11
Mardi = 26 'Mardi vaut 26
Mercredi = 11 'Mercredi vaut 11
Jeudi 'Jeudi vaut 12
Vendredi = 30 'Vendredi vaut 30
Samedi 'Samedi vaut 31
End Enum
Les valeurs de l'énumération qui n'ont pas reçu de valeurs particulières
prendront la valeur précédente augmentée de 1.
Une fois définie, une énumération peut ensuite être utilisée comme un
type de variable spécifique :
Module Module1
Enum jours
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
End Enum
Sub Main()
Dim joursSemaine As jours
joursSemaine = [Link]
[Link](joursSemaine)
End Sub
End Module
Ir Pathy Kri’ce WANKUNDA
Cours de basic
33
VI.3. Les structures
Une autre chose qui pourra vous être utile dans certains programmes,
les structures.
Tout d'abord, une structure est un assemblement de plusieurs
variables. Par exemple, vous avez l'intention de créer des fiches
d’étudiant dans votre programme. Chaque fiche rassemble les
informations d'un étudiant : Nom, Post nom, Prénom, Sexe, Age, etc.
Eh bien, dans ce cas, un tableau de structure va vous être utile
(l’utilisation de la structure qu'une seule fois, elle est presque inutile).
Sa déclaration est simple :
Structure FicheEtudiant
Dim Nom As String
Dim Postnom As String
Dim Prénom As String
Dim Sexe As String
Dim Age As Integer
End Structure
Nous voici donc avec une structure définie. En définissant cette
structure, c'est comme si on avait créé un nouveau type de variable
(symboliquement). Mais il faut à présent la déclarer et, pour ce faire,
utilisons ce nouveau type !
C'est au moment de la déclaration que l'on décide si l'on souhaite un
tableau de structure ou une simple structure :
'Déclaration d'une structure simple
Dim Etudiant As FicheEtudiant
'Déclaration d'une structure tableau
Dim EtudiantTableau(9) As FicheEtudiant
Nous allons donc utiliser le tableau pour vous montrer comment on
utilise cette structure.
EtudiantTableau(0).Nom = "ODUDU"
EtudiantTableau(0).Postnom = "OLOKO"
EtudiantTableau(0).Age = 25
...
EtudiantTableau(9).Nom = "OKULA"
EtudiantTableau(9).Postnom = "YETA"
Ir Pathy Kri’ce WANKUNDA
Cours de basic
34
EtudiantTableau(9).Age = 26
Voilà comment remplir votre structure ; cette méthode de
programmation permet de se retrouver facilement dans le code.
Voici un exemple pour afficher cette structure :
For i As Integer = 0 To 10
[Link]("Nom : " &
EtudiantTableau(i).Nom)
[Link]("Post nom : " &
EtudiantTableau(i).Postnom)
[Link]("Prénom : " &
EtudiantTableau(i).Prénom)
[Link]("Sexe : " &
EtudiantTableau(i).Sexe)
[Link]("Age : " &
EtudiantTableau(i).Age)
Next
VI.4. Boucles supplémentaires
Vous vous souvenez encore des instructions contrôle ? Eh bien, nous
allons découvrir deux nouvelles : For Each et IIf.
1. For Each, traduisible par « pour chaque »
Cette boucle lit tous les éléments d’un tableau en commençant par le
premier. Et ce qu’il faut savoir sur cette boucle, c’est qu’elle est en
lecture seule.
Module Module1
Sub Main()
Dim MonTableau(9) As Integer
For Each ValeurDeMonTableau As Integer In MonTableau
If ValeurDeMonTableau < 10 Then
[Link](ValeurDeMonTableau)
End If
Next
End Sub
End Module
For Each est très utile si l’on veut par exemple compter le nombre du
caractère ‘a’ dans une chaine de caractères
Module Module1
Sub Main()
Ir Pathy Kri’ce WANKUNDA
Cours de basic
35
Dim MaChaine As String = "Salut pathy"
Dim Compteur As Integer = 0
For Each Caractere As String In MaChaine
If Caractere = "a" Then
Compteur = Compteur + 1
End If
Next
End Sub
End Module
Ou pour rechercher une valeur dans un tableau de structure. A faire
comme un TD.
2. IIF
IIF est très spécial et peu utilisé : dans un certain sens, il simplifie un If.
Voici un exemple de son utilisation dans le code précédent :
Module Module1
Sub Main()
Dim MaChaine As String = "Salut pathy"
Dim Compteur As Integer = 0
For Each Caractere As String In MaChaine
If Caractere = "a" Then
Compteur = Compteur + 1
End If
Next
[Link](IIf(Compteur > 0, "La lettre 'a' a
été trouvée dans " & MaChaine, "La lettre 'a' n'a pas été
trouvée dans " & MaChaine))
End Sub
End Module
En clair, si vous avez bien analysé : si le premier argument est vrai
(c'est un booléen), on retourne le second argument ; à l'inverse, s'il est
faux, on retourne le dernier. Pour mieux comprendre :
IIF(MonBooleen, "MonBooleen est true", "MonBooleen est false")
3. Les Cast
Un Cast convertit une variable d'un certain type en un autre. Par
exemple, une variable déclarée en String qui pourra être convertie en
Integer.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
36
Alors, il existe plusieurs moyens d'effectuer des Cast : une fonction
universelle, et d'autres plus spécifiques.
a) Ctype()
La fonction universelle se nomme Ctype. Voici sa syntaxe :
Ctype(MaVariableString, Integer)
Ce code convertira « MaVariableString » en integer.
Voici un exemple concret :
Dim MonString As String = "666"
If Ctype(MonString, Integer) = 666 Then
'...
End If
Encore une fois, faites attention. Un code ce style produira une grosse
erreur
Dim MonString As String = "a666"
If Ctype(MonString, Integer) = 666 Then
'...
End If
b) Les fonctions spécifiques
On a vu l'exemple de Ctype(), utile lorsqu'il s'agit de types peu
courants. Mais pour les types courants, il existe des fonctions plus
rapides et adaptées :
• CBool() : retourne un Boolean.
• CByte() : retourne un Byte.
• CChar() : retourne un Char.
• CDate() : retourne une date.
• CDbl() : retourne un Double.
• CDec() : retourne un nombre décimal.
• CInt() : retourne un Integer.
• CLng() : retourne un Long.
• CSng() : retourne un Single.
• CStr() : retourne un String.
• CUInt() : retourne un Unsigned Integer.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
37
• CULng() : retourne un Unsigned Long .
• CUShort() : retourne un Unsigned Short.
Toutes ces fonctions ne prennent qu'un argument : la variable à
convertir.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
38
Chapitre V. Les fonctions
Une fonction est un ensemble d’instructions regroupées en un nom et
qui effectuent une action bien précise. Nous en connaissons déjà, par
exemple Ctype() ou IsNumeric(), qui vérifie que la valeur d'une
variable est bien un nombre. Il existe des fonctions créées et intégrés
dans les bibliothèques, d'énormes fichiers qui les rassemblent toutes les
fonctions et que vous possédez sur votre ordinateur dès lors que vous
avez installé Visual Studio. Nous allons donc à notre tour programmer
une fonction et apprendre à l'utiliser.
V.1. Création d’une fonction
Nous allons donc créer notre première fonction, la plus basique qui
soit : sans argument, sans retour. Mais on va tout de même lui faire
faire quelque chose.
Module Module1
Sub DemandeNom()
[Link]("Entrer votre nom : ")
Dim nom As String = [Link]()
[Link]("Le nom saisi est " & nom)
End Sub
Sub Main()
'appel de la fonction Demaande Nom
DemandeNom()
[Link]()
End Sub
End Module
La fonction est toujours créée en dehors de la fonction principale
Main() et appelée dans la fonction Main(). Pour être précis, une
fonction peut être considérée comme un sous-programme qui vient le
programme principal d’effectuer une tâche précise.
Lorsque vous créez une fonction, ce n'est pas comme le Main(), elle
ne se lance pas toute seule. La ligne Addition() appelle donc la
fonction pour son exécution.
Module Module1
Sub Main()
Addition()
Ir Pathy Kri’ce WANKUNDA
Cours de basic
39
End Sub
Sub Addition()
Dim ValeurEntree As String = ""
Dim Valeur1 As Integer = 0
Dim Valeur2 As Integer = 0
[Link]("- Addition de deux nombres -")
'Récupération du premier nombre
Do
[Link]("Entrez la première valeur")
ValeurEntree = [Link]()
'Tourne tant que ce n'est pas un nombre
Loop Until IsNumeric(ValeurEntree)
'Écriture de la valeur dans un integer
Valeur1 = ValeurEntree
'Récupération du second nombre
Do
[Link]("Entrez la seconde valeur")
ValeurEntree = [Link]()
'Tourne tant que ce n'est pas un nombre
Loop Until IsNumeric(ValeurEntree)
'Écriture de la valeur dans un integer
Valeur2 = ValeurEntree
'Addition
[Link](Valeur1 & " + " & Valeur2 & " = " &
Valeur1 + Valeur2)
'Pause factice
[Link]()
End Sub
End Module
On peut créer une fonction même après la fonction Main(), sa position
n’est pas une priorité dans l’exécution du programme mais son appel,
lui, oui.
Module Module1
Sub DemandeNom()
[Link]("Entrer votre nom : ")
Dim nom As String = [Link]()
[Link]("Le nom saisi est " & nom)
End Sub
Sub Main()
'appel de la fonction Demaande Nom
DemandeNom()
DemandePrenom()
[Link]()
Ir Pathy Kri’ce WANKUNDA
Cours de basic
40
End Sub
Sub DemandePrenom()
[Link]("Entrer votre nom : ")
Dim prenom As String = [Link]()
[Link]("Le nom saisi est " & prenom)
End Sub
End Module
Ici, le compilateur commence par l’exécution du programme par les
instructions de la fonction DemandeNom et ensuite la fonction
DemandePrenom.
V.2. Ajout d'arguments et de valeur de retour
Vous avez vu comment créer une fonction, ce qui signifie que cette
dernière n'influera pas sur le reste du programme, et exécutera
toujours la même chose : demander des valeurs, les additionner et
afficher le résultat.
Cependant, ce style de raisonnement va vite nous limiter.
Heureusement, les créateurs des langages de programmation ont
pensé à quelque chose de génial : les arguments et le retour.
1. Les arguments
Vous savez déjà ce qu'est un argument. Par exemple, dans la fonction
WriteLine(), l'argument est la valeur placée entre parenthèses, et cette
fonction effectue « Affiche-moi cette valeur ».
Vous l'avez donc sûrement compris, les arguments sont mis entre
parenthèses. Et si il y a plusieurs on le sépare par une virgule (« , »).
2. Création des arguments
Sub Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As
Integer)
Vous remarquez bien les ByVal Valeur1 As Integer ; cette syntaxe est à
utiliser pour chaque argument : le mot ByVal, le nom de la variable,
le mot As, et le type de la variable.
Ce qui nous donne, dans un cas comme notre addition :
Sub Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As
Integer)
Ir Pathy Kri’ce WANKUNDA
Cours de basic
41
'Addition des deux arguments
[Link](Valeur1 & " + " & Valeur2 & " = " &
Valeur1 + Valeur2)
'Pause factice
[Link]()
End Sub
Voilà par exemple le Sub qui additionne deux valeurs passées en
arguments. Et à l’appel, il faut écrire :
Addition(Valeur1, Valeur2)
Valeur1 et Valeur2 sont des variables de type Integer qui doivent être
créées dans la fonction Main()
3. Valeur de retour
Imaginez que vous ayez envie d'une fonction qui effectue un calcul
très compliqué ou qui modifie votre valeur d'une certaine manière.
Vous voudriez sans doute récupérer la valeur. Oui, c'est ce qu'on
appelle le retour et pour ce genre de fonction, on n’utilise plus Sub
mais Function :
Function Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As
Integer) As Integer
C'est le morceau du bout (As Integer) qui nous intéresse : c'est cette
partie qui indiquera à la fonction le type de valeur qu'elle doit
renvoyer. Dans le cas présent, il s'agit d'un type numérique, mais on
peut aussi écrire As String.
Function Addition(ByVal Valeur1 As Integer, ByVal Valeur2 As
Integer) As Integer
Dim Resultat As Integer
'Addition des deux arguments
Resultat = Valeur1 + Valeur2
'Renvoie le résultat
Return Resultat
End Function
Cette fonction additionne donc les deux nombres passés en arguments
et renvoie le résultat. La ligne Return Resultat est très importante, car
c'est elle qui détermine le retour : si vous n'écrivez pas cette ligne,
aucun retour ne se fera.
Resultat = Addition(Valeur1, Valeur2)
Ir Pathy Kri’ce WANKUNDA
Cours de basic
42
Une fois cet appel écrit dans le code, ce dernier additionne les deux
valeurs. Cette fonction peut être directement appelée dans une autre,
comme ceci par exemple :
[Link](Addition(Valeur1, Valeur2))
4. Les arguments facultatifs
Les arguments facultatifs sont des arguments pour lesquels on peut
choisir d'attribuer une valeur ou non au moment de l'appel de la
fonction. Pour les déclarer, tapez Optional ByVal Valeur3 As Integer
= 0.
Le mot-clé Optional est là pour dire qu'il s'agit d'un argument
facultatif, le reste de la syntaxe étant la même que pour les autres
fonctions.
Function Operation(ByVal Valeur1 As Integer, ByVal Valeur2 As
Integer, Optional ByVal Valeur3 As Integer = 0) As Integer
Return Valeur1 + Valeur2 + Valeur3
End Function
Voilà donc la nouvelle fonction. Dans l'appel de cette fonction, je
peux maintenant écrire Operation(1, 5), ce qui me renverra 6, ou alors
Operation(10, 15, 3) qui me renverra 28. Les deux appels sont valides.
V.3. La portée d’une variable
L’existence d’une variable peut se dérouler sur trois niveaux :
• Niveau Fonction : cela veut dire que la variable est locale. Dès
que l’on quitte la fonction, la variable disparaît, et son contenu
avec elle. Pour déclarer une variable au niveau fonction on
procède de la manière suivante :
Module Module1
Sub Main()
Addition()
[Link]()
End Sub
Sub Addition()
Dim Nbre1 As Integer = 25
Dim Nbre2 As Integer = 145
Ir Pathy Kri’ce WANKUNDA
Cours de basic
43
Dim Resultat As Integer
[Link](Resultat = Nbre1 + Nbre2)
End Sub
End Module
Ce qu’il faut retenir c’est que la variable dite locale est déclarée au sein
d’une fonction et n’est pas accessible dans une autre fonction, même
pas dans la fonction Main().
• Niveau Module : la variable est disponible pour toutes les
fonctions du module. Pour déclarer une variable au niveau
Module, on tape au-dessous de la fonction Main() ou à
l’extérieur de toutes les fonctions :
Module Module1
Dim Nbre1, Nbre2 As Integer
Sub Main()
DemandeNombre1()
DemandeNombre2()
Addition()
[Link]()
End Sub
Sub DemandeNombre1()
[Link]("Entrer le premier nombre : ")
Nbre1 = [Link]()
End Sub
Sub DemandeNombre2()
[Link]("Entrer le deuxième nombre : ")
Nbre2 = [Link]()
End Sub
Sub Addition()
Dim Resultat As Integer = Nbre1 + Nbre2
[Link]("La somme de {0} et de {1} est de {2}",
Nbre1, Nbre2, Resultat)
End Sub
End Module
Non, ce n’est pas une erreur, c’est bien la même chose que
précédemment. Mais l’emplacement de l’instruction n’est pas le
même, et c’est cela qui change tout. Et ces variables sont appelées
Variables publiques.
• Niveau Projet : la variable est disponible, et sa valeur est
conservée pour toutes les fonctions de l’application, quel que soit
Ir Pathy Kri’ce WANKUNDA
Cours de basic
44
leur emplacement. Pour déclarer une variable globale, il faut
placer au même emplacement que pour la variable publique et
tape :
Public Nom As String
Pour mieux comprendre ce niveau de variable, il faut atteindre le
niveau de programmation orientée objet.
V.4. Gestion des erreurs
Votre superbe IDE Visual Studio, permet facilement de retrouver et de
gérer les erreurs. Il indique la ligne ayant provoqué l'erreur,
l'explication de l'erreur (en français) et parfois comment la résoudre.
Mais les erreurs qui ne sont pas liées à notre programme, intitule de
faire 50 if pour vérifier si la base de données à laquelle on veut accéder
est bien là, voir si la table est bien présente, voir si la requête a bien
fonctionné, etc.
Nous allons donc utiliser un autre point de vue pour gérer ces passages
: la gestion d'erreur.
✓ Try
Le mot « try » est le mot anglais pour « essayer ». Le programme va
donc essayer les lignes de code que vous définirez, si une erreur se
présente dedans, il va automatiquement dans la partie du programme
qui vient juste après End Try, et l'erreur ne vous saute pas aux yeux.
Voici sa syntaxe :
Try
'Code à exécuter
End Try
Donc, ce code exécutera ce qu'il y a entre le Try et son End Try ; si
une erreur se produit, il sort du Try. Pour le moment, pas compliqué
donc.
D'où l'intérêt d'utiliser ce Try dans chaque fonction. À chaque début
de fonction, vous mettez votre Try, et à la fin, votre End
✓ Finally
Ir Pathy Kri’ce WANKUNDA
Cours de basic
45
Dans le Try nous avons d'autres instructions pour nous aider : tout
d'abord le Finally.
Quand une erreur se produit dans le Try il saute tout, mais dans une
fonction ça va faire quoi ? S'il saute tout, même le retour de la fonction
?
Function Erreur() as integer
Try
'Code pas très sûr
Finally
Return 0
End Try
End Function
Et voilà la solution : si une erreur se produit, paf ! il saute dans le
Finally et il retourne une valeur quoi qu'il arrive (même si aucune
erreur n'est à déclarer).
Donc, si vous avez suivi depuis le début, vous mettez un Return
d'office dans le Finally et un Return dans le déroulement normal de la
fonction. Si aucune erreur n'est à déplorer, le Return de votre fonction
aura la priorité et rendra l'autre inopérant.
Si c'est une demande de connexion à un site web, que le site en
question ne trouve pas la base de données, on aura une erreur, mais
l'utilisateur sera bloqué. D’où le problème du Finally et l’intervention
du Catch.
✓ Catch, throw
Se place comme le Finally, entre le Try et son End Try, mais avant le
Finally. Le catch va nous permettre de récupérer l'erreur dans une
variable de type Exception.
Catch ex As Exception
Ensuite on peut récupérer cette variable et s'en servir pour afficher
l'erreur par exemple :
Module Module1
Sub Main()
Dim MonString As String = "a666"
Ir Pathy Kri’ce WANKUNDA
Cours de basic
46
Try
If CType(MonString, Integer) = 666 Then
[Link]("Conversion effectuéee")
End If
Catch ex As Exception
[Link](ex)
End Try
[Link]()
End Sub
End Module
Le résultat s’affiche à l’écran avec l’élément qui a provoqué l’erreur.
Exercice
1. Ecrire un programme qui fusionne deux tableaux linéaires A et B
en un tableau C.
2. Soit un tableau linéaire de nombres rangés par ordre croissant.
Ecrire un programme qui insère un nombre quelconque à la place
qui lui revient.
3. Soit un tableau linéaire T ayant N éléments. Ecrire un programme
qui transfert les éléments supérieurs ou égaux à 50 dans tableau
TREUSSITE, et les éléments inférieurs à 50 dans un tableau
TECHEC.
4. Soit un tableau linéaire TA ayant N nombres décimaux. Ecrire un
programme qui transfert les nombres impairs dans un tableau TI,
et les nombres pairs dans un tableau TP.
5. Ecrire un programme qui lit les éléments de 2 matrices A et B, et
calcule leur somme C et leur produit D.
6. Ecrire un programme qui fusionne par ordre croissant en un
tableau C, deux tableaux linéaires triés A et B.
7. Soit un tableau B (7, 7) constitué des valeurs numériques. Ecrire
un programme qui calcule :
- la somme de chaque ligne ;
- la somme de chaque colonne ;
- la somme totale de tous les éléments du tableau.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
47
Chapitre VI. Les fichiers
Jusqu’à présent nous utilisons les données volatiles qui, à chaque arrêt
du programme disparaissent, ce chapitre nous donne le pouvoir
d’enregistrer des données pour les récupérer même si le programme
s'est fermé (ce qui n'était pas possible avec les variables).
Donc tout cela va nous permettre de créer des fichiers de
configuration, sauvegarder des textes, des images, des scores, … votre
imagination est la seule limite de la programmation.
VI.1. Introduction sur les fichiers
Commençons. Amis Windowsiens, vous pouvez apercevoir dans votre
poste de travail des lecteurs et des disques durs.
Donc dans le(s) disque(s) dur(s), vous pouvez naviguer dedans suivant
un système d'arborescence : Le disque dur contient des dossiers, ces
dossiers contiennent des fichiers (récursif : les disques durs peuvent
contenir des fichiers et les dossiers d'autres dossiers).
Résumons : le disque dur contient toutes vos données ; le dossier
permet de gérer, organiser et hiérarchiser votre disque dur ; les fichiers
quant à eux contiennent des données pures et dures.
1. Les fichiers : des 0 et des 1
Les fichiers contiennent des données donc. Ces données sont
représentées (côté machine de votre PC) par des 0 et des 1 (des bits),
le système binaire qu'ils appellent ça. Nous, pauvres petits mortels, ne
comprendrions rien à ce langage propre à la machine, c'est pourquoi
des codages ont été mis en place pour convertir ces groupements de
0 et de 1 (généralement groupés par 8, ce qui donne 8 bits autrement
appelé un octet).
Donc individuellement, vous vous apercevez que ces 0 et ces 1 ne sont
pas reconnaissables, on ne peut rien en tirer. Mais une fois en groupe,
ces petits bits peuvent être transcrits différemment en fonction du
codage.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
48
Exemples :
Octet en binaire Nombre décimal Nombre hexadécimal
01100011 99 63
10010010 146 92
Alors, les cases dans chaque ligne de ce tableau ont la même valeur,
seulement le codage utilisé n'est pas le même.
Le nombre décimal résultant de ces 0 et ces 1 vous le connaissez, et la
troisième est pour le nombre Hexadécimal. Sans s’étendre sur le sujet,
le système Hexadécimal est de base 16 (où le décimal est de base 10),
il a été inventé par des informaticiens principalement pour des
informaticiens. Il permet de transcrire rapidement des nombres
binaires (car un groupement de 4 chiffres binaire correspond à un
chiffre hexadécimal).
2. La norme ASCII
La norme ASCII est la norme de codage de caractères standardisée.
Autrement dit on l'utilise désormais dans tous les systèmes
d'exploitation.
Ici, c'est un groupement de 8 bits qui est converti en un caractère grâce
à une table ASCII.
Exemple : la suite de ces bits (01100011) correspond au caractère 'c'
VI.2. Le namespace IO
Microsoft, au travers de son Framework a développé tous les outils
nécessaires pour travailler facilement sur les fichiers.
Ce namespace (un namespace est une sorte de dossier contenant des
classes / fonctions spécifiques) est le namespace IO.
Eh bien IO correspond à Input Output. En français : Entrée Sortie.
Ce namespace contient que les fonctions et objets pour manipuler les
fichiers, il va nous permettre également d'effectuer de la
communication interprocessus, de la communication série et de la
compression. Mais n'allons pas trop vite.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
49
Donc ce namespace fait lui-même partie du namespace System
(comme dans votre ordinateur, on a plusieurs niveaux de dossiers
pour mieux classer vos fichiers et bien ici c'est pareil avec les
namespace et les objets/fonctions).
Et dans ce namespace se situe la classe FileStream qui va nous
permettre de créer un objet de type FileStream et de le manipuler. La
classe File quant à elle ne nous permettra pas de créer un objet mais
seulement de manipuler notre FileStream. Vous allez très vite
comprendre.
Une petite information supplémentaire avant de passer à la pratique
: Nous allons devoir créer un Objet et la manipuler pour cela nous
allons découvrir un nouveau mot récurrent en programmation : new.
1. Notre premier fichier
Créons un nouveau projet et créons ensuite notre objet FileStream, au
niveau de variable publique :
Module Module1
Dim MonFichier As [Link] = New
[Link]("[Link]", [Link])
Sub Main()
End Sub
End Module
Vous reconnaissez le Dim MonFichier As [Link], une simple
déclaration de variable de type FileStream.
Explication : on est dans le namespace IO, il faut donc faire IO. avant
de pouvoir accéder aux membres du namespace.
Petite astuce : inscrivez Imports [Link] tout en haut de votre
module, avant la déclaration de l’objet. Cette ligne va permettre de
s'affranchir de cet IO. avant nos fonctions utilisant ce namespace.
= New [Link] permet d'assigner une valeur à notre variable
dès la déclaration, ça aussi nous avons vu. Le mot clé New sert à créer
un nouvel objet.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
50
2. Instanciation de notre premier objet
Lorsque nous instancions un objet (le mot instanciation signifie juste
que nous en créons un nouvel objet grâce à New), la classe utilisée
pour déclarer l'objet va faire appel à son Constructeur. Le mot
constructeur est spécifique à la POO. Le fait est que ce constructeur est
appelé et des fois ce constructeur nécessite des Arguments.
Dans notre cas, le constructeur de FileStream accepte plein de
"combinaisons" d'arguments possible. Voyons les plus simples de ces
arguments :
Le Path
Une rapide parenthèse sur le Path, tout d'abord le mot Path signifie le
chemin du fichier. Ce chemin peut être de deux types :
• Absolu : le chemin n'a pas de référence mais n'est pas exportable
(ex: C:\Windows\System32 ... est un chemin absolu) ;
• Relatif : le chemin prend comme point de repère le dossier
d'exécution de notre programme ([Link] sera placé dans le
même dossier que le programme que nous créons).
Il est donc préférable d'utiliser des chemins relatifs dans nos
programmes à moins que vous soyez certains de l'emplacement des
fichiers que vous voulez manipuler.
FileMode
Dans notre cas, nous avons utilisé un Path relatif, le fichier [Link]
sera créé s'il n'existe pas, sinon il sera ouvert. Et tout cela grâce à
l'argument [Link].
Cet argument peut prendre quelques autres valeurs :
Nom VB Valeur Description
Crée le fichier spécifié, s'il existe déjà une erreur se
[Link] 1
produira.
[Link] 2 Crée le fichier s'il n'existe pas. S'il existe, le remplace.
Ouvre un fichier existant, une erreur se produira s'il
[Link] 3
n'existe pas.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
51
Ouvre un fichier existant, s'il n'existe pas ce dernier sera
[Link] 4
créé puis ouvert.
Ouvre le fichier spécifié et le vide entièrement, la lecture
[Link] 5
de ce fichier n'est pas possible dans ce mode
[Link] 6 Ouvre le fichier spécifié et se place à sa fin.
Comme vous le voyez, l'argument utilisé [Link]
(aussi remplaçable par le chiffre 4), permet d'adapter notre
programme. Imaginez en utilisant l'argument [Link], le
premier lancement du programme se déroulera bien mais lors du
second lancement une erreur se produira parce que le fichier existe
déjà. A moins que vous ne gériez toutes ces éventualités.
VI.3. Nos premières manipulations
Nous allons ici écrire un programme qui crée, écrit et lit un fichier puis
le ferme.
Imports [Link]
Module Module1
Dim MonFichier As FileStream = New
FileStream("[Link]", [Link])
Sub Main()
Ecriture()
Lecture()
Fermeture()
[Link]()
End Sub
Sub Fermeture()
[Link]()
End Sub
Sub Ecriture()
If [Link] Then
Dim Contenu(1024) As Byte
Dim Compteur As Integer = 0
[Link]("Entrer le texte à sauvegarder : ")
Dim Texte As String = [Link]()
'Parcours les contenus de la variable
For Each Lettre As Char In [Link]
'Convertit une lettre en sa valeur ascii et
l'entre dans Compteur
Contenu(Compteur) = Asc(Lettre)
Ir Pathy Kri’ce WANKUNDA
Cours de basic
52
Compteur += 1
Next
'Ecrit dans le fichier
[Link](Contenu, 0, Compteur)
End If
End Sub
Sub Lecture()
If [Link]() Then
'Crée un tableau de Byte
Dim Contenu(1024) As Byte
'Lit 1024 bytes et les entre dans le tableau
[Link] = 0
[Link](Contenu, 0, 1024)
'L'affiche
Dim ContenuTexte As String = ""
For Each Lettre As Byte In Contenu
ContenuTexte += Chr(Lettre)
Next
[Link](ContenuTexte)
End If
End Sub
End Module
Explication
1. L’écriture
• Alors, première instruction, déjà une nouvelle chose :
[Link]. C'est une propriété de l'objet. Elle nous
informe sur la possibilité d'écriture dans notre fichier. Si c'est true,
c'est parfait, on continue (ces petites vérifications sont souvent
inutiles mais il ne coute rien de les faire et elles peuvent parfois
éviter des erreurs, pensez aussi à gérer les cas d'erreur).
• Ensuite un tableau de Byte, 1025 cases. Sachant que chaque byte
peut contenir un caractère, nous avons une possibilité d'écriture
de 1025 caractères.
• Un petit compteur, il va nous servir après.
• Puis un For Each grâce auquel nous parcourons tous les caractères
contenus dans la variable Texte : [Link]. La fonction
ToCharArray permet, comme son nom anglais l'indique, de
Ir Pathy Kri’ce WANKUNDA
Cours de basic
53
convertir en tableau de char. Pour chaque caractère donc, ce
caractère est entré dans la variable Lettre.
• Nous rentrons chaque lettre dans le tableau de Byte. Mais
attention, les Bytes et les Char ne sont pas homogènes, il faut
passer par une fonction qui va récupérer la valeur binaire de
notre caractère, transformation ASCII => 8 Bits grâce à la
fonction Asc() de façon à pouvoir l'inscrire dans le Byte.
• Viens ensuite l'incrémentation du compteur pour pouvoir écrire
chaque caractère dans une case différente.
• Puis on écrit le contenu de notre tableau en indiquant combien
de Bytes écrire (avec Compteur)
2. La lecture
• Première ligne, le même principe que pour l'écriture, on effectue
une petite vérification pour savoir si l'on peut effectuer notre
lecture.
• On crée un tableau de Byte (comme l'écriture : 1025 cases)
• On place le curseur à la position 0 (début de mon fichier).
• On lit sur 1024 bytes (si le curseur rencontre la fin du fichier, la
lecture s'arrête), et on place ce qui a été lu dans le tableau de
Bytes déclaré juste avant.
• Puis un traditionnel For Each afin de parcourir toutes les cases de
ce tableau de Bytes.
• On effectue une conversion Numerique => Caractère (soit Byte
=> ASCII grâce à la fonction Chr()) sinon vous ne liriez que des
chiffres dans votre résultat ! On place le tous dans la variable
ContenuTexte (grâce à += on ajoute les caractères à la suite)
3. La fermeture
Ici, on libère seulement la mémoire de l’ordinateur par la fonctions
Dispose().
IV.4. La classe File
1. Manipulation
Ir Pathy Kri’ce WANKUNDA
Cours de basic
54
Cette classe est pré-implémentée dans le Framework. On va créer le
même programme de lecture / écriture avec cette classe. Voir les
avantages que nous amène cette classe en simplifiant les codes.
Imports [Link]
Module Module1
Dim CheminFichier As String = "Deuxiè[Link]"
Dim MaVariableContenu As String
Dim choix As Integer = 0
Sub Main()
10: MenuPrincipal()
[Link]("Voulez - vous quittter le programme
(O/N) ??")
Dim VaribleSortie As String = [Link]()
If VaribleSortie = "O" Or VaribleSortie = "o" Then
Arrêt()
ElseIf VaribleSortie = "n" Or VaribleSortie = "N" Then
GoTo 10
End If
End Sub
Sub MenuPrincipal()
[Link]()
[Link](vbTab & vbTab & "Bienvenu au
Programme d'enregistrement")
[Link]("1. Nouvelle donnée")
[Link]("2. Continuer l'enregistrement")
[Link]("3. Afficher les données")
[Link]("4. Arrêt du programme")
[Link]()
[Link](vbTab & "Faites le choix :")
choix = [Link]()
EffectuerChoix(choix)
End Sub
Sub EffectuerChoix(ByVal _choix As Integer)
Select Case _choix
Case 1
NouvelleEcriture(MaVariableContenu)
Case 2
ContinuerEcriture(MaVariableContenu)
Case 3
[Link](Lecture())
Ir Pathy Kri’ce WANKUNDA
Cours de basic
55
[Link]()
Case 4
Arrêt()
Case Else
MenuPrincipal()
End Select
End Sub
Sub NouvelleEcriture(ByVal ContenuEcrire As String)
[Link]("Entrer le contenu à sauvegarder : ")
ContenuEcrire = [Link]()
[Link](CheminFichier, ContenuEcrire &
vbNewLine)
End Sub
Function Lecture() As String
[Link]()
Return [Link](CheminFichier)
End Function
Sub ContinuerEcriture(ByVal ContenuEcrire As String)
[Link]("Entrer le contenu à ajouter au fichier
texte : ")
ContenuEcrire = [Link]()
[Link](CheminFichier, ContenuEcrire &
vbNewLine)
End Sub
Sub Arrêt()
End
End Sub
End Module
Avec la classe File, nous avons utilisé :
• La fonction WriteAllText qui permet d’écrire dans un fichier en
écrasant l’ancien contenu et qui prend en paramètre le chemin
du fichier et le nouveau contenu.
• La fonction AppendAllText permettant d’ajouter au contenu
existant une nouvelle donnée. Avec les mêmes paramètres que
la précédente.
• Et la fonction ReadAllText qui lit entièreté du fichier du début à
la fin.
Ir Pathy Kri’ce WANKUNDA
Cours de basic
56
• L’utilisation de VbNewLine n’a rien de nouveau, c’est pour un
retour à la ligne à chaque écriture.
2. Avantages de la classe File
a) Le déplacement
Nous abordons ce point tout d'abord avec le légendaire move,
autrement dit déplacement du fichier.
[Link](Source as string, Destination as string)
Vous pouvez bien évidemment utiliser des chemins relatifs / absolus
ou mélanger les deux. Cette méthode est également utilisée pour
renommer les fichiers, il suffit simplement d'effectuer le move avec
deux noms différents, mais sur le même Path.
b) La copie
[Link](Source as string, Destination as string)
Même principe que la méthode précédente, vous n'avez cependant
pas le droit d'attribuer le même nom à la source et à la destination.
c) La vérification de la présence du fichier
[Link](Fichier as string)
Fonction très importante, lorsque l'on va effectuer des manipulations,
toujours vérifier la présence du fichier avant d'effectuer une action
dessus. Vous ne voulez pas vous retrouver avec une grosse erreur qui
bloque l’exécution. La fonction renvoie une Boolean : True si présence
du fichier, False dans le cas contraire.
IV.5. Les répertoires
Nous allons à présent nous attaquer aux répertoires ou dossiers,
conteneurs de fichiers.
Bon, cette fois pas de stream ou autres, la classe Directory est la seule
dans le namespace IO (Directory : répertoire).
1. Fonctions de modification
On va commencer par la fonction à utiliser avant toute chose :
a) La vérification :
Ir Pathy Kri’ce WANKUNDA
Cours de basic
57
[Link](Path As String)
Renvoie un booléen encore une fois, bien évidemment très important.
On l'utilisera systématiquement dans le programme évolué où le
fichier n’est pas dans le dossier que l’application.
b) La création de dossiers
[Link](Path As String)
Alors, cette méthode est assez magique. Elle va créer entièrement le
Path spécifié, il n'y a actuellement aucun dossier dans le répertoire
d'exécution de notre programme. Si en argument de la méthode nous
passons "Dossier1/SousDossier1/SousSousDossier1", il y aura 3 dossiers
de créés, suivant l'arborescence définie. Le dossier "Dossier1" sera créé
directement dans le répertoire, le dossier "SousDossier1" sera créé dans
"Dossier1" et finalement le dossier "SousSousDossier1" sera créé dans
"SousDossier1". Le tout pour dire à quel point cette méthode peut se
révéler pratique.
c) La suppression
[Link](Path As String, Recursif As Boolean)
Alors, ici nous avons un second argument en plus du path du dossier
à supprimer ; il correspond à la récursivité. Si vous activez la
récursivité, les dossiers et fichiers en "dessous" (dans l'arborescence des
fichiers) du path que vous avez indiqués seront également supprimés,
sinon si la récursivité n'est pas activée et que vous tentez de supprimer
un dossier qui n'est pas vide, une erreur surviendra.
En résumé : la récursivité supprime le répertoire plus l'intégralité de
son contenu.
d) Le légendaire Move
[Link](PathSource As String, PathDest As String)
Même principe que pour les fichiers, avec les répertoires cette fois-ci
déplace le dossier et son contenu vers le nouveau Path.
2. Fonctions d'exploration
Ir Pathy Kri’ce WANKUNDA
Cours de basic
58
Bien, vous savez maintenant manipuler les fichiers et les répertoires,
mais il va falloir associer les deux pour pouvoir rendre vos
programmes exportables et adaptables aux environnements.
Nous allons donc apprendre à chercher dans un dossier spécifié les
sous-dossiers et les fichiers qu'il contient.
a) Rechercher tous les dossiers contenus dans le dossier spécifié
[Link](Path as String)
Renvoie un tableau de string contenant le path de tous les dossiers qui
sont contenus dans le dossier spécifié.
Cette fonction revoit un path absolu si vous lui en avez fourni un au
départ, un path relatif dans le cas contraire. Attention de toujours
utiliser le même type de Path.
b) Rechercher tous les fichiers contenus dans un dossier spécifié
[Link](Path as String)
Comme pour au-dessus, même remarque le path renvoyé correspond
à celui que vous avez passé en argument. Renvoie les fichiers avec leur
extension.
Un rapide bout de code permet de lister les fichiers présents en
utilisant cette fonction :
Imports [Link]
Module Module1
Sub Main()
For Each Fichier As String In
[Link]("c:/")
[Link](Fichier)
Next
[Link]()
End Sub
End Module
TP : Se basant sur l’application M-Pesa de vodacom, concevez une
application similaire en utilisant toutes les notions vues depuis le
début, tout en sauvegardant le compte, les transactions effectuées
dans un fichier.
Ir Pathy Kri’ce WANKUNDA
Design & Print by PKW