mercredi 26 mars 2014

6 - Les conditions et les boucles conditionnelles

0 commentaires


Dans un programme, tout le code ne s'exécute pas forcément. Vous pouvez faire s'exécuter certaines parties du code si des conditions sont remplies.
La route me semble être une bonne analogie. Il n'y a pas qu'un seul chemin à emprunter pour se rendre à un endroit. Suivant le lieu où vous désirez vous rendre, vous n'allez pas faire la même chose. Eh bien ici c'est pareil ! ;)

if

"if" est un mot anglais qui signifie "si". C'est un mot-clef du langage C# qui permet de n'effectuer du code que dans certaines conditions.
La syntaxe est la suivante :
1if (condition)
2{
3    // Code à exécuter si la condition est satisfaite.
4}

condition est une expression qui retourne un booléen : soit true, soit false :
  • true : le code entre les accolades est exécuté.
  • false : le code entre les accolades n'est pas exécuté.
Commenter judicieusement son code est un travail subtil. Il faut savoir expliquer ce qui est susceptible de ne pas être compris par un relecteur, tout en ne tombant pas dans l'excès (c'est-à-dire ne pas commenter chaque ligne, ou du code basique).

else if

"else if" veut dire "sinon, si". Placé après un if, il permet d'exécuter du code qui ne remplit pas la première condition, mais la deuxième.
La syntaxe est la suivante :
1if (condition1)
2{
3    // Code à exécuter si la condition est satisfaite.
4}
5else if (condition2)
6{
7    // Code à exécuter si la première condition n'est pas satisfaite mais que la deuxième l'est.
8}

Vous pouvez mettre autant de else if que vous voulez.

else

"else" signifie "sinon". Placé après un if simple, ou un if et un (ou plusieurs) else if, il permet d'exécuter le code qui ne satisfait aucune condition précédente.
La syntaxe est la suivante :
1if (condition)
2{
3    // Code à exécuter si la condition est satisfaite.
4}
5else
6{
7    // Code à exécuter si la première condition n'est pas satisfaite.
8}

Les trois expressions peuvent se combiner. Voici un exemple où age est un entier représentant l'âge d'un client à un restaurant :
1if (age < 4)
2{
3    // gratuit
4    // 0 < age < 4
5}
6else if (age < 12)
7{
8    // Tarif enfant
9    // 4 <= age < 12
10    // en effet, age n'est pas strictement inférieur à 4, et est strictement inférieur à 12.
11}
12else if (age < 18)
13{
14    // Tarif ado
15    // 12 <= age < 18
16}
17else
18{
19    // Tarif adulte
20    // 18 <= age
21}
22
23// suite du code

Il permet de remplacer if et sa famille pour étudier l'égalité de plusieurs termes.
Voici un exemple avec if où level est un entier :
1if (level == 1)
2{
3    // niveau 1
4}
5else if (level == 2)
6{
7    // niveau 2
8}
9else
10{
11    // autre niveau
12}
Voici ce que ça donne avec switch :
1switch (level)
2{
3    case 1:
4    {
5        // niveau 1
6    }
7    break;
8
9    case 2:
10    {
11        // niveau 2
12    }
13    break;
14
15    default:
16    {
17        // autre niveau
18    }
19    break;
20}
Là-aussi, vous pouvez mettre autant de case que vous voulez.
Les boucles conditionnelles permettent de répéter des actions tant que certaines conditions sont satisfaites. Dès lors que ces dernières ne le sont plus, le programme "sort de la boucle" et exécute le code qui suit.

while

"while" veut dire "tant que".
La syntaxe est :
1while (condition)
2{
3    // Code qui s'exécute tant que la condition est satisfaite.
4}
1while (condition)
2{
3    if (needToExit)
4    {
5        break;
6    }
7
8    // Code à exécuter en boucle
9}
Une fois que break est exécuté, plus aucune ligne de code à l'intérieur des accolades de la boucle n'est exécutée. Ainsi la ligne qui s'exécute après le break est celle située juste après l'accolade fermante.
Puisqu'un exemple permet toujours de mieux comprendre, je vous propose un bout de code pour faire un compte à rebours qui débute à 100 :
1int i = 100;
2while (i > 0)
3{
4    // On décrémente i
5    i--;
6}

do ... while

L'équivalent français serait "fait ... tant que". Cela permet d'exécuter les instructions une première fois obligatoirement, et de répéter l'exécution si besoin est.
La syntaxe est :
1do
2{
3    // Code qui s'exécute une 1ère fois obligatoirement et ensuite en boucle tant que la condition est satisfaite.
4}
5while (condition);


C'est un while compact.
Regardez ce que devient notre compte à rebours avec for :
1int i;
2for (i = 100; i > 0; i--)
3{
4}
On peut tout aussi bien écrire :
1for (int i = 100; i > 0; i--)
2{
3}

continue

À la différence de break;continue; ne s'utilise pas pour terminer la boucle, mais pour passer directement à l'élément suivant. Voici sans plus attendre un exemple, qui vous apportera plus qu'un long discours :
1for (int i = 1; i <= 10; i++)
2{
3    if (i < 9)
4    {
5        continue;
6    }
7    // La ligne suivante n'est pas exécutée si i est strictement inférieur à 9.
8    Console.WriteLine(i);
9}
Vous verrez donc :
9
10
Notez bien que la boucle ne s'arrête pas, seules les instructions relatives à l'élément en cours ne sont plus exécutées.
Les tests de conditions sont vraiment très courants ils sont présents même dans les morceaux de code les plus simples. Ce chapitre est donc un incontournable de plus !













Leave a Reply