Comment travailler avec des boucles en C

Une introduction aux boucles for, while et do-while en C

C nous propose trois manières de réaliser une boucle:pour les boucles,tandis que les bouclesetfaire des boucles while. Ils vous permettent tous d'itérertableaux, mais avec quelques différences. Voyons-les en détail.

Pour les boucles

La première façon, et probablement la plus courante, d'effectuer une boucle estpour les boucles.

En utilisant leformot-clé nous pouvons définir ledes règlesde la boucle à l'avant, puis fournissez le bloc qui va être exécuté à plusieurs reprises.

Comme ça:

for (int i = 0; i <= 10; i++) {
  /* instructions to be repeated */
}

Le(int i = 0; i <= 10; i++)Le bloc contient 3 parties des détails de la boucle:

  • la condition initiale (int i = 0)
  • le test (i <= 10)
  • l'incrément (i++)

Nous définissons d'abord une variable de boucle, dans ce cas nomméei.iest un nom de variable courant à utiliser pour les boucles, avecjpour les boucles imbriquées (une boucle dans une autre boucle). C'est juste une convention.

La variable est initialisée à la valeur 0 et la première itération est effectuée. Ensuite, il est incrémenté comme le dit la partie d'incrément (i++dans ce cas, incrémenter de 1), et tout le cycle se répète jusqu'à ce que vous arriviez au nombre 10.

À l'intérieur du bloc principal de la boucle, nous pouvons accéder à la variableipour savoir à quelle itération nous en sommes. Ce programme devrait imprimer0 1 2 3 4 5 5 6 7 8 9 10:

for (int i = 0; i <= 10; i++) {
  /* instructions to be repeated */
  printf("%u ", i);
}

Les boucles peuvent également commencer à partir d'un nombre élevé et aller à un nombre inférieur, comme ceci:

for (int i = 10; i > 0; i--) {
  /* instructions to be repeated */
}

Vous pouvez également incrémenter la variable de boucle de 2 ou d'une autre valeur:

for (int i = 0; i < 1000; i = i + 30) {
  /* instructions to be repeated */
}

Alors que les boucles

Alors que les bouclesest plus simple à écrire qu'unforboucle, car cela nécessite un peu plus de travail de votre part.

Au lieu de définir toutes les données de la boucle à l'avance lorsque vous démarrez la boucle, comme vous le faites dans leforboucle, utilisationwhileil vous suffit de vérifier une condition:

while (i < 10) {

}

Cela suppose queiest déjà défini et initialisé avec une valeur.

Et cette boucle sera unboucle infiniesauf si vous incrémentez leivariable à un moment donné dans la boucle. Une boucle infinie est mauvaise car elle bloquera le programme, rien d'autre ne peut arriver.

Voici ce dont vous avez besoin pour une boucle while «correcte»:

int i = 0;

while (i < 10) { /* do something */

i++; }

Il y a une exception à cela, et nous la verrons dans une minute. Avant, laissez-moi vous présenterdo while.

Faire des boucles while

Les boucles While sont excellentes, mais il peut y avoir des moments où vous devez faire une chose en particulier: vous voulez toujours exécuter un bloc, puispeut êtrerépète.

Ceci est fait en utilisant ledo whilemot-clé, d'une manière très similaire à unwhileboucle, mais légèrement différente:

int i = 0;

do { /* do something */

i++; } while (i < 10);

Le bloc qui contient le/* do something */Le commentaire est toujours exécuté au moins une fois, quelle que soit la vérification de la condition en bas.

Puis, jusqu'àiest inférieur à 10, nous allons répéter le bloc.

Sortir d'une boucle en utilisantbreak

Dans tous lesCboucles, nous avons un moyen de sortir d'une boucle à tout moment, immédiatement, quelles que soient les conditions fixées pour la boucle.

Ceci est fait en utilisant lebreakmot-clé.

Ceci est utile dans de nombreux cas. Vous voudrez peut-être vérifier la valeur d'une variable, par exemple:

for (int i = 0; i <= 10; i++) {
  if (i == 4 && someVariable == 10) {
    break;
  }
}

Avoir cette option pour sortir d'une boucle est particulièrement intéressant pourwhileboucles (etdo whiletrop), car nous pouvons créer des boucles apparemment infinies qui se terminent lorsqu'une condition se produit, et vous définissez cela à l'intérieur du bloc de boucle:

int i = 0;
while (1) {
  /* do something */

i++; if (i == 10) break; }

Il est assez courant d'avoir ce genre de boucles dans C.

Téléchargez mon gratuitManuel C


Plus de tutoriels clang: