Formation Visual Basic avec exercices, tutoriel & guide de travaux pratiques en pdf.
Applications des maths
Chaque contrôle porte un nom qui lui est attribué lors de sa création. La première étiquette placée sur la feuille portera le nom Label1, la seconde Label2 et ainsi de suite. Le 1er bouton placé se nommera Command1, le second Command2; la première zone de texte se nommera Text1, la seconde Text2 …
A chaque propriété correspond une variable nommée contrôle.propriété où contrôle représente le nom du contrôle et propriété celui de la pro-priété. Par exemple, la variable correspondante à la propriété Caption d’un bouton nommé Label1 s’appellera Label1.Caption. Pour modifier une propriété durant l’exécution du programme, il faut modifier la valeur de cette variable en incorporant une instruction Basic du style :
Let contrôle.propriété = valeur ou valeur représente la nouvelle valeur que doit prendre la propriété.
Par exemple, l’instruction basic Let Label1.Caption= »Salut » permet d’affecter la valeur Salut à la propriété Caption du contrôle Label1 donc d’af-ficher le mot Salut à l’emplacement de l’étiquette nommée Label1.
Les instructions basic qui forment un programme sont regroupées en procédures. Une procédure particulière est activée, durant l’exécution du programme, par un clic sur un bouton de commande. Pour créer cette procédure particulière, il faut double-cliquer sur le bouton de commande concerné; on accède ainsi à un éditeur qui permet d’écrire le programme.
L’exemple ci-contre illustre la création d’un petit programme qui, lors d’un clic sur le bouton intitulé Bonjour, affiche Salut sur une étiquette.
1) Dessiner l’étiquette et le bouton sur la feuille puis modifier leurs propriétés.
2) Double-cliquer sur le bouton Command1 (Bonjour) pour accéder à l’éditeur de programme qui propose de compléter la procédure Click() du contrôle Command1.
3) Taper l’instruction Basic Let Label1.Caption= »Salut » qui permet de modifier la propriété caption du contrôle Label1.
L’éditeur de programme peut aussi être appelé par l’option Code du menu Affichage. Deux menus permettent alors de choisir le contrôle et la pro-cédure qui doit être créée.
Exercice 3
Créer un programme comprenant une étiquette et 3 boutons. Un clic sur l’un des boutons doit permettre de changer la couleur de fond et le contenu de l’étiquette.
Indications
1) Les instructions
Let Label1.BackColor=RGB(255,0,0)
Let Label1.BackColor=RGB(0,255,0)
Let Label1.BackColor=RGB(0,0,255)
permettent de colorier le fond de l’étiquette Label1 en rouge, en vert, en bleu.
2) La procédure Command1_Click sera exécutée lors d’un clic de l’utilisateur sur le bouton Command1 alors que la procé-dure Command2_Click sera exécutée lors d’un clic de l’utili-sateur sur le bouton Command2 …
Exercice 4
Créer un programme qui permette de sélectionner le nom d’un élève de la classe dans une zone de liste (ComboBox) puis, par un clic sur un bouton de commande, qui affiche dans une zone d’image, une photo de l’élève sélectionné.
Remarques :
1) La propriété Text d’une zone de liste contient le texte qui est affiché à l’écran.
2) La propriété List d’une liste contient les éléments qui apparaissent dans le menu.
3) La propriété Picture d’une zone d’image définit l’image à afficher.
4) L’instruction Basic Let Picture1.Picture = LoadPicture(« phoebe.jpg ») permet par exemple d’afficher, dans la zone d’image nommée Picture1, l’image phoebe.jpg.
5) L’instruction Basic Let Picture1.Picture = LoadPicture(Combo1.Text & « .jpg ») permet d’afficher, dans la zone d’image nommée Picture1 l’image sélectionnée dans le menu.
6) Dans le programme à réaliser, l’instruction Basic à insérer dans la procédure Click du contrôle Com-mand1 est : Let Picture1.Picture = LoadPicture(Combo1.Text & « .jpg »)
Attention, l’image doit se trouver dans le même dossier que le programme.
Une variable est une zone de mémoire repérée par un nom et pouvant mémoriser une valeur. On connaît déjà les variables qui contiennent les propriétés des contrôles. En plus de ces variables dont le nom est de la forme Contrôle.Propriété, le programmeur peut utiliser d’autres variables dont il décide lui-même du nom. Pour assigner une valeur à une variable nommée par exemple Var, on utilise l’instruction Let Var = valeur.
La valeur peut être un nombre ou une chaîne de caractères (mot ou phrase) délimitée par des guillemets. A la place d’une valeur spécifiée, on peut mettre une formule de calcul. Dans ce cas, la valeur mémorisée est le résultat du calcul indiqué.
Pour écrire une formule de calcul numérique, on utilise les mêmes opérateurs arithmétiques qu’une calculatrice : +, -, *, /, ^ (élévation à une puis-sance) et les fonctions Sqr( ) (racine carrée) et Int( ) (partie entière).
Pour manipuler des chaînes de caractères, on utilise l’opérateur & qui colle deux mots, les fonctions Left(X,N) et Right(X,N) qui prennent N ca-ractères à gauche ou à droite de la chaîne X et la fonction LEN(X) qui donne la longueur de la chaîne X. Exemple :
Let Nom = « Dupont »
Let L = Len(Nom)
Let Affichage = Nom & » comporte » & L & « caractères »
Let Label1.Caption = Affichage
Les zones de texte (TextBox) sont des contrôles qui permettent d’introduire des données (nombres ou chaînes de caractères) dans un programme. Elles affichent un texte qui peut être modifié par l’utilisateur durant l’exécution du programme. La propriété Text contient le texte affiché et la variable TEXT1.TEXT permet donc de connaître ou de modifier le contenu d’une zone de texte appelée TEXT1.
Les étiquettes (Label) ont des contrôles qui permettent d’afficher du texte ou le contenu d’une variable. Pour afficher le contenu d’une variable, il faut donner la valeur de la variable à la propriété Caption de l’étiquette.
Exemple
Cet exemple consiste en un programme de conversion des francs suisses en euros. La feuille contient une zone de texte pour saisir une somme en francs suisses, une étiquette pour afficher la valeur en euros, deux étiquettes pour les libellés CHF et EUR ainsi qu’un bouton de commande pour afficher la somme et un autre pour quitter le programme.
La procédure activée lors d’un clic sur le bouton nommé Command1 (Affiche) est la suivante :
Private Sub Command1_Click() début de la procédure Click
Let Chf = Text1.Text assigne à la variable Chf le contenu de la zone de texte Text1
Let Euro = Chf / 1.67 assigne à la variable Euro le résultat de l’opération
Let Label1.Caption = Euro affiche le contenu de la variable Euro sur l’étiquette Label1
End Sub fin de la procédure Click
La procédure liée au bouton de commande Fin ne contient que l’instruction basic End qui termine le programme.
Exercice 5
Créer un programme qui permette de donner le rayon d’un cercle puis, par un clic sur un bouton de commande, affiche son périmètre et son aire.
Déroulement du programme :
• Une zone de texte permet à l’utilisateur de donner le rayon.
• Le rayon donné dans la zone de texte sera, suite à un clic sur calcule, enregistré dans une va-riable nommée Rayon.
• Le périmètre est calculé et enregistré dans variable nommée Perimetre.
• L’aire est calculée et enregistrée dans une variable nommée Aire.
• Le périmètre et l’aire sont affichés sur les étiquettes correspondantes.
Pour afficher le périmètre, il suffit d’assigner à la variable Label1.Caption la valeur de la variable Perimetre.
L’instruction Let Label1.Caption = Perimetre permet cette assignation.
Exercice 6
Créer un programme qui permette de donner le rayon et la hauteur d’un cylindre puis, par un clic sur un bouton de commande, affiche son vo-lume.
Exercice 7
Créer un programme qui permette de donner le nom de l’utilisateur puis, par un clic sur un bouton de commande affiche, sur une étiquette, Salut suivi du nom donné.
Exercice 8
Créer un programme qui permette de donner une somme en francs suisses puis qui affiche l’équivalent dans différentes monnaies étrangères.
Pour améliorer l’affichage des montants, on pourra recourir à une commande de formatage comme Format(Var, »0.00″) qui force l’écriture de la variable Var avec au moins un chiffre avant la virgule et de 2 après.
Pour les cours du change, voir, par exemple, « http://www.swissinfo.org »
Le type d’une variable est le genre de contenu qu’elle est susceptible de recueillir. Les types les plus utilisés pour les variables sont les entiers, les réels et les chaînes de caractères. Par défaut Visual Basic considère que chaque variable qui n’a pas été déclarée est de type variable (variant) c’est à dire qu’elle peut changer de type lors de l’exécution du programme.
Exemple de types variables :
Let a = 12
Let b = a & a
Let c = 2 * b c = 2424 a contient un nombre entier
les contenus de a et de b sont ici considérés comme des chaînes de caractères
les contenus de b et de c sont ici considérés comme des entiers
Pour rendre le code plus clair et pour éviter les erreurs, il est préférable et parfois indispensable de préciser quel type de donnée sera enregistré dans les variables employées. Cette déclaration se fait dans la partie Déclaration située au début du programme à l’aide de l’instruction Dim dont la syntaxe est la suivante :
Dim Nom de variable As Type
Les principaux types sont :
Integer nombre entier compris entre -32768 et 32767
Long nombre entier compris entre -2 147 483 648 et 2 147 483 647
Single nombre réel à virgule flottante en simple précision
Double nombre réel à virgule flottante en double précision
String chaîne de caractères
Exemple :
Dim a As Integer
Dim b As Single
Dim c As String
déclare la variable a comme entière
déclare la variable b comme réelle
déclare la variable c comme chaîne de caractères
Remarques :
1. Il est indispensable de déclarer une variable si sa valeur doit être utilisée dans plusieurs procédures du projet ou dans plusieurs exécutions de la même procédure car, au début de l’exécution d’une procédure, toutes les variables sont automatiquement mises à zéro.
2. En exécutant le programme ci-contre, avec deux chiffres dans les zones de texte, on constate que ces chiffres sont considérés comme des textes et que le résultat affiché n’est pas celui que l’on attend. Pour corriger ce défaut, il faut soit déclarer les variables x et y, soit complé-ter les affectations des zones de texte par : « Let x = Val(Text1.Text) », qui transforme le contenu Text1.Text en une valeur numérique.
Exercice 9
Créer un programme qui demande la longueur des côtés d’un rectangle puis qui affiche le périmètre et l’aire de ce rectangle.
Exercice 10
Créer un programme qui demande un verbe régulier en « er » puis qui affiche, à la première personne du singu-lier, le présent, l’imparfait, le futur et le passé simple de ce verbe.
Exercice 11
Créer un programme qui demande un nombre, puis lors d’un clic sur un bouton de commande, calcule puis af-fiche le nombre arrondi à l’entier, au dixième, au vingtième et au centième. Soigner la présentation… Remarque : INT(X + 0.5) produit un entier en arrondissant X à l’entier le plus proche.
Exercice 12
Créer un programme qui calcule l’image de x par la fonction donnée par f (x) = x2 + 2x – 1.
La valeur de x doit pouvoir être donnée par l’utilisateur puis, après un clic sur un bouton, l’image de x par f doit être affichée.
Exercice 13
a) Créer un programme qui affiche le nombre de clics que la souris effectue sur un bouton de commande Remarque : L’instruction Let N=N+1 permet de modifier la variable N en additionnant 1 à sa valeur.
b) Créer un programme qui calcule la somme des premiers nombres entiers. Remarque : L’instruction Let S=S+N permet d’ajouter N à la variable S.
On a vu que, lors de l’exécution d’un programme, un clic sur un bouton de commande nommé par exemple Command1 a pour effet d’exécuter une procédure appelée command1_Click( ).
Le clic de la souris est un événement et la procédure Command1_Click( ) est une procédure événementielle, elle s’exécute lorsque l’événement a lieu.
D’autres événements peuvent provoquer l’exécution d’une procédure événementielle, par exemple le déplacement de la souris sur un contrôle nommé Command1 a pour effet d’exécuter une procédure appelée Command1_MouseMove( . . . . ).
Outre les boutons de commandes, les autres contrôles possèdent également des procédures événementielles, par exemple :
• chaque contrôle possède une procédure événementielle nommée Click qui est exécutée lors d’un clic de la souris sur le contrôle. La procédure Label1_Click( ) est par exemple exécutée lors d’un clic de la souris sur une étiquette nommée Label1.
• un contrôle zone de texte possède une procédure événementielle nommée Change qui est exécutée lors de chaque modification du contenu de la zone de texte.
La procédure ci-dessous permet par exemple d’afficher sur une étiquette nommée Label1 les caractères tapés dans une zone de texte nommée Text1.
Private Sub Text1_Change() Label1.Caption = Text1.Text
End Sub
• un contrôle zone de texte possède une procédure événementielle nommées KeyPress qui est exécutée lorsqu’une touche du clavier est pressée. Cette procédure KeyPress attribue encore à une variable nommée KeyAscii, le code ascii de la touche préssée.
• la feuille (Form1) possède une procédure événementielle nommée Form1_Load qui est exécutée au chargement de la feuille donc lorsque le programme démarre. Cette procédure est utile pour attribuer des valeurs par défaut aux variables.
Pour écrire une procédure événementielle, il faut la sélectionner ainsi que le contrôle correspondant dans les menus déroulants de l’éditeur de programme.
Exercice 14
A chaque caractère correspond un code, le code ascii de ce caractère. Par exemple le code ascii du caractère « A » est 65.
Écrire un programme qui permet de taper du texte dans un contrôle zone de texte, et affiche (sur une étiquette) le code ascii de chaque caractère pressé.
La procédure d’événement Text1_KeyPress(KeyAscii) d’un contrôle zone de texte Text1 est exécutée lors de chaque pression sur une touche du clavier. La variable KeyAscii prend la valeur du code ascii correspondant à la touche pressée.
Remarque : la fonction Chr(N) rend le caractère dont le code ascii est contenu dans la variable N et la fonction Asc(C) rend le code ascii du ca-ractère contenu dans la variable C.
Exercice 15
Écrire un programme qui permette de donner une somme en francs suisses et qui comporte 2 zones de texte. Si l’utilisateur tape une somme en francs suisse dans la zone de texte de gauche, le programme affiche la somme correspondante en euro dans celle de droite et si l’utilisateur tape une somme en euro dans la zone de texte de droite, le programme affiche la somme correspondante en francs suisses dans celle de gauche. (les sommes sont affichée avec 2 décimales).
Remarque : l’utilisation d’un contrôle zone de texte pour afficher des résultat est a éviter, pour s’en con-vaincre, observer le déroulement du programme avec un change fixé à 1.67 CHF pour 1 €.
Exercice 16
Écrire un programme qui permette d’afficher une couleur dont l’utilisateur précise ses composantes de rouge de vert et de bleu dans 3 barres de défilement horizontales.
Consulter l’aide en ligne de Visual Basic pour découvrir les contrôles barres de défilement horizontal.
Exercice 17
Écrire un programme qui permette de déplacer une image avec la souris.
• La procédure événementielle Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) est exécutée lorsque la souris se déplace sur la feuille. Les coordonnées du pointeur de la souris sont enregistrées dans les variables X et Y. L’origine est le coin supérieur gauche de la feuille.
• La procédure événementielle Picture1_MouseMove( … ) est exécutée lorsque la souris se déplace sur le la zone d’image Picture1. Les coor-données du pointeur de la souris sont enregistrées dans les variables X et Y. L’origine est le coin supérieur gauche de la zone d’image.
• Pour déplacer la zone d’image Picture1, il suffit de modifier ses propriétés Picture1.Left et Picture1.Top.