Les données
Couplées aux algorithmes, on trouve souvent différentes sortes de données :
simples :
les constantes. C'est le premier niveau que l'on découvre à partir du CP d'après les programmes officiels 2016.
les variables. C'est le deuxième niveau que l'on découvre à partir de la 5e dans les programmes officiels 2016.
Elles peuvent être de différents types : nombres, booléens (vrai ou faux), textes,...
les structures complexes comme les listes, les tableaux, les arbres ou les réseaux. Ce troisième niveau est à découvrir au lycée.
Ces données, suivant le langage, sont en fait toutes plus ou moins équivalentes pour la mémoire des machines : des suites de 0 et de 1. Au final, une lettre est un code chiffré, et un texte n'est qu'une liste de lettres. Mais si on devait encore programmer rien qu'avec des 0 et des 1, la lecture et l'écriture des programmes seraient grandement compliquées
Dans Scratch, les données ont une forme avec les extrémités arrondies, que ce soit par les emplacements qui les attendent que par les blocs eux-mêmes.
Les constantes sont toutes les données à base de chiffres et de lettres que le développeur inscrit dans ses instructions. Leurs valeurs ne peuvent pas être changées par l'utilisateur du programme.
Dans les exemples ci-contre, vous en trouverez 4. Deux sont textuelles et trois sont des nombres. Ce sont toutes des paramètres des instructions dans lesquelles on les trouve. Le bloc Aller a deux paramètres nombres, le bloc Dire a un paramètre texte et un paramètre nombre. Le bloc Basculer a un seul paramètre par menu déroulant (mais qui n'est en fait qu'un paramètre texte presque comme les autres).
Attention, Scratch vous donne la liberté d'écrire ce que vous voulez dans ces cases (avec une certaine limite de longueur toutefois). Il ne vous préviendra pas lorsque qu'il doit utiliser un nombre alors que vous y mettez du texte. En général, soit il considère le texte dans une paramètre chiffré comme un 0, soit il n'exécute pas l'instruction et passe à la suivante. Mais aucun message d'erreur pour vous en avertir, ce qui complique la correction du bogue.
Sans vous en rendre compte, vous avez déjà certainement modifié les valeurs de constantes dans les scripts précédents et dans l'activité précédente. Scratch est vraiment intuitif, n'est-ce pas ?
Les variables, elles, sont des petites cases de mémoire dans lesquelles ont va stocker des valeurs, chiffrées ou textuelles comme pour les constantes. Vous pouvez utiliser les valeurs de ces variables pour faire des calculs, changer la valeur d'autres variables, les mettre en paramètre des instructions, etc. L'utilisateur, par ses actions, va faire changer leurs valeurs que ce soit de façon consciente ou non (seul le développeur sait ce qui se passe vraiment dans les variables, du moins, on l'espère).
Nous ne verrons pour l'instant que des variables "Pour tous les lutins", on les appelle des variables globales, tous les lutins et la scène y ont accès.
Pour les activités du joueur, vous pouvez les afficher. Mais c'est surtout pour vous, le développeur que cet affichage servira. Vous pourrez voir en direct les changements de valeurs et vérifier que votre programme fait bien ce que vous attendez. Pour cela, cochez les petites cases présentes à côté de chaque variable.
Sur la scène vous pouvez déplacer l'affichage de ces variables et même, avec un double-clic, changer leur apparence : un cadre avec le nom et la valeur, un cadre avec seulement la valeur en un peu plus gros, et un cadre avec le nom, la valeur et un bouton pour faire défiler la valeur (qui du coup, sera exclusivement numérique).
Attention, il n'y a pas d'instructions pour changer l'emplacement ou l'apparence de ces cadres dans les algorithmes. On peut uniquement les cacher ou les montrer. C'est au développeur de placer correctement ces cadres avant l'exécution du programme.
Pour les blocs classiques, vous pouvez cliquer dessus pour les exécuter, mais si vous cliquez sur un bloc de variable (forme aux extrémités arrondies) alors c'est sa valeur qui s'affiche.
Même alerte que pour les constantes, il n'y a aucun contrôle du type des données. Vous n'aurez aucun avertissement si vous essayez de faire une multiplication entre deux variables qui contiennent du texte. La valeur de cette multiplication sera juste de 0.
À vous d'essayer :
Prenons 2 variables :
le nombre de billes de Paul
le nombres de billes de Ynésie
Prenons un problème mathématique classique niveau CP (oui je sais, c'est rude) :
Paul a 12 billes. Ynésie en a 5. Paul donne 8 billes à Ynésie (il est amoureux). Combien lui en reste-t-il ? Combien en a donc Ynésie ?
Les billes
Question⚓
Écrivez un programme pour résoudre ce problème.
Solution⚓
La première solution utilise des nombres négatifs, ce n'est donc pas forcément une façon très intuitive de régler l'opération, surtout si n'êtes pas encore dans une classe de collège.
Cette deuxième solution n'est pas forcément la plus élégante, mais elle sera plus compréhensible par de jeunes élèves qui ne sont pas à l'aise avec les nombres négatifs.
L'échange
Question⚓
Ensuite, Ynésie trouve que Paul a gardé les plus belles billes. Elle préfère la beauté à la quantité et propose donc d'échanger l'ensemble de leurs billes. Paul se disant qu'il a bien fait de lui donner des billes plus tôt, accepte.
Continuez votre programme pour résoudre ce problème.
Solution⚓
Pour rester simple, il vous faut absolument une 3e variable. Ici on va l'appeler "variable d'échange".
Cette méthode fonctionne même pour des variables qui ne sont pas des nombres.
Pour faire un peu plus futé, et surtout mathématiques, on peut se passer d'une 3e variable.
On vous laissera quelques minutes pour comprendre comment cela fonctionne. Cette méthode ne fonctionne qu'avec des nombres.
Bravo
Vous pouvez maintenant passer aux fiches d'activité du Memory.