Algorithmique et programmation — cours de 5e
Algorithme et programme, L'environnement Scratch, Événements, Instructions de mouvement et d'apparence Lecture ≈ 5 min.
1. Algorithme et programme
Un algorithme est une suite finie d'instructions précises, exécutées dans un ordre donné, permettant de résoudre un problème ou d'accomplir une tâche.
Un programme est la traduction d'un algorithme dans un langage compréhensible par un ordinateur. Au collège, on utilise le langage par blocs Scratch.
Recette : « Casser 3 œufs dans un bol. Battre les œufs. Verser dans la poêle chaude. Attendre 2 minutes. Servir. » L'ordre des instructions compte : on ne peut pas battre les œufs avant de les casser !
2. L'environnement Scratch
- La scène est la zone où les lutins (personnages, objets) se déplacent et s'affichent. Elle est repérée par des coordonnées : x de −240 à 240, y de −180 à 180, avec l'origine (0 ; 0) au centre.
- Un script est un assemblage de blocs qui décrit ce que fait un lutin.
- Les blocs sont classés par catégories : Mouvement, Apparence, Son, Événements, Contrôle, Capteurs, Opérateurs, Variables.
3. Événements
Un événement est ce qui déclenche l'exécution d'un script. Les blocs d'événements sont des « chapeaux » placés en haut du script.
quand le drapeau vert est cliquéquand la touche [espace] est presséequand ce lutin est cliquéquand je reçois [message]
4. Instructions de mouvement et d'apparence
avancer de (10) pas— déplace le lutin dans sa direction.tourner de (90) degrésaller à x: (0) y: (0)— place le lutin aux coordonnées données.s'orienter à (90)— 90 = vers la droite, 0 = vers le haut, −90 = vers la gauche, 180 = vers le bas.stylo en position d'écriture/relever le stylo— pour tracer des figures.dire [Bonjour] pendant (2) secondesattendre (1) secondes
5. Boucles
Une boucle permet de répéter plusieurs fois un groupe d'instructions sans avoir à les réécrire.
répéter (n) fois { ... }: répète un nombre fixé de fois.répéter indéfiniment { ... }: répète sans fin (jusqu'à l'arrêt du programme).répéter jusqu'à < condition > { ... }: répète jusqu'à ce que la condition devienne vraie.
quand le drapeau vert est cliqué
effacer tout
aller à x: (-50) y: (-50)
s'orienter à (90)
stylo en position d'écriture
répéter (4) fois
avancer de (100) pas
tourner de (90) degrés
fin répéter
relever le stylo
La boucle exécute 4 fois « avancer puis tourner ». Sans boucle, il aurait fallu écrire ces deux instructions 4 fois.
Pour un triangle équilatéral, on tourne de 120° à chaque sommet (360 ÷ 3). Pour un polygone régulier à n côtés, on répète n fois : avancer de (L) pas puis tourner de (360 / n) degrés. L'angle de rotation est l'angle extérieur, pas l'angle intérieur.
6. Variables
Une variable est une « boîte » nommée dans laquelle le programme range une valeur (un nombre ou un texte). Cette valeur peut changer au cours de l'exécution.
mettre [score] à (0): donne une valeur à la variable.ajouter (1) à [score]: augmente la valeur de la variable.- Le bloc arrondi
(score)permet d'utiliser la valeur dans un calcul ou un test.
quand le drapeau vert est cliqué
mettre [compteur] à (0)
répéter (10) fois
ajouter (1) à [compteur]
dire (compteur) pendant (0.5) secondes
fin répéter
Le lutin affiche successivement 1, 2, 3, ..., 10.
Traduire le programme « Choisir un nombre, le multiplier par 3, ajouter 5 » :
quand le drapeau vert est cliqué demander [Choisis un nombre] et attendre mettre [nombre] à (réponse) mettre [résultat] à ((nombre) * (3) + (5)) dire (résultat)
Si l'utilisateur tape 4, le lutin affiche 17. C'est l'expression littérale 3x + 5 du chapitre 4.
7. Conditions (instructions conditionnelles)
Une instruction conditionnelle permet d'exécuter des instructions seulement si une condition est vraie.
si < condition > alors { ... }si < condition > alors { ... } sinon { ... }
Une condition est une expression qui est soit vraie soit fausse : < (score) > (10) >, < touche [espace] pressée ? >, < couleur [rouge] touchée ? >, < (réponse) = (17) >. On peut combiner des conditions avec et, ou, non.
quand le drapeau vert est cliqué
demander [Entre un nombre entier] et attendre
si < ((réponse) modulo (2)) = (0) > alors
dire [Ce nombre est pair]
sinon
dire [Ce nombre est impair]
fin si
Le bloc modulo donne le reste de la division euclidienne : 14 modulo 2 = 0 (pair), 15 modulo 2 = 1 (impair).
quand le drapeau vert est cliqué
mettre [secret] à (nombre aléatoire entre (1) et (20))
mettre [essais] à (0)
demander [Devine le nombre entre 1 et 20] et attendre
ajouter (1) à [essais]
répéter jusqu'à < (réponse) = (secret) >
si < (réponse) < (secret) > alors
dire [Trop petit !] pendant (1) secondes
sinon
dire [Trop grand !] pendant (1) secondes
fin si
demander [Devine le nombre entre 1 et 20] et attendre
ajouter (1) à [essais]
fin répéter
dire (regrouper [Bravo ! Essais : ] (essais))
Ce script utilise une variable (secret, essais), une boucle (répéter jusqu'à) et des conditions (si... sinon).
8. Déplacement et interaction
quand la touche [flèche droite] est pressée
s'orienter à (90)
avancer de (10) pas
quand la touche [flèche gauche] est pressée
s'orienter à (-90)
avancer de (10) pas
Chaque script est déclenché par un événement différent. On peut aussi écrire un seul script avec répéter indéfiniment et des tests si < touche [flèche droite] pressée ? > alors.
9. Lire et corriger un script
- Repérer l'événement déclencheur.
- Exécuter les instructions une à une « à la main », en notant la valeur des variables à chaque étape (on peut faire un tableau).
- Pour une boucle, compter le nombre de répétitions et ce qui change à chaque tour.
mettre [a] à (2)
répéter (3) fois
mettre [a] à ((a) * (2))
fin répéter
dire (a)
| Étape | Valeur de a |
|---|---|
| Départ | 2 |
| Après le tour 1 | 4 |
| Après le tour 2 | 8 |
| Après le tour 3 | 16 |
Le lutin dit 16.