Outils pour utilisateurs

Outils du site


Panneau latéral

FOLLOW ...

Linux, freeBSD

Python

Plugins WP

Informatique et robotique

En classe
KTURTLE
Arduino

Shell/php scripts

kturtle:kturtle-activites-11

Ceci est une ancienne révision du document !


La boucle if

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.

Inducteur : analyse de code

$a = 5
$b = ask "Saisir un chiffre (b) : "
 
if ($b < $a) {
$c = $a - $b
} else {
$c = $a + $b
}
 
message $c
# ======================
$genre = ask "Saisir f pour fille ; g pour garçon"
 
if $genre == "f" {
message "Bonjour Madame"
} else {
message "Nonjour Monsieur"
}

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.

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

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
}

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.

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

# Test du Rouge minuscule
if ($couleur == "r") { 
	pencolor 255,0,0
}
# Test du Rouge majuscule
if ($couleur == "R") { 
	pencolor 255,0,0
}

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

# Test du Rouge
if ($couleur == "r") or ($couleur == "R" { 
	pencolor 255,0,0
}

Et les deux séquences de test se retrouve inscrites en une seule séquence.

Donc le programme final

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
}

Variante Allez plus loin, en demandant de tester aussi avec les mots “rouge” et “ROUGE”

page précédente Sommaire Page suivante
Et le hasard dans tout cela ? sommaire
kturtle/kturtle-activites-11.1578465972.txt.gz · Dernière modification : 2020/01/08 07:46 de crust