BlocklyScratch permet de créer des programmes à partir de blocs.
Par exemple, un bloc avancer vers la droite
peut faire déplacer un robot d'une
case vers la droite.
Un programme formé de blocs les uns en dessous des autres, exécute ces instructions l'une après l'autre.
![]() |
Le programme ci-contre fait déplacer le robot vers la droite, puis vers le haut, puis de nouveau vers la droite. |
Python permet de créer des programmes à partir d'instructions.
Par exemple, l'instruction droite()
peut faire déplacer un robot d'une case vers la droite.
Un programme formé d'instructions les unes en dessous des autres, exécute ces instructions l'une après l'autre.
from robot import *
droite()
haut()
droite()
|
Le programme ci-contre fait déplacer le robot vers la droite, puis vers le haut, puis de nouveau vers la droite. |
Pour exécuter plusieurs fois la même instruction, on peut utiliser
le bloc « répéter »l'instruction
for loop in range(...)
.
Par exemple, plutôt que de mettre 5 fois le même bloc :
On peut utiliser un bloc « répéter 5 fois » :
Pour changer le nombre de répétitions, cliquer sur ce nombre et taper la nouvelle valeur au clavier.
Par exemple, plutôt que de mettre 5 fois la même instruction :
On peut écrire la boucle suivante :
On peut aussi mettre plusieurs instructions dans une boucle :
L'instruction pass
apparaît lorsqu'on choisit le mot-clé for
dans les blocs
disponibles.
Elle sert seulement à éviter les erreurs lors de l'implémentation de boucles.
En effet, les boucles doivent contenir au moins une instruction. Cela permet d'exécuter le script sans
rencontrer d'erreur si jamais on souhaite tester le code en-dessous. En général, dans le programme finalisé on ne retrouvera jamais de pass
.
Il est possible d'utiliser des boucles imbriquées, c'est-à-dire que l'on peut mettre des
blocs « répéter »boucles
for
,
à l'intérieur d'autres
blocs « répéter »boucles
for
.
Par exemple :
![]() ![]() for loop in range(5):
droite()
for loop_2 in range(3):
haut()
droite()
|
Ce programme répétera 5 fois un déplacement d'1 case vers la droite, 3 cases vers le haut et 1 case vers la droite. |
Il est d'usage dans les boucles imbriquées de changer la variable d'incrémentation (loop
et
loop_2
dans l'exemple au-dessus) pour ne pas avoir d'effets de bord. Ce sont des effets indésirables dus aux variables qui ont le même nom.
if
Avec
le bloc « si »,
l'instruction if
,
on peut exécuter une instruction uniquement dans certaines conditions.
![]() ![]() if caseMarquee():
peindre()
|
Par exemple, le programme ci-contre teste le contenu de la case du robot, et ne la peint que si elle est marquée. |
On peut aussi placer plusieurs instructions dans
un bloc « si »,
une instruction if
,
comme illustré ci-dessous :
if / else
On peut utiliser
un bloc « si / sinon »,
une instruction if
/ else
,
pour effectuer des opérations différentes selon la situation. Par exemple :
if caseMarquee():
peindre()
else:
haut()
|
Dans le programme ci-contre, si la case du robot est marquée, le robot la peint, sinon il ne la peint pas mais se déplace vers le haut. |
Le mot-clé elif
sert à ajouter autant de conditions précises souhaitées. Il se place entre les
mots-clés if
et else
au même niveau d'indentation.
On peut utiliser
un bloc « répéter indéfiniment »
l'instruction while True:
pour répéter sans fin une séquence d'instructions, comme dans l'exemple ci-dessous, qui allume et éteint une
LED toutes les 500 millisecondes :
L'instruction « while True: » exécute en boucle les instructions placées en dessous, indentées vers la droite, sans s'arrêter, jusqu'à ce que l'on interrompe l'exécution du programme.
Ce type de boucle est utile pour les programmes qui ne doivent jamais s'arrêter, par exemple le programme d'un système d'alarme, qui doit être actif en permanence.
while
On peut utiliser
un bloc « répéter tant que », ou
un bloc « répéter jusqu'à »,
une instruction while
,
comme dans l'exemple ci-dessous.
ou
Le bloc « répéter tant que » exécute en boucle les instructions placées à l'intérieur, tant que la condition est vraie. Si la condition est fausse dès le départ, les instructions ne sont jamais exécutées.
Le bloc « répéter jusqu'à » exécute en boucle les instructions placées à l'intérieur, jusqu'à-ce que la condition devienne vraie. Si la condition est vraie dès le départ, les instructions ne sont jamais exécutées.
L'instruction « while » exécute en boucle les instructions placés en dessous, indentées vers la droite, tant que la condition est vraie. Si la condition est fausse dès le départ, les instructions ne sont jamais exécutées.
Ce type de boucle est utile lorsque l'on ne connaît pas à l'avance le nombre de répétitions. Par exemple dans un cas comme ci-dessous, où l'on ne connaît pas le nombre de cases entre la bille et le trou où il faut la déposer.
On peut tester deux conditions, et exécuter des instructions si l'une des deux est vraie, grâce à l'opérateur
logique or
.
L'instruction au sein du bloc sera exécutée soit si la colonne est inférieure à 0, soit si elle est supérieure à 8.
Si l'on ne veut exécuter des instructions que si deux conditions sont vraies, on peut utiliser l'opérateur
logique and
.
L'instruction au sein du bloc sera exécutée si la colonne est supérieure à 0 et si elle est inférieure à 8.
Si on veut le contraire, on peut utiliser l'opérateur logique not
.
L'instruction au sein du bloc ne sera pas exécutée si la colonne est supérieure à 0 et si elle est inférieure à 8.
Les conditions permettent à l'ordinateur de prendre des décisions suivant le résultat de la condition.
Ce résultat peut être soit vrai (True
), soit faux (False
), ces deux éléments étant des booléens.
Une condition peut être plusieurs choses, par exemple :
- Un résultat de fonction
- Une comparaison
- Une combinaison de tout ceci avec des opérateurs logiques
if
ou dans un while
.
Pour les comparaisons, il y a différents comparateurs. Les comparaisons qui permettent de déterminer un ordre
(<, >, >=, <=
) et celles qui permettent de déterminer une différence (==
signifiant "égal à" et
!=
signifiant "différent de")
Pour certaines instructions, tu dois fournir à TOBOR des détails que l'on appelle « arguments ».
Par exemple, pour l'instruction « déplacer », tu as besoin de deux arguments, la position de départ et la position d'arrivée.
En Blockly, il suffit de remplir les deux cases d'arguments :
En Python, il faut mettre les deux arguments à l'intérieur des parenthèses :
Cette instruction demande à TOBOR de déplacer une pierre de la position 1 à la position 3.
Pour enregistrer une valeur à un moment du programme et l'utiliser plus tard, on utilise une « variable ». Il s'agit d'une zone dans mémoire de l'ordinateur, à laquelle on donne un nom, et dans laquelle on peut peut stocker une information pour l'utiliser plus tard.
On peut penser à une variable comme une boîte avec une étiquette, le nom de la variable.
Avant de l’utiliser, on crée d’abord la boîte en lui donnant un nom : on déclare la variable.
Lorsqu’on stocke une information à l’intérieur de la boîte, on dit qu’on affecte une valeur à
la variable. Des lettres en majuscules ou minuscules, des entiers et des underscores (_
)
peuvent composer un nom de variable. Par contre, il ne peut pas commencer par un entier, ni contenir des
caractères avec accents. La casse est aussi prise en compte pour les noms de variable (maVariable et MaVariable sont différentes).
Pour stocker une valeur dans cette variable, par exemple le nombre inscrit sur la case du robot, on fait comme ceci :
Plus tard, pour utiliser la valeur stockée dans cette variable, et par exemple l'écrire sur la case du robot, on fait comme ceci :
Après avoir enregistré une valeur dans une variable, on peut la modifier, par exemple, en lui ajoutant un nombre :
Une liste est une variable contenant plusieurs cases numérotées. On peut stocker une valeur dans chacune de ces cases.
Pour créer une liste, on peut indiquer combien de cases elle doit contenir, et la valeur initiale de chaque case :
Cette liste contient alors 5 cases, numérotées de 1 à 50 à 4, chacune ayant comme valeur initiale 0.
Une fois la liste créée, on peut enregistrer une valeur dans l'une de ses cases, en indiquant le numéro de la case (l'indice) :
On peut aussi lire la valeur stockée dans une case :
Lorsque vous avez besoin de faire la même chose à plusieurs endroits de votre programme, plutôt que de réécrire plusieurs fois le même bout de programme, vous pouvez l'écrire une seule fois et lui donner un nom, qui pourra être utilisé comme une nouvelle instruction. C'est ce que l'on appelle créer une fonction.
Voici un exemple de fonction, qui peint deux cases l'une au dessus de l'autre puis revient à sa position de départ :
Et voici un exemple de programme qui utilise cette fonction, et son résultat :
Si vous voulez que votre fonction fasse quelque-chose de différent selon la valeur d'une variable, vous pouvez lui ajouter un (ou plusieurs) paramètres.
Pour ajouter un paramètre d'entrée à une fonction, cliquez sur l'icone d'engrenage en haut à gauche du bloc. Glissez alors des entrées de la partie gauche vers l'intérieur du bloc de la partie droite, puis choisissez le nom du paramètre. Voici un exemple d'une fonction qui prend un nombre d'étapes en paramètre d'entrée et déplace le robot de ce nombre de cases vers la droite :
Pour ajouter des paramètres d'entrée à une fonction, mettez le nom de ces paramètres entre les parenthèses, séparés par des virgules. Voici un exemple de fonction qui prend deux paramètres nbEtapesBas et nbEtapesDroite, et effectue le déplacement correspondant. L'exemple d'appel entraîne un déplacement de 3 cases vers le bas puis 5 cases vers la droite :
Pour que ton robot affiche du texte, il faut accrocher les deux blocs suivants :
Avec ton clavier, tape le texte que tu veux afficher entre les guillemets.
En python, pour afficher du texte, on utilise le mot clé print ( )
A l’intérieur des parenthèses, on place le texte à afficher entre guillemets.
Exemple :
Lors des programmes précédents, TOBOR affichait chaque texte que tu lui demandais sur une ligne différente. Mais si tu souhaites afficher plusieurs caractères à la suite, sans aller à la ligne à chaque fois, il te faut utiliser une instruction différente.
En Blockly, tu peux utiliser le bloc « afficher », comme ceci :
En Python, tu peux utiliser l'instruction print("Texte", end="")
, comme ceci :
Cela affichera :
Bonjour Camthalion ! Je m'appelle TOBOR !
Ce bloc permet de demander une information à l’utilisateur.
On stocke l’’information dans une variable. Il faut choisir la variable dans le menu, parmi les variables déjà crées.
Pour demander une information à l’utilisateur d’un programme, on utilise le mot-clé input
.
On stocke l’information que l’utilisateur nous donne dans une variable. Tu dois aussi indiquer dans ton programme le type de donnée que tu vas demander.
Le type indique quelle sorte d’information tu vas stocker dans la variable. Pour l’instant, tu vas
stocker des nombres entiers : c’est le type int
.
Exemple :
Si l'utilisateur entre 12, le programme affichera 12. S'il entre 15, le programme affichera 15.
Le langage python permet de manipuler du texte, sous une forme que l'on appelle chaîne de caractères.
Une chaîne de caractères est une suite de caractères, où chaque caractère peut être une lettre de l'alphabet accuentuée ou non, un chifre, une espace, ou toutes sortes de caractères spéciaux comme $, @, etc. ainsi que des caractères de contrôle comme le retour à la ligne, la tabulation, etc. Les caractères peuvent aussi être des caractères de toutes sortes de langues, comme par exemple des caractères chinoix.
On peut créer une chaîne de caractères python en mettant du texte entre guillemets. Voici quelques exemples de chaînes :
Une chaîne peut être stockée dans une variable, transmise en paramètres à une fonction, etc.
TODO
Pour comparer deux chaines de caractères, on peut utiliser les comparateurs >=, >, ==, !=
,
qui permettent de les comparer suivant l'ordre alphabétique.
TODO
Pour connaître le nombre de caractères contenus dans une chaîne, on peut utiliser la fonction
len()
en lui passant la chaîne en paramètre.
Par exemple, len("coucou")
retournera 6.
TODO
Il est possible de former une chaîne de caractères, en mettant bout à bout deux chaînes de caractères. On utilise pour cela l'opérateur +. Par exemple :
À la fin de ce programme, la variable texte contiendra la chaîne "bonjour monde !"
TODO
Il est possible d'obtenir la valeur d'un caractère particulier d'une chaîne. On utilise pour cela des crochets, en mettant entre les crochets, l'indice du caractère que l'on souhaite obtenir au sein de la chaîne. Le premier caractère a pour indice 0, le suivant pour indice 1, etc.
Voici un exemple où l'on obtient la première et la dernière lettre d'une chaîne :
TODO