Scratch : utiliser les boucles

Publié le 20 juillet 2018 par Jfcauche @jeffakakaneda

Les boucles sont au code ce que l’huile d’olive est à la cuisine italienne : indispensables. On finit lors des ateliers et formations par s’en amuser, tellement je donne l’impression de me répéter (c’est le cas de la dire) lorsque j’évoque les boucles. Une par ci, une par là. Impossible de faire sans… Scratch n’en manque pas avec des particularités que l’on ne retrouve dans aucun autre langage. Petit passage en revue.

Répéter indéfiniment

La boucle la plus célèbre de Scratch et celle qui revient le plus souvent. Proche d’un des premiers codes que j’ai tapé en BASIC.


10 Print "Bonjour"
20 Goto 10

Ou comment rendre l’ordinateur fou en lui faisant sans cesse répéter la même chose sans moyen d’en sortir. Dans Scratch, la boucle « répéter indéfiniment » est essentiellement utilisée pour vérifier des états et des conditions. Ainsi, dans l’exemple ci-dessous (1er script), elle permet de suivre l’évolution du volume sonore et de déclencher un événement si celui-ci dépasse la valeur 70. La boucle est souvent oubliée et renvoie à une erreur classique. Le deuxième script en effet ne vérifie le volume sonore qu’une seule fois au déclenchement du programme en cliquant sur le drapeau vert.

Il est possible d’arrêter une telle boucle en utilisant l’instruction « stop ». Par exemple :

Répéter x fois

La boucle la plus simple à comprendre. À utiliser quand vous savez exactement de combien de répétitions vous avez besoin. Par exemple :

Cette boucle peut aussi s’utiliser avec des variables quand on ne connaît pas le nombre de répétitions à la base. Par exemple pour épeler un prénom :

C’est un peu dans ce cas l’équivalent d’une boucle « for … next » qui permet d’utiliser une boucle en faisant évoluer une ou plusieurs valeurs. Cela m’a toujours étonné que Scratch ne possède pas de boucle de ce type mais on peut la simuler avec la boucle « répéter jusqu’à ».

Répéter jusqu’à

Cette boucle est particulièrement utile car elle permet des choses que peu de langages offriraient aussi facilement. Par exemple :

Mais je l’utilise principalement pour les boucles « for … next ». Une boucle de ce type possède une condition de départ, une condition de fin et une variation de la valeur suivant un « pas ». Ainsi, par exemple, la variable x vaut 0 en condition de départ ; on arrête la boucle lorsque x vaut 250 en condition de fin et on la fait varier de 10 en 10.

En Basic, cela ressemblerait à ceci :


FOR x = 0 TO 250 STEP 10
PRINT x
NEXT

Et avec Scratch :

Ces boucles sont fort utiles notamment dans le traitement des chaînes de caractère ou dans la génération de graphismes.

Bon amusement !