Exercices — Initiation à la pensée informatique (6e) • Niveau dur
Lire et écrire du pseudo-code • comprendre variables/affectations • détecter erreurs • conditions • boucles •
décomposer un problème • construire un tableau de résultats (sans ordinateur).
Corrigés détaillés (afficher/masquer).
Rappels express
- Affectation : \(x \leftarrow 7\) signifie “mettre 7 dans \(x\)”.
- Une variable peut changer pendant le programme.
- Condition : donne Vrai ou Faux.
- Boucle : répète une action (attention aux boucles infinies).
- Ordre : changer l’ordre change souvent le résultat.
Exercice 1 — Exécuter un programme (pas à pas)
On exécute le pseudo-code suivant :
Début
\(x \leftarrow 4\)
\(x \leftarrow x \times 3\)
\(x \leftarrow x + 5\)
Afficher \(x\)
Fin
1) Quelle valeur est affichée ?
2) Si on remplace \(x \leftarrow 4\) par \(x \leftarrow 10\), quelle valeur est affichée ?
\(x \leftarrow 4\)
\(x \leftarrow x \times 3\)
\(x \leftarrow x + 5\)
Afficher \(x\)
Fin
Correction détaillée
1)
\(x=4\).
Puis \(x \leftarrow 4\times 3 = 12\).
Puis \(x \leftarrow 12+5=17\).
Donc on affiche 17.
Puis \(x \leftarrow 4\times 3 = 12\).
Puis \(x \leftarrow 12+5=17\).
Donc on affiche 17.
2)
\(x=10\).
Puis \(x \leftarrow 10\times 3 = 30\).
Puis \(x \leftarrow 30+5=35\).
Donc on affiche 35.
Puis \(x \leftarrow 10\times 3 = 30\).
Puis \(x \leftarrow 30+5=35\).
Donc on affiche 35.
Exercice 2 — L’ordre change tout (piège)
Deux programmes A et B :
Programme A :
\(x \leftarrow 6\)
\(x \leftarrow x + 4\)
\(x \leftarrow x \times 2\)
\(x \leftarrow 6\)
\(x \leftarrow x + 4\)
\(x \leftarrow x \times 2\)
Programme B :
\(x \leftarrow 6\)
\(x \leftarrow x \times 2\)
\(x \leftarrow x + 4\)
1) Exécuter A puis B.
2) Expliquer en une phrase pourquoi le résultat est différent.
\(x \leftarrow 6\)
\(x \leftarrow x \times 2\)
\(x \leftarrow x + 4\)
Correction
1) Calculs
A : \(x=6\) → \(x=10\) → \(x=20\). Donc A donne 20.
B : \(x=6\) → \(x=12\) → \(x=16\). Donc B donne 16.
B : \(x=6\) → \(x=12\) → \(x=16\). Donc B donne 16.
2) Explication
On n’applique pas les opérations dans le même ordre : addition puis multiplication ≠ multiplication puis addition.
Exercice 3 — Deux variables
Exécuter :
Début
\(a \leftarrow 3\)
\(b \leftarrow 10\)
\(b \leftarrow b - a\)
\(a \leftarrow a + b\)
Afficher \(a\) et \(b\)
Fin
Quelles valeurs obtient-on ?
\(a \leftarrow 3\)
\(b \leftarrow 10\)
\(b \leftarrow b - a\)
\(a \leftarrow a + b\)
Afficher \(a\) et \(b\)
Fin
Correction détaillée
Au départ : \(a=3\), \(b=10\).
\(b \leftarrow b-a\) : \(b=10-3=7\).
\(a \leftarrow a+b\) : \(a=3+7=10\).
Affichage : \(a=10\) et \(b=7\).
\(b \leftarrow b-a\) : \(b=10-3=7\).
\(a \leftarrow a+b\) : \(a=3+7=10\).
Affichage : \(a=10\) et \(b=7\).
Exercice 4 — Condition (pair / impair)
On lit un nombre \(n\). On veut afficher “pair” si \(n\) est pair, sinon “impair”.
1) Proposer un pseudo-code. 2) Tester ton pseudo-code avec \(n=14\) puis \(n=9\).
1) Proposer un pseudo-code. 2) Tester ton pseudo-code avec \(n=14\) puis \(n=9\).
Correction proposée
1) Pseudo-code
Début
Lire \(n\)
SI \(n\) est divisible par 2
ALORS afficher "pair"
SINON afficher "impair"
Fin
Lire \(n\)
SI \(n\) est divisible par 2
ALORS afficher "pair"
SINON afficher "impair"
Fin
2) Tests
- \(n=14\) : divisible par 2 → affiche “pair”.
- \(n=9\) : pas divisible par 2 → affiche “impair”.
Exercice 5 — Condition : seuil (piège)
Un jeu donne une récompense si le score est au moins 50.
1) Écrire la condition correcte (attention au piège “au moins”). 2) Qu’affiche le programme pour 49, 50, 51 ?
1) Écrire la condition correcte (attention au piège “au moins”). 2) Qu’affiche le programme pour 49, 50, 51 ?
Correction
1) Condition
SI score \(\ge 50\) ALORS récompense
2) Résultats
- 49 : pas de récompense.
- 50 : récompense (car \(\ge 50\)).
- 51 : récompense.
Piège : “au moins” signifie \(\ge\), pas \(>\).
Exercice 6 — Boucle : répéter
On veut afficher 7 fois le mot “Bonjour”.
1) Proposer un pseudo-code avec une boucle. 2) Combien de fois s’affiche “Bonjour” si on écrit : “POUR i de 1 à 7” ?
1) Proposer un pseudo-code avec une boucle. 2) Combien de fois s’affiche “Bonjour” si on écrit : “POUR i de 1 à 7” ?
Correction
1) Pseudo-code
Début
POUR \(i\) de 1 à 7
Afficher "Bonjour"
FinPour
Fin
POUR \(i\) de 1 à 7
Afficher "Bonjour"
FinPour
Fin
2)
De 1 à 7 inclus → 7 fois.
Exercice 7 — Boucle + variable : une somme (dur)
Exécuter le pseudo-code :
Début
\(s \leftarrow 0\)
POUR \(i\) de 1 à 5
\(s \leftarrow s + i\)
FinPour
Afficher \(s\)
Fin
Quel nombre est affiché ?
\(s \leftarrow 0\)
POUR \(i\) de 1 à 5
\(s \leftarrow s + i\)
FinPour
Afficher \(s\)
Fin
Correction détaillée
On additionne 1+2+3+4+5.
Étapes :
Étapes :
- Départ \(s=0\)
- i=1 → \(s=1\)
- i=2 → \(s=3\)
- i=3 → \(s=6\)
- i=4 → \(s=10\)
- i=5 → \(s=15\)
Exercice 8 — Déboguer un pseudo-code (dur)
On veut afficher les nombres de 1 à 5, mais ce programme ne marche pas :
Début
\(i \leftarrow 1\)
TANT QUE \(i \le 5\)
Afficher \(i\)
FinTantQue
Fin
1) Quel est le problème ?
2) Corriger le programme.
\(i \leftarrow 1\)
TANT QUE \(i \le 5\)
Afficher \(i\)
FinTantQue
Fin
Correction
1) Problème
\(i\) ne change jamais, donc si \(i=1\), la condition \(i \le 5\) reste toujours vraie → boucle infinie.
2) Correction
Début
\(i \leftarrow 1\)
TANT QUE \(i \le 5\)
Afficher \(i\)
\(i \leftarrow i + 1\)
FinTantQue
Fin
\(i \leftarrow 1\)
TANT QUE \(i \le 5\)
Afficher \(i\)
\(i \leftarrow i + 1\)
FinTantQue
Fin
Défi bonus (très dur) — Décomposer et écrire un algorithme
On veut calculer le prix total d’un panier :
- 3 articles à 2,40 €
- 5 articles à 1,10 €
Correction proposée
1) Décomposition
- Calculer le prix du groupe 1.
- Calculer le prix du groupe 2.
- Additionner.
2) Pseudo-code
Début
\(a \leftarrow 3\)
\(pA \leftarrow 2{,}40\)
\(b \leftarrow 5\)
\(pB \leftarrow 1{,}10\)
\(t1 \leftarrow a \times pA\)
\(t2 \leftarrow b \times pB\)
\(total \leftarrow t1 + t2\)
Afficher \(total\)
Fin
\(a \leftarrow 3\)
\(pA \leftarrow 2{,}40\)
\(b \leftarrow 5\)
\(pB \leftarrow 1{,}10\)
\(t1 \leftarrow a \times pA\)
\(t2 \leftarrow b \times pB\)
\(total \leftarrow t1 + t2\)
Afficher \(total\)
Fin
Résultat attendu :
\(t1=3\times 2{,}40=7{,}20\),
\(t2=5\times 1{,}10=5{,}50\),
total \(=12{,}70\) €.