Différences entre les versions de « Programmation C++/Les structures de contrôles »

m
Orth, accolades (voir discussion).
m (Orth, accolades (voir discussion).)
if (''condition'') ''instruction''
 
;''condition'': Expression booléenne de la condition d'exécution.
;''instruction'': Une instruction ou un bloc d'instructions entre accolades exécuté si la condition est vraie.
Lorsqu'il n'y a qu'une ligne d'instructions conditionnelles, la paire d'accolades est conditionnelle, mais les omettre est dangereux.
 
=== Sémantique : ===
 
if (a > 10)
{
cout << "a est plus grand que 10" << endl;
 
}
cout << "Le programme est fini." << endl;
return 0;
}
 
Ce programme demande à l'utilisateur de taper un entier a.
Si a est strictement plus grand que 10, il affiche <code>"a est plus grand que 10."</code>.
Dans le cas contraire, il n'affiche rien.
 
else ''instruction2''
 
;''condition'': Expression booléenne de la condition d'exécution.
;''instruction1'': Une instruction ou un bloc d'instructions exécuté si la condition est vraie.
;''instruction2'': Une instruction ou un bloc d'instructions exécuté si la condition est fausse.
 
=== Sémantique ===
 
L'<code>''instruction1''</code> ou l'<code>''instruction2''</code> peuvent être remplacées par une suite d'instructions entre accolades.
Lorsqu'il n'y a qu'une ligne d'instructions conditionnelles, la paire d'accolades est conditionnelle, mais les omettre est dangereux.
 
=== Exemple : ===
 
if (a > 10)
{
cout << "a est plus grand que 10" << endl;
}
else
{
cout << "a est inférieur ou égal à 10" << endl;
}
 
return 0;
}
a est inférieur ou égal à 10
=== Plusieurs instructions par condition ===
Si plusieurs actions doivent s'enchaîner lorsqu'une condition est vraie, on met obligatoirement ces actions entre accolades. L'accolade fermante ne doit pas être suiviessuivie d'un point virgule dans ce cas. Ainsi, on écrira
if (''condition1'')
''{''
....
qui exécute les instructions instruction1.1 et instruction1.2, ... si la condition condition1 est vraie, et les instructions instruction2.1, ... si la condition condition2 est vraie.
Lorsqu'il n'y a qu'une ligne d'instructions conditionnelles, la paire d'accolades est conditionnelle, mais les omettre est dangereux.
 
== Le switch ==
 
;''expression'':Expression de type scalaire (entier, caractère, énumération, booléen).
;case ''constante1''<nowiki>:</nowiki> ''instruction1_...'': Une série d'instructions ou de blocs d'instructions exécutés si ''expression'' vaut ''constante1''.
;case ''constante2''<nowiki>:</nowiki> ''instruction2_...'': Une série d'instructions ou de blocs d'instructions exécutés si ''expression'' vaut ''constante2''.
;default<nowiki>:</nowiki> ''instruction_...'': Une série d'instructions ou de blocs d'instructions exécutés quand aucun des cas précédent ne correspond.
 
=== Sémantique ===
Si l'expression vaut <code>constante1</code> alors on exécute l’instruction1 et on passe à l’instruction suivante. Si elle vaut c2, on exécute l'instruction2 et on passe à l’instruction suivante. Idem s'il vaut c3. Si elle ne vaut ni c1, ni c2, ni c3 alors on exécute l'instruction après default et on passe à l’instruction suivante. Le default est facultatif. On peut remplacer les instructions instruction1, instruction2, instruction3 par des suites d'instructions sans mettre d'accolades. Les valeurs c1, c2,c3 .. sont obligatoirement des constantes.
-->
En C++, l'expression n'est jamais une chaine de caractères, ni un tableau, ni un objet, ni une structure !
 
=== Exemple 1 ===
<source lang="cpp">
=== Syntaxe ===
for(''instruction_init'' ; ''condition'' ; ''instruction_suivant'')
''instruction_repetéeinstruction_répétée''
 
;''instruction_init'': Une instruction (ou une série d'instruction séparées par une virgule) d'initialisation de la boucle (initialiser un compteur à 0, pointer le premier élément d'une liste, ...).
;''condition'': Expression booléenne de la condition de répétition de la boucle.
;''instruction_suivant'': Une instruction (ou une série d'instruction séparées par une virgule) pour passer à l'itération suivante (incrémenter un index, passer à l'élément suivant, ...)
;''instruction_repetéeinstruction_répétée'': Une instruction ou un bloc d'instruction répété à chaque itération de la boucle.
 
=== Sémantique ===
=== Instructions multiples ===
Il existe également une pratique répandue qui consiste à initialiser plusieurs variables, évaluer plusieurs conditions ou, plus fréquemment, modifier plusieurs variables.
Exemple :
<source lang=cpp>
float c=10;
</source>
Ceci compilera parfaitement, mais est également parfaitement illisible. Dans la plupart des cas, il vaut mieux n'utiliser la boucle for elle-même que pour traiter le ou les compteurs, afin de conserver un code compréhensible.
Cela compile parce qu'en C++, la virgule ',' est un opérateur comme les autres, qui évalue l'expression qui la précède et celle qui la suit, et renvoie le résultat de la dernière. Pour donner un exemple plus clair :
<source lang=cpp>
int b = 2,10; // b=10. Vous pouvez compiler pour vérifier.
</source>
 
Le dernier standard C++ (surnommé C++11) a ajouté une nouvelle syntaxe pour la boucle for.
En effet, on s'est aperçu que l'on utilise le plus souvent la boucle for pour parcourir une collection (une collection est un tableau classique ou un conteneur comme ceux de la stl.) en entier, et que donc le même code revenait très souvent (à la langue des commentaires près ;) ).
Voici des exemples de code fréquents :
<source lang=cpp>
typedef std::list<int> MaListe;
}
</source>
Très répétitif, non (surtout le 1er exemple d'ailleurs) ?
Donc, une nouvelle syntaxe à été crée qui permet de s'affranchir d'une grande partie de ces frappes et donc de prolonger la durée de vie de nos claviers ;)
=== Syntaxe ===
 
 
Un bémol de cette syntaxe est que le compteur est perdu : si vous avez besoin du compteur dans le bloc d'instruction (ou plus tard) cette syntaxe est inutilisable.
=== Exemple ===
Appliqué au dernier exemple, voici le résultat :
À chaque étape, à la fin du corps du while, on incrémente i de 1.<br/>
On exécute donc le corps du while la première fois avec i valant 0, la dernière fois avec i valant 9.<br/>
Lorsqu’on sort du while, i vaut 10.<br/>
 
== Le do ... while ==
for (int i = 0; i < 10; i++)
{
cout << "La variable i vaut : " << i << endl;
if (i == 5)
break;
 
==== Exécution ====
La variable i vaut : 0
La variable i vaut : 1
La variable i vaut : 2
La variable i vaut : 3
La variable i vaut : 4
La variable i vaut : 5
 
=== Note importante ===
{
if (i == 5) continue;
cout << "La variable i vaut : " << i << endl;
}
 
 
==== Exécution ====
La variable i vaut : 0
La variable i vaut : 1
La variable i vaut : 2
La variable i vaut : 3
La variable i vaut : 4
La variable i vaut : 6
La variable i vaut : 7
La variable i vaut : 8
La variable i vaut : 9
 
== Voir aussi ==
268

modifications