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

Contenu supprimé Contenu ajouté
Bmorel (discussion | contributions)
→‎Le for : ajout d'explications concernant l'usage d' " instructions multiples" dans un for. ~~~~
Bmorel (discussion | contributions)
Ajout du nouveau for du C++11
Ligne 309 :
</source>
 
== le for "moderne" ==
Le dernier standard C++ (surnommé C++11) à 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;
MaListe maListe;
for(MaListe::iterator it=maListe.begin();it!=maListe.end();++it)
{
}
 
int tableau[]={0,1,2,3,4};
const int tableauMax=5;//il y a 5 cases dans tableau
for(int i=0; i<tableauMax; ++i)
{
}
</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 ===
for(''variable'' : ''collection'') ''instruction''
=== Sémantique ===
''variable'' indique la variable qui recevra les valeurs issues de ''collection'', en commençant par la première jusqu'à la dernière.
Si ''variable'' n'existe pas, il est possible de la déclarer dans la même ligne, de la même façon que pour l'écriture classique.
 
 
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:
<source lang=cpp>
typedef std::list<int> MaListe;
MaListe maListe;
for(MaListe::iterator it: maListe)
{
}
 
int tableau[]={0,1,2,3,4};
for(int i: tableau)
{
}
</source>
Beaucoup plus clair, non?
== Le while ==
=== Syntaxe ===