Apprenez à programmer en VB .NET

Apprenez à programmer en VB .NET

Mis à jour le lundi 24 juin 2013

Une boucle conditionnelle est quelque chose de fort utile et courant en programmation. Cela permet d'effectuer une action si, et seulement si, une condition est vérifiée. Par exemple vous voulez que votre programme dise « bonne nuit » s'il est entre 22 h et 6 h. Eh bien, c'est précisément dans ce cas de figure que les boucles conditionnelles trouvent leur utilité.

Les boucles conditionnelles

Retenez bien que les « mots » que le programme comprend et utilise sont anglais et ont donc une traduction qui peut vous aider à vous rappeler à quoi ils servent.

Aperçu des différentes boucles

« If », mot anglais traduisible par « si »

Attaquons avec la boucle la plus simple, mais non sans intérêt : If.

Une ligne commençant par If est toujours terminée par Then, ce qui signifie « Si, alors ». C'est entre ces deux mots que vous placez la condition souhaitée.

Donc, si j'écris le code If MaVariable = 10 Then, ce qui se trouve en dessous ne sera exécuté que si la valeur de MaVariable est égale à 10. Regardez la figure suivante.

Code VB

If

MaVariable

= 10

Then

Français

Si

« MaVariable »

est égale à 10

alors

Fonctionnement du If
Fonctionnement du If

Comment cela, tout ce qui se trouve en dessous ? Tout le reste du programme ?

Eh bien oui, du moins jusqu'à ce qu'il rencontre End If, traduisible par « Fin si ». Comme pour un Sub ou un Module, une boucle est associée à sa fin correspondante.

If MaVariable = 10 Then
      MaVariable = 5
End If

Si vous avez bien compris, vous devriez être capables de m'expliquer l'utilité du code ci-dessus.

Si MaVariable est égale à 10, il met MaVariable à 5.
Exactement !

Mais si tu mets MaVariable à 5 dans la boucle, le programme ne va pas en sortir puisque ce n'est plus égal à 10 ?

Bonne observation. Eh bien, non, cela ne change rien : c'est en arrivant à la ligne du If que tout se joue. Ensuite, si la variable change, le programme ne s'en préoccupe plus.

« Else », mot anglais traduisible par « sinon »

« Sinon », il faut y penser parfois pour gérer toutes les éventualités. Le Else doit être placé dans une boucle If, donc entre le Then et le End If. Regardez la figure suivante.

Fonctionnement de Else
Fonctionnement de Else

La syntaxe est la suivante :

If MaVariable = 10 Then
    'Code exécuté si MaVariable = 10
Else
    'Code exécuté si MaVariable est différente de 10
End If

Code VB

Else

Français

Sinon

ElseIf

La figure suivante schématise le ElseIf.

Fonctionnement de ElseIf
Fonctionnement de ElseIf

Si vous voulez un cas particulier et non le reste des autres cas de votre condition, il existe le ElseIf.

Voici un exemple :

If MaVariable = 10 Then
    'Code exécuté si MaVariable = 10
ElseIf MaVariable = 5 Then
    'Code exécuté si MaVariable = 5
Else
    'Code exécuté si MaVariable est différente de 10 et de 5
End If

Code VB

ElseIf

Français

Sinon, si

If MaVariable = 10 Then
    If MaVariable2 = 1 Then
       'Code exécuté si MaVariable = 10 et MaVariable2 = 1
    Else
       'Code exécuté si MaVariable = 10 et MaVariable2 <> 1
    End If
ElseIf MaVariable = 5 Then
    If MaVariable2 = 2 Then
       'Code exécuté si MaVariable = 5 et MaVariable2 = 2
    End If
Else
       'Code exécuté si MaVariable est différente de 10 et de 5
End If

Select

Nous avons vu If, ElseIf et Else.

Mais pour ce qui est, par exemple, du cas d'un menu dans lequel vous avez 10 choix différents, comment faire ?

Une première façon de procéder serait la suivante :

If Choix = 1 Then
     Console.WriteLine("Vous avez choisi le menu n° 1")
ElseIf Choix = 2 Then
     Console.WriteLine("Vous avez choisi le menu n° 2")
ElseIf Choix = 3 Then
     Console.WriteLine("Vous avez choisi le menu n° 3")
ElseIf Choix = 4 Then
     Console.WriteLine("Vous avez choisi le menu n° 4")
ElseIf Choix = 5 Then
     Console.WriteLine("Vous avez choisi le menu n° 5")
ElseIf Choix = 6 Then
     Console.WriteLine("Vous avez choisi le menu n° 6")
ElseIf Choix = 7 Then
     Console.WriteLine("Vous avez choisi le menu n° 7")
ElseIf Choix = 8 Then
     Console.WriteLine("Vous avez choisi le menu n° 8")
ElseIf Choix = 9 Then
     Console.WriteLine("Vous avez choisi le menu n° 9")
ElseIf Choix = 10 Then
     Console.WriteLine("Vous avez choisi le menu n° 10")
Else
     Console.WriteLine("Le menu n'existe pas")
End If

Il s'agit de la méthode que je viens de vous expliquer (qui est tout à fait correcte, ne vous inquiétez pas).

Il faut néanmoins que vous sachiez que les programmeurs sont très fainéants, et ils ont trouvé sans cesse des moyens de se simplifier la vie. C'est donc dans le cas que nous venons d'évoquer que les Select deviennent indispensables, et grâce auxquels on simplifie le tout. La syntaxe se construit de la manière suivante :

Select Case MaVariable
      Case 1
          'Si MaVariable = 1
      Case 2
          'Si MaVariable = 2
      Case Else
          'Si MaVariable <> 1 et <> 2
   End Select

Code VB

Select

Case

MaVariable

Français

Sélectionne

dans quel cas

« MaVariable » vaut

Dans le même cas de figure, revoici notre menu :

Select Case Choix
            Case 1
                Console.WriteLine("Vous avez choisi le menu n° 1")
            Case 2
                Console.WriteLine("Vous avez choisi le menu n° 2")
            Case 3
                Console.WriteLine("Vous avez choisi le menu n° 3")
            Case 4
                Console.WriteLine("Vous avez choisi le menu n° 4")
            Case 5
                Console.WriteLine("Vous avez choisi le menu n° 5")
            Case 6
                Console.WriteLine("Vous avez choisi le menu n° 6")
            Case 7
                Console.WriteLine("Vous avez choisi le menu n° 7")
            Case 8
                Console.WriteLine("Vous avez choisi le menu n° 8")
            Case 9
                Console.WriteLine("Vous avez choisi le menu n° 9")
            Case 10
                Console.WriteLine("Vous avez choisi le menu n° 10")
            Case Else
                Console.WriteLine("Le menu n'existe pas")
        End Select

Pour que vous compreniez bien, voici un petit schéma en figure suivante.

Fonctionnement de Select
Fonctionnement de Select

Ce code correspond exactement à celui qui se trouve plus haut. Le Case Else, ici aussi, prend en compte toutes les autres possibilités.

Petites astuces avec Select

Si je souhaite que pour les valeurs 3, 4 et 5 il se passe la même action, dois-je écrire trois Case avec la même instruction ?

Non, une petite astuce du Select est de rassembler toutes les valeurs en un seul Case. Par exemple, le code suivant…

Select Case Choix
       Case 3,4,5
            'Choix 3, 4 et 5
End Select

… est identique à celui-ci :

Select Case Choix
       Case 3
            'Choix 3, 4 et 5
       Case 4
            'Choix 3, 4 et 5
       Case 5
            'Choix 3, 4 et 5
End Select

Astuce également valable pour de grands intervalles : le code suivant…

Select Case Choix
       Case 5 to 10
            'Choix 5 à 10
End Select

… correspond à ceci :

Select Case Choix
       Case 5
            'Choix 5 à 10
       Case 6
            'Choix 5 à 10
       Case 7
            'Choix 5 à 10
       Case 8
            'Choix 5 à 10
       Case 9
            'Choix 5 à 10
       Case 10
            'Choix 5 à 10
End Select

Voilà, j'espère que ces différentes formes vous seront utiles. :p

While

À présent, nous allons réellement aborder le terme de « boucle ».

Tu veux dire qu'on ne les utilisait pas encore ?

Non, ce ne sont pas à proprement parler des boucles ; en programmation, on appelle boucle un espace dans lequel le programme reste pendant un temps choisi, c'est-à-dire qu'il tourne en rond.

On va tout de suite étudier le cas de While.

« While », mot anglais traduisible par « tant que »

Vu la traduction du mot « while », vous devriez vous attendre à ce que va faire notre boucle.
Elle va effectivement « tourner » tant que la condition est vraie.

Retenez bien ce « vrai ». Vous souvenez-vous du concept des booléens que nous avons étudié dans le chapitre sur les variables ? Eh bien voilà, dans ce cas-ci, le While va vérifier que le booléen est vrai.

La syntaxe est similaire à celle du If de tout à l'heure. Voyons cela !

While MaVariable = 10
    'Exécuté tant que MaVariable = 10
End While

Code VB

While

MaVariable

= 10

Français

Tant que

« MaVariable »

est égale à 10

Voici donc un schéma à la figure suivante pour vous aider à comprendre.

Fonctionnement de While
Fonctionnement de While

En clair, le programme arrive au niveau de l'instruction While, vérifie que la condition est vraie et, si c'est le cas, entre dans le While, puis exécute les lignes qui se trouvent à l'intérieur ; il arrive ensuite au End While et retourne au While. Cela tant que la condition est vraie.

Tu parlais de booléens…

Eh oui, lorsque vous écrivez MaVariable = 10, le programme va faire un petit calcul dans son coin afin de vérifier que la valeur de MaVariable est bien égale à 10 ; si c'est le cas, il transforme cela en un booléen de type Vrai.
Il s'agit du même principe que pour les autres boucles conditionnelles (If, Else, etc.).

Et si je veux passer au moins une fois dans la boucle même si la condition est fausse, comment dois-je faire ?

Oh, mais quelle coïncidence, une boucle spéciale existe pour un tel cas ! (C'est beau le hasard, parfois, n'est-ce pas ? :p )

Do While

À l'instar du While, le Do While (traduisible par « faire tant que ») passe au moins une fois dans la boucle. Regardez la figure suivante.

Fonctionnement de Do
Fonctionnement de Do
Do
   'Instruction exécutée au moins une fois
Loop While MaVariable = 10

Un code de ce type…

Do

Loop Until MaVariable = 10

… revient à écrire ceci :

Do 

Loop While MaVariable <> 10

J'espère ne pas avoir été trop brusque… :D

Vous êtes désormais en mesure d'utiliser les boucles While, If et Select. Une dernière pour la route ?

For

« For », mot anglais traduisible par « pour »

For est indissociable de son To, comme un If a son Then (sauf cas particuliers, tellement particuliers que vous ne les utiliserez pas dans l'immédiat :) ).

Et tel If, For To a un Next (qui correspond à peu près au End If).

Je m'explique. Si je souhaite effectuer une instruction dix fois de suite, je vais écrire ceci :

Dim x As Integer = 0

While x <> 10
   'Instruction à exécuter 10 fois
   x = x + 1  'Augmente x de 1
End While

Je profite de cet exemple pour vous signaler que l'incrémentation d'une variable de 1 peut s'écrire x += 1. Pas besoin de « = », cette instruction seule remplace x = x + 1.
Tant que j'y suis, x -= 1 remplace x = x - 1.

La boucle sera parcourue à dix reprises. Eh bien, For remplace ce code par celui-ci :

Dim x As Integer
For x = 1 to 10
   'Instruction à exécuter 10 fois
Next

Les deux codes effectueront la même chose. Le Next correspond à « ajoute 1 à ma variable ».

Code VB

For

MaVariable

= 1

To

10

Français

Pour

« MaVariable »

de 1

jusqu'à

10

  • On peut déclarer les variables dans la ligne du For, de cette manière :

    For x As Integer = 1 to 10
         'Instruction à exécuter 10 fois
    Next

    Cela reviendra de nouveau au même.

  • Si vous voulez ajouter 2 au Next à la place de 1 (par défaut) :

    For x As Integer = 1 to 10 step 2
         'Instruction à exécuter 5 fois
    Next

Mieux comprendre et utiliser les boucles

Opérateurs

Vous savez maintenant vous servir des grands types de boucles. Rassurez-vous, tout au long du tutoriel, je vous apprendrai d'autres choses en temps voulu.

Je voulais vous donner de petits éclaircissements à propos des boucles. Pour valider la condition d'une boucle, il existe des opérateurs :

Symbole

Fonction

=

Égal

<>

Différent

>

Strictement supérieur

<

Strictement inférieur

<=

Inférieur ou égal

>=

Supérieur ou égal

Grâce à ces opérateurs, vous allez déjà pouvoir bien exploiter les boucles.
Comment les utiliser ? C'est très simple.

Si vous voulez exécuter un While tant que « x » est plus petit que 10 :

While x < 10

Voilà !

Explication des boucles

Second élément : une boucle est considérée comme vraie si le booléen correspondant est vrai (souvenez-vous du booléen, un type qui ne peut être que vrai ou faux).

En gros, si j'écris le code suivant :

Dim x As Integer = 0
If x = 10 Then
End If

… c'est comme si j'écrivais ceci :

Dim x As Integer = 0
Dim b As Boolean = false
b = (x = 10)
If b Then
End If

Eh oui, quelle découverte ! Si je place un boolean dans la condition, il est inutile d'ajouter If b = true Then.

J'espère vous avoir éclairés… et non enfoncés ! :euh:

And, or, not

Nous pouvons également utiliser des mots dans les boucles !

Non, pas question !

Commençons donc par le mot-clé not, dont le rôle est de préciser à la boucle d'attendre l'inverse.
Exemple : un While not = 10 correspond à un While <> 10.

Et puis ?

Un second mot permet d'ordonner à une boucle d'attendre plusieurs conditions : ce cher ami s'appelle And. Il faut que toutes les conditions reliées par And soient vérifiées.

While MaVariable >= 0 And MaVariable <= 10

Ce code tournera tant que la variable est comprise entre 0 et 10.

Faites attention à rester logiques dans vos conditions :

While MaVariable = 0 And MaVariable = 10

Le code précédent est totalement impossible, votre condition ne pourra donc jamais être vraie…

Ou bien ?

Le dernier mot que je vais vous apprendre pour le moment est Or.
Ce mot permet de signifier « soit une condition, soit l'autre ».

Voici un exemple dans lequel Or est impliqué :

While MaVariable >= 10 Or MaVariable = 0

Cette boucle sera exécutée tant que la variable est supérieure ou égale à 10, ou égale à 0.

Ensemble, mes amis !

Eh oui, ces mots peuvent s'additionner, mais attention au sens.

While MaVariable > 0 And not MaVariable >= 10 Or MaVariable = 15

Ce code se comprend mieux avec des parenthèses : (MaVariable > 0 et non MaVariable >= 10) ou MaVariable = 15.
Donc, cela se traduit par « si MaVariable est comprise entre 1 et 10 ou si elle est égale à 15 ».

J'espère avoir été suffisamment compréhensible. :p

  • If signifie « si », on s'en sert pour exécuter une série d'instructions uniquement si une condition est vérifiée.

  • Else signifie « sinon », on l'utilise avec If pour couvrir les cas où la condition ne sera pas vérifiée.

  • While et Until permettent d'effectuer sans arrêt une série d'instructions tant que la condition sera, respectivement, vraie et fausse.

  • For permet de boucler un certain nombre de fois.

Exemple de certificat de réussite
Exemple de certificat de réussite