SlideShare une entreprise Scribd logo
1  sur  110
Télécharger pour lire hors ligne
Microsoft Visual Basic .NET
 Découverte du nouvel environnement Visual
Studio .NET
 Éléments du langage Visual Basic .NET
 Étude et mise en œuvre des fonctionnalités
du nouveau Framework .NET
 Programmation orientée objet et
développement de composants réutilisables
 Accès aux données avec ADO .NET
Professeur: Hamza SAID
1
Éléments du langage Visual Basic .NET
 Variables, procédures,
arguments et structures de
contrôle
 Les structures de données, les
énumérations de constantes,
les tableaux et les différents
types de collections
disponibles
Professeur: Hamza SAID
2
Variables, procédures, arguments et
structures de contrôle
Points abordés
 L'organisation du code en Modules
 La notion de procédure (procédures et fonctions)
 Variables, constantes, types de données et conversions
 Opérateurs et expressions
 Les structures de contrôle (tests, boucles et instruction Select)
 Parcourir une collection avec une boucle For Each
 Travailler avec les objets (instanciation, variables de type valeur
et variables de type référence)
 Le contrôle ListBox
Professeur: Hamza SAID
3
• Lorsqu'une série d'instructions apparaît à des endroits
différents dans le code, il est d'usage de la placer
dans une procédure.
• Le découpage en procédures :
• Allège l'application en évitant de dupliquer du code
• Aide à la maintenance de l'application.
Travailler avec les modules4
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Un programme en VB .NET est toujours composé en un ou
plusieurs modules
• Chaque module contient des procédures.
• Les procédures dites « générales » :
• ne sont associées ni à un événement, ni à un objet particulier.
• Ce type de procédure se stocke dans un module standard
• Chaque module correspond physiquement à un fichier '.vb'.
• Il existe 3 types de modules:
• Les modules de formulaire.
• Les modules standards.
• Les modules de 'Classe'.
Travailler avec les modules5
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
Travailler avec les modules
Professeur: Hamza SAID
6
Créez un nouveau projet de type
Application Windows en le nommant
LangageVB
Renommez le formulaire Form1 en
frmLangageVB.
Sélectionnez la commande Projet/Ajouter
un module.
Sélectionnez le modèle Module et cliquez
sur le bouton Ouvrir pour créer un module
standard en acceptant le nom Module1.vb
proposé par défaut.
Créer un module standard7
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Le nom d'une procédure générale peut être choisi
librement à condition :
• qu'il commence par une lettre
• qu'il ne comporte pas d'espace ni de signe de ponctuation
• qu'il soit différent des mots réservés de Visual Basic et des noms d'objets qui font
apparaître la liste de leurs membres lorsqu'ils sont suivis d'un point.
• Une procédure générale est aussi appelée
« procédure » tout court
Créer une procédure générale8
Professeur: Hamza SAID
Travailler avec les modules
Tapez l'instruction suivante :
MsgBox("Nous sommes le : " & DateTime.Now)
Tapez
« Sub AfficherDate »
Appuyez sur Entrée pour
créer la définition de la
procédure
(Visual Basic ajoute
automatiquement l'instruction
End Sub)
Exercice: Création de la procédure « AfficherDate »
9
Professeur: Hamza SAID
Créer une procédure générale
• Une fonction est une procédure qui retourne un
résultat.
• Il suffit de remplacer le mot Sub par Function
• Le résultat calculé se récupère par l'instruction Return
Créer une fonction10
Professeur: Hamza SAID
Travailler avec les modules
• Function SurfaceCercle
• Appuyez sur Entrée pour créer la définition de la fonction
• (Visual Basic ajoute automatiquement l'instruction End Function)
Tapez:
• Return 3.14 * 5 ^ 2
Tapez l'instruction suivante :
• Le rayon a été fixé à la valeur 5
Note:
• On peut remplacer 3.14 par une valeur plus précise de PI grâce à System.Math.PI
Alternative:
Exercice: Création de la fonction « SurfaceCercle »
qui calcule la surface d'un cercle
11
Professeur: Hamza SAID
Créer une fonction
• Permet de terminer une procédure prématurément
avant d'atteindre l'instruction End
• Exemple:
• Exit Sub ou Exit Function
L'instruction Exit12
Professeur: Hamza SAID
Travailler avec les modules
• On a vu 3 types de procédures:
• Les procédures associées aux gestionnaires d'événements
• Les procédures générales (appelées "procédures" tout court)
• Les fonctions
• L'appel de chaque type de procédure est différent.
• Contrairement aux procédures associées aux gestionnaires
d'événements, une procédure générale, ou une fonction
ne s'exécutera jamais automatiquement. Elle devra être
appelée explicitement.
Appeler une méthode13
Professeur: Hamza SAID
Travailler avec les modules
Ajoutez :
• Un bouton de commande sur le formulaire Form1
• Nommez le btnAfficherDate
• Entrez "&Afficher la date" dans la propriété Text de ce bouton.
Tapez :
• AfficherDate() dans le gestionnaire de l'événement Click de ce bouton
Tapez :
• "Le langage Visual Basic" dans la propriété Text du formulaire
Lancez le projet :
• Cliquez sur le bouton Afficher la date
Exercice: Appel de la procédure AfficherDate
14
Professeur: Hamza SAID
Appeler une méthode
Ajoutez :
• Un bouton de commande sur le formulaire Form1
• Nommez le btnSurfaceCercle
• Entrez "&Surface d'un cercle" dans la propriété Text de ce bouton
Tapez l'instruction suivante dans le gestionnaire de l'événement Click de ce bouton :
• MsgBox(SurfaceCercle())
Tapez :
• "Le langage Visual Basic" dans la propriété Text du formulaire
Lancez le projet :
• Cliquez sur le bouton Surface d'un cercle
Exercice: Appel de la fonction
« SurfaceCercle »
15
Professeur: Hamza SAID
Appeler une fonction
• Une variable est une donnée dont la valeur peut
changer lors de l'exécution d'un programme
• C'est un emplacement réservé en mémoire.
Les variables16
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Les noms de variables peuvent être choisis librement, à
condition :
• qu'ils soient constitués de lettres et de chiffres sans signe de ponctuation (excepté
"_")
• qu'ils commencent par une lettre
• qu'ils soient différents des mots réservés et des noms d'objets
• Une variable se déclare avec l'instruction Dim
• La déclaration devrait se situer avant la première
utilisation de la variable
Déclarer une variable17
Professeur: Hamza SAID
Les variables
• La déclaration de variables est obligatoire
dans ce cours !!
Déclarer une variable18
Professeur: Hamza SAID
Les variables
• L'option Explicit force la
déclaration des variables.
• Activée par défaut dans Visual
Basic .NET (inactive par défaut
dans VB6, ce qui crée des
problèmes de performances et des
bugs)
• L'option Explicit peut être modifiée
à partir de l'onglet Compiler dans
la boite de dialogue des
propriétés communes du projet
Option Explicit19
Professeur: Hamza SAID
Les variables
Function SurfaceCercle()
Dim Resultat
Résultat = 3.14 * 5 ^ 2
Return Resultat
End Function
Exemple précédent avec une déclaration de
variable
20
Professeur: Hamza SAID
Les variables
Cette fenêtre nous permet de voir la liste des erreurs détectées.
Exemple:
Mettez la déclaration de la variable résultat en commentaire
Notez ce qui se passe
La fenêtre Liste d'erreurs21
Professeur: Hamza SAID
Les variables
Note:
Vous pouvez accéder
à l'emplacement de
l'erreur en double-
cliquant dessus.
• Il faut toujours donner un type aux variables
• Le typage sert à préciser la nature de l'information que l'on
pourra y stocker
• Le type d'une variable se définit avec le mot réservé As, suivis
du nom du type souhaité
• Exemple:
Dim Resultat As Single
• Plusieurs variables peuvent être déclarées sur une seule ligne:
Dim i, j As Integer
Les types de données22
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Tous les langages disponibles dans l'environnement
.NET ont les mêmes types de données
• Tous les types sont implémentés dans l'espace de noms
System
Découvrir les différents types de données
23
Professeur: Hamza SAID
Les types de données
Découvrir les différents types de données
Professeur: Hamza SAID
24
Visual
Basic type
.NET Runtime type structure
Storage
size
Value range
Boolean System.Boolean 4 bytes True or False
Byte System.Byte 1 byte 0 to 255 (unsigned)
Char System.Char 2 bytes 0 to 65535 (unsigned)
Date System.DateTime 8 bytes January 1, 1 CE to December 31,
9999
Decimal System.Decimal 12 bytes +/-
79,228,162,514,264,337,593,543,950,
335 with no decimal point; +/-
7.9228162514264337593543950335 with
28 places to the right of the
decimal; smallest non-zero number
is +/-
0.0000000000000000000000000001
Double System.Double 8 bytes -1.79769313486231E308 to -
4.94065645841247E-324 for negative
values; 4.94065645841247E-324 to
1.79769313486232E308 for positive
values
Découvrir les différents types de données
Professeur: Hamza SAID
25
Visual
Basic type
.NET Runtime type structure
Storage
size
Value range
Integer System.Int32 4 bytes -2,147,483,648 to 2,147,483,647
Long System.Int64 8 bytes -9,223,372,036,854,775,808 to
9,223,372,036,854,775,807
Object System.Object(class) 4 bytes Any type can be stored in a
variable of type Object
Short System.Int16 2 bytes -32,768 to 32,767
Single System.Single 4 bytes -3.402823E38 to -1.401298E-45 for
negative values; 1.401298E-45 to
3.402823E38 for positive values
String System.String(class) 10 bytes +
(2 *
string
length)
0 to approximately two billion
Unicode characters
User-
Defined
Type
(structure
)
(inherits from
System.ValueType)
Sum of the
sizes of
its
members
Each member of the structure has a
range determined by its data type
and independent of the ranges of
the other members
Pour plus d’informations:
http://ondotnet.com/pub/a/dotnet
/2001/07/30/vb7.html
L'initialisation des variables peut se faire dès la
déclaration
Exemple:
Dim i As Integer = 7
Dim s As String = "Bonjour !"
L'initialisation des variables26
Professeur: Hamza SAID
Les types de données
Que comportent les variables non initialisées des types
suivants :
• Boolean
• Numérique (integer, decimal, double ...)
• String
Petite Question27
Professeur: Hamza SAID
L'initialisation des variables
• Accepte l'un des deux mots réservés: True ou False
• True à la valeur 1 et False à la valeur 0
Le type Boolean28
Professeur: Hamza SAID
Les types de données
Note importante :
L'emploi des valeurs à la place des mots réservés est à proscrire pour
développer des applications évolutives. Elles rendent en effet le code
dépendant de cette codification, qui peut changer d'une version à l'autre.
• Les variables String sont de longueur variable.
• Les types Char stockent un seul caractère Unicode
• Si un seul caractère doit être traité, le type char est
plus performant que le type String
Les types String et Char29
Professeur: Hamza SAID
Les types de données
La codification Unicode des caractères:
Cette codification a été définie et normalisée dans le but de codifier
l'ensemble des caractères des différents alphabets utilisés dans le monde. Un
caractère Unicode occupe deux octets de mémoire.
Visual Basic .NET introduit la notion de codage sur 64
bits pour les variables numériques. Voici les nouveautés
comparées à VB6 :
• Short 16 bits remplace le type Integer 16 bits
• Integer 16 bits devient le type Integer 32 bits
• Long de 32 bits passe à 64 bits
Les types Short, Integer et Long30
Professeur: Hamza SAID
Les types de données
Single « signifie simple précision »
• Une valeur exprimée en virgule flottante, dont 7 chiffres seulement sont significatifs
• Convient pour des valeurs comportant une partie décimale qui ne demande pas une
grande précision
Double « signifie double précision »
• Adaptée au stockage de valeurs qui demandent une très grande précision.
• À éviter dans la mesure du possible, car très gourmand en mémoire
Decimal
• Prend en charge jusqu'à 29 chiffres significatifs et peut représenter des valeurs
allant jusqu'à 7.9228 x 10^28
• Adapté aux calculs financiers qui ne peuvent tolérer d'erreurs d'arrondi
• Il remplace le type Currency de VB6
Les types Single, Double et Decimal31
Professeur: Hamza SAID
Les types de données
• Ce sont les valeurs qui ne changent pas lors de
l'exécution d'un programme
• Sont déclarées à l'aide du mot réservé Const
• L'initialisation d'une constante se fait lors de sa
déclaration
• Les constantes peuvent être de type booléen,
numérique, chaîne de caractères et date
Les constantes32
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
Exemples:
Const Pi = 3.14
Const NomFichier = "MODELE.DOC"
Const Reveillon = #12/31/2010#
Les constantes33
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
Intérêt des constantes:
• Améliorent la lisibilité du code (noms plus significatifs pour les valeurs)
• En changeant la valeur d'une constante, on change cette valeur dans tout
notre programme. Au lieu de le faire pour chaque occurrence de la valeur
dans notre code.
Les constantes34
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
Nous allons remplacer la valeur 3.14 dans la fonction
SurfaceCercle de notre exemple précédent par une constante:
Function SurfaceCercle()
Dim Resultat As Single
Const PI = 3.14
Résultat = PI * 5 ^ 2
Return Resultat
End Function
Exemple35
Professeur: Hamza SAID
Les constantes
Les constantes prédéfinies
Professeur: Hamza SAID
36
Visual Basic .NET Équivalent en VB6 Description
ControlChars.CrLf vbCrLf Combinaison de retour chariot et de saut de ligne
ControlChars.Cr vbCr Caractère de retour chariot
ControlChars.Lf vbLf Caractère de saut de ligne
ControlChars.NewLine vbNewLine Caractère de saut de ligne
ControlChars.NullChar vbNullChar Caractère Null.
Nothing vbNullString Différent d'une chaîne de longueur nulle ("") ; utilisé pour l'appel
de procédures externes
ControlChars.Tab vbTab Caractère de tabulation
ControlChars.Cr vbCr Caractère de retour chariot
ControlChars.FormFeed vbFormFeed Non utilisé dans Microsoft Windows
• MessageBox.Show("Première ligne" & vbCr & "Deuxième
ligne")
Voici comment afficher un message par
l'instruction MsgBox sur deux lignes:
• MessageBox.Show("Première ligne" & ControlChars.Cr
& "Deuxième ligne")
Ou
Exemple37
Professeur: Hamza SAID
Les constantes prédéfinies
• L'option Strict empêche toute conversion restrictive
involontaire
• Empêche aussi les conversions implicites effectuées
entre les types numériques et String
L'option Strict38
Professeur: Hamza SAID
Les constantes
Sub ConversionRestrictive()
Dim d As Double
Dim s As Single
d = 0.123456789
s = d
'Affiche 0.1234568
MessageBox.Show(s)
End Sub
Résultat: 0.1234568
(tronqué)
L'option Strict39
Professeur: Hamza SAID
Les constantes
L'option Strict40
Professeur: Hamza SAID
Les constantes
L'option Strict peut être
modifiée dans l'onglet
Compiler de la boîte de
dialogue des propriétés
communes du projet.
Sub ConversionRestrictive()
Dim d As Double
Dim s As Single
d = 0.123456789
s = d
'Affiche 0.1234568
MessageBox.Show(s)
End Sub
L'option Strict41
Professeur: Hamza SAID
Les constantes
Si on met l'option Strict à On, seules les
conversions effectuées explicitement seront
autorisées.
• s=d est souligné dans le code pour
signaler une conversion interdite.
• Par contre, D=S est acceptée car on
passe d'une variable à une variable plus
précise
• Il faudra maintenant, pour notre
exemple, écrire :
s = CType(d, Single)
• Le mot réservé New
• Les variables de type valeur ou référence
• La notion de membres statiques
Les variables objets42
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Rappel sur l’instanciation:
• L'opération qui consiste à créer un objet à partir de
sa classe s'appelle une "instanciation"
• L'instanciation se réalise à l'aide du mot réservé New
Le mot réservé New43
Professeur: Hamza SAID
Les variables objets
Dim Rayon As Integer
Dim Carre As Rectangle
Dim Cercle As Graphics
Rayon = 50
'Utilisation du mot réservé New pour l'instancier un objet
Carre = New Rectangle(Me.ClientSize.Width - 100, Me.ClientSize.Height – 100, 100, 100)
Cercle = Me.CreateGraphics
'La classe Pens n'a pas besoin d'être instanciée du fait que ses membres sont statiques
Cercle.DrawEllipse(Pens.Black, Carre)
Le mot réservé New (Exemple)44
Professeur: Hamza SAID
Les variables objets
Carre et Cercle ne sont plus des
types de données, mais des types
d'objets issus de la classe Rectangle
et Graphics
• Une variable de type valeur contient réellement une valeur
• Une variable de type référence s'emploie pour un objet,
elle ne contient pas l'objet lui-même, mais son adresse en
mémoire
• L'adresse d'un objet occupe 4 octets quel que soit l'objet
• Les opérations de comparaison et d'affectation sont
différentes pour ces deux types de variables :
• L'opérateur de comparaison pour des variables de type valeur est "="
• L'opérateur de comparaison pour des variables de type référence est "Is"
Les variables de type valeur ou référence
45
Professeur: Hamza SAID
Les variables objets
• Dans l'exemple précédent, chacune des classes
Rectangle et Graphics est instanciée, puis référencée
par les variables Carre et Cercle en une seule
instruction :
Les variables de type valeur ou référence
46
Professeur: Hamza SAID
Les variables objets
Carre = New Rectangle(Me.ClientSize.Width - 100,
Me.ClientSize.Height - 100, 100, 100)
Cercle = Me.CreateGraphics
• Tant qu'une variable déclarée avec le type d'un objet n'est pas
initialisée, elle contient la valeur spéciale Nothing
• Nothing indique qu'elle ne référence aucun objet
• Nothing peut être testée avec l'une des syntaxes suivantes:
La valeur « Nothing »
47
Professeur: Hamza SAID
Les variables objets
If IsNothing(Resultat) Then MessageBox.Show("Nothing")
Ou
If Resultat Is Nothing Then MessageBox.Show("Nothing")
• Dans l'exemple précédent :
• La classe Pens est utilisée directement sans instanciation.
• C'est une caractéristique du membre Black de cette classe.
Cercle.DrawEllipse(Pens.Black, Carre)
• Les membres invoqués sans instanciation :
• s’appellent des « membres statiques »
• se définissent à l'aide du mot réservé « Shared »
La notion de membres statiques48
Professeur: Hamza SAID
Les variables objets
• Une classe très importante dans l'environnement .NET
• Si le type d'une variable n'est pas précisé, elle possède le
type Object
• Les deux déclarations suivantes sont équivalentes:
Dim Resultat
Dim Resultat As Object
• « Object » remplace le type « Variant » de VB6
• Une variable de type Object accepte tous les types
d'objets existant dans l'environnement .NET
Le type « Object »49
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Les écritures suivantes sont tout à fait correctes:
Dim Resultat As Object
Resultat = "Visual Basic .NET"
Résultat = 12
Résultat = 12.6
• Tous les objets accessibles dérivent de cette classe (même
les plus simples)
• La syntaxe orientée objet peut donc leur être appliquée
• Exemple:
Resultat = "Visual Basic .NET"
MessageBox.Show(Resultat.length) 'Affiche 17
Le type « Object »50
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Si un type spécifique peut être précisé, on ne devrait
pas utiliser le type « Object », parce que:
1. L'intellisense n'affichera pas les membres du type spécifique dans l'éditeur de
code
2. L'existence d'un membre qui est invoqué avec une variable de type object ne
peut être vérifié en mode Design ou à la compilation, mais en mode Run
seulement.
3. Une dégradation des performances qui découle du fait que la recherche de
l'existence du membre doit se faire à l'exécution
Le type « Object »51
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Permettent de connaître le type de l'objet référencé
par une variable
• TypeName
• Retourne le type sous forme de chaîne de caractère
• TypeOf
• Permet de comparer le type de la variable avec un type tel qu'il se définit à la suite du
mot réservé As dans une déclaration de variable
• Type Of est plus rapide à l'exécution
La fonction TypeName et l'opérateur TypeOf Is
52
Professeur: Hamza SAID
Le type « Object »
Exemple
53
Professeur: Hamza SAID
La fonction TypeName et l'opérateur
TypeOf Is
Dim o As Object
o = "VB .NET"
'Affiche "String"
MessageBox.Show(TypeName(o))
If TypeOf o Is String Then
MsgBox("o est de type String")
End If
• Peut-être n'importe quel type d'objet valide, y compris
un tableau
• Exemple:
• Nous allons donner un type au résultat de notre fonction SurfaceCercle:
Le type de la valeur retournée par une fonction
54
Professeur: Hamza SAID
Le type « Object »
Function SurfaceCercle() As Single
Dim Resultat As Single
Const PI = 3.14
Résultat = PI * 5 ^ 2
Return Resultat
End Function
1. Convertir vers le type String
2. Convertir du type String vers un type numérique
3. Convertir deux types quelconques
Les opérations de conversion55
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Tous les types de données héritent la méthode « ToString » de la
classe Object
• « ToString » permet de convertir une variable en type String
• Exemple:
Convertir vers le type String56
Professeur: Hamza SAID
Les opérations de conversion
Dim s As String
Dim i As Integer = 5
s = i.ToString
• Tous les types numériques possèdent une méthode « Parse » statique
• « Parse » permet d'analyser et de convertir une chaîne de caractère
• Exemple:
Convertir du type String vers un type numérique
57
Professeur: Hamza SAID
Les opérations de conversion
Dim s As String
Dim i As Integer = 5
‘Convertir une chaîne vers le type Integer
s = "12"
i = Integer.Parse(s)
• La fonction « Ctype » permet de convertir le type d'une
variable, quel que soit son type:
• Exemple:
Convertir deux types quelconques58
Professeur: Hamza SAID
Les opérations de conversion
Dim s As String
Dim i As Integer = 5
‘Convertir une chaîne vers le type Integer
s = "12"
i = CType(s, Integer)
• Permettent de paramétrer une procédure.
• Points abordés:
1. Comment définir les arguments d'une procédure ?
2. Comment transmettre un argument à une procédure ?
3. Les arguments optionnels
4. Les arguments nommés
Les arguments de procédures59
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Nous allons modifier la fonction « SurfaceCercle » pour qu’elle puisse
accepter n'importe quel rayon comme argument:
Définir les arguments d'une procédure60
Professeur: Hamza SAID
Les arguments de procédures
Function SurfaceCercle(ByVal Rayon As Single) As Single
Dim Resultat As Single
Const PI = 3.14
Résultat = PI * Rayon ^ 2
Return Resultat
End Function
"Le mot réservé ByVal, indiqué en orange, permet de transmettre l'argument par valeur."
• Nous allons réécrire la procédure « btnSurfaceCercle_Click » de la manière
suivante:
• Donner à l'utilisateur la possibilité d'entrer une valeur pour le rayon
• Transmettre la valeur fournit par l’utilisateur à la fonction « SurfaceCercle »
Transmettre un argument à une procédure
61
Professeur: Hamza SAID
Les arguments de procédures
Private Sub btnSurfaceCercle_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles btnSurfaceCercle.Click
Dim RayonSaisi As String
RayonSaisi = InputBox("Entrez la valeur du rayon")
MsgBox(SurfaceCercle(RayonSaisi)) ‘Conversion implicite
End Sub
• Le mot réservé « Optional » Indique un argument non requis lorsque
la procédure est appelée (argument optionnel)
• Tous les arguments suivants doivent aussi être facultatifs et déclarés à l'aide du mot clé « Optional »
• Chaque déclaration d'argument facultative doit indiquer une valeur par défaut
• Sub MaRoutine (Optional X As Integer = 0)
• Exemple:
Définir un argument optionnel62
Professeur: Hamza SAID
Les arguments de procédures
Function Puissance(ByVal N As Integer,
Optional ByVal Exposant As Integer = 0)
If Exposant = 0 Then
Puissance = N ^ 2
Else
Puissance = N ^ Exposant
End If
EndFunction
• Permettent d’accéder, directement, à un argument d’une
procédure en utilisant son nom
• L’ordre des paramètres n’est plus nécessaire
• Exemple:
• Selon la signature en bas, si nous devons proposer le caractère « 5 » comme valeur par défaut de
la fonction « InputBox », sans nous soucier du titre affiché, nous devons écrire ceci:
RayonSaisi = InputBox("Entrez la valeur du rayon", , "5")
• Alternative grâce aux arguments nommés :
RayonSaisi = InputBox(DefaultResponse:="5", Prompt:="Entrez la valeur du
rayon")
Les arguments nommés63
Professeur: Hamza SAID
Les arguments de procédures
Points abordés:
• Les différents types d’expressions dans Visual Basic
.NET
• Les différents types d’opérateurs
• L’ordre de priorité des opérateurs
Les opérateurs64
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Visual Basic .NET est capable de calculer toute sorte
de type d'expressions:
• Numériques
• Chaînes de caractères
• Dates
• Expressions booléennes
• Une expression peut être une combinaison de
constantes, de variables, de fonctions et d'opérateurs.
Les différents types d'expressions65
Professeur: Hamza SAID
Les opérateurs
• Les opérateurs sont évalués dans l’ordre de priorité suivant :
Ordre de priorité des opérateurs66
Professeur: Hamza SAID
Les opérateurs
Opérateurs arithmétiques et de
concaténation
1. Exponentiation (^)
2. négation unaire (-)
3. La multiplication et la division (*, /)
4. La division entière ()
5. Module arithmétique (Mod)
6. Addition et soustraction (+, -), la
concaténation de chaînes (+)
7. concaténation (&)
8. décalage de bits arithmétique (<<,>>)
Opérateurs de comparaison
9. Tous les opérateurs de comparaison (=,
<>, <, <=,>,> =, Like, Est, Est TypeOf
...)
Opérateurs logiques bit à bit et
10. Négation (Non)
11. Conjonction (Et, AndAlso)
12. Disjonction (ou, Orelse, XOR)
L'opérateur de
concaténation (&)
n'est pas un
opérateur
arithmétique,
mais en priorité,
il est groupé
avec les
opérateurs
arithmétiques.
• Exemple:
2 + 3 * 5 = 17
(2 + 3) * 5 = 25
Ordre de priorité des opérateurs67
Professeur: Hamza SAID
Les opérateurs
• Permettent de comparer:
• deux valeurs numériques ou deux chaînes de caractères.
• Le résultat d'une comparaison est toujours de type Boolean:
• True (Vrai) ou False (Faux)
Les opérateurs de comparaison68
Professeur: Hamza SAID
Les opérateurs
Exemple :
Dim A As Integer = 2
Dim B As Integer = 3
If A = B then
..
End If
Liste des opérateurs de comparaison:
= égal
> supérieur à
< inférieur à
>= supérieur ou égal
<= inférieur ou égal
<> Différent de
• Les opérateurs logiques permettent de comparer des expressions
booléennes
• Ils retournent un résultat booléen:
• vrai ou faux
• Le tableau ci-dessous les résume:
Les opérateurs logiques69
Professeur: Hamza SAID
Les opérateurs
Opérateur Utilisation
Not Négation
And Conjonction
AndAlso Conjonction
Or Disjonction
Orelse Disjonction
Xor Disjonction
• Visual Basic .NET introduit de nouveaux opérateurs
d'affectation:
Les opérateurs d'affectation70
Professeur: Hamza SAID
Les opérateurs
Exemple Expression équivalente Résultat pour x = 4
x += 1 x = x + 1 x = 5
x -= 1 x = x - 1 x = 3
x *= 2 x = x * 2 x = 8
x /= 2 x = x / 2 x = 2
x = 3 x = x  3 x = 1
x ^= 2 x = x ^ 2 x = 16
• Elles permettent de gérer
le déroulement et
l'enchaînement des
instructions exécutées.
• Points abordés:
• L'instruction IF
• L'instruction Select Case
• La boucle For Next
• La boucle Do Loop
Les structures de contrôle71
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• L'instruction la plus célèbre de
l'informatique
• Permet de créer une structure
décisionnelle:
L'instruction IF72
Professeur: Hamza SAID
Les structures de contrôle
If Condition Then
...
End if
Se traduit par:
Si la Condition
est vraie
alors...
• Un bloc d'instructions peut être
exécuté si une condition est
vraie.
• Exemple:
L'instruction IF73
Professeur: Hamza SAID
Les structures de contrôle
If A = B then
MsgBox("A = B")
End If
Si A = B alors on exécute
le bloc de code entre Then
et End If, qui affiche dans
une fenêtre MessageBox «
A=B »
• Autre écriture possible:
If A = B Then MsgBox("A = B")
• On peut tester une condition fausse
grâce à l'opérateur de négation
« Not »
L'instruction IF74
Professeur: Hamza SAID
Les structures de contrôle
If Not A = B Then MsgBox("A différent de B")
Si A et B sont différents (Not A=B signifie
NON égaux) afficher "A différent de B".
• La structure IF THEN ELSE
L'instruction IF75
Professeur: Hamza SAID
Les structures de contrôle
If condition then
.. 'effectué si condition vraie
..
Else
..'effectué si condition fausse
..
End if
• Veut dire: 'Si..Alors..Sinon'
• Exemple: IF THEN ELSE
L'instruction IF76
Professeur: Hamza SAID
Les structures de contrôle
If A = B then
MsgBox("A = B")
Else
MsgBox("A différent de B")
End If
Si A = B afficher le message 'A = B'
sinon Afficher le message 'A
différent de B'.
L'instruction IF - Exemple
Professeur: Hamza SAID
77
• Changeons le code de notre fonction SurfaceCercle pour qu'elle vérifie si la valeur entrée par
l'utilisateur est numérique:
Private Sub btnSurfaceCercle_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnSurfaceCercle.Click
Dim RayonSaisi As String
RayonSaisi = InputBox(DefaultResponse:="5",
Prompt:="Entrez la valeur du rayon")
If IsNumeric(RayonSaisi) Then
MsgBox(SurfaceCercle(RayonSaisi))
Exit Sub
End If
End Sub
• Structure décisionnelle
permettant d'exécuter un
grand nombre de blocs
de code différents en
fonction de la valeur
d'une expression
L'instruction Select Case78
Professeur: Hamza SAID
Les structures de contrôle
L'instruction Select Case79
Professeur: Hamza SAID
Les structures de contrôle
Select Case expression
Case valeur1
'code effectué si expression = valeur1
Case valeur2
'code effectué si expression = valeur2
Case valeur3
'code effectué si expression = valeur3
..
Case Else
'code effectué dans tous les autres cas
End Select
Attention:
Si expression = valeur1 le code entre
Case Valeur1 et Case valeur2 (et
uniquement celui-là) est effectué, puis
l'exécution saute après End Select.
L'instruction Select Case - Exemple
Professeur: Hamza SAID
80
• Nous allons créer un nouveau bouton qui permet d'afficher le nom du jour de la semaine équivalent
au numéro introduit par l'utilisateur:
• Ajoutez un bouton du nom de btnJourSemaine sur le formulaire avec "&Jour semaine" dans la propriété
Text
• Entrez le code suivant dans la procédure btnJourSemaine_Click :
Dim NumJour As String
NumJour = InputBox("Saisir un N° compris entre 1 et 7")
If NumJour = "" Then Exit Sub
Select Case CType(NumJour, Integer)
Case 1
MsgBox("Lundi")
Case 2
MsgBox("Mardi")
Case 3
MsgBox("Mercredi")
Case 4
MsgBox("Jeudi")
Case 5
MsgBox("Vendredi")
Case 6
MsgBox("Samedi")
Case 7
MsgBox("Dimanche")
Case Else
MsgBox("Numéro invalide")
End Select
• Réécrivez le même programme qui est dans l'exemple
mais en n'utilisant que des structures IF THEN ELSE.
L'instruction Select Case - Exercice81
Professeur: Hamza SAID
Les structures de contrôle
• Permet de faire des boucles et ainsi
relancer l'exécution d'un bloc de code
plusieurs fois.
• Le nombre de boucles est déterminé par
une variable, qui sert de compteur.
• Le compteur est initialisé au départ par
une valeur de départ et une valeur
d'arrêt.
La boucle For Next82
Professeur: Hamza SAID
Les structures de contrôle
‘Pour une variable allant de 'début' à 'fin'
For variable = début To fin
..
Next variable
• L'évolution de la variable peut être
personnalisée grâce au mot réservé Step.
• Exemple:
La boucle For Next83
Professeur: Hamza SAID
Les structures de contrôle
Dim i as Integer
For i=1 to 10 Step 2
MsgBox i.toString
Next i
'Affiche 1 puis 3 puis 5 puis 7 puis 9
• Nous allons créer un bouton qui permet d'ajouter des valeurs de 1 à 10 dans
une liste :
La boucle For Next - Exemple84
Professeur: Hamza SAID
Les structures de contrôle
Note :
Le contrôle ListBox ressemble
beaucoup au ComboBox sauf
que ses éléments sont affichés
dès le départ.
• Ajoutez dans le formulaire :
• un bouton du nom de "btnBoucleFor"
• un contrôle ListBox en conservant son nom ListBox1
• Insérez le code suivant dans le gestionnaire d'événement Click de ce bouton:
La boucle For Next - Exemple85
Professeur: Hamza SAID
Les structures de contrôle
Dim i As Integer
'Effacer la liste au départ
ListBox1.Items.Clear()
For i = 1 To 10
ListBox1.Items.Add("Valeur " & i.ToString)
Next
• Refaites le même exercice, mais cette fois, en affichant les valeurs de la liste
dans le sens descendant (Voir image ci-dessous).
Exercice86
Professeur: Hamza SAID
Les structures de contrôle
• Permet aussi de faire des
boucles mais sans que le nombre
de boucles ne soit déterminé au
départ
La boucle Do Loop87
Professeur: Hamza SAID
Les structures de contrôle
Cette boucle suivante tourne sans fin:
Do
..
Loop
• Une condition d'arrêt permet de sortir de la
boucle
• Until (Jusqu'à ce que) et While (Tant que) nous
permettent d’introduire cette condition
La boucle Do Loop88
Professeur: Hamza SAID
Les structures de contrôle
Do Until condition
Code
Loop
'Boucler jusqu'à ce que condition soit vraie.
Ou
Do While condition
Code
Loop
'Boucler tant que la condition est vraie.
• La condition d’arrêt peut être mise
en fin de boucle
• cela garantit l’exécution du bloc de code au moins
une fois avant la vérification de la condition
La boucle Do Loop89
Professeur: Hamza SAID
Les structures de contrôle
Do
Code
Loop Until condition
'Boucler jusqu'à ce que condition soit vraie.
Ou
Do
Code
Loop While condition
'Boucler tant que la condition est vraie.
• Nous allons utiliser la boucle Do Loop de manière à
proposer automatiquement la saisie d'une nouvelle
valeur en cas de saisie d'un rayon invalide dans la
procédure btnSurfaceCercle_Click:
• Ajoutez l'instruction Do avant la ligne de fonction InputBox en début de
procédure.
• Ajoutez l'instruction suivante avant MsgBox en fin de procédure:
Loop While Not IsNumeric(RayonSaisi)
La boucle Do Loop - Exemple90
Professeur: Hamza SAID
Les structures de contrôle
La boucle Do Loop - Exemple91
Professeur: Hamza SAID
Les structures de contrôle
Dim RayonSaisi As String
Do
RayonSaisi = InputBox(DefaultResponse:="5",
Prompt:="Entrez la valeur du rayon")
If IsNumeric(RayonSaisi) Then
MsgBox(SurfaceCercle(RayonSaisi))
Exit Sub
End If
Loop While Not IsNumeric(RayonSaisi)
Le code
deviendrait
comme ceci
1. La portée des procédures
2. La portée des variables
3. La durée de vie des variables
4. Les variables statiques
Les niveaux de visibilité92
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Avant le mot Sub ou Function on peut ajouter :
• Private qui indique une procédure privée, accessible uniquement dans le module.
• Public indiquant que la procédure est accessible à partir de toute l'application.
• S'il n'y a rien devant Sub ou Function la procédure est
publique.
• Exemple d’une fonction privée:
La portée des procédures93
Professeur: Hamza SAID
Les niveaux de visibilité
Note:
Les procédures liées aux
événements d'une feuille
sont privées par défaut.
Private Function SurfaceCercle(Rayon As Single)
Return 3.14 * Rayon * Rayon
End Function
• Une variable « globale » est une variable visible dans
la totalité du programme.
• Exemple: Créer une variable globale nommée Index
La portée des variables94
Professeur: Hamza SAID
Les niveaux de visibilité
Module MonModule
'Accéssible dans toute l'application
Public Index As Integer
..
End Module
• À l'inverse une variable « locale » est visible
uniquement dans une procédure ou une Classe:
• Exemple:
La portée des variables95
Professeur: Hamza SAID
Les niveaux de visibilité
Sub MaProcedure (ByRef X As Integer)
Dim Y As Integer
...
End sub
• C’est la zone de code
située dans le module,
mais en dehors de toute
procédure
• Une variable déclarée
dans la section Déclaration
d'un module est:
• accessible uniquement dans ce
module si elle est privée
• accessible dans toute l'application si
elle est publique.
La section Déclaration96
Professeur: Hamza SAID
La portée des variables
• Nous allons compter le nombre de tentatives de saisies invalides
effectuées dans la boucle Do Loop de la fonction
SurfaceCercle chargée de la saisie du rayon:
Exemple97
Professeur: Hamza SAID
La portée des variables
Ajoutez les lignes suivantes après l'instruction Do
• Dim NbrTentatives As Integer
• NbrTentatives += 1
Modifiez l'appel de la fonction MsgBox ainsi:
• MsgBox("Rayon invalide", MsgBoxStyle.Exclamation, "Erreur N° " &
NbrTentatives)
La portée des variables - Exemple
Professeur: Hamza SAID
98
• La procédure d'appel de la fonction « SurfaceCercle » doit ressembler
à ceci:
Private Sub btnSurfaceCercle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnSurfaceCercle.Click
Dim RayonSaisi As String
Do
Dim NbrTentatives As Integer
NbrTentatives += 1
RayonSaisi = InputBox(DefaultResponse:="5", Prompt:="Entrez la valeur du rayon")
If Not IsNumeric(RayonSaisi) Then
MsgBox("Rayon invalide", MsgBoxStyle.Exclamation, "Erreur N° " & NbrTentatives)
End If
Loop While Not IsNumeric(RayonSaisi)
MsgBox(SurfaceCercle(RayonSaisi))
End Sub
• Nous disposons maintenant de quatre niveaux de
visibilité pour une variable:
1. Si elle est déclarée dans une procédure, à l'intérieur d'un bloc d'instructions,
sa visibilité est limitée à ce bloc
2. Si elle est déclarée en dehors d'un bloc d'instructions dans une procédure,
elle est dite locale et n'est pas accessible en dehors de cette procédure
3. Si elle est déclarée dans la section déclaration d'un module avec le mot
Private, elle est dite privée et est accessible par toutes les procédures de ce
module, mais pas en dehors
4. Si elle est déclarée dans la section déclaration d'un module avec le mot
Public, elle est dite publique et est accessible par toutes les procédures de
l'application
Quatre niveaux de visibilité99
Professeur: Hamza SAID
La portée des variables
• La durée de vie d’une variable est le temps pendant lequel
elle existe en mémoire
• La portée d'une variable détermine sa durée de vie
• Voici les règles qui déterminent la durée de vie des
variables:
• Les variables, privées ou publiques, déclarées dans la section Déclaration d'un module
restent disponibles tout au long de l'exécution de l'application.
• Les variables locales et de niveau bloc possèdent une durée de vie correspondant au
temps d'exécution de la procédure dans laquelle elles sont déclarées.
La durée de vie des variables100
Professeur: Hamza SAID
Les niveaux de visibilité
Remarque:
Les règles de visibilité et de durée de vie des constantes sont les mêmes que celles des variables.
• Si à la place de Dim on utilise Static, la variable est dite 'Statique':
• À la sortie de la procédure, la variable et sa valeur continuent d'exister
• Sa valeur est gardée en mémoire
• lors des appels suivants de la procédure, on retrouve la valeur de la variable.
• Exemple:
Les variables statiques101
Professeur: Hamza SAID
Les niveaux de visibilité
Sub compteur
Dim A as integer
Static B as integer
A += 1
B += 1
End sub
À chaque appel de cette procédure,
« A » prend la valeur 0, puis 1, puis
disparaît.
« B » prend les valeurs 0, puis 1, puis
2... (incrémentation à chaque appel)
• C'est une variante de la boucle For
• Elle permet de parcourir les objets d'une collection
• Elle n'utilise pas l'indice
La boucle « For Each »102
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
Dim mystring As String
Dim item as Object
For Each item in ListBox.Items
mystring = mystring + item
Next
Alternative : La variable de boucle peut être
déclarée après For:
Dim mystring As String
For Each item As Objet in ListBox.items
mystring = mystring + item
Next
Parcourir tous les éléments d’un ListBox
et les mettre dans une variable V
Exemple :
Attention:
Dans une boucle For Each, lorsqu’on parcourt une collection, on ne
peut pas modifier ses éléments.
La boucle « For Each »103
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
• Nous allons illustrer le fonctionnement de la boucle For
Each grâce à un petit exercice
Parcourir une collection104
Professeur: Hamza SAID
La boucle « For Each »
Voir le document « 05- Variables, procédures, arguments et
structures de contrôle »
Section « 1.13.1 »
• Nous allons maintenant voir comment récupérer l'élément
sélectionné par l'utilisateur grâce à l'événement
SelectedIndexChanged du contrôle « ListBox1 »
Le contrôle « ListBox »105
Professeur: Hamza SAID
La boucle « For Each »
Voir le document « 05- Variables, procédures, arguments et
structures de contrôle »
Section « 1.13.2 »
• L’exercice suivant va nous indiquer comment autoriser le
déplacement des éléments de la liste 1 vers la liste 2 grâce
au glisser-déplacer
Le glisser-déplacer106
Professeur: Hamza SAID
La boucle « For Each »
Voir le document « 05- Variables, procédures, arguments et
structures de contrôle »
Section « 1.13.3 »
• Nous allons voir comment autoriser le déplacement de plusieurs
éléments à la fois à l'aide des quatre boutons que nous avons
déposés sur le formulaire.
Gérer les sélections multiples107
Professeur: Hamza SAID
La boucle « For Each »
Voir le document « 05- Variables, procédures, arguments et
structures de contrôle »
Section « 1.13.4 »
1. Les types de données sont implémentés dans l'espace de
noms System. Ils sont ainsi communs à tous les langages
compatibles avec l'environnement .NET.
2. Une variable peut être initialisée lors de sa déclaration.
3. La déclaration des variables est obligatoire par défaut
(Option Explicit).
4. Visual Basic .NET introduit un nouveau niveau de visibilité qui
limite la disponibilité d'une variable à un bloc d'instructions.
5. L'Option Strict, si elle est activée, permet d'améliorer la
fiabilité du code en éliminant les conversions implicites.
En Bref108
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
6. Les arguments transmis à une procédure sont transmis
par valeur par défaut.
7. Les structures IF THEN ELSE, SELECT CASE, FOR NEXT
et DO LOOP gèrent le déroulement du code
8. La boucle FOR EACH traite des collections
9. La portée d'une variable détermine sa durée de vie
10. 4 niveaux de visibilité pour les variables: Variables
locales, niveau bloc, privées et publiques
En Bref109
Professeur: Hamza SAID
Variables, procédures, arguments et
structures de contrôle
Annexes
 Les mots réservés du langage Visual Basic .NET
Professeur: Hamza SAID
110
Voir le document « 05- Variables, procédures, arguments et
structures de contrôle »
Section « 1.15.1 »

Contenu connexe

Similaire à 05 visual basic .net - variables, procedures, arguments et structures de controle (PowerPoint)

03 visual basic .net - notions de base
03 visual basic .net - notions de base03 visual basic .net - notions de base
03 visual basic .net - notions de baseHamza SAID
 
04 visual basic .net - exploitation des nouveaux controles windows forms et r...
04 visual basic .net - exploitation des nouveaux controles windows forms et r...04 visual basic .net - exploitation des nouveaux controles windows forms et r...
04 visual basic .net - exploitation des nouveaux controles windows forms et r...Hamza SAID
 
Cours génie logiciel
Cours génie logicielCours génie logiciel
Cours génie logicielaraddaoui
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieLoic Yon
 
01 visual basic .net - presentation du cours
01 visual basic .net - presentation du cours01 visual basic .net - presentation du cours
01 visual basic .net - presentation du coursHamza SAID
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Jean-Michel Doudoux
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Rédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesRédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesMSDEVMTL
 
06 visual basic .net - les structures de donnees, les enumerations de constan...
06 visual basic .net - les structures de donnees, les enumerations de constan...06 visual basic .net - les structures de donnees, les enumerations de constan...
06 visual basic .net - les structures de donnees, les enumerations de constan...Hamza SAID
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)Cellenza
 

Similaire à 05 visual basic .net - variables, procedures, arguments et structures de controle (PowerPoint) (20)

03 visual basic .net - notions de base
03 visual basic .net - notions de base03 visual basic .net - notions de base
03 visual basic .net - notions de base
 
04 visual basic .net - exploitation des nouveaux controles windows forms et r...
04 visual basic .net - exploitation des nouveaux controles windows forms et r...04 visual basic .net - exploitation des nouveaux controles windows forms et r...
04 visual basic .net - exploitation des nouveaux controles windows forms et r...
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
Cours génie logiciel
Cours génie logicielCours génie logiciel
Cours génie logiciel
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
Code Complete
Code CompleteCode Complete
Code Complete
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partie
 
01 visual basic .net - presentation du cours
01 visual basic .net - presentation du cours01 visual basic .net - presentation du cours
01 visual basic .net - presentation du cours
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Salesforce Tooling API
Salesforce Tooling APISalesforce Tooling API
Salesforce Tooling API
 
Rédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesRédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakes
 
06 visual basic .net - les structures de donnees, les enumerations de constan...
06 visual basic .net - les structures de donnees, les enumerations de constan...06 visual basic .net - les structures de donnees, les enumerations de constan...
06 visual basic .net - les structures de donnees, les enumerations de constan...
 
Cours_Java.pdf
Cours_Java.pdfCours_Java.pdf
Cours_Java.pdf
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)
 

Plus de Hamza SAID

11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .netHamza SAID
 
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...Hamza SAID
 
09 visual basic .net - exercice - liste chainee
09 visual basic .net - exercice - liste chainee09 visual basic .net - exercice - liste chainee
09 visual basic .net - exercice - liste chaineeHamza SAID
 
09 visual basic .net - exercice - heritage et interfaces - primes de risque
09 visual basic .net - exercice - heritage et interfaces - primes de risque09 visual basic .net - exercice - heritage et interfaces - primes de risque
09 visual basic .net - exercice - heritage et interfaces - primes de risqueHamza SAID
 
09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrie09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrieHamza SAID
 
07 visual basic .net - exercice - le programme quick note
07 visual basic .net - exercice - le programme quick note07 visual basic .net - exercice - le programme quick note
07 visual basic .net - exercice - le programme quick noteHamza SAID
 
07 visual basic .net - exercice - le programme anniversaire
07 visual basic .net - exercice - le programme anniversaire07 visual basic .net - exercice - le programme anniversaire
07 visual basic .net - exercice - le programme anniversaireHamza SAID
 
07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...
07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...
07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...Hamza SAID
 
06 visual basic .net - exercice sur les tableaux
06 visual basic .net - exercice sur les tableaux06 visual basic .net - exercice sur les tableaux
06 visual basic .net - exercice sur les tableauxHamza SAID
 
06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collections06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collectionsHamza SAID
 
04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exercice04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exerciceHamza SAID
 
02 visual basic .net - introduction a vb .net
02 visual basic .net - introduction a vb .net02 visual basic .net - introduction a vb .net
02 visual basic .net - introduction a vb .netHamza SAID
 

Plus de Hamza SAID (12)

11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net
 
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
09 visual basic .net - modules de classes-constructeurs, encapsulation, herit...
 
09 visual basic .net - exercice - liste chainee
09 visual basic .net - exercice - liste chainee09 visual basic .net - exercice - liste chainee
09 visual basic .net - exercice - liste chainee
 
09 visual basic .net - exercice - heritage et interfaces - primes de risque
09 visual basic .net - exercice - heritage et interfaces - primes de risque09 visual basic .net - exercice - heritage et interfaces - primes de risque
09 visual basic .net - exercice - heritage et interfaces - primes de risque
 
09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrie09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrie
 
07 visual basic .net - exercice - le programme quick note
07 visual basic .net - exercice - le programme quick note07 visual basic .net - exercice - le programme quick note
07 visual basic .net - exercice - le programme quick note
 
07 visual basic .net - exercice - le programme anniversaire
07 visual basic .net - exercice - le programme anniversaire07 visual basic .net - exercice - le programme anniversaire
07 visual basic .net - exercice - le programme anniversaire
 
07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...
07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...
07 visual basic .net - etude et mise en oeuvre des fonctionnalites du nouveau...
 
06 visual basic .net - exercice sur les tableaux
06 visual basic .net - exercice sur les tableaux06 visual basic .net - exercice sur les tableaux
06 visual basic .net - exercice sur les tableaux
 
06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collections06 visual basic .net - exercice sur les collections
06 visual basic .net - exercice sur les collections
 
04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exercice04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exercice
 
02 visual basic .net - introduction a vb .net
02 visual basic .net - introduction a vb .net02 visual basic .net - introduction a vb .net
02 visual basic .net - introduction a vb .net
 

Dernier

Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 

Dernier (20)

Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 

05 visual basic .net - variables, procedures, arguments et structures de controle (PowerPoint)

  • 1. Microsoft Visual Basic .NET  Découverte du nouvel environnement Visual Studio .NET  Éléments du langage Visual Basic .NET  Étude et mise en œuvre des fonctionnalités du nouveau Framework .NET  Programmation orientée objet et développement de composants réutilisables  Accès aux données avec ADO .NET Professeur: Hamza SAID 1
  • 2. Éléments du langage Visual Basic .NET  Variables, procédures, arguments et structures de contrôle  Les structures de données, les énumérations de constantes, les tableaux et les différents types de collections disponibles Professeur: Hamza SAID 2
  • 3. Variables, procédures, arguments et structures de contrôle Points abordés  L'organisation du code en Modules  La notion de procédure (procédures et fonctions)  Variables, constantes, types de données et conversions  Opérateurs et expressions  Les structures de contrôle (tests, boucles et instruction Select)  Parcourir une collection avec une boucle For Each  Travailler avec les objets (instanciation, variables de type valeur et variables de type référence)  Le contrôle ListBox Professeur: Hamza SAID 3
  • 4. • Lorsqu'une série d'instructions apparaît à des endroits différents dans le code, il est d'usage de la placer dans une procédure. • Le découpage en procédures : • Allège l'application en évitant de dupliquer du code • Aide à la maintenance de l'application. Travailler avec les modules4 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 5. • Un programme en VB .NET est toujours composé en un ou plusieurs modules • Chaque module contient des procédures. • Les procédures dites « générales » : • ne sont associées ni à un événement, ni à un objet particulier. • Ce type de procédure se stocke dans un module standard • Chaque module correspond physiquement à un fichier '.vb'. • Il existe 3 types de modules: • Les modules de formulaire. • Les modules standards. • Les modules de 'Classe'. Travailler avec les modules5 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 6. Travailler avec les modules Professeur: Hamza SAID 6
  • 7. Créez un nouveau projet de type Application Windows en le nommant LangageVB Renommez le formulaire Form1 en frmLangageVB. Sélectionnez la commande Projet/Ajouter un module. Sélectionnez le modèle Module et cliquez sur le bouton Ouvrir pour créer un module standard en acceptant le nom Module1.vb proposé par défaut. Créer un module standard7 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 8. • Le nom d'une procédure générale peut être choisi librement à condition : • qu'il commence par une lettre • qu'il ne comporte pas d'espace ni de signe de ponctuation • qu'il soit différent des mots réservés de Visual Basic et des noms d'objets qui font apparaître la liste de leurs membres lorsqu'ils sont suivis d'un point. • Une procédure générale est aussi appelée « procédure » tout court Créer une procédure générale8 Professeur: Hamza SAID Travailler avec les modules
  • 9. Tapez l'instruction suivante : MsgBox("Nous sommes le : " & DateTime.Now) Tapez « Sub AfficherDate » Appuyez sur Entrée pour créer la définition de la procédure (Visual Basic ajoute automatiquement l'instruction End Sub) Exercice: Création de la procédure « AfficherDate » 9 Professeur: Hamza SAID Créer une procédure générale
  • 10. • Une fonction est une procédure qui retourne un résultat. • Il suffit de remplacer le mot Sub par Function • Le résultat calculé se récupère par l'instruction Return Créer une fonction10 Professeur: Hamza SAID Travailler avec les modules
  • 11. • Function SurfaceCercle • Appuyez sur Entrée pour créer la définition de la fonction • (Visual Basic ajoute automatiquement l'instruction End Function) Tapez: • Return 3.14 * 5 ^ 2 Tapez l'instruction suivante : • Le rayon a été fixé à la valeur 5 Note: • On peut remplacer 3.14 par une valeur plus précise de PI grâce à System.Math.PI Alternative: Exercice: Création de la fonction « SurfaceCercle » qui calcule la surface d'un cercle 11 Professeur: Hamza SAID Créer une fonction
  • 12. • Permet de terminer une procédure prématurément avant d'atteindre l'instruction End • Exemple: • Exit Sub ou Exit Function L'instruction Exit12 Professeur: Hamza SAID Travailler avec les modules
  • 13. • On a vu 3 types de procédures: • Les procédures associées aux gestionnaires d'événements • Les procédures générales (appelées "procédures" tout court) • Les fonctions • L'appel de chaque type de procédure est différent. • Contrairement aux procédures associées aux gestionnaires d'événements, une procédure générale, ou une fonction ne s'exécutera jamais automatiquement. Elle devra être appelée explicitement. Appeler une méthode13 Professeur: Hamza SAID Travailler avec les modules
  • 14. Ajoutez : • Un bouton de commande sur le formulaire Form1 • Nommez le btnAfficherDate • Entrez "&Afficher la date" dans la propriété Text de ce bouton. Tapez : • AfficherDate() dans le gestionnaire de l'événement Click de ce bouton Tapez : • "Le langage Visual Basic" dans la propriété Text du formulaire Lancez le projet : • Cliquez sur le bouton Afficher la date Exercice: Appel de la procédure AfficherDate 14 Professeur: Hamza SAID Appeler une méthode
  • 15. Ajoutez : • Un bouton de commande sur le formulaire Form1 • Nommez le btnSurfaceCercle • Entrez "&Surface d'un cercle" dans la propriété Text de ce bouton Tapez l'instruction suivante dans le gestionnaire de l'événement Click de ce bouton : • MsgBox(SurfaceCercle()) Tapez : • "Le langage Visual Basic" dans la propriété Text du formulaire Lancez le projet : • Cliquez sur le bouton Surface d'un cercle Exercice: Appel de la fonction « SurfaceCercle » 15 Professeur: Hamza SAID Appeler une fonction
  • 16. • Une variable est une donnée dont la valeur peut changer lors de l'exécution d'un programme • C'est un emplacement réservé en mémoire. Les variables16 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 17. • Les noms de variables peuvent être choisis librement, à condition : • qu'ils soient constitués de lettres et de chiffres sans signe de ponctuation (excepté "_") • qu'ils commencent par une lettre • qu'ils soient différents des mots réservés et des noms d'objets • Une variable se déclare avec l'instruction Dim • La déclaration devrait se situer avant la première utilisation de la variable Déclarer une variable17 Professeur: Hamza SAID Les variables
  • 18. • La déclaration de variables est obligatoire dans ce cours !! Déclarer une variable18 Professeur: Hamza SAID Les variables
  • 19. • L'option Explicit force la déclaration des variables. • Activée par défaut dans Visual Basic .NET (inactive par défaut dans VB6, ce qui crée des problèmes de performances et des bugs) • L'option Explicit peut être modifiée à partir de l'onglet Compiler dans la boite de dialogue des propriétés communes du projet Option Explicit19 Professeur: Hamza SAID Les variables
  • 20. Function SurfaceCercle() Dim Resultat Résultat = 3.14 * 5 ^ 2 Return Resultat End Function Exemple précédent avec une déclaration de variable 20 Professeur: Hamza SAID Les variables
  • 21. Cette fenêtre nous permet de voir la liste des erreurs détectées. Exemple: Mettez la déclaration de la variable résultat en commentaire Notez ce qui se passe La fenêtre Liste d'erreurs21 Professeur: Hamza SAID Les variables Note: Vous pouvez accéder à l'emplacement de l'erreur en double- cliquant dessus.
  • 22. • Il faut toujours donner un type aux variables • Le typage sert à préciser la nature de l'information que l'on pourra y stocker • Le type d'une variable se définit avec le mot réservé As, suivis du nom du type souhaité • Exemple: Dim Resultat As Single • Plusieurs variables peuvent être déclarées sur une seule ligne: Dim i, j As Integer Les types de données22 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 23. • Tous les langages disponibles dans l'environnement .NET ont les mêmes types de données • Tous les types sont implémentés dans l'espace de noms System Découvrir les différents types de données 23 Professeur: Hamza SAID Les types de données
  • 24. Découvrir les différents types de données Professeur: Hamza SAID 24 Visual Basic type .NET Runtime type structure Storage size Value range Boolean System.Boolean 4 bytes True or False Byte System.Byte 1 byte 0 to 255 (unsigned) Char System.Char 2 bytes 0 to 65535 (unsigned) Date System.DateTime 8 bytes January 1, 1 CE to December 31, 9999 Decimal System.Decimal 12 bytes +/- 79,228,162,514,264,337,593,543,950, 335 with no decimal point; +/- 7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest non-zero number is +/- 0.0000000000000000000000000001 Double System.Double 8 bytes -1.79769313486231E308 to - 4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
  • 25. Découvrir les différents types de données Professeur: Hamza SAID 25 Visual Basic type .NET Runtime type structure Storage size Value range Integer System.Int32 4 bytes -2,147,483,648 to 2,147,483,647 Long System.Int64 8 bytes -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Object System.Object(class) 4 bytes Any type can be stored in a variable of type Object Short System.Int16 2 bytes -32,768 to 32,767 Single System.Single 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values String System.String(class) 10 bytes + (2 * string length) 0 to approximately two billion Unicode characters User- Defined Type (structure ) (inherits from System.ValueType) Sum of the sizes of its members Each member of the structure has a range determined by its data type and independent of the ranges of the other members Pour plus d’informations: http://ondotnet.com/pub/a/dotnet /2001/07/30/vb7.html
  • 26. L'initialisation des variables peut se faire dès la déclaration Exemple: Dim i As Integer = 7 Dim s As String = "Bonjour !" L'initialisation des variables26 Professeur: Hamza SAID Les types de données
  • 27. Que comportent les variables non initialisées des types suivants : • Boolean • Numérique (integer, decimal, double ...) • String Petite Question27 Professeur: Hamza SAID L'initialisation des variables
  • 28. • Accepte l'un des deux mots réservés: True ou False • True à la valeur 1 et False à la valeur 0 Le type Boolean28 Professeur: Hamza SAID Les types de données Note importante : L'emploi des valeurs à la place des mots réservés est à proscrire pour développer des applications évolutives. Elles rendent en effet le code dépendant de cette codification, qui peut changer d'une version à l'autre.
  • 29. • Les variables String sont de longueur variable. • Les types Char stockent un seul caractère Unicode • Si un seul caractère doit être traité, le type char est plus performant que le type String Les types String et Char29 Professeur: Hamza SAID Les types de données La codification Unicode des caractères: Cette codification a été définie et normalisée dans le but de codifier l'ensemble des caractères des différents alphabets utilisés dans le monde. Un caractère Unicode occupe deux octets de mémoire.
  • 30. Visual Basic .NET introduit la notion de codage sur 64 bits pour les variables numériques. Voici les nouveautés comparées à VB6 : • Short 16 bits remplace le type Integer 16 bits • Integer 16 bits devient le type Integer 32 bits • Long de 32 bits passe à 64 bits Les types Short, Integer et Long30 Professeur: Hamza SAID Les types de données
  • 31. Single « signifie simple précision » • Une valeur exprimée en virgule flottante, dont 7 chiffres seulement sont significatifs • Convient pour des valeurs comportant une partie décimale qui ne demande pas une grande précision Double « signifie double précision » • Adaptée au stockage de valeurs qui demandent une très grande précision. • À éviter dans la mesure du possible, car très gourmand en mémoire Decimal • Prend en charge jusqu'à 29 chiffres significatifs et peut représenter des valeurs allant jusqu'à 7.9228 x 10^28 • Adapté aux calculs financiers qui ne peuvent tolérer d'erreurs d'arrondi • Il remplace le type Currency de VB6 Les types Single, Double et Decimal31 Professeur: Hamza SAID Les types de données
  • 32. • Ce sont les valeurs qui ne changent pas lors de l'exécution d'un programme • Sont déclarées à l'aide du mot réservé Const • L'initialisation d'une constante se fait lors de sa déclaration • Les constantes peuvent être de type booléen, numérique, chaîne de caractères et date Les constantes32 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 33. Exemples: Const Pi = 3.14 Const NomFichier = "MODELE.DOC" Const Reveillon = #12/31/2010# Les constantes33 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 34. Intérêt des constantes: • Améliorent la lisibilité du code (noms plus significatifs pour les valeurs) • En changeant la valeur d'une constante, on change cette valeur dans tout notre programme. Au lieu de le faire pour chaque occurrence de la valeur dans notre code. Les constantes34 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 35. Nous allons remplacer la valeur 3.14 dans la fonction SurfaceCercle de notre exemple précédent par une constante: Function SurfaceCercle() Dim Resultat As Single Const PI = 3.14 Résultat = PI * 5 ^ 2 Return Resultat End Function Exemple35 Professeur: Hamza SAID Les constantes
  • 36. Les constantes prédéfinies Professeur: Hamza SAID 36 Visual Basic .NET Équivalent en VB6 Description ControlChars.CrLf vbCrLf Combinaison de retour chariot et de saut de ligne ControlChars.Cr vbCr Caractère de retour chariot ControlChars.Lf vbLf Caractère de saut de ligne ControlChars.NewLine vbNewLine Caractère de saut de ligne ControlChars.NullChar vbNullChar Caractère Null. Nothing vbNullString Différent d'une chaîne de longueur nulle ("") ; utilisé pour l'appel de procédures externes ControlChars.Tab vbTab Caractère de tabulation ControlChars.Cr vbCr Caractère de retour chariot ControlChars.FormFeed vbFormFeed Non utilisé dans Microsoft Windows
  • 37. • MessageBox.Show("Première ligne" & vbCr & "Deuxième ligne") Voici comment afficher un message par l'instruction MsgBox sur deux lignes: • MessageBox.Show("Première ligne" & ControlChars.Cr & "Deuxième ligne") Ou Exemple37 Professeur: Hamza SAID Les constantes prédéfinies
  • 38. • L'option Strict empêche toute conversion restrictive involontaire • Empêche aussi les conversions implicites effectuées entre les types numériques et String L'option Strict38 Professeur: Hamza SAID Les constantes
  • 39. Sub ConversionRestrictive() Dim d As Double Dim s As Single d = 0.123456789 s = d 'Affiche 0.1234568 MessageBox.Show(s) End Sub Résultat: 0.1234568 (tronqué) L'option Strict39 Professeur: Hamza SAID Les constantes
  • 40. L'option Strict40 Professeur: Hamza SAID Les constantes L'option Strict peut être modifiée dans l'onglet Compiler de la boîte de dialogue des propriétés communes du projet.
  • 41. Sub ConversionRestrictive() Dim d As Double Dim s As Single d = 0.123456789 s = d 'Affiche 0.1234568 MessageBox.Show(s) End Sub L'option Strict41 Professeur: Hamza SAID Les constantes Si on met l'option Strict à On, seules les conversions effectuées explicitement seront autorisées. • s=d est souligné dans le code pour signaler une conversion interdite. • Par contre, D=S est acceptée car on passe d'une variable à une variable plus précise • Il faudra maintenant, pour notre exemple, écrire : s = CType(d, Single)
  • 42. • Le mot réservé New • Les variables de type valeur ou référence • La notion de membres statiques Les variables objets42 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 43. • Rappel sur l’instanciation: • L'opération qui consiste à créer un objet à partir de sa classe s'appelle une "instanciation" • L'instanciation se réalise à l'aide du mot réservé New Le mot réservé New43 Professeur: Hamza SAID Les variables objets
  • 44. Dim Rayon As Integer Dim Carre As Rectangle Dim Cercle As Graphics Rayon = 50 'Utilisation du mot réservé New pour l'instancier un objet Carre = New Rectangle(Me.ClientSize.Width - 100, Me.ClientSize.Height – 100, 100, 100) Cercle = Me.CreateGraphics 'La classe Pens n'a pas besoin d'être instanciée du fait que ses membres sont statiques Cercle.DrawEllipse(Pens.Black, Carre) Le mot réservé New (Exemple)44 Professeur: Hamza SAID Les variables objets Carre et Cercle ne sont plus des types de données, mais des types d'objets issus de la classe Rectangle et Graphics
  • 45. • Une variable de type valeur contient réellement une valeur • Une variable de type référence s'emploie pour un objet, elle ne contient pas l'objet lui-même, mais son adresse en mémoire • L'adresse d'un objet occupe 4 octets quel que soit l'objet • Les opérations de comparaison et d'affectation sont différentes pour ces deux types de variables : • L'opérateur de comparaison pour des variables de type valeur est "=" • L'opérateur de comparaison pour des variables de type référence est "Is" Les variables de type valeur ou référence 45 Professeur: Hamza SAID Les variables objets
  • 46. • Dans l'exemple précédent, chacune des classes Rectangle et Graphics est instanciée, puis référencée par les variables Carre et Cercle en une seule instruction : Les variables de type valeur ou référence 46 Professeur: Hamza SAID Les variables objets Carre = New Rectangle(Me.ClientSize.Width - 100, Me.ClientSize.Height - 100, 100, 100) Cercle = Me.CreateGraphics
  • 47. • Tant qu'une variable déclarée avec le type d'un objet n'est pas initialisée, elle contient la valeur spéciale Nothing • Nothing indique qu'elle ne référence aucun objet • Nothing peut être testée avec l'une des syntaxes suivantes: La valeur « Nothing » 47 Professeur: Hamza SAID Les variables objets If IsNothing(Resultat) Then MessageBox.Show("Nothing") Ou If Resultat Is Nothing Then MessageBox.Show("Nothing")
  • 48. • Dans l'exemple précédent : • La classe Pens est utilisée directement sans instanciation. • C'est une caractéristique du membre Black de cette classe. Cercle.DrawEllipse(Pens.Black, Carre) • Les membres invoqués sans instanciation : • s’appellent des « membres statiques » • se définissent à l'aide du mot réservé « Shared » La notion de membres statiques48 Professeur: Hamza SAID Les variables objets
  • 49. • Une classe très importante dans l'environnement .NET • Si le type d'une variable n'est pas précisé, elle possède le type Object • Les deux déclarations suivantes sont équivalentes: Dim Resultat Dim Resultat As Object • « Object » remplace le type « Variant » de VB6 • Une variable de type Object accepte tous les types d'objets existant dans l'environnement .NET Le type « Object »49 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 50. • Les écritures suivantes sont tout à fait correctes: Dim Resultat As Object Resultat = "Visual Basic .NET" Résultat = 12 Résultat = 12.6 • Tous les objets accessibles dérivent de cette classe (même les plus simples) • La syntaxe orientée objet peut donc leur être appliquée • Exemple: Resultat = "Visual Basic .NET" MessageBox.Show(Resultat.length) 'Affiche 17 Le type « Object »50 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 51. • Si un type spécifique peut être précisé, on ne devrait pas utiliser le type « Object », parce que: 1. L'intellisense n'affichera pas les membres du type spécifique dans l'éditeur de code 2. L'existence d'un membre qui est invoqué avec une variable de type object ne peut être vérifié en mode Design ou à la compilation, mais en mode Run seulement. 3. Une dégradation des performances qui découle du fait que la recherche de l'existence du membre doit se faire à l'exécution Le type « Object »51 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 52. • Permettent de connaître le type de l'objet référencé par une variable • TypeName • Retourne le type sous forme de chaîne de caractère • TypeOf • Permet de comparer le type de la variable avec un type tel qu'il se définit à la suite du mot réservé As dans une déclaration de variable • Type Of est plus rapide à l'exécution La fonction TypeName et l'opérateur TypeOf Is 52 Professeur: Hamza SAID Le type « Object »
  • 53. Exemple 53 Professeur: Hamza SAID La fonction TypeName et l'opérateur TypeOf Is Dim o As Object o = "VB .NET" 'Affiche "String" MessageBox.Show(TypeName(o)) If TypeOf o Is String Then MsgBox("o est de type String") End If
  • 54. • Peut-être n'importe quel type d'objet valide, y compris un tableau • Exemple: • Nous allons donner un type au résultat de notre fonction SurfaceCercle: Le type de la valeur retournée par une fonction 54 Professeur: Hamza SAID Le type « Object » Function SurfaceCercle() As Single Dim Resultat As Single Const PI = 3.14 Résultat = PI * 5 ^ 2 Return Resultat End Function
  • 55. 1. Convertir vers le type String 2. Convertir du type String vers un type numérique 3. Convertir deux types quelconques Les opérations de conversion55 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 56. • Tous les types de données héritent la méthode « ToString » de la classe Object • « ToString » permet de convertir une variable en type String • Exemple: Convertir vers le type String56 Professeur: Hamza SAID Les opérations de conversion Dim s As String Dim i As Integer = 5 s = i.ToString
  • 57. • Tous les types numériques possèdent une méthode « Parse » statique • « Parse » permet d'analyser et de convertir une chaîne de caractère • Exemple: Convertir du type String vers un type numérique 57 Professeur: Hamza SAID Les opérations de conversion Dim s As String Dim i As Integer = 5 ‘Convertir une chaîne vers le type Integer s = "12" i = Integer.Parse(s)
  • 58. • La fonction « Ctype » permet de convertir le type d'une variable, quel que soit son type: • Exemple: Convertir deux types quelconques58 Professeur: Hamza SAID Les opérations de conversion Dim s As String Dim i As Integer = 5 ‘Convertir une chaîne vers le type Integer s = "12" i = CType(s, Integer)
  • 59. • Permettent de paramétrer une procédure. • Points abordés: 1. Comment définir les arguments d'une procédure ? 2. Comment transmettre un argument à une procédure ? 3. Les arguments optionnels 4. Les arguments nommés Les arguments de procédures59 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 60. • Nous allons modifier la fonction « SurfaceCercle » pour qu’elle puisse accepter n'importe quel rayon comme argument: Définir les arguments d'une procédure60 Professeur: Hamza SAID Les arguments de procédures Function SurfaceCercle(ByVal Rayon As Single) As Single Dim Resultat As Single Const PI = 3.14 Résultat = PI * Rayon ^ 2 Return Resultat End Function "Le mot réservé ByVal, indiqué en orange, permet de transmettre l'argument par valeur."
  • 61. • Nous allons réécrire la procédure « btnSurfaceCercle_Click » de la manière suivante: • Donner à l'utilisateur la possibilité d'entrer une valeur pour le rayon • Transmettre la valeur fournit par l’utilisateur à la fonction « SurfaceCercle » Transmettre un argument à une procédure 61 Professeur: Hamza SAID Les arguments de procédures Private Sub btnSurfaceCercle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSurfaceCercle.Click Dim RayonSaisi As String RayonSaisi = InputBox("Entrez la valeur du rayon") MsgBox(SurfaceCercle(RayonSaisi)) ‘Conversion implicite End Sub
  • 62. • Le mot réservé « Optional » Indique un argument non requis lorsque la procédure est appelée (argument optionnel) • Tous les arguments suivants doivent aussi être facultatifs et déclarés à l'aide du mot clé « Optional » • Chaque déclaration d'argument facultative doit indiquer une valeur par défaut • Sub MaRoutine (Optional X As Integer = 0) • Exemple: Définir un argument optionnel62 Professeur: Hamza SAID Les arguments de procédures Function Puissance(ByVal N As Integer, Optional ByVal Exposant As Integer = 0) If Exposant = 0 Then Puissance = N ^ 2 Else Puissance = N ^ Exposant End If EndFunction
  • 63. • Permettent d’accéder, directement, à un argument d’une procédure en utilisant son nom • L’ordre des paramètres n’est plus nécessaire • Exemple: • Selon la signature en bas, si nous devons proposer le caractère « 5 » comme valeur par défaut de la fonction « InputBox », sans nous soucier du titre affiché, nous devons écrire ceci: RayonSaisi = InputBox("Entrez la valeur du rayon", , "5") • Alternative grâce aux arguments nommés : RayonSaisi = InputBox(DefaultResponse:="5", Prompt:="Entrez la valeur du rayon") Les arguments nommés63 Professeur: Hamza SAID Les arguments de procédures
  • 64. Points abordés: • Les différents types d’expressions dans Visual Basic .NET • Les différents types d’opérateurs • L’ordre de priorité des opérateurs Les opérateurs64 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 65. • Visual Basic .NET est capable de calculer toute sorte de type d'expressions: • Numériques • Chaînes de caractères • Dates • Expressions booléennes • Une expression peut être une combinaison de constantes, de variables, de fonctions et d'opérateurs. Les différents types d'expressions65 Professeur: Hamza SAID Les opérateurs
  • 66. • Les opérateurs sont évalués dans l’ordre de priorité suivant : Ordre de priorité des opérateurs66 Professeur: Hamza SAID Les opérateurs Opérateurs arithmétiques et de concaténation 1. Exponentiation (^) 2. négation unaire (-) 3. La multiplication et la division (*, /) 4. La division entière () 5. Module arithmétique (Mod) 6. Addition et soustraction (+, -), la concaténation de chaînes (+) 7. concaténation (&) 8. décalage de bits arithmétique (<<,>>) Opérateurs de comparaison 9. Tous les opérateurs de comparaison (=, <>, <, <=,>,> =, Like, Est, Est TypeOf ...) Opérateurs logiques bit à bit et 10. Négation (Non) 11. Conjonction (Et, AndAlso) 12. Disjonction (ou, Orelse, XOR) L'opérateur de concaténation (&) n'est pas un opérateur arithmétique, mais en priorité, il est groupé avec les opérateurs arithmétiques.
  • 67. • Exemple: 2 + 3 * 5 = 17 (2 + 3) * 5 = 25 Ordre de priorité des opérateurs67 Professeur: Hamza SAID Les opérateurs
  • 68. • Permettent de comparer: • deux valeurs numériques ou deux chaînes de caractères. • Le résultat d'une comparaison est toujours de type Boolean: • True (Vrai) ou False (Faux) Les opérateurs de comparaison68 Professeur: Hamza SAID Les opérateurs Exemple : Dim A As Integer = 2 Dim B As Integer = 3 If A = B then .. End If Liste des opérateurs de comparaison: = égal > supérieur à < inférieur à >= supérieur ou égal <= inférieur ou égal <> Différent de
  • 69. • Les opérateurs logiques permettent de comparer des expressions booléennes • Ils retournent un résultat booléen: • vrai ou faux • Le tableau ci-dessous les résume: Les opérateurs logiques69 Professeur: Hamza SAID Les opérateurs Opérateur Utilisation Not Négation And Conjonction AndAlso Conjonction Or Disjonction Orelse Disjonction Xor Disjonction
  • 70. • Visual Basic .NET introduit de nouveaux opérateurs d'affectation: Les opérateurs d'affectation70 Professeur: Hamza SAID Les opérateurs Exemple Expression équivalente Résultat pour x = 4 x += 1 x = x + 1 x = 5 x -= 1 x = x - 1 x = 3 x *= 2 x = x * 2 x = 8 x /= 2 x = x / 2 x = 2 x = 3 x = x 3 x = 1 x ^= 2 x = x ^ 2 x = 16
  • 71. • Elles permettent de gérer le déroulement et l'enchaînement des instructions exécutées. • Points abordés: • L'instruction IF • L'instruction Select Case • La boucle For Next • La boucle Do Loop Les structures de contrôle71 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 72. • L'instruction la plus célèbre de l'informatique • Permet de créer une structure décisionnelle: L'instruction IF72 Professeur: Hamza SAID Les structures de contrôle If Condition Then ... End if Se traduit par: Si la Condition est vraie alors... • Un bloc d'instructions peut être exécuté si une condition est vraie.
  • 73. • Exemple: L'instruction IF73 Professeur: Hamza SAID Les structures de contrôle If A = B then MsgBox("A = B") End If Si A = B alors on exécute le bloc de code entre Then et End If, qui affiche dans une fenêtre MessageBox « A=B » • Autre écriture possible: If A = B Then MsgBox("A = B")
  • 74. • On peut tester une condition fausse grâce à l'opérateur de négation « Not » L'instruction IF74 Professeur: Hamza SAID Les structures de contrôle If Not A = B Then MsgBox("A différent de B") Si A et B sont différents (Not A=B signifie NON égaux) afficher "A différent de B".
  • 75. • La structure IF THEN ELSE L'instruction IF75 Professeur: Hamza SAID Les structures de contrôle If condition then .. 'effectué si condition vraie .. Else ..'effectué si condition fausse .. End if • Veut dire: 'Si..Alors..Sinon'
  • 76. • Exemple: IF THEN ELSE L'instruction IF76 Professeur: Hamza SAID Les structures de contrôle If A = B then MsgBox("A = B") Else MsgBox("A différent de B") End If Si A = B afficher le message 'A = B' sinon Afficher le message 'A différent de B'.
  • 77. L'instruction IF - Exemple Professeur: Hamza SAID 77 • Changeons le code de notre fonction SurfaceCercle pour qu'elle vérifie si la valeur entrée par l'utilisateur est numérique: Private Sub btnSurfaceCercle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSurfaceCercle.Click Dim RayonSaisi As String RayonSaisi = InputBox(DefaultResponse:="5", Prompt:="Entrez la valeur du rayon") If IsNumeric(RayonSaisi) Then MsgBox(SurfaceCercle(RayonSaisi)) Exit Sub End If End Sub
  • 78. • Structure décisionnelle permettant d'exécuter un grand nombre de blocs de code différents en fonction de la valeur d'une expression L'instruction Select Case78 Professeur: Hamza SAID Les structures de contrôle
  • 79. L'instruction Select Case79 Professeur: Hamza SAID Les structures de contrôle Select Case expression Case valeur1 'code effectué si expression = valeur1 Case valeur2 'code effectué si expression = valeur2 Case valeur3 'code effectué si expression = valeur3 .. Case Else 'code effectué dans tous les autres cas End Select Attention: Si expression = valeur1 le code entre Case Valeur1 et Case valeur2 (et uniquement celui-là) est effectué, puis l'exécution saute après End Select.
  • 80. L'instruction Select Case - Exemple Professeur: Hamza SAID 80 • Nous allons créer un nouveau bouton qui permet d'afficher le nom du jour de la semaine équivalent au numéro introduit par l'utilisateur: • Ajoutez un bouton du nom de btnJourSemaine sur le formulaire avec "&Jour semaine" dans la propriété Text • Entrez le code suivant dans la procédure btnJourSemaine_Click : Dim NumJour As String NumJour = InputBox("Saisir un N° compris entre 1 et 7") If NumJour = "" Then Exit Sub Select Case CType(NumJour, Integer) Case 1 MsgBox("Lundi") Case 2 MsgBox("Mardi") Case 3 MsgBox("Mercredi") Case 4 MsgBox("Jeudi") Case 5 MsgBox("Vendredi") Case 6 MsgBox("Samedi") Case 7 MsgBox("Dimanche") Case Else MsgBox("Numéro invalide") End Select
  • 81. • Réécrivez le même programme qui est dans l'exemple mais en n'utilisant que des structures IF THEN ELSE. L'instruction Select Case - Exercice81 Professeur: Hamza SAID Les structures de contrôle
  • 82. • Permet de faire des boucles et ainsi relancer l'exécution d'un bloc de code plusieurs fois. • Le nombre de boucles est déterminé par une variable, qui sert de compteur. • Le compteur est initialisé au départ par une valeur de départ et une valeur d'arrêt. La boucle For Next82 Professeur: Hamza SAID Les structures de contrôle ‘Pour une variable allant de 'début' à 'fin' For variable = début To fin .. Next variable
  • 83. • L'évolution de la variable peut être personnalisée grâce au mot réservé Step. • Exemple: La boucle For Next83 Professeur: Hamza SAID Les structures de contrôle Dim i as Integer For i=1 to 10 Step 2 MsgBox i.toString Next i 'Affiche 1 puis 3 puis 5 puis 7 puis 9
  • 84. • Nous allons créer un bouton qui permet d'ajouter des valeurs de 1 à 10 dans une liste : La boucle For Next - Exemple84 Professeur: Hamza SAID Les structures de contrôle Note : Le contrôle ListBox ressemble beaucoup au ComboBox sauf que ses éléments sont affichés dès le départ.
  • 85. • Ajoutez dans le formulaire : • un bouton du nom de "btnBoucleFor" • un contrôle ListBox en conservant son nom ListBox1 • Insérez le code suivant dans le gestionnaire d'événement Click de ce bouton: La boucle For Next - Exemple85 Professeur: Hamza SAID Les structures de contrôle Dim i As Integer 'Effacer la liste au départ ListBox1.Items.Clear() For i = 1 To 10 ListBox1.Items.Add("Valeur " & i.ToString) Next
  • 86. • Refaites le même exercice, mais cette fois, en affichant les valeurs de la liste dans le sens descendant (Voir image ci-dessous). Exercice86 Professeur: Hamza SAID Les structures de contrôle
  • 87. • Permet aussi de faire des boucles mais sans que le nombre de boucles ne soit déterminé au départ La boucle Do Loop87 Professeur: Hamza SAID Les structures de contrôle Cette boucle suivante tourne sans fin: Do .. Loop
  • 88. • Une condition d'arrêt permet de sortir de la boucle • Until (Jusqu'à ce que) et While (Tant que) nous permettent d’introduire cette condition La boucle Do Loop88 Professeur: Hamza SAID Les structures de contrôle Do Until condition Code Loop 'Boucler jusqu'à ce que condition soit vraie. Ou Do While condition Code Loop 'Boucler tant que la condition est vraie.
  • 89. • La condition d’arrêt peut être mise en fin de boucle • cela garantit l’exécution du bloc de code au moins une fois avant la vérification de la condition La boucle Do Loop89 Professeur: Hamza SAID Les structures de contrôle Do Code Loop Until condition 'Boucler jusqu'à ce que condition soit vraie. Ou Do Code Loop While condition 'Boucler tant que la condition est vraie.
  • 90. • Nous allons utiliser la boucle Do Loop de manière à proposer automatiquement la saisie d'une nouvelle valeur en cas de saisie d'un rayon invalide dans la procédure btnSurfaceCercle_Click: • Ajoutez l'instruction Do avant la ligne de fonction InputBox en début de procédure. • Ajoutez l'instruction suivante avant MsgBox en fin de procédure: Loop While Not IsNumeric(RayonSaisi) La boucle Do Loop - Exemple90 Professeur: Hamza SAID Les structures de contrôle
  • 91. La boucle Do Loop - Exemple91 Professeur: Hamza SAID Les structures de contrôle Dim RayonSaisi As String Do RayonSaisi = InputBox(DefaultResponse:="5", Prompt:="Entrez la valeur du rayon") If IsNumeric(RayonSaisi) Then MsgBox(SurfaceCercle(RayonSaisi)) Exit Sub End If Loop While Not IsNumeric(RayonSaisi) Le code deviendrait comme ceci
  • 92. 1. La portée des procédures 2. La portée des variables 3. La durée de vie des variables 4. Les variables statiques Les niveaux de visibilité92 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 93. • Avant le mot Sub ou Function on peut ajouter : • Private qui indique une procédure privée, accessible uniquement dans le module. • Public indiquant que la procédure est accessible à partir de toute l'application. • S'il n'y a rien devant Sub ou Function la procédure est publique. • Exemple d’une fonction privée: La portée des procédures93 Professeur: Hamza SAID Les niveaux de visibilité Note: Les procédures liées aux événements d'une feuille sont privées par défaut. Private Function SurfaceCercle(Rayon As Single) Return 3.14 * Rayon * Rayon End Function
  • 94. • Une variable « globale » est une variable visible dans la totalité du programme. • Exemple: Créer une variable globale nommée Index La portée des variables94 Professeur: Hamza SAID Les niveaux de visibilité Module MonModule 'Accéssible dans toute l'application Public Index As Integer .. End Module
  • 95. • À l'inverse une variable « locale » est visible uniquement dans une procédure ou une Classe: • Exemple: La portée des variables95 Professeur: Hamza SAID Les niveaux de visibilité Sub MaProcedure (ByRef X As Integer) Dim Y As Integer ... End sub
  • 96. • C’est la zone de code située dans le module, mais en dehors de toute procédure • Une variable déclarée dans la section Déclaration d'un module est: • accessible uniquement dans ce module si elle est privée • accessible dans toute l'application si elle est publique. La section Déclaration96 Professeur: Hamza SAID La portée des variables
  • 97. • Nous allons compter le nombre de tentatives de saisies invalides effectuées dans la boucle Do Loop de la fonction SurfaceCercle chargée de la saisie du rayon: Exemple97 Professeur: Hamza SAID La portée des variables Ajoutez les lignes suivantes après l'instruction Do • Dim NbrTentatives As Integer • NbrTentatives += 1 Modifiez l'appel de la fonction MsgBox ainsi: • MsgBox("Rayon invalide", MsgBoxStyle.Exclamation, "Erreur N° " & NbrTentatives)
  • 98. La portée des variables - Exemple Professeur: Hamza SAID 98 • La procédure d'appel de la fonction « SurfaceCercle » doit ressembler à ceci: Private Sub btnSurfaceCercle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSurfaceCercle.Click Dim RayonSaisi As String Do Dim NbrTentatives As Integer NbrTentatives += 1 RayonSaisi = InputBox(DefaultResponse:="5", Prompt:="Entrez la valeur du rayon") If Not IsNumeric(RayonSaisi) Then MsgBox("Rayon invalide", MsgBoxStyle.Exclamation, "Erreur N° " & NbrTentatives) End If Loop While Not IsNumeric(RayonSaisi) MsgBox(SurfaceCercle(RayonSaisi)) End Sub
  • 99. • Nous disposons maintenant de quatre niveaux de visibilité pour une variable: 1. Si elle est déclarée dans une procédure, à l'intérieur d'un bloc d'instructions, sa visibilité est limitée à ce bloc 2. Si elle est déclarée en dehors d'un bloc d'instructions dans une procédure, elle est dite locale et n'est pas accessible en dehors de cette procédure 3. Si elle est déclarée dans la section déclaration d'un module avec le mot Private, elle est dite privée et est accessible par toutes les procédures de ce module, mais pas en dehors 4. Si elle est déclarée dans la section déclaration d'un module avec le mot Public, elle est dite publique et est accessible par toutes les procédures de l'application Quatre niveaux de visibilité99 Professeur: Hamza SAID La portée des variables
  • 100. • La durée de vie d’une variable est le temps pendant lequel elle existe en mémoire • La portée d'une variable détermine sa durée de vie • Voici les règles qui déterminent la durée de vie des variables: • Les variables, privées ou publiques, déclarées dans la section Déclaration d'un module restent disponibles tout au long de l'exécution de l'application. • Les variables locales et de niveau bloc possèdent une durée de vie correspondant au temps d'exécution de la procédure dans laquelle elles sont déclarées. La durée de vie des variables100 Professeur: Hamza SAID Les niveaux de visibilité Remarque: Les règles de visibilité et de durée de vie des constantes sont les mêmes que celles des variables.
  • 101. • Si à la place de Dim on utilise Static, la variable est dite 'Statique': • À la sortie de la procédure, la variable et sa valeur continuent d'exister • Sa valeur est gardée en mémoire • lors des appels suivants de la procédure, on retrouve la valeur de la variable. • Exemple: Les variables statiques101 Professeur: Hamza SAID Les niveaux de visibilité Sub compteur Dim A as integer Static B as integer A += 1 B += 1 End sub À chaque appel de cette procédure, « A » prend la valeur 0, puis 1, puis disparaît. « B » prend les valeurs 0, puis 1, puis 2... (incrémentation à chaque appel)
  • 102. • C'est une variante de la boucle For • Elle permet de parcourir les objets d'une collection • Elle n'utilise pas l'indice La boucle « For Each »102 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle Dim mystring As String Dim item as Object For Each item in ListBox.Items mystring = mystring + item Next Alternative : La variable de boucle peut être déclarée après For: Dim mystring As String For Each item As Objet in ListBox.items mystring = mystring + item Next Parcourir tous les éléments d’un ListBox et les mettre dans une variable V Exemple :
  • 103. Attention: Dans une boucle For Each, lorsqu’on parcourt une collection, on ne peut pas modifier ses éléments. La boucle « For Each »103 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 104. • Nous allons illustrer le fonctionnement de la boucle For Each grâce à un petit exercice Parcourir une collection104 Professeur: Hamza SAID La boucle « For Each » Voir le document « 05- Variables, procédures, arguments et structures de contrôle » Section « 1.13.1 »
  • 105. • Nous allons maintenant voir comment récupérer l'élément sélectionné par l'utilisateur grâce à l'événement SelectedIndexChanged du contrôle « ListBox1 » Le contrôle « ListBox »105 Professeur: Hamza SAID La boucle « For Each » Voir le document « 05- Variables, procédures, arguments et structures de contrôle » Section « 1.13.2 »
  • 106. • L’exercice suivant va nous indiquer comment autoriser le déplacement des éléments de la liste 1 vers la liste 2 grâce au glisser-déplacer Le glisser-déplacer106 Professeur: Hamza SAID La boucle « For Each » Voir le document « 05- Variables, procédures, arguments et structures de contrôle » Section « 1.13.3 »
  • 107. • Nous allons voir comment autoriser le déplacement de plusieurs éléments à la fois à l'aide des quatre boutons que nous avons déposés sur le formulaire. Gérer les sélections multiples107 Professeur: Hamza SAID La boucle « For Each » Voir le document « 05- Variables, procédures, arguments et structures de contrôle » Section « 1.13.4 »
  • 108. 1. Les types de données sont implémentés dans l'espace de noms System. Ils sont ainsi communs à tous les langages compatibles avec l'environnement .NET. 2. Une variable peut être initialisée lors de sa déclaration. 3. La déclaration des variables est obligatoire par défaut (Option Explicit). 4. Visual Basic .NET introduit un nouveau niveau de visibilité qui limite la disponibilité d'une variable à un bloc d'instructions. 5. L'Option Strict, si elle est activée, permet d'améliorer la fiabilité du code en éliminant les conversions implicites. En Bref108 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 109. 6. Les arguments transmis à une procédure sont transmis par valeur par défaut. 7. Les structures IF THEN ELSE, SELECT CASE, FOR NEXT et DO LOOP gèrent le déroulement du code 8. La boucle FOR EACH traite des collections 9. La portée d'une variable détermine sa durée de vie 10. 4 niveaux de visibilité pour les variables: Variables locales, niveau bloc, privées et publiques En Bref109 Professeur: Hamza SAID Variables, procédures, arguments et structures de contrôle
  • 110. Annexes  Les mots réservés du langage Visual Basic .NET Professeur: Hamza SAID 110 Voir le document « 05- Variables, procédures, arguments et structures de contrôle » Section « 1.15.1 »