Programmation par blocs
Dans un jeu, un chat court sur la scène et un chien le poursuit. Comment dire à l'ordinateur « joue un miaulement quand le chien rattrape le chat » sans écrire une seule ligne de code ? En assemblant des blocs, comme les pièces d'un puzzle. À la fin de la page, tu sauras écrire ce programme.
Les trois structures de base
Expliquer avec vos propres mots ce que font les trois structures de base d'un programme — séquence, boucle et instruction conditionnelle — et donner pour chacune un…
Expliquer avec vos propres mots ce que font les trois structures de base d'un programme — séquence, boucle et instruction conditionnelle — et donner pour chacune un exemple de la vie quotidienne qui n'a rien à voir avec les ordinateurs.
Un programme comporte ces blocs séparés : « dire Au revoir ! », « quand le drapeau est cliqué », « attendre un moment », « dire Bonjour ! ». Les ordonner dans la bonne…
Un programme comporte ces blocs séparés : « dire Au revoir ! », « quand le drapeau est cliqué », « attendre un moment », « dire Bonjour ! ». Les ordonner dans la bonne pile et décrire ce qui se passera exactement à l'exécution du programme.
Ces blocs d'apparence sont séparés : « basculer sur le costume de pirate », « dire Bonjour, je m'appelle Marco ! pendant 2 secondes », « quand le drapeau est cliqué », «…
Ces blocs d'apparence sont séparés : « basculer sur le costume de pirate », « dire Bonjour, je m'appelle Marco ! pendant 2 secondes », « quand le drapeau est cliqué », « attendre 1 seconde ». Les ordonner pour présenter un personnage qui salue d'abord puis se déguise, et décrire ce que verra le spectateur.
Un programme comporte cette pile : « quand le drapeau est cliqué », « dire 3 », « attendre un moment », « dire 2 », « attendre un moment », « dire 1 », « dire C'est…
Un programme comporte cette pile : « quand le drapeau est cliqué », « dire 3 », « attendre un moment », « dire 2 », « attendre un moment », « dire 1 », « dire C'est parti ! ». Décrire en détail ce que verra et entendra l'utilisateur depuis le clic sur le drapeau jusqu'à la fin, et expliquer à quoi servent les attentes.
Événements, mouvement et scène
Le lutin placé sur la scène a ici pour coordonnées $(3 ; -2)$ : déplace le point pour lire x et y.
Le programme de la figure, formé de blocs emboîtés, devrait faire parcourir à un personnage le carré en pointillés et le faire prévenir à la fin, mais il manque un bloc…
Le programme de la figure, formé de blocs emboîtés, devrait faire parcourir à un personnage le carré en pointillés et le faire prévenir à la fin, mais il manque un bloc dans la boucle.
Indiquer quel bloc manque dans la boucle pour que le personnage termine le parcours du carré et expliquer ce que fait chaque partie du programme.
Les blocs d'événement décident du moment où une pile de blocs se met à fonctionner. Expliquer ce qui déclenche chacun de ces trois événements : « quand le drapeau est…
Les blocs d'événement décident du moment où une pile de blocs se met à fonctionner. Expliquer ce qui déclenche chacun de ces trois événements : « quand le drapeau est cliqué », « quand la touche espace est pressée » et « quand ce lutin est cliqué », et décrire ce qui se passerait si un projet comportait deux piles différentes avec deux événements différents.
La scène d'un programme par blocs fonctionne comme un repère de coordonnées : « x » indique la position horizontale et « y » la position verticale, et le centre est le…
La scène d'un programme par blocs fonctionne comme un repère de coordonnées : « x » indique la position horizontale et « y » la position verticale, et le centre est le point $(0\,;\,0)$. Expliquer où apparaîtra le personnage avec le bloc « aller à x : 0, y : 0 » et dans quelle direction il se déplacera si « x » augmente ou si « y » diminue.
Variables et boucles contrôlées
Un programme veut compter de un à dix avec ces blocs : « répéter 10 fois : dire le nombre ; ajouter 1 au nombre ». À l'exécution, le décompte ne commence pas à un et,…
Un programme veut compter de un à dix avec ces blocs : « répéter 10 fois : dire le nombre ; ajouter 1 au nombre ». À l'exécution, le décompte ne commence pas à un et, chaque fois qu'on relance le programme, il commence à un nombre différent. Expliquer quel bloc manque et où il devrait être placé, et à quelle position de la pile il faut mettre la valeur initiale du nombre.
La figure montre deux programmes qui déplacent un personnage avec deux types de boucle différents. Expliquer la différence entre les deux boucles, donner une situation…
La figure montre deux programmes qui déplacent un personnage avec deux types de boucle différents.
Expliquer la différence entre les deux boucles, donner une situation où il convient d'utiliser chacune et expliquer ce qui peut se produire avec la boucle de droite si la ligne d'arrivée n'existait pas.
La figure montre un programme avec une variable appelée « points » qui contrôle une boucle. Dérouler le programme pas à pas : indiquer combien de fois la boucle…
La figure montre un programme avec une variable appelée « points » qui contrôle une boucle.
Dérouler le programme pas à pas : indiquer combien de fois la boucle s'exécute et combien de pas le personnage fait au total. Expliquer ensuite ce qui se passerait si le bloc « mettre points à 0 » était dans la boucle au lieu d'être avant.
Pour animer un personnage, on utilise « répéter 4 fois : costume suivant ; attendre une demi-seconde ». Expliquer ce que réalise cette boucle et calculer la durée de…
Pour animer un personnage, on utilise « répéter 4 fois : costume suivant ; attendre une demi-seconde ». Expliquer ce que réalise cette boucle et calculer la durée de l'animation complète si chaque attente est de $0,5\ \text{s}$ et que le changement de costume est instantané.
Dans un jeu de contre-la-montre, on veut enregistrer le record du plus petit temps mis pour terminer un circuit. Un élève écrit ce code à l'arrivée : « si <Temps_Partie…
Dans un jeu de contre-la-montre, on veut enregistrer le record du plus petit temps mis pour terminer un circuit. Un élève écrit ce code à l'arrivée :
« si <Temps_Partie < Record> alors [mettre Record à Temps_Partie] »
Pourtant, lors de la première partie après la création de la variable Record (que Scratch initialise à 0 par défaut), le record n'est jamais mis à jour, quelle que soit la rapidité de la voiture.
- a) Justifier pourquoi ce test échoue et expliquer la différence d'initialisation entre la recherche d'un record de score maximal et celle d'un temps minimal.
- b) Concevoir la structure de blocs qui résout ce problème pour la première partie et les suivantes, sans avoir à écrire à la main une valeur initiale fictive avant de cliquer sur le drapeau vert.
Pour mesurer la durée d'une partie, on crée ce chronomètre : « quand le drapeau vert est cliqué : mettre Secondes à 0 répéter indéfiniment : attendre 1 s ajouter 1 à…
Pour mesurer la durée d'une partie, on crée ce chronomètre :
« quand le drapeau vert est cliqué :
mettre Secondes à 0
répéter indéfiniment :
attendre 1 s
ajouter 1 à Secondes »
En comparant ce compteur à une horloge réelle après 10 minutes de jeu intense, le chronomètre de Scratch n'indique que 9 minutes et 35 secondes (un décalage de 25 secondes).
- a) Justifier pourquoi une boucle avec le bloc « attendre 1 s » accumule du retard lorsque le jeu traite de nombreux personnages et mouvements simultanés.
- b) Concevoir un chronomètre alternatif en blocs, en utilisant le capteur « chronomètre » et des variables, qui ne dépende pas de la vitesse de rafraîchissement du jeu et affiche le temps écoulé en secondes avec une décimale (par exemple : 14,2 s).
- c) Justifier pourquoi votre proposition conserve une précision exacte même en cas de ralentissements à l'écran.
Conditions imbriquées et opérateurs logiques
Dans un jeu, un chat court sur la scène et un chien le poursuit. Expliquer où vous placeriez le bloc « jouer le son miaou » pour qu'il retentisse exactement quand le…
Dans un jeu, un chat court sur la scène et un chien le poursuit. Expliquer où vous placeriez le bloc « jouer le son miaou » pour qu'il retentisse exactement quand le chien rattrape le chat, quel bloc de test l'accompagne et ce qui se passerait si le son était en dehors de ce test.
Décrire avec vos propres mots les blocs d'un programme qui demande l'âge de l'utilisateur et répond « vous pouvez entrer » s'il a 14 ans ou plus, et « désolé » dans le…
Décrire avec vos propres mots les blocs d'un programme qui demande l'âge de l'utilisateur et répond « vous pouvez entrer » s'il a 14 ans ou plus, et « désolé » dans le cas contraire. Indiquer quel type de bloc de décision vous utiliseriez et quel test il effectuerait exactement.
Un café du quartier offre un café uniquement aux adhérents et uniquement avant 10 heures du matin. Décrire les blocs de décision imbriqués du programme qui le vérifie et…
Un café du quartier offre un café uniquement aux adhérents et uniquement avant 10 heures du matin. Décrire les blocs de décision imbriqués du programme qui le vérifie et expliquer la différence entre placer deux « si » l'un dans l'autre et placer deux « si » à la suite, en utilisant cet exemple.
Les blocs d'opérateurs « et », « ou » et « non » combinent des tests. Expliquer ce que fait chacun et décrire les conditions complètes de ces deux systèmes : une porte…
Les blocs d'opérateurs « et », « ou » et « non » combinent des tests. Expliquer ce que fait chacun et décrire les conditions complètes de ces deux systèmes : une porte qui s'ouvre si la carte est valide et si l'empreinte correspond, et une alarme qui retentit si la fenêtre est ouverte ou si la vitre est brisée.
Un camarade a programmé le cycle d'un feu tricolore pour les voitures (vert : 10 s ; orange : 3 s ; rouge : 12 s) et un feu piéton synchronisé. Pour cela, il a créé deux…
Un camarade a programmé le cycle d'un feu tricolore pour les voitures (vert : 10 s ; orange : 3 s ; rouge : 12 s) et un feu piéton synchronisé. Pour cela, il a créé deux programmes indépendants avec « quand le drapeau vert est cliqué » et des boucles « répéter indéfiniment » avec des blocs d'attente dans chaque objet. Après une minute de simulation, les voitures et les piétons ont le feu vert en même temps.
- a) Justifier pourquoi cette désynchronisation dangereuse se produit quand on utilise des boucles avec des temps d'attente indépendants.
- b) Concevoir une solution avec des blocs qui garantisse que les deux feux ne soient jamais verts en même temps, en expliquant si vous utilisez des variables d'état ou des messages (« envoyer un message et attendre ») et en détaillant l'ordre exact des changements de feu.
Un élève programme le mouvement d'une balle avec ce code : « répéter indéfiniment : avancer de 10 pas si touche le bord, rebondir » En exécutant le programme avec une…
Un élève programme le mouvement d'une balle avec ce code :
« répéter indéfiniment :
avancer de 10 pas
si touche le bord, rebondir »
En exécutant le programme avec une balle dont le costume n'est pas parfaitement centré, il observe que, sous certains angles, la balle tremble et reste coincée au bord de l'écran sans pouvoir en sortir.
- a) Expliquer pas à pas pourquoi ce blocage se produit, selon la façon dont Scratch calcule la collision avec le bord et la position du centre du costume.
- b) Le problème serait-il résolu simplement en inversant l'ordre des deux blocs dans la boucle ? Justifier la réponse en prédisant ce qui se passerait à chaque itération.
- c) Concevoir une modification des blocs qui garantisse que la balle se décolle du bord et poursuive normalement sa trajectoire.
Un jeu de plateformes comporte ce script sur le personnage : « quand le drapeau vert est cliqué : mettre Vies à 3 si <Vies = 0> alors [tout arrêter] répéter indéfiniment…
Un jeu de plateformes comporte ce script sur le personnage :
« quand le drapeau vert est cliqué :
mettre Vies à 3
si alors [tout arrêter]
répéter indéfiniment :
si <touche Piège ?> alors :
ajouter -2 à Vies
attendre 0,5 s »
Le jeu présente deux défauts : la partie ne se termine jamais même si le joueur touche le piège de façon répétée, et si un joueur tombe dans le piège avec 1 vie, le compteur passe à -1 vie sans arrêter le jeu.
- a) Justifier pourquoi le test de fin de partie, tel qu'il est placé, n'arrête le jeu à aucun moment.
- b) Expliquer pourquoi utiliser la condition stricte est une erreur de conception lorsque les dégâts retirent plus d'une vie.
- c) Concevoir la solution en déplaçant et en modifiant les blocs conditionnels pour garantir que la partie se termine exactement quand les vies sont épuisées ou deviennent négatives.
Communication entre lutins
En 5e, tu lis, comprends et modifies des programmes qui utilisent des messages ; tu n'as pas à en concevoir de toi-même.
Dans un projet, il y a deux personnages : un bouton et un magicien. Quand on clique sur le bouton, le magicien doit apparaître. Expliquer à quoi servent les blocs «…
Dans un projet, il y a deux personnages : un bouton et un magicien. Quand on clique sur le bouton, le magicien doit apparaître. Expliquer à quoi servent les blocs « envoyer un message » et « quand je reçois un message », décrire les piles de blocs de chaque personnage et expliquer pourquoi il ne suffit pas de placer les blocs du magicien dans le bouton.
Dans un jeu vidéo, ce bloc a été inclus dans la boucle « répéter indéfiniment » du personnage principal : « si <touche Pièce ?> alors [ajouter 1 à Points] » « si <touche…
Dans un jeu vidéo, ce bloc a été inclus dans la boucle « répéter indéfiniment » du personnage principal :
-
« si alors [ajouter 1 à Points] »
-
« si alors [ajouter -1 à Vies] »
-
« si alors [tout arrêter] »
Lors du test, on détecte deux défauts graves : en touchant une seule pièce, le compteur augmente d'un coup de 15 à 20 points, et en effleurant un ennemi, les 3 vies sont perdues instantanément.
- a) Justifier techniquement pourquoi cela se produit, en tenant compte de la vitesse d'exécution des boucles par seconde.
- b) Concevoir la modification nécessaire dans les blocs de la pièce et du personnage pour corriger les deux comportements sans mettre en pause le mouvement général du jeu (envisager de cacher/supprimer des objets et des périodes d'invulnérabilité).
Dans un jeu spatial, l'objet « Astéroïde » comporte ces trois piles : Pile 1 : « quand le drapeau vert est cliqué : répéter indéfiniment [attendre 2 s ; créer un clone…
Dans un jeu spatial, l'objet « Astéroïde » comporte ces trois piles :
Pile 1 : « quand le drapeau vert est cliqué : répéter indéfiniment [attendre 2 s ; créer un clone de moi-même] »
Pile 2 : « quand je reçois Alerte_Météorites : créer un clone de moi-même »
Pile 3 : « quand je commence comme clone : montrer ; répéter indéfiniment [ajouter -5 à y ; si <position y < -170> alors [cacher]] »
Après quelques minutes de jeu, celui-ci subit de graves ralentissements, il ne se crée plus d'astéroïdes et, chaque fois que le message Alerte_Météorites arrive, le nombre de clones se multiplie de façon incontrôlée.
- a) Justifier pourquoi le bloc « cacher » fait que le jeu cesse de répondre et atteint la limite de clones de Scratch.
- b) Expliquer le défaut de la Pile 2 : pourquoi les clones existants eux-mêmes multiplient-ils le nombre d'astéroïdes à la réception d'un message ?
- c) Concevoir la solution correcte avec des blocs pour la création, le déplacement et la suppression définitive des clones.
Dans un jeu de Pong pour deux joueurs (raquettes gauche et droite), on détecte ces erreurs d'interaction : 1. Quand elle dépasse la raquette, la balle rebondit sur le…
Dans un jeu de Pong pour deux joueurs (raquettes gauche et droite), on détecte ces erreurs d'interaction :
-
Quand elle dépasse la raquette, la balle rebondit sur le bord arrière et marque plusieurs points consécutifs avant que le point ne soit réinitialisé.
-
Pendant que la balle revient au centre après un but, les joueurs peuvent continuer à la frapper en marquant de faux points.
-
Si la balle effleure l'arrière de la raquette lorsque celle-ci monte rapidement, la balle est projetée vers l'intérieur de son propre but.
- a) Concevoir la structure de blocs de la balle pour gérer le but : détection du but, arrêt momentané du jeu et communication avec les scores par des messages.
- b) Concevoir la condition de rebond de la raquette pour qu'elle ne renvoie la balle vers le camp adverse que si l'impact a lieu sur sa face avant, c'est-à-dire lorsque la balle se dirige vers la raquette.
- c) Expliquer comment les raquettes et la balle doivent réagir au message « nouveau point » pour reprendre le jeu de façon équitable et synchronisée.