Listons ! Listons !

Les manipulations de listes de données sont un grand thème classique d'algorithmique. Qu'il s'agisse de les remplir, de les vider, d'y chercher des éléments, de les trier ou de les structurer.

On a pas seulement un exigence de terminaison (est-ce que le programme se termine, est-ce qu'il ne tourne pas en rond à l'infini) et de correction (est-ce qu'il fait toujours bien ce qu'on lui demande, est-ce que ses résultats sont corrects) de l'algorithme, mais également de performance puisque ces listes peuvent être très longues (coûteuses en espace mémoire) et donc leur manipulation très coûteuses en temps.

Même si on commence à avoir des réponses efficaces pour la plupart de ces problèmes, la recherche se poursuit. Signalons au passage que vous traitez sans doute déjà de nombreuses listes (pas forcément informatiques ou numériques) au quotidien. Les activités débranchées sont d'ailleurs un excellent moyen de découvrir ces principes algorithmiques avant de se lancer dans la programmation.

Cherchons !

Comment retrouver un élément dans une liste, obtenir son numéro de rang ou même juste savoir s'il est ou non dans la liste ?

Comme vous l'avez déjà vu, il existe deux blocs qui peuvent être utilisés :

Renvoie une valeur booléenne. Vrai si "chose" se trouve dans "liste", Faux si "chose" ne se trouve pas dans "liste".
Renvoie un nombre. C'est le numéro ordinal de "chose" dans "liste" si "chose" se trouve bien dans cette "liste". S'il ne s'y trouve pas, le nombre renvoyé est 0. Exemple : soit la liste (6, 5 , 8, 9). élément # de 5 donne 2 (5 est le 2e élément de liste). élément # de 7 donne 0.

Nous allons voir comment écrire les algorithmes cachés dans ces blocs et nous imaginerons des blocs qui n'existent pas dans Scratch mais dont nous pourrions avoir besoin.

Créez une liste uneListe et reproduisez le programme suivant.

Lancez-le et vérifiez que la liste contient bien 1000 éléments (en l'affichant sur la scène).