Mis à jour le mercredi 20 décembre 2017
  • 20 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Conditions et boucles conditionnelles

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

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 codeIf MaVariable = 10 Then, ce qui se trouve en dessous ne sera exécuté que si la valeur deMaVariableest é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 unSubou unModule, 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.

SiMaVariableest égale à 10, il metMaVariableà 5.
Exactement !

Mais si tu metsMaVariableà 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 duIfque 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. LeElsedoit être placé dans une boucleIf, donc entre leThenet leEnd 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 leElseIf.

Fonctionnement de ElseIf
Fonctionnement de ElseIf

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

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 vuIf,ElseIfetElse.

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 lesSelectdeviennent 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. LeCase Else, ici aussi, prend en compte toutes les autres possibilités.

Petites astuces avecSelect

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

Non, une petite astuce duSelectest de rassembler toutes les valeurs en un seulCase. 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 deWhile.

« 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, leWhileva vérifier que le booléen est vrai.

La syntaxe est similaire à celle duIfde 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'instructionWhile, vérifie que la condition est vraie et, si c'est le cas, entre dans leWhile, puis exécute les lignes qui se trouvent à l'intérieur ; il arrive ensuite auEnd Whileet retourne auWhile. Cela tant que la condition est vraie.

Tu parlais de booléens…

Eh oui, lorsque vous écrivezMaVariable = 10, le programme va faire un petit calcul dans son coin afin de vérifier que la valeur deMaVariableest 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 duWhile, leDo 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 bouclesWhile,IfetSelect. Une dernière pour la route ?

For

« For », mot anglais traduisible par « pour »

Forest indissociable de sonTo, comme unIfa sonThen(sauf cas particuliers, tellement particuliers que vous ne les utiliserez pas dans l'immédiat :) ).

Et telIf,For Toa unNext(qui correspond à peu près auEnd 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'écrirex += 1. Pas besoin de « = », cette instruction seule remplacex = x + 1.
Tant que j'y suis,x -= 1remplacex = x - 1.

La boucle sera parcourue à dix reprises. Eh bien,Forremplace 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. LeNextcorrespond à « 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 duFor, 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 auNextà 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 unWhiletant 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 unbooleandans la condition, il est inutile d'ajouterIf 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 : unWhile not = 10correspond à unWhile <> 10.

Et puis ?

Un second mot permet d'ordonner à une boucle d'attendre plusieurs conditions : ce cher ami s'appelleAnd. Il faut que toutes les conditions reliées parAndsoient 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 estOr.
Ce mot permet de signifier « soit une condition, soit l'autre ».

Voici un exemple dans lequelOrest 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 « siMaVariableest comprise entre 1 et 9 ou si elle est égale à 15 ».

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

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

  • Elsesignifie « sinon », on l'utilise avecIfpour couvrir les cas où la condition ne sera pas vérifiée.

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

  • Forpermet de boucler un certain nombre de fois.

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