Exercices – Boucles, suivi de variables et construction
BTS SIO SISR 1re année – Mathématiques pour l'informatique – S04
Note
Comment travailler. Cherche d'abord sur papier, avec la méthode du cours : écris les étapes, pas seulement le résultat. Ouvre ensuite « Voir la réponse » pour te corriger. À l'épreuve, aucune réponse sans justification n'est complète.
Exercice 1 – Trace d'une boucle POUR
Dérouler l'algorithme et donner la valeur finale de s. Quelle somme calcule-t-il ?
Voir la réponse
| Tour | i |
s avant |
s après |
|---|---|---|---|
| 1 | 1 | 0 | 1 |
| 2 | 2 | 1 | 5 |
| 3 | 3 | 5 | 14 |
| 4 | 4 | 14 | 30 |
| 5 | 5 | 30 | 55 |
s vaut 55 à la fin : \(1^2 + 2^2 + 3^2 + 4^2 + 5^2\).
Exercice 2 – Nombre de tours
Donner la valeur de i et de c à la sortie. Quel est le variant qui garantit la terminaison ?
Voir la réponse
i prend les valeurs 1, 3, 9, 27, 81, 243, 729, 2187 : à la sortie i vaut 2187 (le premier \(3^k \ge 1\,000\) car \(3^6 = 729 < 1\,000\)) et c vaut 7.
Le variant n'est pas i (qui augmente) mais l'entier \(1\,000 - i\) tant qu'il est positif : il diminue strictement à chaque tour (puisque i augmente) ; la boucle s'arrête donc.
Exercice 3 – Terminaison
Dire pour chaque boucle si elle s'arrête, et pourquoi.
i ← 10;TANT QUE i > 0 FAIRE i ← i − 3i ← 10;TANT QUE i ≠ 0 FAIRE i ← i − 3i ← 1;TANT QUE i > 0 FAIRE i ← i + 1
Voir la réponse
- Oui :
iprend les valeurs 10, 7, 4, 1, -2 ; dès qu'il devient négatif ou nul, la condition est fausse. Le variant esti, qui décroît strictement (de 3) tout en restant un entier ; il atteint une valeur ≤ 0. - Non :
iprend les valeurs 10, 7, 4, 1, -2, -5, … et ne vaut jamais 0 (10 n'est pas multiple de 3). Une condition≠est dangereuse : on préfère>. - Non :
iaugmente, donc reste strictement positif.
Exercice 4 – Construire une boucle
Écrire en pseudo-code, avec en-tête, un algorithme qui calcule la somme des multiples de 3 compris entre 1 et 100. Donner le résultat.
Voir la réponse
ALGORITHME somme_multiples_de_3
RÔLE : somme des multiples de 3 de 1 à 100
SORTIE : s (entier)
VARIABLES : i, s (entiers)
DÉBUT
s ← 0
POUR i DE 1 À 100 FAIRE
SI i mod 3 = 0 ALORS
s ← s + i
FIN SI
FIN POUR
RETOURNER s
FIN
Résultat : \(3 + 6 + \dots + 99 = 3 \times (1 + 2 + \dots + 33) = 3 \times \dfrac{33 \times 34}{2} = 1683\).
Exercice 5 – Chiffres d'un nombre
- Dérouler
nombre_de_chiffresdu cours pour \(n = 90\,210\). - Écrire un algorithme
somme_des_chiffreset le dérouler pour \(n = 2\,024\).
Voir la réponse
- \(90\,210 \to 9\,021 \to 902 \to 90 \to 9 \to 0\) : 5 tours, donc 5 chiffres. 2.
ALGORITHME somme_des_chiffres
ENTRÉE : n (entier ≥ 0)
SORTIE : s (entier)
DÉBUT
s ← 0
TANT QUE n > 0 FAIRE
s ← s + (n mod 10)
n ← n div 10
FIN TANT QUE
RETOURNER s
FIN
Pour 2 024 : \(4 + 2 + 0 + 2 = 8\).
Exercice 6 – Conversion en base b
Dérouler l'algorithme vers_base du cours pour \(n = 205\) et \(b = 16\), puis \(n = 37\) et \(b = 2\).
Voir la réponse
205 en base 16 :
| Tour | n avant |
reste |
n après |
texte |
|---|---|---|---|---|
| 1 | 205 | 13 | 12 | D |
| 2 | 12 | 12 | 0 | CD |
Résultat : CD (les restes 13 et 12 s'écrivent D et C).
37 en base 2 :
| Tour | n avant |
reste |
n après |
texte |
|---|---|---|---|---|
| 1 | 37 | 1 | 18 | 1 |
| 2 | 18 | 0 | 9 | 01 |
| 3 | 9 | 1 | 4 | 101 |
| 4 | 4 | 0 | 2 | 0101 |
| 5 | 2 | 0 | 1 | 00101 |
| 6 | 1 | 1 | 0 | 100101 |
Résultat : 100101.
Exercice 7 – Maximum
On parcourt la liste [4, 9, 2, 9, 7]. Dérouler la recherche du maximum avec son premier indice (les indices commencent à 0).
Voir la réponse
m ← L[0] ; position ← 0
POUR i DE 1 À longueur(L) − 1 FAIRE
SI L[i] > m ALORS
m ← L[i] ; position ← i
FIN SI
FIN POUR
| i | L[i] | L[i] > m ? | m après | position après |
|---|---|---|---|---|
| 1 | 9 | oui | 9 | 1 |
| 2 | 2 | non | 9 | 1 |
| 3 | 9 | non | 9 | 1 |
| 4 | 7 | non | 9 | 1 |
Départ : m = 4, position = 0. À la fin : m = 9 et position = 1. L'inégalité stricte > garde le premier maximum : le second 9 (indice 3) n'est pas plus grand que m.
Exercice 8 – Boucles imbriquées
- Combien de couples \((i, j)\) sont comptés ?
- Généraliser pour \(n\) au lieu de 6.
Voir la réponse
- Pour \(i = 1, 2, \dots, 6\), la boucle intérieure fait \(5, 4, 3, 2, 1, 0\) tours : \(5 + 4 + 3 + 2 + 1 + 0 = 15\).
- \((n-1) + (n-2) + \dots + 1 + 0 = \dfrac{n(n-1)}{2}\). Pour \(n = 6\) : \(\dfrac{6 \times 5}{2} = 15\). C'est le nombre de paires que l'on peut former avec \(n\) éléments.
Je sais faire
Coche honnêtement ; ce que tu ne coches pas se reprend avant la séance suivante.
- Choisir le bon type de boucle ;
- Appliquer la méthode initialisation / test / mise à jour ;
- Justifier la terminaison d'une boucle ;
- Écrire deux boucles imbriquées ;
- Écrire la conversion d'un entier en base \(b\).
Ce que je dois reprendre : ______________________
Ma question à poser à l'enseignant : ______________________