Nous avons souhaité introduire rapidement la notion de répétition, dès les premiers exercices, afin de proposer de petits problèmes intéressants sur la manipulation d'un petit robot ou l'affichage répétitif de certains textes. Les variables ne sont présentées que plus tard. Nous utilisons donc une instruction théorique « répéter », qui peut s'utiliser comme cela :
Répéter 3 fois Afficher "Vive la répétition !"
Vive la répétition ! Vive la répétition ! Vive la répétition !
Les langages de programmation communs ne proposent pas de telle boucle. Ils en ont globalement deux qui correspondent aux modèles théoriques suivants :
- la boucle « pour », qui permet d'appliquer des opérations à tous les éléments d'un ensemble ;
- la boucle « tant que », qui permet de répéter un traitement jusqu'à un changement d'état.
Ainsi, pour répéter n fois une action avec ces langages, il faut en fait appliquer un traitement aux éléments d'un ensemble de taille n, sans prendre en compte l'élément en cours dans les opérations ! Par exemple :
Pour tour dans [1 ; 3] Afficher "Vive la répétition !"
Vive la répétition ! Vive la répétition ! Vive la répétition !
La boucle « pour » conventionnelle est au final présentée bien plus tard, dans le chapitre sur les tableaux.
La boucle « répéter », simple dans son fonctionnement, permet donc d'accéder rapidement à des exercices stimulants, sans se reposer sur la syntaxe d'une boucle.
Syntaxe
Voici comment la boucle « répéter » est introduite à l'élève et implémentée dans les différents langages de la plateforme.
Python
for loop in range(nb):
La variable loop est considérée comme muette.
C et C++
Nous proposons l'utilisation d'une macro repeat(nb)
qu'il suffit d'inclure au début de son programme, avec la ligne :
#define repeat(nb) for (int _loop = 1, _max = (nb); _loop <= _max; _loop++)
Nous n'expliquons pas son fonctionnement (ni la notion de macro), uniquement son utilisation. Un code de base à compléter étant fourni, il n'est pas nécessaire de se souvenir de cette syntaxe ; il suffit de l'inclure puis de l'utiliser.
JavaScool
Nous avons ajouté à la grammaire du langage une structure repeat(nb)
, similaire à celle proposée pour le C/C++.
Autres : Pascal, OCaml et Java
La répétition n'étant pas simplement implémentable avec ces langages,
nous présentons l'écriture classique d'une boucle for
, à utiliser « telle quelle ».