A titre d'exemples, ce chapitre propose des tests de compréhension et de programmation concernant le contexte informatique du cours d'algorithmique.
Deux types de tests sont proposés :
- un test de compréhension d'une durée indicative de 20',
- un test de programmation d'une durée indicative de 20'.
On cherche à faire dessiner une figure géométrique sur la plage à une personne qui a les yeux bandés. Quelle figure géométrique dessinera-t-elle en exécutant la séquence d'instructions ci-dessous ?
- avance de 20 pas;
- tourne à gauche de 90°;
- avance de 10 pas;
- tourne à gauche de 90°;
- avance de 20 pas;
- tourne à gauche de 90°;
- avance de 10 pas;
tortue Logo (documentation Python)
import turtle
module Python à importer pour manipuler la tortue Logo.
t = turtle.Turtle()
crée une tortue
t
.
t.down()
tracer la trajectoire de la tortue Logo.
t.up()
ne pas tracer la trajectoire de la tortue Logo.
t.setheading(a)
oriente la tortue
t
dans une direction qui fait l'anglea
(en degrés) avec l'axe horizontal (sens trigonométrique).
t.forward(d)
fait avancer la tortue
t
d'une distanced
dans la direction courante.
t.backward(d)
fait reculer la tortue
t
d'une distanced
dans la direction courante.
t.left(a)
fait tourner sur la gauche (sens trigonométrique) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.right(a)
fait tourner sur la droite (sens horaire) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.goto(x,y)
fait aller la tortue au point de coordonnées
(x,y)
quelle que soit son orientation.
AAV0_INT: Méthode
Appliquer cette méthode au cas particulier de l'énoncé.
Zone de saisie de texte
Clavier Action F1 Afficher une aide technique F2 Afficher une aide pédagogique Ctrl-A Tout sélectionner Ctrl-C Copier la sélection dans le presse-papier Ctrl-V Copier le presse-papier dans la sélection Ctrl-X Couper la sélection et la copier dans le presse-papier Ctrl-Z Annuler la modification Maj-Ctrl-Z Rétablir la modification
Menu Action Ré-initialiser les sorties Faire apparaître le menu d'aide Valider la zone de saisie Initialiser la zone de saisie Charger le contenu d'un fichier dans la zone de saisie Sauvegarder le contenu de la zone de saisie dans un fichier Imprimer le contenu de la zone de saisie
AAV0_INT: Résultat
A la fin de la séquence d'instructions, la figure géométrique est un(e) ?
AAV0_INT: Vérification
Application de la technique
Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultat).
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV0_INT: Choisir et appliquer une méthode générique
Pour dessiner la figure, on peut se mettre à la place de la personne (empathie) mais ne disposant pas nécessairement d'un espace suffisant pour exécuter l'algorithme, on le fera à l'échelle d'une feuille de papier en dessinant la figure (avec crayon, règle, compas, rapporteur) telle qu'elle est prescrite par l'énoncé. On parlera alors d'empathie géométrique pour effectuer ce « suivi de trajectoire ».
instruction | trajectoire |
avance de 20 pas | ![]() |
tourne à gauche de 90° | ![]() |
avance de 10 pas | ![]() |
tourne à gauche de 90° | ![]() |
avance de 20 pas | ![]() |
tourne à gauche de 90° | ![]() |
avance de 10 pas | ![]() |
AAV0_INT: Répondre explicitement à la question posée
La figure géométrique est un quadrilatère à 4 angles droits : c'est donc un rectangle.
AAV0_INT: Choisir et appliquer une technique de vérification
On peut traduire cette séquence d'instructions pour une tortue Logo et la faire exécuter par l'interpréteur Python.
En Python, on crée une tortue Logo par les instructions:
import turtle
tortue = turtle.Turtle()
On dit à la tortue Logo d'avancer de \(n\) pas par l'instruction:
tortue.forward(n*pas)
où le pas représente finalement un facteur d'échelle (la longueur du pas est relative à la personne qui l'effectue).
On dit à la tortue Logo de tourner à gauche d'un angle \(a\) (en degrés) par l'instruction:
tortue.left(a)
Le code ci-dessous propose la version Python de l'algorithme de l'énoncé.
La figure obtenue par la tortue Logo est bien un rectangle, ce qui corrobore la réponse proposée.
On cherche à faire dessiner une figure géométrique sur la plage à une personne qui a les yeux bandés. Quelle figure géométrique dessinera-t-elle en exécutant la séquence d'instructions ci-dessous ?
- avance de 20 pas;
- tourne à gauche de 60°;
- avance de 20 pas;
- tourne à gauche de 120°;
- avance de 20 pas;
- tourne à gauche de 60°;
- avance de 20 pas;
tortue Logo (documentation Python)
import turtle
module Python à importer pour manipuler la tortue Logo.
t = turtle.Turtle()
crée une tortue
t
.
t.down()
tracer la trajectoire de la tortue Logo.
t.up()
ne pas tracer la trajectoire de la tortue Logo.
t.setheading(a)
oriente la tortue
t
dans une direction qui fait l'anglea
(en degrés) avec l'axe horizontal (sens trigonométrique).
t.forward(d)
fait avancer la tortue
t
d'une distanced
dans la direction courante.
t.backward(d)
fait reculer la tortue
t
d'une distanced
dans la direction courante.
t.left(a)
fait tourner sur la gauche (sens trigonométrique) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.right(a)
fait tourner sur la droite (sens horaire) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.goto(x,y)
fait aller la tortue au point de coordonnées
(x,y)
quelle que soit son orientation.
AAV0_INT: Méthode
Appliquer cette méthode au cas particulier de l'énoncé.
Zone de saisie de texte
Clavier Action F1 Afficher une aide technique F2 Afficher une aide pédagogique Ctrl-A Tout sélectionner Ctrl-C Copier la sélection dans le presse-papier Ctrl-V Copier le presse-papier dans la sélection Ctrl-X Couper la sélection et la copier dans le presse-papier Ctrl-Z Annuler la modification Maj-Ctrl-Z Rétablir la modification
Menu Action Ré-initialiser les sorties Faire apparaître le menu d'aide Valider la zone de saisie Initialiser la zone de saisie Charger le contenu d'un fichier dans la zone de saisie Sauvegarder le contenu de la zone de saisie dans un fichier Imprimer le contenu de la zone de saisie
AAV0_INT: Résultat
A la fin de la séquence d'instructions, la figure géométrique est un(e) ?
AAV0_INT: Vérification
Application de la technique
Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultat).
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV0_INT: Choisir et appliquer une méthode générique
Pour dessiner la figure, on peut se mettre à la place de la personne (empathie) mais ne disposant pas nécessairement d'un espace suffisant pour exécuter l'algorithme, on le fera à l'échelle d'une feuille de papier en dessinant la figure (avec crayon, règle, compas, rapporteur) telle qu'elle est prescrite par l'énoncé. On parlera alors d'empathie géométrique pour effectuer ce « suivi de trajectoire ».
instruction | trajectoire |
avance de 20 pas | ![]() |
tourne à gauche de 60° | ![]() |
avance de 20 pas | ![]() |
tourne à gauche de 120° | ![]() |
avance de 20 pas | ![]() |
tourne à gauche de 60° | ![]() |
avance de 20 pas | ![]() |
AAV0_INT: Répondre explicitement à la question posée
La figure géométrique est un polygone à 4 côtés de même longueur : il s'agit donc d'un losange.
AAV0_INT: Choisir et appliquer une technique de vérification
On peut traduire cette séquence d'instructions pour une tortue Logo et la faire exécuter par l'interpréteur Python.
En Python, on crée une tortue Logo par les instructions:
import turtle
tortue = turtle.Turtle()
On dit à la tortue Logo d'avancer de \(n\) pas par l'instruction:
tortue.forward(n*pas)
où le pas représente finalement un facteur d'échelle (la longueur du pas est relative à la personne qui l'effectue).
On dit à la tortue Logo de tourner à gauche d'un angle \(a\) (en degrés) par l'instruction:
tortue.left(a)
L'interpréteur ci-dessous propose la version Python de l'algorithme de l'énoncé.
La figure obtenue par la tortue Logo est bien un losange, ce qui corrobore la réponse proposée.
En s'inspirant des exemples précédents, écrire un programme qui dessine un segment de droite de 50 pas de long et qui fait un angle de \(\pi/6\) avec la verticale (par convention, les angles sont positifs dans le sens anti-horaire).
tortue Logo : (documentation Python)
import turtle
module Python à importer pour manipuler la tortue Logo.
t = turtle.Turtle()
crée une tortue
t
.
t.down()
tracer la trajectoire de la tortue Logo.
t.up()
ne pas tracer la trajectoire de la tortue Logo.
t.setheading(a)
oriente la tortue
t
dans une direction qui fait l'anglea
(en degrés) avec l'axe horizontal (sens trigonométrique).
t.forward(d)
fait avancer la tortue
t
d'une distanced
dans la direction courante.
t.backward(d)
fait reculer la tortue
t
d'une distanced
dans la direction courante.
t.left(a)
fait tourner sur la gauche (sens trigonométrique) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.right(a)
fait tourner sur la droite (sens horaire) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.goto(x,y)
fait aller la tortue au point de coordonnées
(x,y)
quelle que soit son orientation.
AAV0_INT: Méthode
Appliquer cette méthode au cas particulier de l'énoncé.
Zone de saisie de texte
Clavier Action F1 Afficher une aide technique F2 Afficher une aide pédagogique Ctrl-A Tout sélectionner Ctrl-C Copier la sélection dans le presse-papier Ctrl-V Copier le presse-papier dans la sélection Ctrl-X Couper la sélection et la copier dans le presse-papier Ctrl-Z Annuler la modification Maj-Ctrl-Z Rétablir la modification
Menu Action Ré-initialiser les sorties Faire apparaître le menu d'aide Valider la zone de saisie Initialiser la zone de saisie Charger le contenu d'un fichier dans la zone de saisie Sauvegarder le contenu de la zone de saisie dans un fichier Imprimer le contenu de la zone de saisie
AAV0_INT: Résultat
Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.
AAV0_INT: Vérification
Application de la technique
Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultat).
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV0_INT: Choisir et appliquer une méthode générique
On applique la méthode de l'empathie géométrique pour effectuer un « suivi de trajectoire ».
instruction | trajectoire | code Python |
s'orienter à 30° (\(\pi/6\)) de la verticale | ![]() |
tortue.left(90+30) |
avancer de 50 pas | ![]() |
tortue.forward(50*pas) |
AAV0_INT: Répondre explicitement à la question posée
Le code ci-dessous propose la version Python du tracé attendu.
AAV0_INT: Choisir et appliquer une technique de vérification
A ce stade, une simple comparaison de figures entre celle de l'énoncé et celle obtenue par programme suffira.
Les deux figures sont similaires, ce qui corrobore la réponse proposée.
En s'inspirant des exemples précédents, écrire un programme qui dessine un triangle \(ABC\) rectangle en \(A\) avec \(\theta_B = \widehat{ABC} = \pi/6\) et \(a = |BC| = 50\ \mathrm{pas}\).
tortue Logo : (documentation Python)
import turtle
module Python à importer pour manipuler la tortue Logo.
t = turtle.Turtle()
crée une tortue
t
.
t.down()
tracer la trajectoire de la tortue Logo.
t.up()
ne pas tracer la trajectoire de la tortue Logo.
t.setheading(a)
oriente la tortue
t
dans une direction qui fait l'anglea
(en degrés) avec l'axe horizontal (sens trigonométrique).
t.forward(d)
fait avancer la tortue
t
d'une distanced
dans la direction courante.
t.backward(d)
fait reculer la tortue
t
d'une distanced
dans la direction courante.
t.left(a)
fait tourner sur la gauche (sens trigonométrique) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.right(a)
fait tourner sur la droite (sens horaire) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.goto(x,y)
fait aller la tortue au point de coordonnées
(x,y)
quelle que soit son orientation.
AAV0_INT: Méthode
Appliquer cette méthode au cas particulier de l'énoncé.
Zone de saisie de texte
Clavier Action F1 Afficher une aide technique F2 Afficher une aide pédagogique Ctrl-A Tout sélectionner Ctrl-C Copier la sélection dans le presse-papier Ctrl-V Copier le presse-papier dans la sélection Ctrl-X Couper la sélection et la copier dans le presse-papier Ctrl-Z Annuler la modification Maj-Ctrl-Z Rétablir la modification
Menu Action Ré-initialiser les sorties Faire apparaître le menu d'aide Valider la zone de saisie Initialiser la zone de saisie Charger le contenu d'un fichier dans la zone de saisie Sauvegarder le contenu de la zone de saisie dans un fichier Imprimer le contenu de la zone de saisie
AAV0_INT: Résultat
Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.
AAV0_INT: Vérification
Application de la technique
Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultat).
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV0_INT: Choisir et appliquer une méthode générique
Dans le triangle \(ABC\) rectangle en \(A\), on a \(\theta_a = \pi/2\) et \(\theta_b = \pi/6\), d'où \(\theta_c = \pi - \pi/2 - \pi/6 = \pi/3\). On a également \(b = |AC| = a\sin(\pi/6)\) et \(c = |AB| = a\cos(\pi/6)\).
On applique la méthode de l'empathie géométrique pour effectuer un « suivi de trajectoire ».
instruction | trajectoire | code Python |
avancer de 50 pas | ![]() |
tortue.forward(50*pas) |
tourner à gauche de 120° | ![]() |
tortue.left(120) |
avancer de 25 pas | ![]() |
tortue.forward(50*pas*(1./2)) |
tourner à gauche de 90° | ![]() |
tortue.left(90) |
avancer de \(\displaystyle 50\cdot\frac{\sqrt{3}}{2}\) pas | ![]() |
tortue.forward(50*pas*(1.732/2)) |
AAV0_INT: Répondre explicitement à la question posée
Le code ci-dessous propose la version Python du tracé attendu.
AAV0_INT: Choisir et appliquer une technique de vérification
A ce stade, une simple comparaison de figures entre celle de l'énoncé et celle obtenue par programme suffira.
Les deux figures sont similaires, ce qui corrobore la réponse proposée.
En s'inspirant des exemples précédents, écrire un programme qui dessine un triangle \(ABC\) isocèle en \(A\) tel que \(a = |BC| = 40\ \mathrm{pas}\) soit à la verticale et \(\theta_c = \widehat{ACB} = \pi/6\).
tortue Logo : (documentation Python)
import turtle
module Python à importer pour manipuler la tortue Logo.
t = turtle.Turtle()
crée une tortue
t
.
t.down()
tracer la trajectoire de la tortue Logo.
t.up()
ne pas tracer la trajectoire de la tortue Logo.
t.setheading(a)
oriente la tortue
t
dans une direction qui fait l'anglea
(en degrés) avec l'axe horizontal (sens trigonométrique).
t.forward(d)
fait avancer la tortue
t
d'une distanced
dans la direction courante.
t.backward(d)
fait reculer la tortue
t
d'une distanced
dans la direction courante.
t.left(a)
fait tourner sur la gauche (sens trigonométrique) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.right(a)
fait tourner sur la droite (sens horaire) la tortue
t
(sans avancer, ni reculer) d'un anglea
par rapport à la direction courante.
t.goto(x,y)
fait aller la tortue au point de coordonnées
(x,y)
quelle que soit son orientation.
AAV0_INT: Méthode
Appliquer cette méthode au cas particulier de l'énoncé.
Zone de saisie de texte
Clavier Action F1 Afficher une aide technique F2 Afficher une aide pédagogique Ctrl-A Tout sélectionner Ctrl-C Copier la sélection dans le presse-papier Ctrl-V Copier le presse-papier dans la sélection Ctrl-X Couper la sélection et la copier dans le presse-papier Ctrl-Z Annuler la modification Maj-Ctrl-Z Rétablir la modification
Menu Action Ré-initialiser les sorties Faire apparaître le menu d'aide Valider la zone de saisie Initialiser la zone de saisie Charger le contenu d'un fichier dans la zone de saisie Sauvegarder le contenu de la zone de saisie dans un fichier Imprimer le contenu de la zone de saisie
AAV0_INT: Résultat
Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.
AAV0_INT: Vérification
Application de la technique
Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultat).
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV0_INT: Choisir et appliquer une méthode générique
Dans le triangle \(ABC\) isocèle en \(A\), on a \(\theta_b = \theta_c = \pi/6\) et \(\theta_a = 2\pi/3\). On a également \(a = |BC| = 40\ \mathrm{pas}\), d'où \(\displaystyle |AB| = |AC| = \frac{a}{2}\frac{1}{\cos(\theta_c)} = a\frac{1}{\sqrt{3}}\).
On applique la méthode de l'empathie géométrique pour effectuer un « suivi de trajectoire ».
instruction | trajectoire | code Python |
s'orienter à la verticale | ![]() |
tortue.left(90) |
avancer de 40 pas | ![]() |
tortue.forward(40*pas) |
tourner à droite de 150° | ![]() |
tortue.right(150) |
avancer de \(\displaystyle 40\frac{1}{\sqrt{3}}\) pas | ![]() |
tortue.forward(40*pas/1.732) |
tourner à droite de 60° | ![]() |
tortue.right(60) |
avancer de \(\displaystyle 40\frac{1}{\sqrt{3}}\) pas | ![]() |
tortue.forward(40*pas/1.732) |
AAV0_INT: Répondre explicitement à la question posée
Le code ci-dessous propose la version Python du tracé attendu.
AAV0_INT: Choisir et appliquer une technique de vérification
A ce stade, une simple comparaison de figures entre celle de l'énoncé et celle obtenue par programme suffira.
Les deux figures sont similaires, ce qui corrobore la réponse proposée.