Axe : Boucles Sections : Sc. Expérimentales, Mathématiques & Sc. Techniques Conventions 2024-2025

Série N°3 : Structures itératives

Boucles complètes (Pour), boucles conditionnelles (Tant que, Répéter), arithmétique et T.D.O.

Niveau de difficultée : Facile & Moyen

Exercice 1 : QCM Bac 2019 - Déclarations & Suites

🟢 Facile
Question 1

Soit l'algorithme suivant :

Début Inconnu
  Lire(c1) ; Lire(c2)
  c3 ← 0
  Pour i de 0 à Long(c2) - 1 Faire
    Si Majus(c2[i]) = Majus(c1) Alors
      c3 ← c3 + 1
    Fin Si
  Fin Pour
  Ecrire(c3)
Fin

Ci-dessous des extraits de propositions de tableaux de déclaration des objets utilisés. La déclaration correspondante à l'algorithme Inconnu est :

Proposition 1
Objet Type
c1 chaîne
c2 chaîne
c3 entier
Proposition 2
Objet Type
c1 caractère
c2 caractère
c3 entier
Proposition 3
Objet Type
c1 chaîne
c2 caractère
c3 réel
Proposition 4
Objet Type
c1 caractère
c2 chaîne
c3 entier

Quel est la bonne proposition ?

  • Proposition 1
  • Proposition 2
  • Proposition 3
  • Proposition 4
Question 2

Afin d'améliorer le message d'affichage du résultat de l'algorithme précédent et de le rendre significatif relativement au traitement effectué, l'instruction 4 sera remplacée par l'instruction suivante :

  • Ecrire("Le nombre de caractères majuscules de", c1, "et", c2, "est :", c3)
  • Ecrire("Le nombre d'occurrences de", c1, "dans", c2, "est :", c3)
  • Ecrire("Le nombre de chiffres dans", c2, "est :", c3)
  • Ecrire("Le nombre de caractères communs entre", c1, "dans", c2, "est :", c3)
Question 3

Soit la suite définie par :

  • U 0 = 1
  • U n = 1 + 1/U n-1 , pour tout n > 0

La séquence qui permet de déterminer le terme U n avec n ≥ 0 est :

Proposition 1
T[1] ← 1
Pour i de 2 à n+1 Faire
  T[i] ← 1 + 1/T[i-1]
Fin Pour
Un ← T[n+1]
Proposition 2
U0 ← 1
Pour i de 1 à n Faire
  Un ← 1 + 1/U0
Fin Pour
Proposition 3
Un ← 1
Pour i de 1 à n Faire
  Un ← 1 + 1/Un
Fin Pour
Proposition 4
U0 ← 1
Pour i de 1 à n Faire
  Un ← 1 + 1/U0
  U0 ← Un
Fin Pour
Un ← U0

Quel est la bonne proposition ?

  • Proposition 1
  • Proposition 2
  • Proposition 3
  • Proposition 4
💡 Indice & Rappel de cours

Indice : Repérer les opérations appliquées sur les variables (ex: c2[i] indique que c2 est une chaîne et c1 un caractère comparé). Pour les suites, vérifier comment le terme précédent est mis à jour à chaque itération.

Exercice 2 : Le jeu du FizzBuzz

🟢 Facile

Le « FizzBuzz » est à l’origine un jeu pour apprendre aux enfants le principe de la division. Les enfants doivent énoncer les chiffres dans l’ordre et remplacer le nombre par « Fizz » s’il est divisible par 3 ou « Buzz » s’il est divisible par 5.

FizzBuzz
FizzBuzz

Ecrire un programme qui simule ce jeu jusqu'à 50.

💡 Indice

Indice : Utiliser une boucle pour parcourir les nombres de 1 à 50. Penser à tester d'abord la condition double (divisible par 3 ET 5) avant de tester les conditions simples (divisible par 3, puis divisible par 5).

Exercice 3 : Moyenne arithmétique de n nombres

🟢 Facile

Ecrire un programme qui calcule et affiche la moyenne de n entiers (2 ≤ n ≤ 10) saisis au clavier (sans utiliser de tableau).

Exemple de simulation

Entrer un nombre [2, 10] ? {{nval}}
Valeur n°{{idx+1}} ? {{ti}}
Moyenne arithmétique = {{moy}}
Entrer un nombre [2, 10] ? 4
Valeur n°1 ? 30
Valeur n°2 ? 26
Valeur n°3 ? 19
Valeur n°4 ? 5
Moyenne arithmétique = 20
💡 Indice

Indice : Contrôler la saisie de n entre 2 et 10. Accumuler les valeurs lues dans une variable somme à l'aide d'une boucle Pour , puis calculer la moyenne arithmétique.

Exercice 4 : Recherche de la meilleure note

🟢 Facile

Ecrire un programme qui saisit les notes des n élèves d'une classe (3 ≤ n ≤ 30) dans un tableau t, puis calcule et affiche la note maximale de la classe.

Exemple de simulation

Nombre d'élèves [3, 30] ? {{nval}}
Valeur n°{{tidx[idx]+1}} ? {{tval}}
La note maximale est {{max}}
Nombre d'élèves [3, 30] ? 6
Valeur n°1 ? 4.75
Valeur n°2 ? 17.25
Valeur n°3 ? 7.25
Valeur n°4 ? 17.5
Valeur n°5 ? 4
Valeur n°6 ? 3.75
La note maximale est 17.5
💡 Indice & Algorithme classique

Indice : Initialiser max ← t[0] puis parcourir le tableau avec Pour i de 1 à n-1 . Si t[i] > max , mettre à jour max ← t[i] .

Exercice 5 : Moyenne arithmétique avec condition d'arrêt

🟡 Moyen

Ecrire un programme qui calcule et affiche la moyenne des entiers saisis au clavier (sans utiliser de tableau).

Le programme s'arrête lorsque l'utilisateur tape le nombre 0 .

Exemple de simulation

Valeur n°{{idx+1}} (ou 0 pour terminer) ? {{ti}}
Moyenne arithmétique = {{moy}}
Valeur n°1 (ou 0 pour terminer) ? 15
Valeur n°2 (ou 0 pour terminer) ? 25
Valeur n°3 (ou 0 pour terminer) ? 20
Valeur n°4 (ou 0 pour terminer) ? 0
Moyenne arithmétique = 20
💡 Indice & Structure à utiliser

Indice : Le nombre de valeurs n'est pas connu à l'avance. Utiliser une boucle Répéter ou TantQue pour lire les valeurs et maintenir un compteur nb d'éléments valides non nuls.

Exercice 6 : Comptage des chiffres d'un nombre (Bac 2019)

🟡 Moyen

Soit la séquence algorithmique suivante, où x est un entier naturel :

nb ← 1
TantQue (x div 10) ≠ 0 Faire
  nb ← nb + 1
  x ← x div 10
Fin TantQue

Travail demandé

  1. Calculer la valeur finale de nb pour les valeurs suivantes de x :
    • 5403
    • 176
    • 3
  2. Donner le rôle de cette séquence.
  3. Ecrire une séquence algorithmique équivalente à celle donnée précédemment sans utiliser une structure itérative.
💡 Indice

Indice : À chaque itération de la boucle TantQue , la division entière x div 10 enlève le dernier chiffre du nombre x . Pour la version sans boucle, réfléchir au lien entre le nombre de chiffres d'un entier et sa représentation sous forme de chaîne de caractères.

Exercice 7 : Test de primalité d'un nombre

🟡 Moyen

Ecrire un programme qui lit un entier n (n ≥ 0), puis affiche s'il est premier ou non.

Un nombre est dit premier s'il est divisible uniquement par lui-même et par 1.

Exemple de simulation

Donner un nombre n ≥ 0 ? {{nval}}
{{n}} {{premier ? "est premier" : "n'est pas premier"}}
Donner un nombre n ≥ 0 ? 71
71 est premier
💡 Indice & Méthode

Indice : Tester s'il existe au moins un diviseur de n dans l'intervalle [2, n div 2] . Si aucun diviseur n'est trouvé et n > 1 , le nombre est premier.

Exercice 8 : Identification des chiffres d'un nombre

🟡 Moyen

Écrire un programme qui détermine quels sont les chiffres utilisés dans la représentation d'un nombre n (n > 0) donné.

Exemple de simulation

Donner un nombre n > 0 ? {{nval}}
{{n}} est composé des chiffres {{chiffres}}
Donner un nombre n > 0 ? 302257
302257 est composé des chiffres 0, 2, 3, 5, 7
💡 Indice & Astuce

Indice : Extraire chaque chiffre du nombre n via chiffre ← n mod 10 et n ← n div 10 tant que n ≠ 0, ou convertir le nombre en chaîne pour trier ses caractères uniques.

Exercice 9 : Lettres communes et spécifiques à deux mots

🟡 Moyen

Écrire un programme qui saisit deux mots puis détermine les lettres communes et les lettres spécifiques à chaque mot.

Les lettres communes sont vertes , et les lettres spécifiques sont rouges

s a m i - s a hb i

Exemple de simulation

Donner un premier mot ? {{mot}}
Donner un second mot ? {{mot}}
Lettres communes : {{common.join(', ')}}
Lettres spécifiques {{mot1}} : {{spec1.join(', ')}}
Lettres spécifiques {{mot2}} : {{spec2.join(', ')}}
💡 Indice & Méthode

Indice : Parcourir les caractères uniques du premier mot et vérifier s'ils figurent dans le second mot à l'aide d'une recherche (ex: Pos(mot1[i], mot2) ≠ -1 ).

Exercice 10 : Détection du monovocalisme

🟡 Moyen

Un mot ou une phrase sont dits monovocalisme en une lettre donnée s'ils incluent une seule voyelle qui se répète une ou plusieurs fois, sans distinction entre majuscules et minuscules.

Exemples :

  • "C a s" est un monovocalisme en "a"
  • " E st e ll e " est un monovocalisme en "e"
  • "L e s R e v e n e nt e s" est un monovocalisme en "e"
  • "G a rg a s P a r a c" est un monovocalisme en "a"
  • "Wh a t a m a n !" est un monovocalisme en "a"

Travail demandé

Ecrire un programme qui saisit une chaîne de caractères non vide ch puis affiche s'il s'agit d'un monovocalisme en une lettre à déterminer.

Exemple de simulation

Donner une phrase ou un mot ? {{ch}}
Donner une phrase ou un mot ? Les Revenantes
"Les Revenantes" est un monovocalisme en "e"
💡 Indice & Astuce

Indice : Parcourir la chaîne, collecter toutes les voyelles rencontrées dans une liste ou chaîne. S'assurer qu'au moins une voyelle est présente et qu'elles sont toutes identiques.

Niveau difficulté : Difficile

Exercice 11 : Conversion en base 16 (Hexadécimal)

🔴 Difficile
Conversion en base 16
Conversion en base 16

Écrire un programme qui convertit un nombre n, 0 ≤ n ≤ 65535, de la base 10 à la base 16 et affiche le résultat sur 4 chiffres.

Exemple de simulation

Donner un nombre 0 ≤ n ≤ 65535 ? {{nval}}
{{n}}(10) = {{nhexa}}(16)
Donner un nombre 0 ≤ n ≤ 65535 ? 635
635(10) = 027B(16)
💡 Indice & Méthode de conversion

Indice : Effectuer des divisions successives par 16. Si le reste est entre 10 et 15, lui associer le caractère entre 'A' et 'F' (code ASCII 55 + reste ). Compléter à 4 chiffres avec des zéro à gauche.

Exercice 12 : Test d'anagramme de deux mots

🔴 Difficile

Écrire un programme qui saisit deux mots différents, puis détermine s'ils sont anagrammes ou non.

Deux mots anagrammes sont deux mots différents formés par les mêmes caractères dans un ordre différent.

Exemples : cuve, vecu ; rail, lira ; chicane, caniche ; sujet, juste

Exemple de simulation

Donner le premier mot ? {{mot}}
Donner le second mot ? {{mot}}
"{{mot1}}" et "{{mot2}}" {{anagramme ? "sont des anagrammes" : "ne sont pas des anagrammes"}}
Donner le premier mot ? caniche
Donner le second mot ? chicane
"caniche" et "chicane" sont des anagrammes
💡 Indice & Démarche

Indice : Vérifier d'abord que les longueurs sont égales. Compter ensuite l'occurrence de chaque lettre dans les deux mots et s'assurer qu'elles correspondent exactement.

Exercice 13 : Insertion de sous-chaîne (Bac 2017)

🔴 Difficile

Soit l'algorithme Exercice suivant :

Début Exercice
  Lire(ch1)
  Lire(ch2)
  Répéter
    Lire(p)
  Jusqu'à p ≤ long(ch1)
  ch ← ""
  Pour i de 0 à p-1 Faire
    ch ← ch + ch1[i]
  Fin Pour
  ch ← ch + ch2
  Pour i de p à Long(ch1)-1 Faire
    ch ← ch + ch1[i]
  Fin Pour
  ch1 ← ch
  Ecrire(ch1)
Fin

Travail demandé

  1. Dresser le TDO de cet algorithme
  2. Quel sera le résultat affiché par cet algorithme pour ch1 ← "BAC 2017", ch2 ← "2016/" et p ← 4
  3. Déduire le rôle de cet algorithme.
  4. Quel est le module prédéfini qui peut jouer le même rôle que cet algorithme ? Proposer l'appel correspondant.
💡 Indice

Indice : Analyser le rôle des deux boucles Pour successives et la manière dont les sous-chaînes de ch1 et ch2 sont concaténées.

Exercice 14 : Validation d'une suite de dominos (Bac 2021)

🔴 Difficile

Le jeu de dominos est un jeu qui comporte 28 pièces. Un domino est formé de 2 parties, chaque partie contient de 0 à 6 points.

Une suite de dominos est dite valide si et seulement si la deuxième partie d'un domino est égale à la première partie du domino qui est à sa droite.

Suite valide de dominos
Suite valide de dominos
Suite invalide de dominos
Suite invalide de dominos

La suite de dominos de la figure 2 est invalide car la deuxième partie du deuxième domino (6 points) n'est pas égale à la première partie du domino qui est à sa droite (2 points).

Afin de simuler ce jeu, on se propose d'utiliser un tableau D d'entiers. Chaque case contient une valeur comprise entre 0 et 6. Ainsi, le tableau correspondant à la figure 1 est représenté comme suit :

Dominos Figure 1
Dominos Figure 1

Les paires (D[1], D[2]), (D[3], D[4]), (D[5], D[6]), (D[7], D[8]) représentent une suite de quatre dominos.

Travail demandé

  1. Présenter, sous forme d'un tableau D, la suite de dominos de la figure 2 .
  2. Ecrire un programme nommé suite_dominos qui :
    • Saisit la taille n du tableau D , avec n un entier pair et 4 ≤ n ≤ 56.
    • Remplit le tableau D par n entiers compris entre 0 et 6.
    • Vérifie si la suite de dominos représentée par le tableau D est valide ou invalide .
  3. Dresser le TDO et le TDNT relatifs à ce problème.

Exemple de simulation

Taille n du tableau (pair, [4, 56]) ? {{nval}}
D[{{didx[idx]+1}}] ? [0..6] {{dval}}
La suite de dominos {{d.join(', ')}} est {{valide ? "VALIDE" : "INVALIDE"}}
Taille n du tableau (pair, [4, 56]) ? 8
Valeurs du tableau D : [2, 4, 4, 6, 6, 1, 1, 5]
La suite de dominos est VALIDE
💡 Indice & Astuce d'indexation

Indice : Pour tester si la suite est valide, parcourir les raccords entre dominos : pour i allant de 1 à (n/2)-1 , comparer D[2*i] avec D[2*i+1] .

Exercice 15 : Recherche des points d'équilibre (Bac 2020)

🔴 Difficile

Nous appelons point d'équilibre d'un tableau T de taille n , 3 ≤ n ≤ 20, tout indice k qui sépare deux sous tableaux ayant la même somme des éléments ( S1 = S2 ), avec S1 la somme des éléments d'indices inférieurs à k et S2 la somme des éléments d'indices supérieurs à k .

Exemple : Dans le tableau T suivant, les cases d'indices 4 et 7 sont des points d'équilibre :

Les points d'équilibre
Les points d'équilibre

Travail demandé

  1. Saisir un tableau T de n éléments.
  2. Déterminer et afficher les points d'équilibre .

Exemple de simulation

Taille n du tableau [3, 20] ? {{nval}}
T[{{tidx[idx]}}] ? {{tval}}
Taille n du tableau [3, 20] ? 10
Tableau T : [2, 3, 1, 4, 10, 2, 3, -20, 15, 10]
Les points d'équilibre sont les indices : 4, 7
💡 Indice & Algorithme

Indice : Pour chaque indice k allant de 1 à n-2 , calculer S1 ← somme(T[0..k-1]) et S2 ← somme(T[k+1..n-1]) . Si S1 = S2 , alors k est un point d'équilibre.