Aller au contenu

Exercices corrigés — Algorithmique et programmation (4e)

Quatre niveaux de difficulté, du plus simple au plus exigeant. Chaque exercice a sa correction détaillée, étape par étape.

8 exercices, classés par difficulté croissante.

Exercice 1 Découverte

Écrire un script Scratch qui demande un nombre et affiche son triple diminué de 7.

Voir la correction
Correction détaillée

Le nombre saisi est disponible dans le bloc « réponse ». Le triple diminué de 7 s'écrit 3 × réponse − 7 ; en Scratch, on emboîte les opérateurs.

quand le drapeau vert est cliqué
demander [Un nombre ?] et attendre
mettre [nombre] à (réponse)
dire (((nombre) * (3)) - (7))
Ranger la réponse dans une variable « nombre » n'est pas obligatoire mais rend le script plus lisible. Test : pour 10, le lutin dit 3 × 10 − 7 = 23 ; pour 2, il dit −1.

Exercice 2 Découverte

Qu'affiche ce script ? Justifier chaque affichage.

mettre [n] à (7)
si < ((n) modulo (2)) = (0) > alors
    dire [pair] pendant (2) secondes
sinon
    dire [impair] pendant (2) secondes
fin
ajouter (5) à [n]
mettre [n] à ((n) * (2))
dire (n)

Voir la correction
Correction détaillée

Après « mettre [n] à (7) », n = 7. Le bloc modulo donne le reste de la division euclidienne : 7 modulo 2 = 1, car 7 = 2 × 3 + 1. La condition « reste = 0 » est fausse : le lutin exécute le « sinon » et dit « impair ».
Puis « ajouter (5) à [n] » : n = 7 + 5 = 12.
Puis « mettre [n] à ((n) * (2)) » : n = 12 × 2 = 24.
Le lutin dit « impair », puis 24. L'ordre des deux dernières instructions compte : « multiplier puis ajouter 5 » aurait donné 19.

Exercice 3 Application

Quelle valeur affiche ce script ?

mettre [x] à (1)
répéter (4) fois
    mettre [x] à ((x) * (3))
fin
dire (x)

Voir la correction
Correction détaillée

On suit la variable x tour après tour ; la boucle exécute 4 fois « multiplier x par 3 ».
Départ : x = 1. Tour 1 : x = 1 × 3 = 3. Tour 2 : x = 3 × 3 = 9. Tour 3 : x = 9 × 3 = 27. Tour 4 : x = 27 × 3 = 81.
Le script affiche 81.
On a calculé 1 × 3 × 3 × 3 × 3 = 34 : une boucle qui multiplie n fois par 3 calcule la puissance 3n.

Exercice 4 Application

a) Compléter : pour tracer un pentagone régulier, on répète ___ fois « avancer de 50, tourner de ___ degrés ». b) Même question pour un octogone régulier. c) Que se passe-t-il si l'on tourne de 108° (mesure d'un angle intérieur du pentagone) au lieu de la valeur trouvée en a) ?

Voir la correction
Correction détaillée

a) Pour tracer un polygone régulier, le lutin fait un tour complet (360°) réparti sur ses sommets. Pentagone : répéter 5 fois « avancer de 50, tourner de 360 ÷ 5 = 72 degrés ».
b) Octogone : répéter 8 fois « avancer de 50, tourner de 360 ÷ 8 = 45 degrés ».
c) L'angle de rotation est l'angle extérieur du polygone, pas l'angle intérieur. En tournant de 108° cinq fois, le lutin tourne en tout de 540°, soit un tour et demi : la figure ne se referme pas après 5 côtés.
Angle intérieur et angle extérieur sont supplémentaires : 108 + 72 = 180. C'est bien 72° qu'il faut programmer.

Exercice 5 Maîtrise

Écrire un bloc « rectangle » avec deux paramètres (longueur, largeur) qui trace un rectangle.

Voir la correction
Correction détaillée

Un rectangle a deux côtés de longueur « longueur » et deux côtés de longueur « largeur », avec des angles droits. On avance d'une longueur, on tourne de 90°, on avance d'une largeur, on tourne de 90°, et l'on répète ces quatre instructions deux fois.

définir rectangle (longueur) (largeur)
répéter (2) fois
    avancer de (longueur)
    tourner ↻ de (90) degrés
    avancer de (largeur)
    tourner ↻ de (90) degrés
fin
Le bloc s'utilise ensuite avec des valeurs : rectangle (120) (60). Avec longueur = largeur, il trace un carré : le bloc « carré » du cours en est un cas particulier.

Exercice 6 Maîtrise

Qu'affiche ce script ? Présenter l'exécution dans un tableau d'état des variables.

mettre [a] à (1)
mettre [b] à (1)
répéter (5) fois
    mettre [c] à ((a) + (b))
    mettre [a] à (b)
    mettre [b] à (c)
fin
dire (b)

Voir la correction
Correction détaillée

À chaque tour, c reçoit la somme a + b, puis a prend l'ancienne valeur de b et b prend la valeur de c. On construit le tableau d'état à la fin de chaque tour.

Étapeabc
Départ11
Tour 1122
Tour 2233
Tour 3355
Tour 4588
Tour 581313
Le script affiche 13.
Chaque nouvelle valeur est la somme des deux précédentes : 1, 1, 2, 3, 5, 8, 13. Attention à l'ordre des affectations : « mettre a à b » doit précéder « mettre b à c », sinon l'ancienne valeur de b serait perdue.

Exercice 7 Challenge

Écrire un script qui demande deux nombres a et b et affiche le plus grand des deux. Que fait le script si a = b ?

Voir la correction
Correction détaillée

On range les deux réponses dans deux variables, car le bloc « réponse » ne garde que la dernière saisie. Puis on compare.

quand le drapeau vert est cliqué
demander [a ?] et attendre
mettre [a] à (réponse)
demander [b ?] et attendre
mettre [b] à (réponse)
si < (a) > (b) > alors
    dire (a)
sinon
    dire (b)
fin
Si a = b, la condition « a > b » est fausse : le script exécute le « sinon » et affiche b, qui est aussi la valeur de a. Le résultat est correct : le plus grand des deux nombres est bien leur valeur commune. Test : avec 4 et 9, il dit 9 ; avec 7 et 7, il dit 7.

Exercice 8 Challenge

Écrire un script qui demande un nombre entier N (au moins égal à 1), puis compte combien de fois il faut doubler N pour dépasser 1 000, et affiche ce nombre de doublements. Tester le script à la main avec N = 3.

Voir la correction
Correction détaillée

On utilise une variable « x » qui double à chaque tour et un compteur « tours ». La boucle « répéter jusqu'à » s'arrête dès que la condition « x > 1000 » devient vraie.

quand le drapeau vert est cliqué
demander [Un entier N ?] et attendre
mettre [x] à (réponse)
mettre [tours] à (0)
répéter jusqu'à < (x) > (1000) >
    mettre [x] à ((x) * (2))
    ajouter (1) à [tours]
fin
dire (tours)
Test avec N = 3 : x prend les valeurs 6, 12, 24, 48, 96, 192, 384, 768, 1 536. La condition devient vraie quand x = 1 536, après 9 doublements : le script affiche 9.
Vérification : 3 × 29 = 3 × 512 = 1 536 > 1 000, alors que 3 × 28 = 768 < 1 000. Le nombre de tours n'est pas connu à l'avance : c'est pour cela qu'on utilise « répéter jusqu'à » et non « répéter n fois ».