Notion de boucle for, while et do while. Utilisation de break et continue
Sommaire
Une boucle est une structure de contrôle destinée à exécuter une portion de code plusieurs fois de suite.
Il existe plusieurs façons de créer une boucle. Quelle que soit la façon dont la boucle est créée, son but principal sera de répéter une portion de code ou une expression un certain nombre donné de fois. Il est préférable qu'une boucle soit finie c'est-à-dire que son exécution s'arrête à un moment donné. On peut aussi avoir des boucles qui s' exécutent à l'infini.
Le fonctionnement des boucles est assez simple. Elles exécutent la l'expression quand la condition est vraie et s' arrêtent quand la condition est fausse.
Il existe plusieurs type de boucles.
Les boucles peuvent être imbriquées
Comme toutes les boucles, la boucle for permet de répéter une expression un certain nombre de fois.
La boucle for est une boucle à pré-condition. Cela veut dire la condition est évaluée avant l' exécution de l'expression. Si cette condition est vraie, la portion de code est exécutée sinon toute la boucle est terminée et le programme continue.
Syntaxe pour écrire une boucle for.
for (initialisation, condition, itération ){
expression
}
Explication
Exemple
for (var compteur = 1; compteur <= 3 ; compteur++){
print("la valeur du compteur est $compteur");
}
/* Output
la valeur du compteur est 1
la valeur du compteur est 2
la valeur du compteur est 3
*/
Voici comment la boucle for marche dans notre exemple.
Pour commencer l'initialisation var compteur = 1 est faite. Puis la condition est évaluée. Dans la première itération le compteur étant égal à 1 cette condition est vraie donc l'expression dans la boucle est exécutée avec compteur = 1. Ensuite le programme passe à l' itération qui incrémente la valeur du compteur à 2. La condition est encore évaluée. Avec le compteur étant égale à 2 cette condition est vraie donc l'expression dans la boucle est exécutée avec compteur = 2 et ainsi de suite. Quand le compteur arrive à 4, la condition est évaluée. Elle est fausse (4 n'est pas inferieur ou égale à 3) donc l’instruction for se termine .
il existe aussi une boucle for .. in en Dart. Elle permet de faire une itération dans une collection liste, ensemble ou dictionnaire. la boucle for .. in est une boucle de parcours . C'est à dire que la boucle est exécutée sur chacun des éléments d'une collection.
var langues = ['Francais', 'Anglais', 'Espagnol'];
for (var l in langues){
print(l);
}
/* Output
Francais
Anglais
Espagnol
*/
Cette boucle se traduit par pour l dans langues afficher l .
Nous y reviendrons quand nous parlerons des collections en profondeur.
Le mot while se traduit par tant que. Alors cette boucle s' exécute tant que sa condition est vraie.
La boucle while est une boucle à pré-condition. Cela veut dire que la condition est évaluée avant l' exécution de l'expression.
Syntaxe d'une boucle while.
while (condition) {
portion de code;
}
Dans certain cas, une boucle while a besoin d'une itération dans le corps de la boucle. L' itération dans une boucle while est très importante car elle permet d' arrêter la boucle à un moment donné.
int x = 1;
while (x != 5){
print(x);
x++;
}
print("La valeur final de x est $x");
/* Output
1
2
3
4
La valeur final de x est 5
*/
Dans ce cas , tant que x est différent de 5, les instructions de la boucle sont exécutées. Mais quand x est égal à 5 grâce à l' incrémentation, la boucle se termine et le programme continue.
Cette boucle se traduit par faire .. tant que.
La boucle do .. while est une boucle à post-condition. Cela veut dire la condition est évaluée après l' exécution de l'expression.
Syntaxe d'une boucle do .. while.
do {
portion de code
} while(condition);
Comme la boucle while peut avoir besoin d'une itération dans le corps de la boucle pour arrêter la boucle à un moment donné.
Exemple
Reprenons le même exemple que dans la boucle while mais avec la boucle do .. while cette fois ci
int x = 1;
do {
print(x);
x++;
}while (x != 5);
print("La valeur final de x est $x");
/* Output
1
2
3
4
La valeur final de x est 5
*/
Dans ce cas , les instructions de la boucle sont exécutées puis la condition est évaluée . Quand x est égal à 5 grâce à l' incrémentation, la boucle se termine et le programme continue.
L'instruction break termine l'exécution de la boucle for, while ou do .. while.
break termine l'exécution de la boucle qui l' englobe. C'est à dire la boucle la plus proche dans laquelle elle figure.
Pour l'utiliser , il suffit de la mettre dans la boucle à l'endroit voulu. Généralement elle est utilisée dans une boucle pour arrèter son exécution à une certaine condition.
Example
for (var i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
print("La valeur de i est $i");
}
/* Output
La valeur de i est 1
La valeur de i est 2
La valeur de i est 3
La valeur de i est 4
*/
Dans le cas où cette boucle ne contient pas la condition if et l'expression break, l'instruction print("La valeur de i est $i") s' exécute 10 fois. Mais avec la condition; quand i est égale à 5, break termine l'exécution de la boucle.
Quand break termine l'exécution de la boucle, continue passe le contrôle à l'itération suivante. Mais il est important de noter que continue passe le contrôle à l'itération suivante en ignorant toutes les instructions restantes dans le corps de la boucle ou de la condition.
Exemple
for (var i = 1; i <= 10; i++) {
if (i == 5) {
continue;
print("Expression ignorée");
}
print("La valeur de i est $i");
}
/* Output
La valeur de i est 1
La valeur de i est 2
La valeur de i est 3
La valeur de i est 4
La valeur de i est 6
La valeur de i est 7
La valeur de i est 8
La valeur de i est 9
La valeur de i est 10
*/
Il est simple de remarquer que dans ce cas l'instruction print("Expression ignorée") est ignorée.
L'inspecteur de code du langage Dart appelle cette instruction un code mort.
Ecrire un programme qui affiche "Dart est cool." 5 fois avec toutes les boucles.
main() {
for (var i = 0; i < 5; i++) {
print("Dart est cool.");
}
}
main() {
var i = 0;
while (i != 5) {
print("Dart est cool.");
i++;
}
}
main() {
var i = 0;
do {
print("Dart est cool.");
i++;
}while (i != 5);
}
Les trois programmes produisent le même resultat
Dart est cool.
Dart est cool.
Dart est cool.
Dart est cool.
Dart est cool.
Ecrire les programmes pour dessiner les figures suivantes avec des étoiles (*):
la méthode stdout.write() permet d' écrire sur la même ligne. Pour l'utiliser, importez la librairie io de Dart en faisant import 'dart:io' au début de votre programme. Cette méthode prend entre parenthèse la message à afficher.
un rectangle de 8 étoiles de long et 5 étoiles de large
import 'dart:io';
main() {
for (var i = 0; i < 5; i++) {
for(var i = 0; i < 8; i++){
stdout.write("* ");
}
stdout.write("\n");
}
}
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
un carré de 6 étoiles de coté
import 'dart:io';
main() {
for (var i = 0; i < 6; i++) {
for(var i = 0; i < 6; i++){
stdout.write("* ");
}
stdout.write("\n");
}
}
* * * * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * *
un triangle équilatéral de 7 étoiles de coté
import 'dart:io';
main()
{
int i, j, cote;
cote = 7;
for(i=1; i<=cote; ++i)
{
for(j=1; j<=i; ++j)
{
stdout.write("* ");
}
stdout.write("\n");
}
return 0;
}
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *