Module 4 : Les structures conditionnelles

Cours

1. Présentation

Souvent, l'exécution d'un traitement dépend d'une condition. Dans ce cas, on utilise les structures conditionnelles. Ces dernières se déclinent, en fonction du nombre de conditions et de traitements, en trois formes : réduite, alternative (ou complète) et généralisée.

Lorsque le traitement dépend d'une valeur de type scalaire (entier, caractère ou booléen), on peut utiliser une structure de contrôle conditionnelle à choix multiples.

📐 Schéma de principe d'une Structure Conditionnelle
Schéma Organigramme - Structure Conditionnelle (Aiguillage Vrai / Faux)

2. Forme réduite

Une structure conditionnelle à forme réduite admet un seul traitement qui sera exécuté uniquement si la condition est vraie.

Schéma Organigramme - Forme Réduite
📐 Algorithme 🐍 Python
// Valeur absolue d'un nombre x
absx ← x
Si x < 0 Alors
    absx ← -x
Fin Si
Ecrire("abs(", x, ")=", absx)
# Valeur absolue d'un nombre x
absx = x
if x < 0:
    absx = -x
print("abs(", x, ")=", absx)

3. Forme alternative

Une structure conditionnelle à forme alternative admet deux traitements différents :

  • Le premier traitement est exécuté uniquement si la condition est vraie.
  • Le second traitement est exécuté uniquement si la condition est fausse.
Schéma Organigramme - Forme Alternative
📐 Algorithme 🐍 Python
// Parité d'un nombre n
Si n mod 2 = 0 Alors
    Ecrire(n, "est pair.")
Sinon
    Ecrire(n, "est impair.")
Fin Si
# Parité d'un nombre n
if n % 2 == 0:
    print(n, "est pair.")
else:
    print(n, "est impair.")

4. Forme généralisée

Une structure conditionnelle simple à forme généralisée admet trois traitements différents ou plus qui seront exécutés en fonction de plusieurs conditions.

Schéma Organigramme - Forme Généralisée
📐 Algorithme 🐍 Python
// Comparaison entre deux nombres
Si a > b Alors
    eq ← ">"
Sinon Si a < b Alors
    eq ← "<"
Sinon
    eq ← "="
Fin Si
Ecrire(a, eq, b)
# Comparaison entre deux nombres
if a > b:
    eq = ">"
elif a < b:
    eq = "<"
else:
    eq = "="
print(a, eq, b)

5. Structure à choix multiples

Une structure de contrôle conditionnelle à choix multiples est utilisée de préférence lorsque le traitement dépend uniquement d'une ou de plusieurs valeurs d'un sélecteur scalaire.

Schéma Organigramme - Choix Multiples
📐 Algorithme 🐍 Python
// Calcul du nombre de jours
Selon mois
    1, 3, 5, 7, 8, 10, 12: nbjours ← 31
    4, 6, 9, 11: nbjours ← 30
    2: nbjours ← 28
    Sinon nbjours ← -1
Fin Selon
Ecrire(nbjours)
# Calcul du nombre de jours
match mois:
    case 1|3|5|7|8|10|12: nbjours = 31
    case 4|6|9|11: nbjours = 30
    case 2: nbjours = 28
    case _: nbjours = -1
print(nbjours)

Exercices Interactifs

Exercice 1 – QCM 1

Cocher la ou les bonnes réponses pour chaque question.

1. Une personne est considérée majeure si son âge dépasse les 18 ans. La condition qui peut compléter l'algorithme ci-dessous est :
Si condition Alors
    Ecrire("Vous êtes majeur(e)")
Sinon
    Ecrire("Vous êtes mineur(e)")
Fin Si
💡 Indice
Pensez à la comparaison directe avec le seuil 18, et observez le résultat d'un quotient lorsqu'un nombre est supérieur ou égal à 18.
2. La condition qu'on peut utiliser pour vérifier si la longueur d'une chaîne de caractères ch est multiple de 3 est :
💡 Indice
Un nombre est multiple de 3 si le reste de la division entière par 3 (mod 3) vaut 0. Rappelez-vous aussi qu'une condition logique et sa double négation sont équivalentes.
3. Pour déterminer si un entier n est pair ou impair, quelle(s) séquence(s) est/sont correcte(s) ?
💡 Indice
Examinez comment chaque séquence gère l'affectation de nat : soit avec une valeur par défaut modifiée si impair, soit avec une structure Si...Sinon complète basée sur un test booléen.
4. Afin de former l'entier le plus grand n2 formé par les chiffres d'un entier n de deux chiffres :
💡 Indice
Cherchez les algorithmes qui comparent correctement le premier et le second chiffre pour former le plus grand nombre possible (soit par calcul arithmétique div/mod, soit par manipulation de chaîne).
5. Dans l'algorithme ci-dessous, pour que le résultat final de n soit égal à 13, n initial peut être égal à :
Si n mod 2 = 0 Alors
    n ← n div 2
Sinon
    n ← 3 * n + 1
Fin Si
💡 Indice
Évaluez l'instruction conditionnelle pour chaque valeur candidate : si n est pair on divise par 2 (n div 2), si n est impair on applique 3 * n + 1.
6. À la suite de l'exécution du programme ci-dessous, on obtient le résultat 12000. La valeur de np est alors :
np = int(input("Nombre de pages ? "))
if np < 20:
    pu = 200
elif np < 100:
    pu = 150
else:
    pu = 100
res = pu * np
print(res)
💡 Indice
Pour chaque valeur de np, déterminez d'abord le prix unitaire pu correspondant selon les tranches (<20, <100, ≥100), puis calculez le produit pu * np pour vérifier s'il vaut 12000.

Exercice 2 – QCM 2

Cocher la ou les bonnes réponses pour chaque question.

1. La valeur finale de n1 en fonction de la valeur de n est :
n ← aléa(5, 15)
Si n > 10 Alors
    n1 ← n - 10
Sinon
    n1 ← -n
Fin Si
Ecrire(n, n1)
💡 Indice
Si n = 7 (≤ 10), la branche Sinon s'exécute (n1 = -n). Si n = 12 (> 10), la branche Si s'exécute (n1 = n - 10).
2. Sachant que b > c, que b < a, et que la valeur affichée est 15, les valeurs de a, b et c sont :
Si a > b et a > c Alors
    Ecrire(a)
Sinon Si b > c Alors
    Ecrire(b)
Sinon
    Ecrire(c)
Fin Si
💡 Indice
Analysez les inégalités données (b > c et b < a), qui impliquent a > b > c. La première condition Si a > b et a > c sera donc vraie et affichera la valeur de a.
3. L'affichage de la séquence suivante est :
n ← 3
g ← "F"
Si n ≠ 0 Alors
    Ecrire("Bonjour!")
    Si g = "H" Alors
        Ecrire("Messieurs")
    Sinon
        Ecrire("Mes dames")
    Fin Si
Fin Si
💡 Indice
Évaluez d'abord la condition externe n ≠ 0 (3 ≠ 0 est Vrai), puis la condition imbriquée g = "H" ("F" = "H" est Faux, ce qui exécute le Sinon).
4. Les valeurs finales des variables a et b sont :
a ← 12
b ← 5
Si a mod b = 0 Alors
    a ← a / b
Sinon Si a - b > 5 Alors
    b ← b + 2
Sinon
    a ← a - 3
Fin Si
Ecrire(a, " et ", b)
💡 Indice
Calculez d'abord 12 mod 5 (reste 2 ≠ 0). Passez au Sinon Si : calculez 12 - 5 = 7. Comme 7 > 5 est Vrai, la variable b est incrémentée de 2.
5. Les valeurs finales des variables x et y sont :
x ← 8
y ← 3
Si x < y Alors
    x ← x + 2
Sinon Si x > y + 2 Alors
    y ← y + 5
Sinon
    x ← x - y
Fin Si
Ecrire(x, y)
💡 Indice
Testez la première condition 8 < 3 (Faux). Testez la seconde 8 > (3 + 2) (8 > 5 est Vrai), ce qui modifie la valeur de y en lui ajoutant 5.

Exercice 3 – QCM 3 (Relier les expressions booléennes)

Relier chacune des descriptions numérotées (1 à 8) à l'expression booléenne correspondante (a à h).

📋 Liste des expressions booléennes disponibles :
a. test ← a mod 15 = 0
b. test ← non (b mod a = 0)
c. test ← (a mod 2 = 0) et (a div 100 mod 2 ≠ 0)
d. test ← 10 ≤ a et a < 100
e. test ← (a mod 3 = 0 ou a mod 5 = 0) et (a mod 15 ≠ 0)
f. test ← 0 ≤ a et a ≤ 1
g. test ← a mod 3 = 0 ou a mod 5 = 0
h. test ← (a mod 10 < 5) et (a mod 100 div 10 < 5)
1. Vérifier si un réel a est compris entre 0 et 1 :
💡 Indice
Recherchez l'expression qui encadre la valeur a avec des inégalités entre la borne inférieure 0 et la borne supérieure 1.
2. Vérifier si un entier positif a est composé de deux chiffres :
💡 Indice
Un entier positif a deux chiffres s'il est supérieur ou égal à 10 et strictement inférieur à 100.
3. Vérifier si un entier positif a est divisible par 3 et 5 :
💡 Indice
Si un nombre est divisible par 3 ET par 5 (premiers entre eux), il est alors divisible par leur produit 15.
4. Vérifier si un entier positif a est divisible par 3 ou 5 :
💡 Indice
Utilisez l'opérateur logique ou pour vérifier si le reste par 3 est nul ou si le reste par 5 est nul.
5. Vérifier si un entier positif a est divisible par 3 ou 5 et non pas les deux en même temps :
💡 Indice
Combinez la divisibilité par 3 ou 5 avec la condition explicite que l'entier N'EST PAS divisible par 15 (a mod 15 ≠ 0).
6. Vérifier si un entier positif b n'est pas divisible par un deuxième entier positif a :
💡 Indice
Recherchez l'expression qui applique la négation non à l'affirmation de divisibilité b mod a = 0.
7. Vérifier si le chiffre des centaines d'un entier a de 4 chiffres est impair et que son chiffre d'unités est pair :
💡 Indice
L'unité s'évalue par a mod 2 = 0 (pair), et le chiffre des centaines par (a div 100) mod 2 ≠ 0 (impair).
8. Vérifier si le chiffre des unités et le chiffre des dizaines d'un entier a sont inférieurs à 5 :
💡 Indice
Le chiffre des unités est a mod 10 et celui des dizaines est a mod 100 div 10.

Exercice 4 – Exécution Manuelle (Analyse des formes conditionnelles)

Pour chaque algorithme ci-dessous : observez la séquence, identifiez la traduction Python, déterminez le nombre de conditions, la forme de la structure et son rôle principal.

📌 Algorithme 1 :
📐 Algorithme 🐍 Traduction Python
a ← aléa(1, 10)
b ← aléa(1, 10)
Si a > b Alors
    t ← a ; a ← b ; b ← t
Fin Si
Ecrire(a, b)
import random
a = random.randint(1, 10)
b = random.randint(1, 10)
if a > b:
    t = a; a = b; b = t
print(a, b)
⚙️ Analyse de l'Algorithme 1 :
💡 Indice
Observez ce qui arrive lorsque a > b : les valeurs de a et b sont permutées grâce à la variable temporaire t. En fin d'exécution, a est toujours inférieur ou égal à b.
📌 Algorithme 2 :
📐 Algorithme 🐍 Traduction Python
n ← aléa(1, 20)
Si n mod 2 = 0 Alors
    Ecrire(n, "est pair.")
Sinon
    Ecrire(n, "est impair.")
Fin Si
import random
n = random.randint(1, 20)
if n % 2 == 0:
    print(n, "est pair.")
else:
    print(n, "est impair.")
⚙️ Analyse de l'Algorithme 2 :
💡 Indice
Examinez le test n mod 2 = 0 : le reste de la division par 2 détermine si un nombre entier est pair ou impair.
📌 Algorithme 3 :
📐 Algorithme 🐍 Traduction Python
v ← aléa(0, 2)
Si v = 0 Alors
    car ← chr(aléa(48, 57))
Sinon Si v = 1 Alors
    car ← chr(aléa(65, 90))
Sinon
    car ← chr(aléa(97, 122))
Fin Si
Ecrire(car)
import random
v = random.randint(0, 2)
if v == 0:
    car = chr(random.randint(48, 57))
elif v == 1:
    car = chr(random.randint(65, 90))
else:
    car = chr(random.randint(97, 122))
print(car)
⚙️ Analyse de l'Algorithme 3 :
💡 Indice
Rappelez-vous les intervalles de la table ASCII : 48-57 pour les chiffres, 65-90 pour les lettres majuscules et 97-122 pour les lettres minuscules.

Exercice 5 – Signe & Parité

Écrire l'algorithme d'un programme qui saisit un entier n, puis affiche son signe (positif ou négatif) et sa parité (pair ou impair).

📊 Représentation graphique : Axe des entiers relatifs (ℤ), Signe & Parité :
Axe des entiers relatifs, Signe et Parité

Exercice 6 – Nombre cubique (Armstrong)

Un nombre positif de 3 chiffres est dit cubique (ou nombre d'Armstrong) s'il est égal à la somme des cubes de ses chiffres : $$N = c^3 + d^3 + u^3$$

📐 Décomposition d'un entier à 3 chiffres (N ∈ [100, 999]) :
Centaines (c)
c ← N div 100
Ex: 153 div 100 = 1
Dizaines (d)
d ← (N div 10) mod 10
Ex: (153 div 10) mod 10 = 5
Unités (u)
u ← N mod 10
Ex: 153 mod 10 = 3
💡 Indice d'extraction des chiffres
Conseil : Pour extraire le chiffre des centaines d'un entier à 3 chiffres, utilisez N div 100. Pour les dizaines, combinez (N div 10) mod 10. Pour les unités, utilisez N mod 10. Pour calculer les cubes, effectuez la multiplication directe : c * c * c + d * d * d + u * u * u (l'utilisation de ** n'étant pas autorisée à ce niveau).
🧪 Testeur interactif de nombre cubique :
Nombres cubiques de 3 chiffres à tester :

Exercice 7 – Formes d'une structure conditionnelle

Analyse des structures conditionnelles, réécriture sous forme réduite et évaluation d'expressions avec codes ASCII.

📌 Question 1 :

Soit l'instruction conditionnelle suivante :

Si (x > 1) et (x ≤ 12) Alors
    y ← x + 1
Sinon
    y ← x - 1
Fin Si
Proposition A
y ← x - 1
Si (x > 1) et (x ≤ 12) Alors
    y ← x + 1
Fin Si
Proposition B
y ← x + 1
Si (x > 1) et (x ≤ 12) Alors
    y ← x - 1
Fin Si
Proposition C
Si (x > 1) et (x ≤ 12) Alors
    y ← x + 1
    y ← x - 1
Fin Si
💡 Indice Q1
Pour réécrire sous forme réduite une structure Si C Alors A Sinon B, affectez d'abord la valeur du Sinon (B) par défaut, puis modifiez-la dans un Si C Alors (A).
📌 Question 2 :

Soit la séquence algorithmique suivante (sachant que ord("A") = 65 et ord("a") = 97) :

Si "a" ≤ C et C ≤ "z" Alors
    P ← ord(C) - 96
Sinon
    P ← ord(C) - 64
Fin Si
💡 Indice Q2
Exécutez à la main le bloc Sinon pour 'A' (car 'A' n'est pas une lettre minuscule) et le bloc Si pour 'c'. Rappelez-vous que la fonction ord() retourne le code ASCII du caractère.

Exercice 8 – Type d'un caractère ASCII

Écrire l'algorithme d'un programme qui saisit un caractère, puis détermine et affiche son type exact (Lettre Majuscule, Lettre Minuscule, Chiffre ou Symbole).

📋 Plages des codes ASCII et conditions d'appartenance :
Majuscule
"A" ≤ c ≤ "Z"
ASCII 65 à 90
Minuscule
"a" ≤ c ≤ "z"
ASCII 97 à 122
Chiffre
"0" ≤ c ≤ "9"
ASCII 48 à 57
Symbole
Sinon
Autres caractères
💡 Indices & Structures possibles

Deux approches algorithmiques sont possibles :

  • Forme généralisée : Si "A" ≤ c et c ≤ "Z" Alors ... Sinon Si "a" ≤ c et c ≤ "z" Alors ... Sinon Si "0" ≤ c et c ≤ "9" Alors ... Sinon ... Fin Si
  • Structure à choix multiples : Selon c Faire "A".."Z" : ... "a".."z" : ... "0".."9" : ... Sinon : ... Fin Selon
🧪 Testeur et analyseur de caractère ASCII :
Exemples rapides à tester :

Exercice 9 – Calculatrice d'expression (A op B)

Écrire l'algorithme d'un programme qui saisit une expression de la forme A op B dans une chaîne nommée ch (avec A et B deux entiers relatifs et op l'un des opérateurs +, -, * ou /), puis calcule et affiche le résultat (en prévoyant le cas de division par zéro).

📊 Représentation graphique : Organigramme d'évaluation de "A op B" :
Organigramme Calculatrice A op B
💡 Indices de traitement de la chaîne

Conseils pour l'extraction et l'évaluation :

  • Recherchez la position p de l'opérateur dans la chaîne ch (avec pos("+", ch), pos("-", ch), etc.).
  • Extrayez les sous-chaînes de A (de la position 1 à p-1) et de B (de la position p+1 à long(ch)), puis convertissez-les en entiers avec valeur().
  • Traitez le calcul avec une structure conditionnelle Selon op Faire ou Si...Sinon Si en vérifiant systématiquement Si op = "/" et B = 0 pour éviter l'erreur de division par zéro.
🧪 Testeur interactif d'expression (ch = "A op B") :
Exemples du manuel à tester :

Exercice 10 – Potentiel Hydrogène (pH)

Écrire l'algorithme d'un programme nommé Nature_Liquide qui permet de saisir la valeur du pH (Potentiel Hydrogène) d'une solution pour afficher sa nature exacte : Acide fort, Acide faible, Neutre, Base faible ou Base forte.

📊 Représentation graphique : Échelle de pH (0 à 14) et Zones de classification :
Échelle de pH
💡 Indices d'organisation des conditions

Conseils pour la rédaction de l'algorithme :

  • Pensez à traiter en premier le cas d'une saisie invalide (lorsque la valeur du pH n'est pas comprise dans l'intervalle $[0, 14]$).
  • Pour classifier les 5 natures de solutions (Acide fort, Acide faible, Neutre, Base faible, Base forte), utilisez une structure conditionnelle généralisée (Si...Sinon Si...Sinon Si...Sinon...Fin Si) en comparant la valeur du pH aux seuils successifs $3$, $7$ et $11$.
🧪 Testeur et analyseur de pH (Nature_Liquide) :
Exemples de produits de la vie quotidienne à tester :

Exercice 11 – Évaluation d'une structure conditionnelle

Quelles sont les valeurs finales des variables A et B après l'exécution de chaque bloc d'instructions ?

📌 Bloc 1 :
A ← 3
B ← 1
Si (A > 2) et (B < 1) Alors
    B ← 2
Fin Si
A =
B =
💡 Indice Bloc 1
Évaluez la condition composée (3 > 2) et (1 < 1). La seconde comparaison 1 < 1 est-elle vraie ou fausse ?
📌 Bloc 2 :
A ← 2
Si (Non (A < 2) ou (A = 2)) Alors
    B ← 3
Sinon
    B ← 1
Fin Si
A =
B =
💡 Indice Bloc 2
Calculez d'abord 2 < 2 (Faux). Donc Non(Faux) donne Vrai. L'opérateur ou est donc satisfait.
📌 Bloc 3 :
A ← 2
A ← A div 3
Si A = 2 Alors
    B ← 3
Sinon Si A = 0 Alors
    B ← 2
Sinon
    B ← 1
Fin Si
A =
B =
💡 Indice Bloc 3
Calculez d'abord la division entière 2 div 3. Quelle valeur prend A ? Suivez ensuite la branche conditionnelle correspondante.

Exercice 12 – Année bissextile

Écrire l'algorithme d'un programme qui saisit une année a puis détermine et affiche si elle est bissextile (366 jours, mois de février de 29 jours) ou non (365 jours).

📋 Règle de définition :

Une année est bissextile si elle est divisible par 4 et non divisible par 100, OU si elle est divisible par 400.

💡 Indice de structure conditionnelle
Conseil : Réfléchissez aux trois opérations de divisibilité avec l'opérateur mod (reste égal à 0 ou différent de 0) et combinez-les avec une structure alternative Si...Sinon...Fin Si.
🧪 Testeur interactif d'année bissextile :
Exemples à tester :

Exercice 13 – Salutations (Analyse & Réécriture avec Selon)

Soit la séquence algorithmique ci-dessous permettant d'afficher une salutation selon l'heure h (comprise entre 0 et 23) :

📐 Algorithme de départ (Forme généralisée) :
Si h < 12 Alors
    Ecrire("Bonjour")
Sinon Si h < 18 Alors
    Ecrire("Bon Après-midi")
Sinon Si h < 21 Alors
    Ecrire("Bonsoir")
Sinon
    Ecrire("Bonne nuit")
Fin Si
📌 Question 1 : Déterminer l'intervalle de temps (0..23) pour chaque message
💡 Indice Q1
L'heure h est un entier de 0 à 23. Si h < 12 est Vrai, la dernière valeur entière possible est 11 (donc 0..11). Pour h < 18 en arrivant au premier Sinon Si, h est au moins égal à 12 et au plus égal à 17.
📌 Question 2 : Réécrire l'algorithme en utilisant la structure Selon
Proposition A
Selon h Faire
    0..11  : Ecrire("Bonjour")
    12..17 : Ecrire("Bon Après-midi")
    18..20 : Ecrire("Bonsoir")
    21..23 : Ecrire("Bonne nuit")
Fin Selon
Proposition B
Selon h Faire
    0..12  : Ecrire("Bonjour")
    12..18 : Ecrire("Bon Après-midi")
    18..21 : Ecrire("Bonsoir")
    21..24 : Ecrire("Bonne nuit")
Fin Selon
Proposition C
Selon h Faire
    h < 12 : Ecrire("Bonjour")
    h < 18 : Ecrire("Bon Après-midi")
    h < 21 : Ecrire("Bonsoir")
    Sinon  : Ecrire("Bonne nuit")
Fin Selon
💡 Indice Q2
Dans une structure Selon, les cas de sélection pour une variable entière doivent être des valeurs ou des plages d'intervalles réels disjoints (format borne1..borne2 sans chevauchement des bornes).
🧪 Testeur interactif de salutation selon l'heure (h) :
Raccourcis d'heures à tester :

Exercice 14 – Score d'un match

Écrire l'algorithme d'un programme qui saisit les noms de deux équipes de football (eq1, eq2) et leurs scores respectifs (sc1, sc2), puis affiche l'équipe gagnante ou la mention "Match nul" en cas d'égalité.

💡 Indice de structure conditionnelle
Conseil : Pensez à comparer les deux scores sc1 et sc2 avec une structure généralisée (Si...Sinon Si...Sinon...Fin Si). Déterminez les trois cas possibles : victoire de la première équipe, victoire de la seconde, ou égalité parfaite.
⚽ Testeur interactif de résultat de match :
Exemples du manuel de cours :

Exercice 15 – Équation du 1er degré

Écrire l'algorithme d'un programme qui saisit les coefficients réels a et b d'une équation du premier degré : $$a \cdot x + b = 0$$ puis calcule et affiche l'ensemble des solutions $S$ dans $\mathbb{R}$.

📊 Représentation graphique : Arbre de décision & cas de résolution ($a \cdot x + b = 0$) :
Arbre de décision Équation du 1er degré
💡 Indice de structure conditionnelle
Conseil : Analysez d'abord le coefficient a :
  • Si a ≠ 0, l'équation admet une unique solution x = -b / a.
  • Si a = 0, la résolution dépend du terme constant b : si b = 0, toute valeur réelle de $x$ est solution ($S = \mathbb{R}$), sinon l'équation est impossible ($S = \emptyset$).
🧪 Testeur interactif de résolution ($a \cdot x + b = 0$) :
Exemples de cas à tester :

Exercice 16 – Nature d'un triangle

D'après le théorème de l'inégalité triangulaire, la somme des longueurs de deux côtés d'un triangle doit toujours être supérieure à celle du troisième côté. Écrire l'algorithme d'un programme qui saisit les longueurs des 3 côtés a, b et c, puis détermine et affiche sa nature exacte.

📊 Représentation graphique : Inégalité triangulaire & classification géométrique :
Classification de la nature d'un triangle
💡 Indice de structure conditionnelle
Conseil :
  • Testez d'abord la validité d'existence du triangle avec l'inégalité triangulaire : (a + b > c) et (a + c > b) et (b + c > a).
  • Pour les cas de figure :
    • Équilatéral : 3 côtés égaux (a = b et b = c).
    • Rectangle : théorème de Pythagore avec multiplications directes (a*a + b*b = c*c, etc.).
    • Isocèle : 2 côtés égaux (a = b ou a = c ou b = c).
🔺 Testeur interactif de la nature d'un triangle (a, b, c) :
Exemples du manuel de cours :

Exercice 17 – Équation du 2ème degré

Écrire l'algorithme d'un programme qui saisit les 3 coefficients réels a ($a \neq 0$), b et c d'une équation du second degré : $$a \cdot x^2 + b \cdot x + c = 0$$ puis calcule le discriminant $\Delta = b^2 - 4ac$ et affiche l'ensemble des solutions $S$ dans $\mathbb{R}$.

📊 Représentation graphique : Arbre de décision du Discriminant ($\Delta = b^2 - 4ac$) :
Arbre de décision Équation du 2nd degré
💡 Indice de structure conditionnelle
Conseil :
  • Calculez le discriminant avec la multiplication directe : delta ← b * b - 4 * a * c (l'utilisation de ** n'étant pas autorisée).
  • Examinez le signe de delta avec une structure généralisée (Si delta > 0 Alors ... Sinon Si delta = 0 Alors ... Sinon ... Fin Si).
⚡ Testeur interactif de résolution ($a \cdot x^2 + b \cdot x + c = 0$) :
Exemples de cas du manuel :

Exercice 18 – Les alcools (Visualiseur 3D & Calculateur Molaire)

La formule chimique générale de la famille des alcools est $C_n H_{2n+2} O$. Écrire l'algorithme d'un programme qui saisit une formule brute, vérifie s'il s'agit d'un alcool, puis calcule sa masse molaire ($C=12.01$, $H=1.008$, $O=16.00\text{ g/mol}$) et identifie son nom.

💡 Indice d'analyse et calcul molaire
Conseil pour la logique algorithmique :
  • Extrayez le nombre d'atomes de Carbone $n$ et d'Hydrogène $h$ à partir de la chaîne (ex: C2H6O).
  • Vérifiez la condition d'appartenance à la famille des alcools : h = 2 * n + 2 et présence de l'atome d'Oxygène.
  • Si la condition est vraie :
    • Calculez la masse molaire : M ← n * 12.01 + h * 1.008 + 16.00.
    • Identifiez le nom selon $n$ ($1 \rightarrow$ Méthanol, $2 \rightarrow$ Éthanol, $3 \rightarrow$ Propanol, $4 \rightarrow$ Butanol, $5 \rightarrow$ Pentanol, $6 \rightarrow$ Hexanol, $n \ge 7 \rightarrow$ Alcool à longue chaîne).
🧪 Visualiseur 3D de la molécule d'alcool : Éthanol (C₂H₆O)
Carbone (C)
Oxygène (O)
Hydrogène (H)
🖱️ Faites glisser pour tourner la molécule en 3D
Formules du manuel à modéliser :

Exercice 19 – Intersection de deux droites affines

Une droite du plan est décrite par une équation affine de la forme $y = a \cdot x + b$. Écrire l'algorithme d'un programme qui saisit les coefficients réels $a_1, b_1$ et $a_2, b_2$ de deux droites $D_1$ et $D_2$, puis détermine si elles sont confondues, parallèles, orthogonales ou sécantes en calculant les coordonnées de leur point d'intersection $(x, y)$.

📊 Représentation graphique : Position relative de deux droites affines & repère cartésien :
Position relative et intersection de deux droites
💡 Indice de structure conditionnelle & géométrique
Conseil pour la logique algorithmique :
  • Comparez les pentes $a_1$ et $a_2$ :
    • Si a1 = a2 :
      • Si b1 = b2 $\rightarrow$ Droites confondues (infinité d'intersections).
      • Sinon $\rightarrow$ Droites parallèles strictement disjointes (aucune intersection).
    • Sinon (a1 ≠ a2) : les droites sont sécantes.
      • Calculez l'abscisse du point d'intersection : x ← (b2 - b1) / (a1 - a2).
      • Calculez l'ordonnée : y ← a1 * x + b1.
      • Vérifiez la condition d'orthogonalité : Si a1 * a2 = -1 $\rightarrow$ Droites orthogonales, sinon droites sécantes quelconques.
📐 Traceur géométrique & Analyseur d'intersection :
🔵 Droite D₁ : y = a₁·x + b₁
🔴 Droite D₂ : y = a₂·x + b₂
Exemples officiels du manuel :