devstory

Les Boucles en Dart

  1. Qu'est-ce que la boucle ?
  2. La boucle for
  3. La boucle for..in
  4. La boucle while
  5. La boucle do..while
  6. L'instruction break en boucle
  7. L'instruction continue en boucle
  8. Les boucles étiquetées

1. Qu'est-ce que la boucle ?

Dans les langages de programmation, les boucles permettent à un bloc de code d'être exécuté à plusieurs reprises.
Le langage Dart fournit les types de boucles suivants :
  • for
  • for..in
  • while
  • do..while
Les instructions break et continue peuvent apparaître à l'intérieur de la boucle :
break
Lorsque l'instruction break est rencontrée, le programme met immédiatement fin à la boucle.
continue
Lorsque l'instruction continue est rencontrée, le programme saute les lignes sous continue et exécute l'itération suivante (si la condition de boucle est toujours true).

2. La boucle for

La syntaxe de la boucle for:
for (initialValues; condition; updateValues) {
    // Statements to be executed repeatedly
}
  • InitialValues: Initialiser les valeurs des variables liées dans la boucle.
  • condition: La condition pour exécuter le bloc.
  • updateValues: Mettre à jour les nouvelles valeurs des variables.
Par exemple :
loop_for_ex1.dart
void main() {
  print('For loop example');
 
  for (var i = 0; i < 10; i = i + 3) {
    print('i= $i');
  }
}
Output:
For loop example
i= 0
i= 3
i= 6
i= 9
Par exemple : Deux variables participent à la condition d'une boucle for:
loop_for_ex2.dart
void main() {
  print('For loop example');

  for (var i = 0, j = 0; i + j < 10; i = i + 1, j = j + 2) {
    print('i = $i, j = $j');
  }
}
Output:
For loop example
i = 0, j = 0
i = 1, j = 2
i = 2, j = 4
i = 3, j = 6

3. La boucle for..in

La boucle for..in est utilisée pour parcourir les éléments d'un Iterable.
Dans le langage de programmation Dart, List est un descendant d'Iterable, qui dipose de la même fonctionnalité qu'un tableau d'autres langages de programmation.
Par exemple : Utiliser la boucle for..in pour parcourir les éléments d'une List:
loop_for_in_list_ex1.dart
void main() {
  // Create a List:
  var names = ['Tom', 'Jerry', 'Donald'];
 
  for (var name in names) {
    print('name: $name');
  }
}
Output:
name: Tom
name: Jerry
name: Donald
Par exemple : Utiliser la boucle for..in pour parcourir les éléments d'un objet Set.
loop_for_in_set_ex1.dart
void main() {
  // Create a Map object:
  // (key, value) <--> (Emloyee Number, Salary).
  var salaryMap = {'E01': 1200,
                   'E02': 1500,
                  'E03': 900};
  // The Set object.
  var keySet = salaryMap.keys;

  for (var key in keySet) {
    print('Employee Number: $key, salary: ${salaryMap[key]}');
  }
}
Output:
Employee Number: E01, salary: 1200
Employee Number: E02, salary: 1500
Employee Number: E03, salary: 900

4. La boucle while

La syntaxe de la boucle while:
while (condition)  {
    // Do something here..
}
Par exemple :
loop_while_ex1.dart
void main() {
  print('While loop example');
  var x = 2;
  while (x < 10) {
    print('Value of x = $x');
    x = x + 3;
  }
  print('Done!');
}
Output:
While loop example
Value of x = 2
Value of x = 5
Value of x = 8
Done!

5. La boucle do..while

La boucle do..while est utilisée pour exécuter à plusieurs reprises un segment de programme. La particularité de do..while est qu'un bloc de code est toujours exécuté au moins une fois. Après chaque itération, le programme vérifie à nouveau la condition, si la condition est toujours vraie, l'itération suivante sera exécutée.
La syntaxe de la boucle do..while:
do {  
   // Do something
}
while(condition);
Par exemple :
loop_do_while_ex1.dart
void main() {
  var value = 3;
  do {
    print('Value = $value');
    value = value + 3;
  } while (value < 10);
}
Output:
Value = 3
Value = 6
Value = 9

6. L'instruction break en boucle

break est une instruction qui peut apparaître dans le bloc d'une boucle. Cette instruction permet de terminer inconditionnellement la boucle.
Par exemple :
loop_break_ex1.dart
void main() {
  print('Break example');
  var x = 2;
  while (x < 15) {
    print('----------------------');
    print('x = $x');
    // If y = 5 then exit the loop.
    if (x == 5) {
      break;
    }
    // Increase value of x by 1
    x = x + 1;
    print('x after + 1 = $x');
  }
  print('Done!');
}
Output:
Break example
----------------------
x = 2
x after + 1 = 3
----------------------
x = 3
x after + 1 = 4
----------------------
x = 4
x after + 1 = 5
----------------------
x = 5
Done!

7. L'instruction continue en boucle

continue est une instruction qui peut apparaître dans une boucle. Lorsque l'instruction continue est rencontrée, le programme saute les lignes sous continue et démarre une nouvelle itération (si la condition est toujours vraie).
Par exemple :
loop_continue_ex1.dart
void main() {
  print('Continue example');
  var x = 2;
  while (x < 7) {
    print('----------------------');
    print('x = $x');

    if (x % 2 == 0) {
      x = x + 1;
      continue;
    } else {
      x = x + 1;
      print('x after + 1 = $x');
    }
  }
  print('Done!');
}
Output:
Continue example
----------------------
x = 2
----------------------
x = 3
x after + 1 = 4
----------------------
x = 4
----------------------
x = 5
x after + 1 = 6
----------------------
x = 6
Done!

8. Les boucles étiquetées

Dart vous permet de mettre une étiquette pour une boucle. C'est une façon de nommer une boucle et c'est pratique lorsque vous utilisez plusieurs boucles imbriquées dans un programme.
  • Vous pouvez utiliser l'instruction "break labelX" pour break la boucle étiquetée labelX.
  • Vous pouvez utiliser l'instruction "continue labelX" pour continuer la boucle intitulée labelX.
La syntaxe pour déclarer une boucle avec des étiquettes.
// for loop with Label.
label1: for( ... )  {
    
}
// while loop with Label.
label2: while ( ... )  {

}
// do-while loop with Label.
label3: do  {
    
} while ( ... );
Par exemple : Utiliser des boucles étiquetées et une instruction break.
loop_break_labelled_ex1.dart
void main() {
  print('Labelled Loop Break example');
  var i = 0;
  label1:
  while (i < 5) {
    print('----------------------');
    print('i = $i');
    i++;
    label2:
    for (var j = 0; j < 3; j++) {
      print('  --> $j');
      if (j > 0) {
        // Exit the loop with label1.
        break label1;
      }
    }
  }
  print('Done!');
}
Output:
Labelled Loop Break example
----------------------
i = 0
  --> 0
  --> 1
Done!
Par exemple : Utiliser des boucles étiquetées et une instruction continue.
loop_continue_labelled_ex1.dart
void main() {
  var i = 0;
  label1:
  while (i < 5) {
    print('outer i=  $i');
    i++;
    label2:
    for (var j = 0; j < 3; j++) {
      if (j > 0) {
        continue label2;
      }
      if (i > 1) {
        continue label1;
      }
      print('inner i= $i, j= $j');
    }
  }
}
Output:
outer i=  0
inner i= 1, j= 0
outer i=  1
outer i=  2
outer i=  3
outer i=  4