Accueil/Informatique & Développement /Chapitre 11 /Exercices corrigés

Algorithmique — exercices

Les cinq exercices du TP1 et ceux du cours, entièrement déroulés — analyse d'abord, algorithme ensuite.

🎯

La méthode qui rapporte des points

Sur chaque exercice, commencez par écrire les entrées, la sortie et les étapes. Ces trois lignes valent des points même si l'algorithme final est incomplet — et elles vous évitent la moitié des erreurs.

01Surveillance d'un équipement

1Trois tranches de température Facile

Une entreprise souhaite surveiller la température d'un équipement réseau. Si la température est :

  • inférieure ou égale à 60 °C → fonctionnement normal ;
  • entre 61 et 70 °C → température élevée ;
  • supérieure à 70 °C → alerte.
✅ Correction

Analyse — Entrée : temperature. Sortie : l'état de l'équipement. Traitement : classer la valeur dans l'une des trois tranches.

algorithme
Algorithme SurveillanceEquipement

Variables
    temperature : réel

Début
    Lire temperature

    Si temperature ≤ 60 Alors
        Afficher "fonctionnement normal"
    Sinon Si temperature ≤ 70 Alors
        Afficher "température élevée"
    Sinon
        Afficher "alerte : température critique"
    FinSi
Fin
🧰 Pourquoi ≤ 70 et non > 60 ET ≤ 70

Si l'on atteint le deuxième test, c'est que le premier était faux : temperature dépasse donc déjà 60. Le préciser serait redondant. Chaque branche d'une cascade hérite du contraire des précédentes.

Testez avec 60, 61, 70 et 71 : ce sont les valeurs aux frontières qui révèlent les erreurs, pas celles du milieu.

02Dimensionner une sauvegarde

2Calcul d'espace de stockage Moyen

Le service informatique doit mettre en place une sauvegarde d'un serveur de fichiers contenant 1 250 Go. Le responsable souhaite :

  • une sauvegarde complète chaque semaine ;
  • conserver les sauvegardes pendant 4 semaines ;
  • une marge de sécurité de 20 %.

Identifiez les entrées, la sortie, les étapes de calcul, écrivez l'algorithme et testez-le.

✅ Correction
Entrées volume de données (1 250 Go), nombre de sauvegardes conservées (4), taux de marge (20 %)
Sortieespace de stockage nécessaire, en Go
Étapes 1. multiplier le volume par le nombre de sauvegardes · 2. ajouter 20 %
algorithme
Algorithme EspaceSauvegarde

Constantes
    NB_SEMAINES = 4
    MARGE = 0.20

Variables
    volume : réel
    espace_brut : réel
    espace_total : réel

Début
    Lire volume

    espace_brut  ← volume * NB_SEMAINES
    espace_total ← espace_brut * (1 + MARGE)

    Afficher "Espace nécessaire : "
    Afficher espace_total
Fin

Test avec les données fournies :

calcul
espace_brut  = 1250 × 4        = 5000 Go
espace_total = 5000 × 1,20     = 6000 Go

→ il faut un disque d'au moins 6 To
⚠️ « Ajouter 20 % », deux écritures pour un seul calcul

On peut écrire espace_brut * 1,20 ou espace_brut + espace_brut * 0,20 : c'est identique. En revanche, diviser par 0,8 donnerait 6 250 Go — ce serait la réponse à une autre question (« quel volume représente 80 % du disque ? »).

Remarquez l'usage des constantes : le jour où la rétention passe à 6 semaines, une seule ligne change.

03Diagnostic de connexion (TP1 · ex. 1)

3Trois booléens, quatre diagnostics Moyen

Un utilisateur n'accède plus à Internet. Vous disposez de trois informations, chacune Vrai ou Faux : reseau, internet, dns. Le programme doit afficher :

  • « Poste non connecté au réseau local » si reseau = Faux ;
  • « Problème d'accès à Internet » si le réseau fonctionne mais pas Internet ;
  • « Problème DNS » si réseau et Internet fonctionnent mais pas le DNS ;
  • « Connexion fonctionnelle » si les trois fonctionnent.
✅ Correction
algorithme
Algorithme DiagnosticConnexion

Variables
    reseau : booléen
    internet : booléen
    dns : booléen

Début
    Lire reseau
    Lire internet
    Lire dns

    Si reseau = Faux Alors
        Afficher "Poste non connecté au réseau local"
    Sinon Si internet = Faux Alors
        Afficher "Problème d'accès à Internet"
    Sinon Si dns = Faux Alors
        Afficher "Problème DNS"
    Sinon
        Afficher "Connexion fonctionnelle"
    FinSi
Fin
🧰 L'ordre des tests est le raisonnement

Cet exercice reproduit exactement la méthode de dépannage du chapitre Dépannage : on teste du plus proche au plus lointain. Le réseau local d'abord, puis Internet, puis le DNS.

Cet ordre n'est pas un choix esthétique : il évite d'écrire les conditions composées. Sans cascade, le troisième cas s'écrirait reseau = Vrai ET internet = Vrai ET dns = Faux. Avec la cascade, un simple dns = Faux suffit — le reste est déjà garanti.

⚠️ Si dns = Faux ou Si NON dns ?

Les deux sont corrects. dns étant un booléen, écrire dns = Faux revient à NON dns. La seconde forme est plus concise et plus proche du C (if (!dns)) ; la première est plus explicite pour un débutant. Choisissez-en une et restez cohérent dans toute la copie.

04Compter les équipements (TP1 · ex. 2)

4Deux compteurs Moyen

Un technicien vérifie la disponibilité de 10 équipements. Pour chacun il saisit 1 (accessible) ou 0 (inaccessible). Écrivez l'algorithme qui demande les 10 états, compte les accessibles et les inaccessibles, puis affiche les deux résultats.

Exemple : pour 1 1 0 1 1 0 1 1 1 0 → accessibles : 7 · inaccessibles : 3.

✅ Correction
algorithme
Algorithme DisponibiliteEquipements

Constantes
    NB_EQUIPEMENTS = 10

Variables
    i : entier
    etat : entier
    accessibles : entier
    inaccessibles : entier

Début
    accessibles   ← 0
    inaccessibles ← 0

    Pour i allant de 1 à NB_EQUIPEMENTS
        Afficher "État de l'équipement "
        Afficher i
        Lire etat

        Si etat = 1 Alors
            accessibles ← accessibles + 1
        Sinon
            inaccessibles ← inaccessibles + 1
        FinSi
    FinPour

    Afficher "Équipements accessibles : "
    Afficher accessibles
    Afficher "Équipements inaccessibles : "
    Afficher inaccessibles
Fin
⚠️ Initialiser les compteurs — avant la boucle

Oublier accessibles ← 0 est l'erreur classique : la variable contiendrait une valeur indéterminée, et l'incrémenter donnerait n'importe quoi. Et l'initialisation doit être avant la boucle : placée dedans, le compteur repartirait de zéro à chaque tour et finirait à 1.

Astuce de relecture : accessibles + inaccessibles doit toujours valoir 10. Si ce n'est pas le cas, un cas n'est pas traité.

🧰 Un seul compteur aurait suffi

Puisque le total est connu, on peut n'en compter qu'un et déduire l'autre :

algorithme
inaccessibles ← NB_EQUIPEMENTS - accessibles

Moins de code, donc moins d'occasions de se tromper. Les deux réponses sont acceptées.

05Parcourir un tableau (TP1 · ex. 3)

5Détecter les serveurs lents Moyen

Un outil de supervision mesure le temps de réponse de 10 serveurs :

données
temps = [12, 18, 25, 15, 42, 17, 31, 14, 55, 20]

Un serveur est lent si son temps dépasse 30 ms. Écrivez l'algorithme qui parcourt le tableau, affiche chaque temps, signale les serveurs lents, les compte et affiche le total.

✅ Correction
algorithme
Algorithme ServeursLents

Constantes
    SEUIL = 30
    TAILLE = 10

Variables
    temps : tableau
    i : entier
    nb_lents : entier

Début
    temps ← [12, 18, 25, 15, 42, 17, 31, 14, 55, 20]
    nb_lents ← 0

    Pour i allant de 0 à TAILLE - 1
        Afficher "Serveur "
        Afficher i + 1
        Afficher " : "
        Afficher temps[i]
        Afficher " ms"

        Si temps[i] > SEUIL Alors
            Afficher " → Serveur lent"
            nb_lents ← nb_lents + 1
        FinSi
    FinPour

    Afficher "Nombre de serveurs lents : "
    Afficher nb_lents
Fin

Déroulé sur les données de l'énoncé :

Serveur123456 78910
Temps (ms)12182515 421731145520
> 30 ? ouioui oui

→ les serveurs 5, 7 et 9 sont lents. Nombre de serveurs lents : 3.

⚠️ i est l'indice, pas le numéro du serveur

Le tableau se parcourt de 0 à 9, mais l'utilisateur veut lire « Serveur 1 » à « Serveur 10 ». D'où le Afficher i + 1.

Mélanger les deux donne soit un « Serveur 0 » incompréhensible, soit un décalage d'une case. C'est l'erreur d'un cran (off-by-one), la plus fréquente de toute la programmation.

06Écrire des fonctions (TP1 · ex. 4 et 5)

6EstPortValide Moyen

Un numéro de port doit être compris entre 0 et 65535. Créez la fonction EstPortValide(port) qui retourne Vrai ou Faux, puis un programme principal qui demande un port, appelle la fonction et affiche le résultat.

✅ Correction
algorithme
Fonction EstPortValide(port)
    Retourner (port ≥ 0 ET port ≤ 65535)
FinFonction


Algorithme VerificationPort

Variables
    port : entier

Début
    Afficher "Entrez un numéro de port : "
    Lire port

    Si EstPortValide(port) Alors
        Afficher "Port valide"
    Sinon
        Afficher "Port invalide"
    FinSi
Fin
🧰 Pourquoi une fonction plutôt qu'un Si

Parce que la règle « entre 0 et 65535 » sera vérifiée à plusieurs endroits du logiciel. Écrite une fois dans une fonction, elle est juste partout — et si la règle change, on modifie une seule ligne.

C'est aussi plus lisible : Si EstPortValide(port) se lit comme une phrase, là où Si port ≥ 0 ET port ≤ 65535 oblige à décoder.

7EstLent et le verdict Exigeant

Un logiciel de supervision reçoit les temps de réponse de 10 serveurs :

données
temps = [15, 22, 48, 12, 75, 18, 35, 105, 20, 60]

Un serveur est lent si son temps dépasse 50 ms.

  1. Écrire la fonction EstLent(temps).
  2. Parcourir le tableau et afficher les serveurs lents avec leur numéro et leur temps.
  3. Compter les serveurs lents.
  4. Afficher : « Situation normale » si aucun · « Surveillance recommandée » si 1 ou 2 · « Intervention nécessaire » si plus de 2.
✅ Correction
algorithme
Fonction EstLent(t)
    Retourner (t > 50)
FinFonction


Algorithme SupervisionServeurs

Constantes
    TAILLE = 10

Variables
    temps : tableau
    i : entier
    nb_lents : entier

Début
    temps ← [15, 22, 48, 12, 75, 18, 35, 105, 20, 60]
    nb_lents ← 0

    Pour i allant de 0 à TAILLE - 1
        Si EstLent(temps[i]) Alors
            Afficher "Serveur "
            Afficher i + 1
            Afficher " : "
            Afficher temps[i]
            Afficher " ms → lent"
            nb_lents ← nb_lents + 1
        FinSi
    FinPour

    Afficher "Nombre de serveurs lents : "
    Afficher nb_lents

    Si nb_lents = 0 Alors
        Afficher "Situation normale"
    Sinon Si nb_lents ≤ 2 Alors
        Afficher "Surveillance recommandée"
    Sinon
        Afficher "Intervention nécessaire"
    FinSi
Fin

Résultat attendu :

résultat
Serveur 5  : 75 ms → lent
Serveur 8  : 105 ms → lent
Serveur 10 : 60 ms → lent
Nombre de serveurs lents : 3
Intervention nécessaire
⚠️ Le piège du 48 — et celui des bornes

Le troisième serveur affiche 48 ms : proche du seuil, mais pas lent, car la règle est « supérieur à 50 », pas « supérieur ou égal ». Un serveur à exactement 50 ms ne serait pas lent non plus.

Les énoncés jouent systématiquement sur cette nuance. Relisez toujours : « supérieur » (>) ou « supérieur ou égal » (≥) ? Une seule barre change le résultat.

🧰 L'intérêt de la fonction, ici

Le seuil de 50 n'apparaît qu'à un seul endroit : dans EstLent. Le programme principal ne parle plus de nombres, il parle de serveurs lents. Passer le seuil à 40, c'est changer un caractère.

⚡ Les erreurs qui coûtent le plus de points

  • Ne pas initialiser un compteur à 0 avant la boucle.
  • Parcourir de 1 à taille au lieu de 0 à taille − 1.
  • Confondre l'indice i et le numéro affiché (i + 1).
  • Confondre > et ≥ aux bornes de l'énoncé.
  • Écrire des conditions composées inutiles au lieu d'une cascade.
  • Oublier de faire évoluer la condition d'un Tant que.
  • Sauter l'analyse entrées / sortie / étapes — des points gratuits perdus.

Sources exploitées

  • TP1 — Algorithmique, exercices 1 à 5 (le professeur, 2026-2027)
  • Cours « Algorithmique et programmation » — exercices d'application du chapitre 1