Cours de Visual Basic


Le Visual Basic c'est un nom de langage de programmation de haut niveau, c'est a dire éloigné de la machine (voir dans le manuel, partie 3, sous section programmation de ce site).
Le mot en 1ere posision "Visual" vient de l'anglais signifiant "Visuel" (pas compliquer à deviner). Ce langage est visuel du fait que pour créer des fenêtres windows (car le VB se programme sous windows et ne peux créér que des programmes conçus pour se dernier fenêtrés ou non) il faut utiliser la souris et poser dans l'interface de création de programmes les controles qui composent la fenêtre.
le basic viens du langage du meme nom qui a été inventé en 1964 (voir la page "apprendre: cours de Qbasic" de ce site) par 2 professeurs. basic est en fait un sigle qui signifie Begineers All puprpose Symbolic Instruction Code, c'est un peu tiré par les cheuveux pour créer le mot: "basic" ce qui signifie en francais basique (nooon, sérieux ?).
Bref, ce langage à beau être basique ce n'est pas pour ca que l'on ne peux rien faire avec. On entend souvent dire: "le basic c'est lent" mais ca dépend si on sais optimiser son code ca peux être très puissant il suffit de savoir programmer.

  • L'editeur:

    L'IDE Integrated Developpement Interface de l'anglais: Interface de développement integrée du langage basic s'appelle: Microsoft Visual Basic (qui l'eut cru?) version 6.0 pour ce tutoriel . Ce logiciel coutait 150€ TTC (version initiation) à l'epoque ou il se vendait, maintenant on ne trouve plus que VB.NET dans le commerce.

  • Le premier programme:

    On voit tres souvent des "Hello world" en programmation quand on débute, car ce nom est donné aux 1ers programmes que l'on execute dans notre langage de predilection instantané (c'est à dire seulement pour le moment, car ce n'est pas le seul langage qui existe au monde, mais surement le plus populaire, bien sur on dit: "oui mais le C++ ca c'est de la vrai programmation" mais le C++ c'est un langage bas niveau qui n'apporte que des problèmes de temps de développement vu la complexité du langage rien que pour afficher une fenêtre windows, et en Visual Basic on peux développer des applications bien plus rapidement et facilement que en C++ avec une efficacité apres compilation tout aussi agreable. bref je me perd revenons au VB...).
    Notre Hello World a nous sera seulement une fenetre avec un contrôle au milieu avec ecrit: "salut la dedans".
    Pour ce faire il suffit de lancer un nouveau projet:

    30ko
    comme vous le voyez ici, cette fenetre n'apparait qu'a l'ouverture de VB, vous devez choisir nouveau projet: "Exe standart" puis ouvrir.
    ensuite vous obtenez ceci:
    50ko
    vous avez maintenant votre fenêtre principale du programme.
    il faut maintenant mettre un label dessus pour afficher "salut la dedans" pour ca clickez dans la liste a gauche sur le controle label entouré de rouge et marqué par une fleche sur l'image ci-dessus, ensuite vous pouvez le poser sur votre fenetre en faisant un double click dessus ou simplement un click+glisse&lache (drag and drop marqué par la flèche jaune), et grâce aux points de redimensionnement vous pouvez lui donner la taille voulue.
    ce controle label est un objet (puisque VB est un langage orienté objet) qui a des proriétés et des methodes. une methode c'est une action, et une propriété c'est une qualité qui a une valeur.
    On y accède comme ceci dans le code:

    NomDuLabel1.ProprieteAAcceder = ValeurVoulue
    
    ce qui peux donner en pratique (dans notre exemple le nom par defaut du 1er label que l'on pose est label1 donc:
    Lebel1.caption = "Salut la dedans"
    
    ceci est une ligne de programme, voila sa décomposition:

    elle met la propriété caption du controle label1 sur "salut la dedans".
    La proriété caption est ce qui est visible du controle label, donc ce que l'on pourra lire en execution. remarquez, il etait aussi possible de changer cette proriété dans l'interface de programmation en création (en création <> en execution (le signe <> est le signe "est different de")). Vous pouvez voir dans la capture du paragraphe ci apres comment changer la propriété en création. le texte entouré en vert est la valeur et le texte pointé par la fleche rouge est la propriété.

    dans cette capture d'écran j'ai tapé cette ligne dans un évenement, c'est l'évenement form1_Load il s'execute au démarrage du programme quand la fenêtre (form) se charge (load).

  • L'execution

    pour lancer le programme une fois que vous avez obtenu ceci:
    40ko
    il suffit de taper sur ou alors de lancer en cliquant sur le bouton "executer" en forme de play de magnetophone sur la barre d'outil de L'IDE en haut au milieu (entouré en rouge sur la capture), sans avoir besoin d'enregistrer le projet.
    Pour enregistrer un projet vous devez absolument créér un nouveau répertoire ou vous voulez puis ensuite d'enregistrer le projet dedans, il y aura: un fichier .vbp (projet) un fichier .frm (feuille (fenetre)) et un fichier .frx (ressource pour la fenetre). Plus vos projets deviennent complexes plus il y a de fichiers, donc pour ne rien melanger, utilisez les repertoires.

  • C'est bien beau mais la programmation dans tout ca ?

    En effet, ca programmation c'est comme en Qbasic mais il ne faut pas penser "plein ecran dos" mais "fenetre windows et evenements".
    Les evenements, sont representés sous forme de procedures. Les procedures sont des bout de programmes qui sont appellées des nombres de fois indefinis et on les appelle des Sub. on peux aussi faire des Fonctions ou des Gosubs dans les sub, et appeller d'autre sub a partir d'une sub ou d'une fonction et une fonction ou une sub peut s'appeller elle meme (on appelle ca la recursivité).

  • Le VB un langage evenementiel:

    En VB il n'y a pas de programme principal qui s'execute au demarrage (sauf en cas de programme sans fenetre dans ce cas c'est la sub main()) mais une fentre principale, et dans cette fenetre on peux intercepter des evenements.
    par exemple l'evenement Load, ce qui est tout a fait exploitable a notre niveau puisque on veut afficher "salut la dedans" dans la text box sans passer par l'IDE visuel (en création), on appelle ca changer les propriétés en executution.
    le code de la fenetre donnera ca, pour y acceder, double cliquez sur la fenetre:

    Private Sub Form_Load()
        Label1.Caption = "Salut la dedans"
    End Sub
    

    avec ca à l'execution le programme ecrira "salut la dedans" dans le controle label1.

    on peut aussi pour l'exemple gérer un evenement du controle label1, l'envenment Click qui ne s'enclenche que quand l'utilisateur clique sur le label1 (et donc le texte "salut la dedans"):
    pour acceder a la procedure de l'evenement double cliquez sur le controle label1. l'evenement Click est inscrit par defaut, mais vous pouvez tous les voir dans la liste déroulante en haut de la fenetre du code a droite.

    Private Sub Label1_Click()
      MsgBox "salut!"
      label1.caption = "on m'a changé !!"
    End Sub
    
    au lieu de vous expliquer le code, testez le !!

  • la pure programmation:

    maintenant je vous explique la programmation basic sans m'occuper de l'interface graphique, maintenant que vous savez faire des fenetres, vous savez comment afficher des resultats, et meme recupérez ceux de l'utilisateur. septique ? ok un dernier petit exemple pour récuperer un texte entré au clavier:
    pour ca vous devez mettre un objet TextBox symbolisé dans la barre d'outil par la case en creux avec fond blanc et "ab" ecrit dedan juste a droite du controle Label. Donc posez le sur la fenetre, puis ensuite insérez en un autre, mais cette fois de type CommandButton il se situe juste en dessous du controle TextBox (lisez les Infobulles). puis mettez le sur la fenetre en dessous du controle textbox, en creation vour pouvez changer la propriété caption du bouton pour ecrire dedans "OK" par exemple...
    ensuite vous double cliquez sur ce bouton, vous obtenez l'evennement click du bouton, puis tapez:

    Private Sub CommandButton1_Click()
    
    
     label1.caption = Text1.Text
    
    End Sub
    
    bien evidemment il faut avoir laissé notre bon vieux controle label sur la feuille, et quan vous cliquerz sur le bouton, ce que vous avez tapé (en execution) dans la boite de texte, s'affichera en texte a l'emplacement du controle label1.

    en programmation, il faut souvent retenir des valeurs qui peuvent etre tout le temps differente et changer, on appelle ca des variables, c'est comme une lettre en maths, on peut appeller x la variable définie sur R. en programmation on appellera x une variable d'un cetain type, ici le type Variant.

  • Les types de variable:

    -le type BOOLEAN qui ne peu contenir que "true" ou "false". pas de signe doit etre déclaré
    -le type BYTE qui ne peu contenir que des nombres entiers de 0 a 255. pas de signe doit etre déclaré
    -le type INTEGER qui ne contient que des nombres entier de -32768 a +32767. signe %
    -le type SINGLE qui contient des nombres a virgule avec des limites: signe !(-3,402823E38 et -1,401298E-45).
    -le type DOUBLE qui contient des nombres a virgule avec des limites: signe #(-1,79769313486232^308 et -4,94065645841247^-324).
    -le type CURENCY qui contient que des nombres a virgule fixe (4) de -922 000 milliards a +922 000 milliards. signe @
    -le type STRING qui est un type qui permet d'enregistrer des chaines de caracteres, comme le type de la propriété caption du controle label. signe$

    il en existe d'autre...

    Private Sub form_load()
      
      dim super as integer        ' ceci est un commentaire, l'apostrophe l'introduis
      dim mega,mega2 as string    ' mettre une virgule delare les 2 variable du meme type
      dim mega3 as string         ' on aurai tres bien pu mettre mega3 a la ligne du 
                                  ' dessus en separant d'une virgule
      dim fait as boolean         ' le seul moyen d'avoir une variable de ce type est
                                  ' de la declarer avec dim
    
    
      qqun$ = "je suis qqun"
      msgbox qqun$
      qqun$ = qqun$ & ", je suis moi"
      msgbox qqun$
      qqun$ = ""
      msgbox qqun$
      qqun$ = "c t 1 peu naz la boite vide"
      msgbox qqun$
    
      LaSubDefinieParLutilisateur
    
      super = 890
      mega = qqun$
      mega2 = "je suis le 2"
      mega3 = "je suis le 3"
      fait = false
    
      fait = not fait
      super = super + 500
      super = super - 500
      mega4$ = mega + " " + mega2 + " " & mega3
      msgbox "resultat:" & mega4 & " fait est " & fait & "super vaut" & str$(super) 
    
    End Sub
    
    Private Sub LaSubDefinieParLutilisateur()
      msgbox "moi je suis une sub"
    End Sub
    
    la seule chose a commenter serait la fonction str$, ce n'est pas une variable, donc si vous utilisez ce nom dans une variable, vous obtiensrez une erreur. Elle sert a convertir une variable chiffre, en chaine pour rendre l'affichage dans la msgbox d'un chiffre possible. remarquez, si il n'y avoit eu qu'elle, la convertion n'etait pas obligatoire.

    je vous laisse comprendre les effets de ce programme...

    (pour comprendre les boucles et autre structures comme les conditions, il est possible de vous referer au cours de Qbasic disponible sur ce meme site.)

  • Les boucles:

    Si vous souhaitez executer des instructions plusieurs fois, il ne faut pas les réécrirent, mais utiliser des boucles:

    par exemple pour dessiner un carré a l'aide de lignes sur une fenetre (exemple idiot mais c'est pour l'exemple) il faut se servir de variables et de boucles.

    for x% = 0 to 50
      form1.line (x%, 50)-(x%, 100), Qbcolor(4)
    next
    

    -explications:
    ce programme execute 51 fois l'instruction line.
    la variable x de type INTEGER va etre incrementée (augmentée de 1) a chaque passage de la boucle, et elle commence a 0. Dès qu'elle atteind 50 et que le programme est sur l'instruction "next", il va continuer et ne plus refaire la boucle.
    ici x% est aussi utilisé dans les instructions au milieu de la boucle. On s'en sert pour déplacer a chaque fois la ligne d'un pixel vers la droite (le repere commence en haut à gauche de la fenetre).
    -> ATTENTION: Visual Basic gere les coordonnées en twips par defaut, il faut regler pixel(3) dans les propriétés de la fenetre dans la zone "Echelle".
    la couleur de la ligne est définie a la fin. Windows attend une couleur RVB (couleur réele) mais pour l'exemple on ne voulait pas d'une grande precision alors on va utiliser la fonction qui simule l'effet des vieilles 16 couleurs du DOS avec QbColor le 4 correspond au rouge foncé.
    Attention a ne pas modifier la variable de controle de la boucle en son interieur, sauf si vous souhaitez un effet special.

  • pour sortir de la boucle avant l'heure:

    il faut utiliser l'instrucion Exit. Bien sur elle est presque tout le temps précédée d'une condition parce que executer une boucle qui s'arrete immediatement ca ne sert a rien.

    par exemple:

    for i% = 0 to 15000
      if i% = 80 then exit
    next
    
    cette boucle ne va pas tourner jusqu'au bout, elle va s'arreter a 80.

  • les boucles infinies

    une boucle infinie ou plutot a nombre d'iteration INDEFINI, exemple:

    Do
      a = MsgBox("on continue ?", vbQuestion + vbYesNo)
      If a = vbNo Then Exit Do
    Loop
    

    ou bien:

    Do
      a = MsgBox("on continue ?", vbQuestion + vbYesNo)
    Loop while a = vbyes
    

    ou bien:

    Do
      a = MsgBox("on continue ?", vbQuestion + vbYesNo)
      If a = vbNo Then Exit Do
    Loop until a = vbno
    

    Vous voyez qu'il y a beacoup de possibilités, et il en reste. Voila pourquoi on dit "langage" car comme dans une langue on peut dire une chose de plein de manieres differentes.

  • les autre type de boucle

    a part For Next et do loop il exite d'autre type, mais on ne les utilisent pas.
    je vais plutot développer la boucle for next:
    Pour faire un carré mais incomplet (avec des lignes espacées par exemple) on peut faire ca:

    for x% = 0 to 19
      line (x%*2, 0)-(x%*2, 40), rgb(0,0,0)
    next
    

    mais aussi

    for x% = 0 to 38 step 2
      line (x%, 0)-(x%, 40), 0
    next
    
  • les boucles imbriquées:

    c'est quand il y a plusieurs boucles qui se contiennent.

    for x% = 1 to 20
      for x% = 1 to 50
        pset (x%, y%),0
      next
    next
    
    la on devrait aussi obtenir un rectangle noir, car pset dessine un point, si on le fait balayer une surface grace a 2 coordonnées qui vont augmenter cela va créer un rectangle.

  • les conditions

    Vous en avez vu deux ou trois prototypes dans les boucles, elles servent a executer le programme de maniere differente en fonction d'informations variables.

    exemple:

    If Hour(Time) < 12 Then
      MsgBox "il est le matin"
    Else
      MsgBox "il n'est pas le matin"
    End If
    

    hour(time) renvoie l'heure du moment (entre 0 et 23) la condition "if" teste sa valeur, si elle est en dessous de 12 on affiche une boite de message, sinon une autre.
    exemple 2:

    If Hour(Time) < 12 Then
      MsgBox "il est le matin"
    ElseIf Hour(Time) >= 12 then
      MsgBox "il est l'apres-midi"
    End If
    

    ici le fonctionnement est le meme, mais la verification de la 2eme condition se fait grace a un "ElseIf", instruction qui permet un nombre illimité de verifications, attention si une verification fonctionne les autre ne seront pas verifiées ! (en partant du haut).

  • le Select Case:

    le select case ne peut agir que sur une seule variable contrairement au "If then else" qui peut en verifier plusieurs, exemple:

    t = hour(time)
    select case t
      case 0
        msgbox "minuit"
      case 1
        msgbox "1 heure"
      case 2 to 12
        msgbox "matin"
      case else
        msgbox "les autres heures (apres midi, soir)"
    end select
    

    vous comprenez surement !

  • les verifications complexes:

    quand on veut verifier des intervalles ou plusieurs possibilités, on utiliser les operateurs booléens, exemple:

    cinq = 5
    six = 6
    trois = 3
    neuf = 9
    
    if cinq <= 5 or six = 7 then
      'vrai
    endif
    

    ici le programme cherche si la variable appellee cinq est inferieure ou egale a 5 et si six est egale a 7 (ce qui est faux ici) mais avec un "ou (or)" il suffit d'une conditions verifiée pour ke tout la condition soit vraie.
    il existe d'autres operateurs: AND, NOT, XOR
    vous pouvez faire des recherche sur internet a booléen et vous aurez plus d'information.

    c'est tout pour aujourd'hui, en cas de question suplémentaires: lightness1024@numericable.fr


    Lightness1024! ProgrammatO EURL le 8/7/1
    retour