Sujet DNB 2017 Amérique du sud exercice 6.

Question 1)a)
Le programme n°1 s'articule autour d'une unique boucle répéter 4 fois, faisant appel à un bloc carré.
La variable longueur utilisée par ce bloc est initialisée à 10 avant la boucle, puis incrémentée de 20 à chaque fin de répétition de la boucle.
La côté du carré tracé à chaque répétition de la boucle augmente donc d'une valeur constante, qui est le double du côté du premier carré tracé.
Il s'agit donc du dessin n°2.
Vérifions en codant le programme n°1 sur calculatrice. Quelques adaptations sont à faire.
La fenêtre de la calculatrice diffère de la fenêtre Scratch:
Nous avons donc environ 2,5 fois moins horizontalement et 7,7 fois moins verticalement.

http://wes.casio.com/math/index.php?q=I ... 03F901F902
D'où le tracer confirmant la figure :

La fenêtre de la calculatrice diffère de la fenêtre Scratch:
calculatrice | Scratch | |
abscisses | de -95 à +96 (191 de largeur) | de -240 à +240 (480 de largeur) |
ordonnées | de -23 à +23 (46 de hauteur) | de -180 à +180 (360 de hauteur) |
Nous avons donc environ 2,5 fois moins horizontalement et 7,7 fois moins verticalement.
- La calculatrice ne permet d'affecter que des variables A, B, C, D, E, F et M. Renommons la variable longueur en par exemple D.
- Pour que la figure soit affichée, il faut lui appliquer un facteur de réduction qui pourra aller de 1 jusqu'à 7,7. Je propose de rajouter une première ligne au script en affectant ce facteur à la variable M, par exemple 2. Pour toutes les instructions avancer, il suffira alors de systématiquement diviser les paramètres par M. Si malgré cela l'affichage déborde toujours de l'écran, il suffira juste de modifier la seule première ligne du script en augmentant progressivement le facteur : 2,5 puis 3 et ainsi de suite.

- Code Scratch : Select all
3,5→M
10→D
Répéter 4
Stylo écrit
Répéter 4
Avancer de D÷M pixels
Tourner de ↺ 90 degrés
⤴
Stylo relevé
D+20→D
⤴
http://wes.casio.com/math/index.php?q=I ... 03F901F902
D'où le tracer confirmant la figure :
Question 1)b)
Le programme n°2 s'articule autour d'une unique boucle répéter 4 fois, faisant appel à un bloc carré.
La variable longueur utilisée par ce bloc est initialisée à 10 avant la boucle, puis doublée à chaque fin de répétition de la boucle.
La côté du carré tracé double donc à chaque répétition de la boucle.
Il s'agit donc du dessin n°3.
Vérifions en adaptant le programme n°2 pour calculatrice :

http://wes.casio.com/math/index.php?q=I ... 03F901F902
D'où le tracer confirmant la figure :


- Code Scratch : Select all
3,5→M
10→D
Répéter 4
Stylo écrit
Répéter 4
Avancer de D÷M pixels
Tourner de ↺ 90 degrés
⤴
Stylo relevé
D×2→D
⤴
http://wes.casio.com/math/index.php?q=I ... 03F901F902
D'où le tracer confirmant la figure :
Question 1)c)
La boucle répéter 4 fois du programme 1 augmente la valeur de la variable longueur de 20 à chaque répétition.
Le 1er carré est donc tracé avec la valeur initialisée de
10
.Le 2ème carré est donc tracé avec la valeur de
10+20=30
.Le 3ème carré est donc tracé avec la valeur de
30+20=50
.Le 4ème et dernier carré est donc tracé avec la valeur de
50+20=70
.
- Code asm-z80 : Select all
3,5→M
10→D
Répéter 4
Afficher résult D
Stylo écrit
Répéter 4
Avancer de D÷M pixels
Tourner de ↺ 90 degrés
⤴
Stylo relevé
D+20→D
⤴
http://wes.casio.com/math/index.php?q=I ... 03F901F902
La calculatrice confirme bien la valeur de 70 pour le dernier carré :
La boucle répéter 4 fois du programme 2 double la valeur de la variable longueur à chaque répétition.
Le 1er carré est donc tracé avec la valeur initialisée de
10
.Le 2ème carré est donc tracé avec la valeur de
10×2=20
.Le 3ème carré est donc tracé avec la valeur de
20×2=40
.Le 4ème et dernier carré est donc tracé avec la valeur de
40×2=80
.
- Code asm-z80 : Select all
3,5→M
10→D
Répéter 4
Afficher résult D
Stylo écrit
Répéter 4
Avancer de D÷M pixels
Tourner de ↺ 90 degrés
⤴
Stylo relevé
D×2→D
⤴
http://wes.casio.com/math/index.php?q=I ... 03F901F902
La calculatrice confirme bien la valeur de 80 pour le dernier carré :
Question 2)
Le bloc carré ferme le tracé du carré et remet donc le lutin dans sa position initiale.
Depuis, avec des rotations de
4\times 90=360°
il le remet également dans son orientation initale.Pour passer à la position du prochain carré, en fin de tracé du carré précédent le lutin doit donc avancer de son côté plus une constante correspondant à l'espacement entre deux carrés successifs.
D'où l'ajout d'une instruction avancer de longueur+10 pour la modification.
Cette instruction doit être répétée et donc présente dans la boucle, ce qui exlut la modification 3.
Elle doit tenir compte de la longueur du carré qui vient d'être tracé, et doit donc être présente avant la modification de la valeur de la variable longueur.
C'est donc la modification 1.

- Code asm-z80 : Select all
3,5→M
10→D
Répéter 4
Stylo écrit
Répéter 4
Avancer de D÷M pixels
Tourner de ↺ 90 degrés
⤴
Stylo relevé
Avancer de (D+10)÷M pixels
D×2→D
⤴
http://wes.casio.com/math/index.php?q=I ... 03F901F902
On constate bien le bon tracé :

- Code asm-z80 : Select all
3,5→M
10→D
Répéter 4
Stylo écrit
Répéter 4
Avancer de D÷M pixels
Tourner de ↺ 90 degrés
⤴
Stylo relevé
D×2→D
Avancer de (D+10)÷M pixels
⤴
http://wes.casio.com/math/index.php?q=I ... 03F901F902
Ici l'espacement entre deux carrés successifs n'est pas constant :

- Code asm-z80 : Select all
3,5→M
10→D
Répéter 4
Stylo écrit
Répéter 4
Avancer de D÷M pixels
Tourner de ↺ 90 degrés
⤴
Stylo relevé
D×2→D
⤴
Avancer de (D+10)÷M pixels
http://wes.casio.com/math/index.php?q=I ... 03F901F902