LES ITÉRATIONS
Ah enfin ! J'en vois déjà qui vont se dire "on va commencer les choses sérieuses", super... Oui mais vous verrez que tout ce qu'on a vu précédemment est impératif avant même de commencer cette partie, ça fait partie des aléas de tout langage.
Introduction
Imaginons, que nous devions trouver tous les nombres paires allant de 0 à 1000, sans itération, on comprend bien le problème
Code:
int n; n = 0; if (n%2 == 0) /* l'opérateur modulo permettant d'avoir le reste de la division par 2, si ça vaut 0, le nombre est divisible par 2, et donc paire */ { puts("paire"); } else { puts("impaire"); } n = n+1 /* n vaut 1 maintenant */ if (n%2 == 0) /* l'opérateur modulo permettant d'avoir le reste de la division par 2, si ça vaut 0, le nombre est divisible par 2, et donc paire */ { puts("paire"); } else { puts("impaire"); } n = n+1 /* n vaut 2 maintenant */ /* ... et cela jusqu'à n = 1000 */
La boucle FOR
On peut traduire cette boucle par pour...
Sa syntaxe est la suivante:
Code:
int i; int valeurMax = 1000; for (i=0; i<valeurMax; i++) { /* suite du code */ }
Code:
POUR i allant de 0 à valeurMax exclu ... suite du code
Déclaration de la variable i avant de commencer notre boucle for.
i++, nouvelle vision d'une incrémentation, n'ayez pas peur, c'est équivalent à i = i+1.
valeurMax est la valeur jusqu'où i sera incrémentée, mais cette valeurMax sera exclue. Exemple si valeurMax = 1000, i variera de 0 à 999.
Pour notre problème, on arrive à ce code très simple
Code:
int i; int valeurMax = 1000; for (i=0; i<valeurMax; i++) { if (i%2 == 0) { puts("paire"); } else { puts("impaire"); } }
La boucle WHILE
On peut traduire cette boucle par tant que...
Sa syntaxe est la suivante:
Code:
int i = 0; int valeurMax = 1000; while (i < valeurMax) { /* suite du code */ i += 1; }
Code:
Tant que i inférieur à valeurMax ... suite du code on incrémente i de 1
Déclaration et initialisation de la variable i avant de commencer notre boucle while.
i+=1, nouvelle vision d'une incrémentation, n'ayez pas peur, c'est équivalent à i = i+1 ou i++.
valeurMax est la valeur jusqu'où i sera incrémentée, mais cette valeurMax sera exclue. Exemple si valeurMax = 1000, i variera de 0 à 999.
Pour notre problème, on arrive à ce code très simple
Code:
int i=0; int valeurMax = 1000; while (i < valeurMax) { if (i%2 == 0) { puts("paire"); } else { puts("impaire"); } i += 1; }
Boucle FOR ou WHILE
Pourquoi les deux existeraient, si ils peuvent faire le même boulot ?
Il faut savoir que si vous choisissiez l'un ou l'autre, l'efficacité en change pas, le code machine lue sera strictement le même, donc la machine ne voit pas la différence... Je comprend plus, ça sert à quoi alors d'avoir deux syntaxes ?
C'est une question de sémantique, de grammaire informatique et de lisibilité du code...
La boucle for permet la répétition un nombre de fois défini à l'aide d'un compteur
La boucle while permet la répétition autant de fois qu'il le faut tant que la condition n'est pas remplie
EXERCICES
Exercice n°1
Compléter le code suivant
Code:
#include <stdio.h> int main (void) { int multiplicateur = 7; int i; /* boucle for ou while + affichage de l'opération et résultat */ return 0; }
- boucle for
- boucle while (initialiser i)
Merci de m'avoir lu et à bientôt pour le prochain cours
Commentaire