Outils pour utilisateurs

Outils du site


kturtle:kturtle-activites-11

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
kturtle:kturtle-activites-11 [2020/01/08 07:29] crustkturtle:kturtle-activites-11 [2020/01/09 15:03] – [Situation problème : périmètre ou aire] cyrille
Ligne 1: Ligne 1:
 ====== La boucle if ====== ====== La boucle if ======
  
- +Je suis parti de l'observation de code, distribué sur feuille de papier et j'ai demandé aux élèves d'essayer de comprendre ce qu'il produisait comme effet.
-A taper mais on est parti de l'observation de code, distribuée sur feuille de papier et je leur ai demandé d'essayer de comprendre ce qu'il produisait comme effet.+
  
  
Ligne 28: Ligne 27:
 }</code> }</code>
  
 +==== Premier temps ====
 +Après 5 à 6 minutes de réflexion, phase de bilan, de mise au point. Globalement le second code est compris.
 +Et les retours sont du style "On demande à l'ordinateur si l'on est une fille ou un garçon..."
  
-Jouons avec les couleurs+Le mot SI est donc mis en évidence, on le note au tableau. Et on écris l'algorithme correspondant.
  
-Inducteur : Demander de poser la question "Quelle couleur pour le carré. Laisser un choix entre les 3 couleurs et en fonction de la réponse, appliquer la couleur choisie. +Par contre, le premier code, on tâtonne mais le résultat n'est pas réellement compris. 
-| {{ :kturtle:capture_d_ecran_2020-01-08_07-23-29.png?nolink&150 |}} + 
-|{{ :kturtle:capture_d_ecran_2020-01-08_07-23-48.png?direct&150 |}} +==== Second temps ==== 
-|{{ :kturtle:capture_d_ecran_2020-01-08_07-24-20.png?direct&150 |}} +Donc pour le premier code, direction PC, les élèves le tapent et le testent plusieurs avec des valeurs différentes. 
-|{{ :kturtle:capture_d_ecran_2020-01-08_07-24-33.png?direct&150 |}} + 
-|{{ :kturtle:capture_d_ecran_2020-01-08_07-24-52.png?direct&150 |}}|+C'est plus simple pour eux pour déterminer la finalité de ce code. 
 + 
 +On retourne à une phase collectif qui reprend le code ligne par ligne et on réalise ensemble un algorithme de fonctionnement. 
 + 
 +===== Jouons avec les couleurs ===== 
 + 
 +//** 
 +Inducteur : Demander de poser la question "Quelle couleur pour le carré. Laisser un choix entre les 3 couleurs et en fonction de la réponse, appliquer la couleur choisie.**// 
 +| {{ :kturtle:capture_d_ecran_2020-01-08_07-23-29.png?nolink&150 |}}|{{ :kturtle:capture_d_ecran_2020-01-08_07-23-48.png?direct&150 |}} |{{ :kturtle:capture_d_ecran_2020-01-08_07-24-20.png?direct&150 |}} |{{ :kturtle:capture_d_ecran_2020-01-08_07-24-33.png?direct&150 |}} |{{ :kturtle:capture_d_ecran_2020-01-08_07-24-52.png?direct&150 |}}| 
 + 
 +L'élève va devoir réinvestir la condition **if** mais non plus une fois mais sur plusieurs tests :  
 +  * Tester si la valeur vaut "r" --> on applique le rouge 
 +  * Tester si la valeur vaut "b" --> on applique le bleu 
 +  * Tester si la valeur vaut "v" --> on applique le vert 
 +  * Tester si la valeur ne correspond ni à "r", "v" ou "b" --> on laisse la couleur par défaut (noir) 
 + 
 +Proposition de code 
 +<code bash>reset 
 + 
 +$couleur = ask "Rouge (r), Vert (v) ou Bleu (b) ?" 
 + 
 +# Test du Rouge 
 +if ($couleur == "r" {  
 + pencolor 255,0,0 
 +
 + 
 +# Test du Vert 
 +if ($couleur == "v"  {  
 + pencolor 0,255,0 
 +
 + 
 +# Test du Bleu 
 +if ($couleur == "b"  {  
 + pencolor 0,0,255 
 +
 + 
 +repeat 4 { 
 + forward 40 
 + turnright 90 
 +}</code> 
 + 
 +<WRAP center round important 60%> 
 +Attention le contenu des variables est sensible à la casse. C'est à dire que "**r**" est différent de "**R**"
 +Il faudra donc tester les deux si l'on veut que le programme est une batterie de tests exhaustive. 
 +</WRAP> 
 + 
 +===== L'opérateur OR (OU) ===== 
 +Rebondissons sur ce qui a été dit en dernier : pour le rouge, on va tester non seulement le "**r**" mais aussi le "**R**" 
 + 
 +L'élève proposera de fait le code suivant composé de 2 séquences de test différentes 
 + 
 +<code bash># Test du Rouge minuscule 
 +if ($couleur == "r") {  
 + pencolor 255,0,0 
 +
 +# Test du Rouge majuscule 
 +if ($couleur == "R") {  
 + pencolor 255,0,0 
 +}</code> 
 + 
 +Faire réfléchir les élèves à un moyen de proposer un code plus simple, moins chargé, optimisé. 
 +Style "//**Et si on disait au PC de tester les 2 conditions d'emblée ? Comme avec un OU**//"
 + 
 +On présente alors l'**//opérateur//** **or** 
 + 
 +Ce qui donne 
 + 
 +<code bash># Test du Rouge 
 +if ($couleur == "r") or ($couleur == "R" {  
 + pencolor 255,0,0 
 +}</code> 
 + 
 +Et les deux séquences de test se retrouve inscrites en une seule séquence. 
 + 
 +Donc le programme final 
 +<code bash> 
 +reset 
 + 
 +$couleur = ask "Rouge, Vert ou Bleu ?" 
 + 
 +# Test du Rouge 
 +if ($couleur == "r") or ($couleur == "R" {  
 + pencolor 255,0,0 
 +
 + 
 +# Test du Vert 
 +if ($couleur == "v") or ($couleur == "V") {  
 + pencolor 0,255,0 
 +
 + 
 +# Test du Bleu 
 +if ($couleur == "b") or ($couleur == "B") {  
 + pencolor 0,0,255 
 +
 + 
 +repeat 4 { 
 + forward 40 
 + turnright 90 
 +
 +</code> 
 +===== Allez plus loin ===== 
 + 
 +  * Allez plus loin, en demandant de tester aussi avec les mots "rouge" et "ROUGE". De même pour les autres couleurs. 
 + 
 +  * Varier le programme avec une gamme de couleur plus importante 
 + 
 +===== Et le else ??? ===== 
 + 
 +//**Inducteur : Demander de choisir la figure géométrique à tracer**// 
 + 
 +  * Si figure est un carré -> on trace un carré 
 + 
 +  * Si figure est un triangle -> on trace un carré 
 + 
 +  * Si figure est un rectangle -> on trace un carré 
 + 
 +  * SI figure est un losange -> on trace un losange 
 + 
 +<WRAP center round important 60%> 
 +Les programmes s'étoffent, pensez à l’intérieur des différents blocs à **indenter** le code à l'aide de **tabulations** pour faciliter sa lecture ! 
 +</WRAP> 
 + 
 +Vu le bagage qu'il possède, cela ne devrait pas représenter de réels soucis de codage. Sans doute quelques erreurs de syntaxe. 
 + 
 +<WRAP center round important 60%> 
 +L'erreur la plus courante est de ne pas fermer systématiquement une accolade ouverte 
 +<code bash>{ ... 
 +  bloc d'instruction 1 
 +  # TEST 
 +  { 
 +    .... 
 +     bloc d'instruction 
 +     .... 
 +  } 
 +}</code> 
 +</WRAP> 
 + 
 + 
 +Proposition de code 
 +<code bash>reset 
 + 
 +$figure = ask "Carré ? Rectangle ? Losange ? Triangle" 
 + 
 +# Test du carré 
 +if ($figure == "carré") { 
 + repeat 4 { 
 + forward 40 
 + turnright 90 
 + }  
 +
 + 
 +# Test du triangle 
 +if ($figure == "triangle") { 
 + repeat 3 { 
 + forward 40 
 + turnright 120 
 + }  
 +
 + 
 +# Test du losange 
 +if ($figure == "losange") { 
 + repeat 6 { 
 + forward 40 
 + turnright 60 
 + }  
 +
 + 
 +# Test du rectangle 
 +if ($figure == "rectangle") { 
 + repeat 4 { 
 + forward 40 
 + turnright 90 
 + forward 80 
 + turnright 90 
 + }  
 +}</code> 
 + 
 +Bien sûr lors de l'invitation de saisie de la pop-up, il arrivera que l'élève ait fait une faute de saisie (orthographe ou frappe). 
 + 
 +Dans ce cas, la variante ne passera pas les tests et le programme ne fera rien.  
 +Sous doute l'élève répondre : "Non, j'ai bien tapé le mot", dans ce cas, utilisez l'inspecteur de code afin de bien faire l'erreur de saisie. 
 + 
 +| {{ :kturtle:capture_d_ecran_2020-01-08_08-00-45.png?direct&400 |}}| {{kturtle:capture_d_ecran_2020-01-08_08-01-07.png?direct&400 |}}|  
 + 
 +Le programme va donc devoir être amélioré avec quelques lignes basiques de **gestion de l'erreur**. 
 + 
 +Donc, on va réaliser les tests nécessaires et gérer tout ce qui ne correspond pas à ces tests. 
 + 
 +**Si** (test) **ALORS** (instruction) 
 +**Si** (autre test) **ALORS** (autre instruction) 
 +... 
 +**Si** (autre test) **ALORS** (autre instruction) 
 + 
 +Et enfin  
 + 
 +**__SINON__** **ALORS** (instruction) 
 + 
 +On introduit alors le mot clef, l'opérateur **ELSE** 
 + 
 +|{{ :kturtle:capture_d_ecran_2020-01-08_08-08-53.png?direct&200 |}}|{{ :kturtle:capture_d_ecran_2020-01-08_08-09-05.png?direct&400 |}}| 
 + 
 + 
 +{{ :kturtle:capture_d_ecran_2020-01-09_15-00-52.png?direct&400 |}} 
 +====== Situation problème : périmètre ou aire ====== 
 + 
 +On va réinvestir le tout dans une situation de recherche simple. 
 + 
 +Demander de coder un petit script permettant de calculer soit l'aire soit le périmètre d'un carré. 
 + 
 +Faire le point avec les élèves sur les étapes à réaliser 
 + 
 +  * **  Poser la question : périmètre ? aire ?** 
 +  * **  Tester la réponse** 
 +  * **  En fonction de la réponse, appliquer la formule de l'aire ou du périmètre** 
 +  * **  Afficher la réponse dans la bonne unité** 
 +  * **  Éventuellement, tracer la figure** 
 + 
 +<WRAP center round info 60%> 
 +Il est recommander avant cette séance de raviver les connaissances nécessaires à la compréhension de cette problématique. 
 +Rappeler ce qu'est un **périmètre** et une **aire** (compétence de géométrie de cycle 3) et **les unités associées**. 
 +Au besoin, retravailler sur des feuilles 5 X 5 et faisant surligner le périmètre et colorier les aires. Puis avec des carrés de dimensions différentes avec lesquels on recouvre des parties de la classe : le bureau, le tableau (parfois en utilisant un encadrement si ces recouvrements ne tombent pas justes). 
 +</WRAP> 
 + 
 +Proposition de code 
 +<code bash>reset 
 +spritehide 
 + 
 +$var = ask "Taper 'p' pour périmètre, 'a' pour aire." 
 +$cote = ask "Taille du côté de votre carré ?" 
 + 
 +# Si p , on calcule le périmètre 
 +if ($var == "p") { 
 + $reponse = 4 * $cote 
 + $message = "Le périmètre est de " + $reponse + " cm." 
 +# Sinon l'aire 
 +} else { 
 + $reponse = $cote * $cote 
 + $message = "Le périmètre est de " + $reponse + " cm2." 
 +
 + 
 +# On affiche la réponse 
 +go 25,100 
 +print $message 
 + 
 + 
 +# On dessine le carré 
 +go 50,350 
 +repeat 4 { 
 + forward $cote 
 + turnright 90 
 +}</code>
  
 +**Variante différenciée** : même base mais avec le rectangle.
  
 +<WRAP center round alert 60%>
 +En cycle III : rester sur le périmètre du carré et rectangle. Pour les autres figures, les formules sont bien trop complexes...
 +</WRAP>
  
 ===== Navigation ===== ===== Navigation =====
 ^ page précédente       ^ Sommaire                                  ^ Page suivante       ^ ^ page précédente       ^ Sommaire                                  ^ Page suivante       ^
-| [[kturtle:kturtle-activites-10|Et le hasard dans tout cela ?]] | [[https://cbiot.fr/dokuwiki/doku.php#kturtle|sommaire]] | |+| [[kturtle:kturtle-activites-10|Et le hasard dans tout cela ?]] | [[https://cbiot.fr/dokuwiki/doku.php#kturtle|sommaire]] |[[kturtle:kturtle-activites-12|Une boucle de comptage]] |
kturtle/kturtle-activites-11.txt · Dernière modification : 2020/01/09 21:38 de crust