Professional Documents
Culture Documents
Ancien BASIC (Beginner's All purpose Symbolic Instruction Code) Programmation par objets (briques logicielles) Programmation graphique (fentres, icnes, menus, souris) Programmation vnementielle (sollicitations : souris, clavier, autre vnement) Rutilisable (modules de code BASIC).
Structure gnrale
Plan du cours : Introduction la programmation VB De quoi dbuter Interactivit, variables et conditions Les structures conditionnelles Tableaux et boucles Traitement des chanes de caractres A retenir
Les objets manipuls sont appels des contrles (bouton de commande, bote de dialogue, zne de texte, zne d'image, etc. L'interface utilisateur cre est fentre. Une fentre est appele une feuille (Form). Une feuille est elle-mme un contrle. Au lancement feuille de dmarrage. Chaque contrle peut ragir des vnements qui lancent des suites d'instructions codes en BASIC. Des modules gnraux de code BASIC peuvent porter sur tout le programme. Ces modules sont rutilisables.
Brandon Heat
End Sub
Contrles et proprits
Un objet (contrle) peut possder un grand nombre de proprits par exemple sur sa forme, sa couleur, sa position dans la feuille, sa visibilit, etc. La plus importante est la proprit Name qui donne un nom au contrle. Ce nom permet de rfrencer le contrle. Syntaxiquement le nom d'un objet est spar de la proprit par un point
Exemple :
Sub cmdQuitter_Click() Unload Me End End Sub
Contrles et vnements
Le code d'un vnement associ un contrle forme une procdure vnementielle dont la syntaxe gnrale est :
Sub NomContrle_Evnement() Instruction 1 Instruction 2
De bonnes habitudes
Form (feuille). C'est le conteneur graphique des contrles de l'application. Proprits : Name, Caption, Picture
Ds qu'un objet est cr sur une feuille lui donner un nom significatif (proprit Name) Conseil N 1 :
CommandButton (bouton de commande) Utilisation : excute le code associ l'vnement click sur ce bouton. Proprits : Name, Caption Une Form est prfixe par frm N'utiliser que des lettres et des chiffres (exclure . - / _ "espace" etc.) o Majuscules initiales des diffrents mots o Prfixer selon la nomenclature suivante :
o
Label (tiquette) Un CommandButton est prfix par cmd Utilisation : affiche une sortie cran (texte, nombre, date) non interactive. Proprits : Name, Caption, BackColor, BorderStyle, Font, Alignment Un Label est prfix par lbl Une Image est prfixe par img Une TextBox est prfixe par txt etc.
Image (image) Utilisation : affiche des images en mode point (BitMap au format .BMP, .WMF, .ICO) Peut servir de bouton de commande (vnement click). Proprits : Name, Stretch, BorderStyle, Visible Exemples : lblAffichage, cmdEntreDesDonnes, imgFondEcran, frmFeuilleAccueil etc. Conseil N 2 : Dresser une table des proprits importantes : Objet Bouton Etiquette Feuille Name cmdQuitter Fin BackColor, Font BackColor, Picture Caption Autres proprits
TextBox (zone de texte) Utilisation : pour taper ou afficher du texte. Proprits : Name, BackColor, BorderStyle, Font
Exemples :
Private Sub cmdQuitter_Click() End End Sub
Private Sub cmdMonNom_Click() LblAffichage.Caption = "Mon nom est Personne." End Sub
Dans une programmation plus avance on pourra crire du code non li des vnements dans un module BASIC qui pourra tre rutilis pour un autre projet.
Prparer un dossier qui contiendra l'ensemble du projet (plusieurs fichiers). Dessin de l'interface graphique selon les fonctionnalits dsires. Projet multi-fentres fixer la feuille de dmarrage ou procdure Main(). Dresser la table des proprits essentielles. Enregistrer dans le dossier prvu cet effet.
Implantation du code
N.B. Les objets ragissent divers vnements : Click, MouseUp, MouseDown, Change etc. Pour implanter le code (suite d'instructions produisant des actions prdfinies) li un vnement il suffit d'oprer un double-clic sur l'objet qui dclenche cet vnement. Ne pas oublier d'arrter un programme sinon toute correction est impossible (notamment pour un programme qui boucle)
Syntaxe :
Dim <NomVariable> As <Type>
Pour la lisibilit du code on peut les commenter aprs une apostrophe ( ) Exemples :
Dim Taux As Single Taux de la TVA Dim Rponse As String Mot propos par le joueur
Pour viter tout problme il est prfrable dinitialiser les variables dclares.
Compteur = 0 Taux = 20,6
Cest un simple message affich dans une bote agrmente dun bouton OK. En fait cest plutt une fonction dont la syntaxe est beaucoup plus complexe (voir laide en ligne de VB - menu ? la droite de la barre des menus).
Le langage Basic utilise 7 types de donnes dont les plus utiliss sont le type String (chane de caractres), le type Integer (entier relatif) et le type Single (dcimal).
Exemple :
Global MotInitial As String premier mot traiter
1. Sur une seule ligne : If condition Then instruction1 [Else instruction2] Condition est une expression dont la valeur est boolenne (True ou False).
Si cette expression est une valeur numrique, la valeur 0 (zro) correspond False et toute autre valeur correspond True. Exemple :
If Moyenne >= 10 Then Dcision = "Admis" Else Dcision = "Refus"
Alors la variable Valeur contient une donne du mme type que sa dclaration (String, Integer etc.) ou du type de la valeur entre ( viter)
NombrePropos = InputBox("Quelle est votre proposition ?")
Alors la variable NombrePropos contient un Integer si elle a t dclare Integer. Sa syntaxe complte est aussi assez dlicate (voir laide en ligne de VB).
Exemple :
If Moyenne >= 10 Then Admis = Admis + 1 MsgBox("Candidat admis")
Structure conditionnelle
Else
Les instructions excuter peuvent dpendre d'une condition. Il faut alors utiliser une structure dcisionnelle qui oriente le droulement du programme vers des blocs d'instructions dtermins. C'est la structure If Then Else End If
Plusieurs structures dcisionnelles permettent ces traitements. Exemple : Il s'agit d'utiliser la structure la plus adapte au problme rsoudre.
If NombrePropos > NombreATrouver Then
Exemples :
o o o o Traitement d'un mot de passe. Essai de la part d'un joueur. Comptage des bonnes rponses. Choix d'un niveau de jeu.
MsgBox("Votre nombre est trop grand !") Essai = Essai + 1 Else MsgBox("Votre nombre est trop petit !") Essai = Essai + 1 End If ' Essayez de trouver ce qui manque dans ce test !
False). Si cette expression est une valeur numrique, la valeur 0 (zro) correspond False et toute autre valeur correspond True. Exemple : If MotDePasse <> "zizou" Then End 'assez brutal!
Exemple :
If NombrePropos > NombreATrouver Then MsgBox("Votre nombre est trop grand !") Else If NombrePropos < NombreATrouver Then MsgBox("Votre nombre est trop petit !") Else MsgBox("Gagn !") End If End If ' Essayez de trouver ce qui manque cette fois !
[Case Else Instructions] End Select ListeValeurs peut tre : - une suite de valeurs : 1, 3, 5, 7, 9 - une fourchette : 0 To 9 - une plage : Is >= 10 Une seule Expression (ou une simple variable) est teste au dbut puis est compare avec les listes de valeurs. A la premire concordance les instructions correspondantes sont excutes puis le programme sort de la structure. Si aucune concordance nest trouve les instructions place aprs le Else sont excutes. Exemple :
Select Case CodeASCIICaractre Case 65, 69, 73, 79, 85 MsgBox(" Cest une voyelle ") Case 66 To 90 MsgBox(" Cest une consonne ") Case Else MsgBox(" Ce nest pas une lettre ") End Select ' Essayez de trouver ce qui ne va pas dans ce test !
Au-del de 3 possibilits on a besoin d'une autre structure qui peut grer plusieurs cas.
Structure Iif
C'est exactement la fonction IF d'EXCEL. Syntaxe : IIf (Condition, ValeurSiVrai, ValeurSiFaux) Exemple :
Dim Note As Single Dim Rponse As String Note = InputBox (" Tapez votre note ")
Le nombre de valeurs de types identiques est dclarer entre parenthses. Exemple 1 : Dim TabTemp(12) As Single
Numro Temprature
1 6
2 5,5
3 7
4 11,5
5 15
65 A
66 B
67 C
89 Y
90 Z
Il existe dautres outils dcisionnels (Switch, With, Choose ...) qui ne sont pas ncessaires pour un module de niveau 1.
On dispose d'une structure de donnes appele Tableau qui permet de conserver dans une seule "entit" plusieurs valeurs de mme type. Le nom du tableau est une variable qu'il est recommand de prfixer par Tab.
Next [Compteur]
Le test est effectu au dbut de la boucle. La variable numrique Compteur est incrmente chaque fin de boucle du nombre indiqu par lincrment. Si lincrment nest pas spcifi il est fix 1. Si la valeur de Fin est infrieure la valeur de Dbut lincrment est ngatif. La valeur de Compteur peut tre utilise (par exemple pour numroter le passage dans la boucle) mais ne doit pas tre modifie dans le corps de la boucle. Exemple :
For i = 1 To 50 TabInitial(i) = 0 Initialisation de chaque case 0 Next i
Dim TabTirageLoto(6) As Integer Dim Compteur As Integer For Compteur = 1 To 6 TabTirageLoto (Compteur)=Rnd * 48 + 1 Next Compteur
Exemple 2 :
Exemple :
Public Sub SaisieTemprature() Temprature = InputBox("Taper une temprature") Somme = Somme + Temprature End Sub 'Cela prsuppose une dclaration initiale des variables publiques 'Temprature et Somme.
Cette procdure sera excute chaque appel par son nom : SaisieTemprature.
La dclaration d'un tableau ne "supporte" pas le mot rserv Public. Il faudra alors utiliser le mot rserv Dim mme si c'est une dclaration publique. Exemple :
Dim TabNotes(5) As Single Ce tableau sera utilisable dans 'toutes les procdures vnementielles de la feuille.
Si une procdure non-vnementielle est dclare avant toute procdure vnementielle par l'instruction Public elle sera utilisable dans toutes les proc. ev. de la feuille.
Si le nombre de passages dans la boucle est inconnu au dpart, mais dpend d'une condition dont la ralisation est imprvisible cette structure n'est pas adapte.
Exemple 1 : Demander le mot de passe tant que la rponse n'est pas le bon mot de passe. Demander le mot de passe jusqu' ce que la rponse soit le bon mot de passe. Exemple 2 : Demander la saisie d'une note tant que la rponse n'est pas un nombre entre 0 et 20. Demander la saisie d'une note jusqu' ce que la rponse soit un nombre entre 0 et 20.
Exemple :
Do While MotPropos <> MotDePasse MotPropos = InputBox("Donnez votre mot de passe") Loop
Cela prsuppose MotPropos initialis par une valeur autre que MotDePasse (par exemple la valeur par dfaut ""). Syntaxe deuxime version :
Do Instructions [... Exit Do] Do While Condition Instructions [... Exit Do] [Instructions] Loop [Instructions] Loop While Condition
La condition est alors teste la fin de la boucle. Avec While (tant que) la boucle est rpte tant que la condition est vraie. Les instructions de la boucle sont donc excutes au moins une fois. Exemple :
Do MotPropos = InputBox("Donnez votre mot de passe") Loop While MotPropos <> MotDePasse
La condition est ici teste au dbut c'est dire lentre de la boucle. Avec While (tant que) la boucle est rpte tant que la condition est vraie. Si la condition nest pas vraie au dpart les instructions de la boucle ne sont pas excutes.
La condition est alors teste la fin de la boucle. Les instructions de la boucle sont donc excutes au moins une fois.
La condition est ici teste au dbut c'est dire lentre de la boucle. Avec Until (jusqu') la boucle est rpte jusqu' ce que la condition soit vraie. Si la condition est vraie au dpart les instructions de la boucle ne sont pas excutes. Exemple :
Do Until MotPropos = MotDePasse MotPropos = InputBox("Donnez votre mot de passe") Loop
Avec Until (jusqu') la boucle est rpte jusqu' ce que la condition soit vraie. Exemple :
Do MotPropos = InputBox("Donnez votre mot de passe") Loop Until MotPropos = MotDePasse
Cela prsuppose MotPropos initialis par une valeur autre que MotDePasse (par exemple la valeur par dfaut "").
Conclusion
Selon le problme traiter vous aurez le choix entre ces diffrentes structures de contrle. Il s'agira de choisir sinon la plus lgante du moins celle qui ne provoquera pas de disfonctionnement de votre programme.
' Trouver ce qui ne va pas dans les exemples suivants :
Exemple1 :
Dim MotPropos, Rponse As String Rponse = "Titanic" Do MotPropos = InputBox("Donnez votre rponse") Loop While MotPropos = Rponse
Exemple2 :
For Each Cellule In TabHasard Dim Note As Single Cellule = Rnd * 100 + 1 Do Until Note >= 0 And Note <= 20 Next For Each Cellule In TabHasard Rponse = Rponse & Cellule & " Next MsgBox (Rponse) " Loop Note = InputBox("Taper une note entre 0 et 20")
A retenir
Integer : de -32 768 32 767 Long : de -2 147 483 648 2 147 483 647 Single : dcimaux en simple prcision : 39 chiffres significatifs Double : dcimaux en double prcision : plus de 300 chiffres significatifs ! String : de 0 65 535 octets Variant : de type nombre ou texte selon l'affectation faite
La variable contient alors une chane de longueur variable selon l'affectation qui suivra. Exemple 2 :
Dim Lettre As String * 1
La variable contient alors une chane de longueur 1 c'est dire un seul caractre. Exemple 3 :
Dim Adresse As String * 30
La variable contient alors une chane de longueur 30. Si l'on n'affecte que 18 caractres dans une telle chane, le reste est rempli d'espaces. Si l'on affecte plus de 30 caractres le surplus est tronqu
Derniers conseils
Privilgier une tude descendante : du gnral au particulier. Rflchir la structure des donnes la plus approprie. Par exemple pour le jeu du PENDU utiliser un tableau TabTitres(1 To 10, 1 To 3) As String qui contiendra :
1. En ligne 1 les titres des films 2. En ligne 2 les squelettes (*******) 3. En ligne 3 une aide sous forme de texte ("C'est un western")
Brandon Heat
Initialiser les variables mme si VB le fait dans certains cas. Si ncessaire travailler sous forme de procdures publiques utilisables dans toute la feuille. Dfinir une interface utilisateur complte. Par exemple pour le jeu du PENDU prvoir un bouton pour "Ajouter une lettre" et un autre pour "Proposer une rponse".
Commenter le programme pour qu'il soit plus comprhensible en vue de modifications ultrieures et le rdiger clairement. Enfin : que le programme "Tourne" avant de soigner sa forme.