Introduction à l'algorithmique avec Scratch - TP4

Rédigé par Benoît Crespin le 12 août 2014

Scratch propose un mécanisme pour coder une suite de données, appelées Liste (dans la rubrique "Données"). La liste permet de stocker des valeurs les unes à la suite des autres, chaque valeur étant rangée dans une case en partant de 1. Voici un exemple de programme en Scratch manipulant une liste, qui utilise aussi une variable "Compteur":


Et voici le résultat que l'on peut obtenir avec ce code:


On peut avec ce mécanisme créer des programmes assez élaborés, éventuellement en ajoutant ou en supprimant des valeurs.

Exercice 1
  1. Améliorer le programme ci-dessus pour afficher la moyenne des valeurs dans la liste
  2. Afficher en outre quelle est la plus grande valeur dans la liste, et dans quelle case elle se trouve
  3. Ecrire un programme qui, au lieu de créer une seule liste, va créer deux listes: une pour les nombres pairs, une pour les impairs (utiliser l'opérateur "modulo")
  4. Ecrire un programme qui, au lieu de stocker dans une liste des valeurs aléatoires, remplit la liste avec les nombres de la suite de Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21, ...

Exercice 2
On souhaite réaliser une version simplifiée du jeu du pendu: un premier joueur créée une liste en tapant 5 lettres à la suite, puis le second joueur doit retrouver ces 5 lettres... mais n'a pas droit à plus de 5 erreurs. Le principe est de gérer une autre liste contenant 5 caractères '_', que l'on voit se remplir en fonction des choix du joueur. Par exemple, voici comment pourrait se dérouler le jeu si le premier joueur a entré les lettres T, I, P, I, S:
  • Joueur 2, entre une lettre: P
  • Bien joué, il te reste 5 chances (la 2ème liste affichée: _ _ P _ _)
  • Joueur 2, entre une lettre: B
  • Cette lettre n'apparaît pas dans le mot mystère, il te reste 4 chances
  • Joueur 2, entre une lettre: S
  • Bien joué, il te reste 4 chances (la 2ème liste affichée: _ _ P _ S)
  • Joueur 2, entre une lettre: I
  • Bien joué, il te reste 4 chances (la 2ème liste affichée: _ I P I S)
  • ...

Exercice 3
Un peu plus compliqué, on se propose dans cet exercice de réaliser un mini Mastermind. Le déroulement de l’application est le suivant:
  1. On tire au hasard 3 chiffres entre 1 et 6 stockés dans une liste
  2. On demande à l’utilisateur de saisir 3 chiffres
  3. On affiche ensuite à l’utilisateur le nombre de chiffres correctement placés, ainsi que
    le nombre de chiffres valides mais incorrectement placés
  4. On repart à l'étape 2 tant que le joueur n'a pas trouvé les 3 chiffres dans le bon ordre et n'a pas atteint 10 essais
Exemple avec les nombres à découvrir 6 - 2 - 4 :
  • L’utilisateur propose: 1 - 2 - 3, l'ordinateur répond: Corrects : 1, Mal placés : 0
  • L’utilisateur propose: 4 - 2 - 1, l'ordinateur répond: Corrects : 1, Mal placés : 1
  • ...
L'intérêt d'utiliser une liste est qu'on peut ensuite facilement améliorer le programme pour passer à 6, 10 voire 20 chiffres...

Classé dans : enseignement - Mots clés : scratch -

Introduction à l'algorithmique avec Scratch - TP3

Rédigé par Benoît Crespin le 02 août 2014

Scratch permet de faire bouger les personnages, de changer leur apparence, leur position, etc. Comme on le voit ci-dessous à gauche, les personnages peuvent se déplacer dans un espace à deux dimensions. On peut aussi s'en rendre compte en observant les valeurs X et Y en bas à droite de la fenêtre d'exécution.


L'image de droite montre le principe des directions dans Scratch: attention, c'est un peu différent du cercle trigonométrique...

Exercice 1
Pour bien tout comprendre, suivez les petits exercices du guide "Pour bien commencer avec Scratch" permettant de découvrir notamment:
  • p3, leçon #1: comment faire bouger le personnage
  • p7, leçon #5: comment lui faire afficher un message
  • p9, leçon #7: comment changer son apparence
  • p10, leçon #8: comment déclencher des instructions lors de l'appui sur une touche
Notez que le son est coupé sur les machines des salles de TP, si vous travaillez avec votre propre machine merci d'utiliser des écouteurs... Si vous avez tout compris:
  1. Essayez de programmer le jeu des taupes: le personnage apparaît à une position aléatoire sur l'écran. Le joueur a ensuite 2 secondes pour cliquer dessus, sinon elle disparaît pendant 1 seconde et réapparaît ailleurs. Le jeu s'arrête au bout de 10 tentatives. A vous de déterminer les éléments dont vous avez besoin...
  2. Récupérez une image de labyrinthe comme celle-ci, que vous appliquerez comme arrière-plan de la scène, et identifiez les zones d'entrée et de sortie. Vous pouvez programmer maintenant un jeu avec un personnage assez petit: au début du jeu le personnage est placé à l'entrée, et le joueur le dirige vers la sortie avec les flèches du clavier... mais s'il touche un mur vous devez le renvoyer au début (utilisez le capteur "couleur touchée")

Exercice 2
La rubrique "Stylo" de Scratch contient des instructions permettant de dessiner à l'écran les mouvements du personnage. Voici par exemple comment dessiner un carré:



A vous de dessiner les formes géométriques ci-dessous, obtenues sans relever le stylo au cours du dessin:
  1. Dessiner 4 carrés au lieu d'un seul

  2. En utilisant une variable, dessiner un carré, puis un carré plus petit à l'intérieur, puis un carré encore plus petit, etc...

  3. Dessiner une sorte de rosace, qui est en fait un carré dupliqué en tournant autour du centre

  4. Dessiner une spirale carrée, où on commence au centre par deux côtés d'un carré de longueur n, puis deux côtés de longueur n+10, puis deux côtés de longueur n+20, etc...
  5. Dessiner une étoile à 5 branches
  6. Dessiner un cercle, qui est en fait une suite de petits segments dessinés en tournant autour du centre
  7. Dessiner une rosace à base de cercles, sur le même principe qu'avec un carré
  8. Dessiner une spirale plus ronde que la précédente
Exercice 3
Encore des dessins ? D'accord:
  1. Une suite de lignes horizontales
  2. Une série de polygones imbriqués de plus en plus grands et avec de plus en plus de côtés
  3. Une sinusoïde (utiliser la fonction "sin" dans la rubrique "Opérateurs")
D'autres exemples que vous pouvez essayer de reproduire: http://profgra.org/lycee/img/tortue_carres/


Classé dans : enseignement - Mots clés : scratch -

Introduction à l'algorithmique avec Scratch - TP2

Rédigé par Benoît Crespin le 25 juillet 2014

Exercice 1
Scratch permet de faire saisir à l'utilisateur une valeur au clavier et de l'exploiter grâce à l'instruction demander et la variable réponse (rubrique "Catpeurs"). L'exemple ci-dessous utilise également l'instruction nombre aléatoire (rubrique "Opérateurs"):

Essayez de trouver la bonne réponse, et pour rendre le jeu plus difficile il suffit de prendre des nombres entre 20 et 40...
On peut ensuite améliorer le jeu avec une boucle infinie (rubrique "Contrôle") pour obtenir l'algorithme ci-dessous:

Maintenant le jeu recommence à chaque fois, tant que l'utilisateur n'appuie pas sur le bouton "Arrêt"... Vous avez tout compris ? A vous de jouer:
  1. Utilisez une variable et la boucle répéter jusqu'à pour arrêter le jeu au bout de 3 réponses justes
  2. Ecrivez un nouvel algorithme avec une boucle répéter n fois dans laquelle vous devez 100 fois de suite cacher le chat, attendre une demi-seconde puis montrer le chat (rubrique "Apparence")
  3. Ecrivez maintenant un algorithme qui, à partir d'une variable a, affiche la valeur de la somme 1 + 2 + 3 + 4 + ... + (a-1) + a (par exemple pour a=5 on doit obtenir 15). Modifiez ensuite le code pour calculer la factorielle de a, donnée par 1 * 2 * 3 * 4 * ... * (a-1) * a (par exemple pour a=5 on doit obtenir 120)
  4. Vous connaissez sûrement le jeu du nombre mystère, choisi au hasard par l'ordinateur: le joueur tente de le deviner et l'ordinateur répond par "Plus grand" ou "Plus petit" et on recommence... Utilisez une boucle répéter jusqu'à qui permettra d'arrêter le jeu quand le joueur a trouvé la bonne réponse.
  5. Améliorez le jeu en plaçant une limite au nombre d'essais possibles, par exemple 10: si cette limite est atteinte alors le joueur perd la partie.

Exercice 2

Encore quelques exercices un peu "statiques" pour bien comprendre les boucles, ensuite on pourra s'amuser à faire bouger les personnages...
  1. A partir d'une variable a, déterminez si c'est un nombre premier en vérifiant qu'il n'est divisible par aucun entier positif inférieur (sauf 1), en utilisant une boucle et l'opérateur modulo
  2. Ecrivez maintenant un algorithme pour vérifier si a est un nombre parfait: dans ce cas a doit être égal à la somme de ses diviseurs incluant 1 (c'est le cas par exemple quand a=6 puisque la somme de ses diviseurs 1, 2 et 3 est égale à 6)
  3. On peut calculer la racine carrée approximative d'un nombre a de la façon suivante. Si r est une approximation de la racine carrée de a, alors (r + a/r)/2 est une approximation encore meilleure. Démarrez ce calcul avec r=1 et arrêtez-le au bout de 100 itérations. Améliorez ensuite pour arrêter le calcul quand la différence entre deux valeurs successives de r est inférieure à 0.00001

Exercice Bonus
Vous avez aimé le jeu du nombre mystère (exercice 1.5) où un humain tente de trouver un nombre caché par l'ordinateur ? Maintenant faites l'inverse: choisissez mentalement un nombre mystère, et aidez l'ordinateur à le trouver en répondant "Plus grand" ou "Plus petit" à ses tentatives...

Classé dans : enseignement - Mots clés : scratch -

Introduction à l'algorithmique avec Scratch - TP1

Rédigé par Benoît Crespin le 23 juillet 2014

Classé dans : enseignement - Mots clés : scratch -

Faire découvrir la programmation

Rédigé par Benoît Crespin le 06 novembre 2012

Pour faire découvrir la programmation à différents niveaux, depuis le primaire jusqu'au supérieur, j'utilise très souvent les deux "logiciels" Scratch et Lightbot présentés ci-dessous.
Scratch
Développé au MIT, Scratch est un langage de programmation qui facilite la création de petits jeux vidéos mais aussi d’histoires interactives, de présentations animées, de simulations numériques, etc. Scratch s'installe facilement sur toutes les plateformes (Windows, MacOS, Linux) et se prend en main encore plus facilement grâce aux nombreuses ressources présentes sur le Web:
Idéal comme "métaphore" de la programmation informatique, Lightbot est un petit jeu Flash développé par Coolio-Niato, qui illustre d'abord le dilemme du programmeur devant déterminer la suite d'instructions la plus apte à répondre à un problème donné (ici: "passer au niveau suivant" !). La grande idée consiste ensuite à obliger le joueur à utiliser la notion de sous-programmes, sans lesquels certains niveaux ne pourraient être résolus.

Classé dans : enseignement - Mots clés : scratch, lightbot -

Catégories

Archives

Mots clés

Derniers articles

Derniers commentaires