Dans cette activité tu vas construire des rectangles et apprendre à utiliser une variable en programmation.
It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?
--Alan Perlis
Dans cette activité tu vas construire des rectangles et apprendre à utiliser une variable en programmation.
Cette sixième leçon reprend l'ensemble des notions vues précédemment : variable, affectation, boucle, tout en y ajoutant la transformation géométrique rotation. Néanmoins cette fois-ci dans le processus itératif, un objet géométrique référencé par une variable est transformé puis affecté à cette variable et ainsi de suite.
Dans une même ligne de code, la variable est ainsi utilisée pour produire un effet -- transformation géométrique d'un segment -- et recevoir le résultat de cet effet. La compréhension de ce processus est loin d'être évidente pour les élèves. Mais un événement inattendu servit de prétexte pour mieux comprendre ce code.
Une fois les notions de variable et de calcul littéral introduites, il est temps de présenter aux élèves le concept de boucle et d'incrément. Les deux associés permettent de construire des formes géométriques qui se répètent. C'est un concept important de la programmation, il n'est pas toujours évident pour les élèves.
Lors des leçons 2 et 3 précédentes la variable fut introduite pour désigner soit un objet complexe comme une figure géométrique ou soit une valeur numérique représentant les dimensions d'un rectangle ou d'un carré. Cette fois-ci la variable est utilisée pour faire des calculs simples. Cette notion de calcul avec des variables n'est pas évidente pour les jeunes élèves, à ce stade de leur scolarité en 9e du cycle d'orientation le calcul littéral n'a pas encore été introduit.
Dans cette troisième leçon, les élèves utilisent trois variables. Une pour désigner la figure, comme lors de la leçon précédente, et deux variables supplémentaires largeur et longueur pour décrire les dimensions d'un rectangle.
Dans le langage de programmation Smalltalk, une variable désigne toujours un objet. La leçon 1 d'introduction utilise une cascade de messages pour éviter l'utilisation d'une variable. Cela permet aux élèves de se concentrer sur les autres nouveautés de l'écriture du code.
| figure triangle |
figure := DrGeoSketch new fullscreen.
triangle := [:p1 :p2 :p3 :n |
|s1 s2 s3 perp cercle p4 |
s1 := figure segment: p1 to: p2.
s2 := (figure segment: p2 to: p3) color: Color red.
s3 := figure segment: p3 to: p1.
perp := (figure perpendicular: s3 at: p3) hide.
cercle := (figure circleCenter: p3 to: p2) hide.
p4 := (figure altIntersectionOf: cercle and: perp) hide.
n > 0 ifTrue:
[triangle value: p1 value: p3 value: p4 value: n -1]
].
triangle
value: 0@0
value: -1@0
value: -1@1
value: 50
An animated variation of this sketch: