Qu'est-ce qu'un programme ?
B
Un programme est une suite d'instructions que la machine exécute l'une après l'autre, de haut en bas, dans l'ordre.
63 exercices pour t'entraîner sur Algorithmique et programmation en 5ᵉ, du QCM à la démonstration. 20 corrigés en détail ci-dessous. Revoir le cours.
Qu'est-ce qu'un programme ?
B
Un programme est une suite d'instructions que la machine exécute l'une après l'autre, de haut en bas, dans l'ordre.
Dans un programme, l'ordre des instructions n'a aucune importance.
B
Un programme est une séquence : les instructions s'exécutent dans l'ordre. « Avancer puis tourner » ne donne pas le même résultat que « tourner puis avancer ».
Le lutin exécute ce programme :
avancer de 100 pas
tourner de 90 degrés
Que fait le lutin ?
A
Les blocs s'exécutent dans l'ordre : d'abord « avancer de 100 pas », ensuite « tourner de 90 degrés » (un quart de tour).
Sur la scène de Scratch, quelles sont les coordonnées du centre ?
B
La scène est un repère : son centre est l'origine, de coordonnées .
Le lutin est placé 100 pas à droite du centre et 50 pas au-dessus. Quelles sont ses coordonnées ?
B
L'abscisse donne la position horizontale (100 à droite), l'ordonnée la position verticale (50 au-dessus) : le lutin est en .
À quoi sert une boucle « répéter fois » ?
A
La boucle « répéter fois » exécute le même groupe d'instructions fois de suite, ce qui évite de tout recopier.
Combien de fois le groupe d'instructions à l'intérieur de « répéter 5 fois » s'exécute-t-il ?
5
Une boucle « répéter 5 fois » exécute exactement 5 fois les instructions qu'elle contient.
Le lutin exécute ce programme :
répéter 4 fois :
avancer de 100 pas
tourner de 90 degrés
Quelle figure dessine-t-il ?
B
Quatre côtés égaux séparés par des angles droits () : c'est un carré. La boucle répète quatre fois « un côté + un virage ».
Une condition, dans un bloc « si … alors », peut prendre combien de valeurs ?
B
Une condition est toujours soit vraie, soit fausse. C'est ce qui décide si l'action du « si … alors » est exécutée ou non.
Le programme contient :
si (le lutin touche le bord) alors :
tourner de 180 degrés
Quand le lutin tourne-t-il de 180 degrés ?
C
L'action « tourner de 180 degrés » ne s'exécute que lorsque la condition « touche le bord » est vraie.
À quoi sert une variable dans un programme ?
B
Une variable est une boîte, désignée par un nom, qui retient une valeur (par exemple un score) ; cette valeur peut changer pendant l'exécution.
Après l'instruction « mettre score à 0 », quelle valeur contient la variable score ?
0
L'instruction « mettre score à 0 » fixe la valeur de départ de la variable : score vaut 0.
La variable score vaut 0 au départ. On exécute :
ajouter 1 à score
ajouter 1 à score
Quelle est la valeur de score à la fin ?
2
score part de 0, devient 1 après le premier « ajouter 1 », puis 2 après le second.
Après qu'on a modifié une variable, elle revient automatiquement à sa valeur de départ.
B
Une variable garde sa dernière valeur. Après « ajouter 1 à score », elle ne revient pas à sa valeur initiale : elle conserve la nouvelle.
Parmi ces instructions, laquelle est un déplacement relatif (par rapport à la position actuelle du lutin) ?
B
« Avancer de 100 pas » déplace le lutin par rapport à là où il se trouve : c'est relatif. « Aller à » est un déplacement absolu (vers un point précis).
Un programme exécute :
répéter 3 fois :
avancer de 100 pas
tourner de 120 degrés
Combien de côtés a la figure dessinée ?
3
La boucle répète trois fois « un côté + un virage » : la figure a 3 côtés (c'est un triangle).
Il faut initialiser une variable (lui donner une valeur de départ) avant de l'utiliser.
A
Tant qu'on n'a pas écrit « mettre la variable à … », sa valeur de départ n'est pas garantie. On initialise toujours une variable avant de s'en servir.
Le lutin est au centre . Il exécute « aller à , ». Où se trouve-t-il ?
A
Augmenter déplace vers la droite, restant nul. Le lutin est donc 50 pas à droite du centre, à la même hauteur.
Dans « si (le lutin touche le bord) alors (tourner de 180°) », qu'est-ce qui est la condition ?
B
La condition est le test : « le lutin touche le bord ? ». L'action est ce qu'on exécute si le test est vrai : « tourner de 180° ».
Tourner de 90 degrés quatre fois de suite ramène le lutin à son orientation de départ.
A
, soit un tour complet : le lutin retrouve son orientation initiale. C'est ce qui « ferme » un carré.
Le lutin exécute :
répéter 3 fois :
avancer de 100 pas
tourner de 90 degrés
La figure obtenue est-elle fermée ?
On veut remplacer ce programme par une boucle :
avancer de 100 pas
tourner de 90 degrés
avancer de 100 pas
tourner de 90 degrés
avancer de 100 pas
tourner de 90 degrés
avancer de 100 pas
tourner de 90 degrés
Par quel nombre de répétitions « répéter ? fois (avancer / tourner) » faut-il remplacer ce bloc ?
La variable score vaut 0 au départ. On exécute :
répéter 4 fois :
ajouter 1 à score
Quelle est la valeur de score à la fin ?
Pour dessiner un triangle équilatéral en Scratch, le lutin avance puis tourne, trois fois. De combien de degrés doit-il tourner à chaque coin ? (On rappelle qu'un tour complet fait et qu'il y a 3 coins.)
Pour dessiner un hexagone régulier (6 côtés) en Scratch, de combien de degrés le lutin doit-il tourner à chaque coin ?
Le programme contient :
si (score = 4) alors :
dire « gagné »
À ce moment, score vaut 3. Que se passe-t-il ?
On inverse l'ordre des deux blocs :
tourner de 90 degrés
avancer de 100 pas
Par rapport à « avancer puis tourner », que change cet ordre ?
Yasmine veut un carré mais son programme dessine une figure ouverte à 3 côtés :
répéter 3 fois :
avancer de 100 pas
tourner de 90 degrés
Que doit-elle changer ?
Un programme utilise la variable score mais ne contient jamais l'instruction « mettre score à 0 ». Quel est le problème ?
Le lutin exécute :
répéter 6 fois :
avancer de 80 pas
tourner de 60 degrés
Quelle figure dessine-t-il ?
Le lutin exécute :
aller à x : 0, y : 0
aller à x : 100, y : 0
aller à x : 100, y : 50
Où se trouve-t-il à la fin ?
Décris, à l'aide d'une boucle, l'algorithme qui fait dessiner un carré de côté 100 au lutin.
La variable score vaut 0 au départ. On exécute :
répéter 3 fois :
ajouter 2 à score
Quelle est la valeur finale de score ?
Karim veut dessiner un carré mais sa figure reste ouverte :
répéter 3 fois :
avancer de 100 pas
tourner de 90 degrés
Explique l'erreur et donne le programme corrigé.
Un programme contient :
si (score = 10) alors :
dire « gagné »
sinon :
dire « continue »
score vaut 7. Que dit le lutin ?
Sans boucle, dessiner un carré demande d'écrire 8 blocs (4 fois « avancer » et « tourner »). Avec une boucle « répéter 4 fois », on n'écrit que 2 blocs à l'intérieur (avancer, tourner). Combien de blocs écrit-on en moins à l'intérieur de la boucle par rapport à la version sans boucle ?
Décris un algorithme, avec une variable et une boucle, qui compte de 1 à 5 (la variable doit finir à 5).
score vaut 0. On exécute :
ajouter 3 à score
ajouter 3 à score
Quelle suite de valeurs prend score au fil du programme ?
Changer l'ordre de deux instructions de déplacement peut changer la figure dessinée.
Décris l'algorithme qui fait dessiner un triangle équilatéral au lutin. Précise le nombre de répétitions et l'angle de rotation.
Karim veut dessiner un triangle équilatéral. Il sait que ses angles mesurent , alors il écrit « répéter 3 fois (avancer, tourner de degrés) ». De combien le lutin doit-il vraiment tourner à chaque coin ?
Salma affirme : « Un carré a 4 côtés, mais entre eux il n'y a que 3 coins, alors répéter 3 fois (avancer, tourner de degrés) suffit pour le fermer. » A-t-elle raison ?
La variable score vaut 2. Karim lit la ligne « si (score = 4) alors : dire gagné » et affirme : « cette ligne met score à 4 ». Que fait vraiment cette ligne ?
Décris un programme complet pour le jeu de Yasmine : le lutin doit parcourir un carré, gagner 1 point à chaque côté, et dire « gagné » quand le score atteint 4. Utilise une variable, une boucle et une condition.
Pour dessiner un pentagone régulier (5 côtés) en Scratch, de combien de degrés le lutin tourne-t-il à chaque coin ?
Le lutin exécute :
répéter 3 fois :
répéter 4 fois :
avancer de 50 pas
tourner de 90 degrés
tourner de 120 degrés
Que dessine-t-il ?
Le programme de Karim doit dire « gagné » quand le score atteint 3, mais il ne fonctionne pas de façon fiable :
répéter 3 fois :
ajouter 1 à score
si (score = 3) alors :
dire « gagné »
Identifie l'erreur et corrige le programme.
La variable total vaut 0 au départ. On exécute :
répéter 5 fois :
ajouter 3 à total
Quelle est la valeur finale de total ?
Deux programmes :
Programme 1 :
répéter 4 fois :
avancer de 100 pas
tourner de 90 degrés
Programme 2 :
avancer de 100 pas
tourner de 90 degrés
avancer de 100 pas
tourner de 90 degrés
avancer de 100 pas
tourner de 90 degrés
avancer de 100 pas
tourner de 90 degrés
Que peut-on dire ?
Pour dessiner un octogone régulier (8 côtés) en Scratch, de combien de degrés le lutin tourne-t-il à chaque coin ?
Le lutin exécute, en se déplaçant en boucle :
répéter 10 fois :
avancer de 30 pas
si (le lutin touche le bord) alors :
tourner de 180 degrés
À quel moment le lutin tourne-t-il de 180° ?
Karim veut que le lutin dise « pair » quand le score vaut 2. Il écrit :
si (dire « pair ») alors :
score = 2
Explique pourquoi c'est faux et écris la version correcte.
score vaut 0. On exécute :
répéter 2 fois :
ajouter 1 à score
si (score = 2) alors :
ajouter 10 à score
Quelle est la valeur finale de score ?
Décris un algorithme qui fait dessiner au lutin un escalier de 5 marches, chaque marche étant un déplacement vers la droite puis vers le haut. Utilise une boucle.
Le lutin part du centre , orienté vers la droite. Il exécute :
répéter 4 fois :
avancer de 100 pas
tourner de 90 degrés
Où se trouve-t-il à la fin ?
Explique pourquoi le programme suivant ne dessine pas un carré fermé :
répéter 3 fois :
avancer de 100 pas
tourner de 90 degrés
Le lutin exécute :
répéter 4 fois :
avancer de 100 pas
tourner de 90 degrés
Combien de pas le lutin a-t-il parcourus au total ?
Une boucle « répéter » peut contenir une instruction conditionnelle « si … alors » à l'intérieur.
La variable score vaut 0 au départ. On exécute :
répéter 3 fois :
ajouter 1 à score
répéter 2 fois :
ajouter 2 à score
Quelle est la valeur finale de score ?
On veut que le lutin trace une figure à 4 branches identiques partant d'un même point (comme une croix), en pivotant de entre chaque branche. Quel squelette de programme convient ?
À l'intérieur d'une boucle, l'ordre des instructions n'a pas d'importance puisqu'elles se répètent.
Karim affirme : « une fois que j'ai écrit ajouter 1 à score, la variable revient à sa valeur de départ au tour suivant. » Explique pourquoi il a tort, sur l'exemple d'une boucle « répéter 3 fois (ajouter 1 à score) » avec score initialisé à 0.
Pour transformer un programme qui dessine un carré (répéter 4 fois) en un programme qui dessine un hexagone, il suffit de changer le nombre de répétitions et l'angle.