Aller au contenu

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

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

On considère le script :

quand le drapeau vert est cliqué
demander [Nombre ?] et attendre
mettre [x] à (réponse)
mettre [y] à (((x) + (3)) * ((x) - (3)))
dire (y)
a) Que dit le lutin si on entre 5 ? Si on entre −2 ? b) Exprimer y en fonction de x sous forme développée. c) Quel nombre faut-il entrer pour que le lutin dise 0 ?

Voir la correction
Correction détaillée

a) Le script calcule y = (x + 3) × (x − 3). Si on entre 5 : y = (5 + 3) × (5 − 3) = 8 × 2 = 16, le lutin dit 16. Si on entre −2 : y = (−2 + 3) × (−2 − 3) = 1 × (−5) = −5, le lutin dit −5.
b) On développe avec l'identité remarquable (a + b)(a − b) = a2 − b2 : y = (x + 3)(x − 3) = x2 − 9.
c) Le lutin dit 0 quand (x + 3)(x − 3) = 0. Un produit est nul si et seulement si l'un de ses facteurs est nul : x + 3 = 0 ou x − 3 = 0, soit x = −3 ou x = 3. Il y a deux nombres possibles, 3 et −3. Vérification : 32 − 9 = 0 et (−3)2 − 9 = 0.

Exercice 2 Découverte

Écrire un script Scratch qui trace un hexagone régulier de côté 60.

Voir la correction
Correction détaillée

Un hexagone régulier a 6 côtés de même longueur et 6 angles égaux. Le lutin avance de 60 puis tourne, et recommence 6 fois. À la fin, il a fait un tour complet, donc tourné de 360° en tout : il tourne de 3606 = 60° à chaque sommet.

quand le drapeau vert est cliqué
effacer tout
stylo en position d'écriture
répéter (6) fois
    avancer de (60)
    tourner ↻ de (60) degrés
fin
Attention : 60° est l'angle dont tourne le lutin, pas l'angle intérieur de l'hexagone, qui vaut 180 − 60 = 120°. La même méthode trace un polygone régulier à n côtés en tournant de 360n degrés.

Exercice 3 Application

Quel nombre est affiché à la fin de ce script ?

mettre [a] à (1)
répéter (5) fois
    mettre [a] à ((a) * (2))
fin
dire (a)

Voir la correction
Correction détaillée

On déroule le script en notant la valeur de a à chaque tour de boucle. Au départ, a = 1. À chaque tour, a est remplacé par a × 2.
Tour 1 : a = 1 × 2 = 2. Tour 2 : a = 2 × 2 = 4. Tour 3 : a = 4 × 2 = 8. Tour 4 : a = 8 × 2 = 16. Tour 5 : a = 16 × 2 = 32.
Après 5 tours, la boucle s'arrête et le lutin dit 32. On a multiplié 1 par 2 cinq fois de suite : a = 25 = 32. Avec « répéter (n) fois », le script afficherait 2n.

Exercice 4 Application

On considère le script :

mettre [u] à (3)
répéter (4) fois
    mettre [u] à (((2) * (u)) - (1))
fin
dire (u)
Recopier et compléter un tableau donnant la valeur de u après chaque tour de boucle, puis indiquer ce que dit le lutin.

Voir la correction
Correction détaillée

On déroule le script en remplissant un tableau des valeurs successives de u. Au départ, u = 3. À chaque tour, u est remplacé par 2 × u − 1.
Tour 1 : u = 2 × 3 − 1 = 5. Tour 2 : u = 2 × 5 − 1 = 9. Tour 3 : u = 2 × 9 − 1 = 17. Tour 4 : u = 2 × 17 − 1 = 33.

Tourdépart1234
u3591733
Après les 4 tours, le lutin dit 33. Remarque : chaque valeur est une puissance de 2 augmentée de 1 (3 = 2 + 1, 5 = 4 + 1, 9 = 8 + 1, 17 = 16 + 1, 33 = 32 + 1).

Exercice 5 Maîtrise

Compléter le script pour qu'il affiche « Pair » ou « Impair » selon le nombre entré (indication : utiliser le bloc (x) modulo (2)).

Voir la correction
Correction détaillée

Un nombre est pair lorsque le reste de sa division par 2 vaut 0, impair lorsque ce reste vaut 1. Le bloc (x) modulo (2) donne exactement ce reste.

quand le drapeau vert est cliqué
demander [Nombre ?] et attendre
mettre [x] à (réponse)
si <((x) modulo (2)) = (0)> alors
    dire [Pair]
sinon
    dire [Impair]
fin
Test : avec 14, 14 modulo 2 = 0, la condition est vraie et le lutin dit « Pair » ; avec 27, 27 modulo 2 = 1, la condition est fausse et le lutin dit « Impair ». En Python, la même condition s'écrit if x % 2 == 0:.

Exercice 6 Maîtrise

On considère la fonction Python :

def mystere(n):
    s = 0
    for i in range(1, n + 1):
        s = s + i
    return s

print(mystere(4))
a) Qu'affiche ce programme ? Détailler les valeurs successives de s. b) Que calcule la fonction mystere ? c) Que renvoie mystere(10) ?

Voir la correction
Correction détaillée

a) On déroule la fonction avec n = 4. Au départ, s = 0. La boucle for i in range(1, n + 1) fait prendre à i les valeurs 1, 2, 3 et 4, car range(1, 5) s'arrête avant 5.
i = 1 : s = 0 + 1 = 1 ; i = 2 : s = 1 + 2 = 3 ; i = 3 : s = 3 + 3 = 6 ; i = 4 : s = 6 + 4 = 10. La fonction renvoie 10 et le programme affiche 10.
b) La fonction calcule la somme des entiers de 1 à n : mystere(n) = 1 + 2 + … + n.
c) mystere(10) = 1 + 2 + … + 10 = 55. On peut le vérifier en regroupant les termes deux par deux : (1 + 10) + (2 + 9) + (3 + 8) + (4 + 7) + (5 + 6) = 5 × 11 = 55.

Exercice 7 Challenge

Écrire une fonction Python volume_boule(r) qui renvoie le volume d'une boule de rayon r.

Voir la correction
Correction détaillée

Le volume d'une boule de rayon r est V = (43)πr3. En Python, la puissance s'écrit ** et la valeur de π est math.pi, disponible après import math.

import math

def volume_boule(r):
    return 4 / 3 * math.pi * r ** 3
Test : volume_boule(3) renvoie environ 113,1, ce qui correspond à (43) × π × 27 = 36π ≈ 113,1. Attention à écrire 4 / 3 et non 4 // 3, qui est la division entière et donnerait 1.

Exercice 8 Challenge

Voici un programme de calcul : « Choisir un nombre ; le multiplier par lui-même ; soustraire 4 fois le nombre de départ ; ajouter 4. » a) Appliquer ce programme à 3, puis à −1. b) Écrire un script Scratch qui demande un nombre et affiche le résultat du programme. c) Montrer que le résultat est toujours positif ou nul, et déterminer le nombre de départ pour lequel le résultat est 0.

Voir la correction
Correction détaillée

a) Avec 3 : 3 × 3 = 9 ; 9 − 4 × 3 = 9 − 12 = −3 ; −3 + 4 = 1. Avec −1 : (−1) × (−1) = 1 ; 1 − 4 × (−1) = 1 + 4 = 5 ; 5 + 4 = 9.
b)

quand le drapeau vert est cliqué
demander [Choisis un nombre] et attendre
mettre [x] à (réponse)
mettre [résultat] à ((((x) * (x)) - ((4) * (x))) + (4))
dire (résultat)
c) Si le nombre de départ est x, le résultat est x2 − 4x + 4. On reconnaît l'identité remarquable a2 − 2ab + b2 = (a − b)2 avec a = x et b = 2 : x2 − 4x + 4 = (x − 2)2. Un carré est toujours positif ou nul, donc le résultat du programme est toujours positif ou nul, quel que soit le nombre choisi.
Le résultat vaut 0 quand (x − 2)2 = 0, c'est-à-dire pour x = 2. Vérification : 2 × 2 − 4 × 2 + 4 = 4 − 8 + 4 = 0. Les résultats 1 et 9 de la question a) sont bien (3 − 2)2 et (−1 − 2)2.