On souhaite écrire un algorithme qui demande à l'utilisateur d'entrer un entier naturel n puis affiche tous les nombres entiers de 0 à n.
Voici trois propositions d'algorithmes.
Variables
...i, n
Entrée
...Lire n
Traitement
...Pour i allant de 0 à n
......Afficher i
......i prend la valeur i+1
...Fin Pour
Algorithme 1
Variables
...i, n
Entrée
...Lire n
Traitement
...i prend la valeur 0
...Tant que i \leqslant n
......Afficher i
......i prend la valeur i+1
...Fin Tant que
Algorithme 2
Variables
...i, n
Entrée
...Lire n
Traitement
...i prend la valeur 0
...Tant que i \leqslant n
......Afficher i
...Fin Tant que
Algorithme 3
Un seul de ces algorithmes est correct. Lequel ? (Justifier votre réponse.)
Corrigé
L'Algorithme 2 est le seul correct.
Dans l'algorithme 1, l'instruction :
i prend la valeur i+1
est en trop.
Dans une boucle « Pour », l'indice est automatiquement incrémenté. Il ne faut pas l'incrémenter une seconde fois.
Dans l'algorithme 3 au contraire, l'instruction :
i prend la valeur i+1
est manquante.
Dans une boucle « Tant que », l'indice n'est pas automatiquement incrémenté.
La valeur de i restera donc à 0. La condition i \leqslant n sera donc toujours vérifiée et l'algorithme tournera alors indéfiniment.