« Programmation C++/Les structures de contrôles » : différence entre les versions

Contenu supprimé Contenu ajouté
→‎Sémantique : Suppression du point d'exclamation.
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 22 :
 
=== Exemple : ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 38 :
return 0;
}
</syntaxhighlight>
</source>
 
Ce programme demande à l'utilisateur de taper un entier a.
Ligne 79 :
 
=== Exemple : ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 98 :
return 0;
}
</syntaxhighlight>
</source>
 
Ce programme demande à l'utilisateur de taper un entier <code>a</code>. Si a est strictement plus grand que 10, il affiche <code>"a est plus grand que 10"</code>. Dans le cas contraire, il affiche <code>"a est inférieur ou égal à 10"</code>.
Ligne 163 :
En C++, l'expression n'est jamais une chaine de caractères, ni un tableau, ni un objet, ni une structure.
=== Exemple 1 ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 192 :
return 0;
}
</syntaxhighlight>
</source>
 
Ce programme demande à l'utilisateur de taper une valeur entière et la stocke dans la variable a. On teste ensuite la valeur de a : en fonction de cette valeur on affiche respectivement les messages <code>"a vaut 1"</code>, <code>"a vaut 2"</code>, <code>"a vaut 3"</code>, ou <code>"a ne vaut ni 1, ni 2, ni 3"</code>.
Ligne 211 :
 
=== Exemple 2 ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 243 :
return 0;
}
</syntaxhighlight>
</source>
 
Ce programme demande à l'utilisateur de taper une valeur entière et la stocke dans la variable a. On teste ensuite la valeur de a : en fonction de cette valeur on affiche respectivement les messages <code>"a vaut 1"</code>, <code>"a vaut 2 ou 4"</code>, <code>"a vaut 3, 7 ou 8"</code>, ou <code>"valeur autre"</code>.
Ligne 282 :
=== Exemples ===
Premier cas simple :
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 295 :
return 0;
}
</syntaxhighlight>
</source>
 
Second cas où deux index dans un tableau sont utilisés pour le parcourir à partir des deux bouts : le début et la fin.
<sourcesyntaxhighlight lang="cpp">
 
int main()
Ligne 315 :
return 0;
}
</syntaxhighlight>
</source>
 
=== 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 :
<sourcesyntaxhighlight lang=cpp>
float c=10;
for(int a=2, b=a; a<2, b*=a; a++, c/=b)
{
}
</syntaxhighlight>
</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 :
<sourcesyntaxhighlight lang=cpp>
int b = 2,10; // b=10. Vous pouvez compiler pour vérifier.
</syntaxhighlight>
</source>
 
=== Boucle infinie ===
Ligne 336 :
Une boucle infinie est parfois nécessaire quand on ne connait pas l'instant où la boucle doit être arrêtée, et que la condition d'arrêt est évaluée au cœur de la boucle (gestion de messages, écoute de connexions réseau, ...).
 
<sourcesyntaxhighlight lang="cpp">
for(;;)
{
// ...
}
</syntaxhighlight>
</source>
 
== le for "moderne" ==
Ligne 347 :
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 :
<sourcesyntaxhighlight lang=cpp>
typedef std::list<int> MaListe;
MaListe maListe;
Ligne 359 :
{
}
</syntaxhighlight>
</source>
Très répétitif, non (surtout le 1er exemple d'ailleurs) ?
Donc, une nouvelle syntaxe a é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 ;)
Ligne 372 :
=== Exemple ===
Appliqué au dernier exemple, voici le résultat :
<sourcesyntaxhighlight lang=cpp>
typedef std::list<int> MaListe;
MaListe maListe;
Ligne 383 :
{
}
</syntaxhighlight>
</source>
Beaucoup plus clair, non ?
 
Ligne 397 :
 
=== Exemple de programme ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 414 :
return 0;
}
</syntaxhighlight>
</source>
 
==== Exécution ====
Ligne 447 :
 
=== Exemple ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 465 :
return 0;
}
</syntaxhighlight>
</source>
 
'''Exécution : '''
Ligne 487 :
 
=== Syntaxe ===
<sourcesyntaxhighlight lang="cpp">
break;
</syntaxhighlight>
</source>
 
=== Sémantique ===
Ligne 495 :
 
=== Exemple ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 510 :
return 0;
}
</syntaxhighlight>
</source>
 
Ce programme interrompt sa boucle lors de la sixième itération.
Ligne 529 :
 
=== Syntaxe ===
<sourcesyntaxhighlight lang="cpp">
continue;
</syntaxhighlight>
</source>
 
=== Sémantique ===
Ligne 537 :
 
=== Exemple ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Ligne 551 :
return 0;
}
</syntaxhighlight>
</source>
 
Ce programme saute l'affichage de la sixième itération.