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
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
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 »