Aller au contenu

Bac pro Cybersécurité, informatique et réseaux, électronique (CIEL) · Bac proBac pro

La programmation : exercices corrigés pour le Bac pro CIEL

Publié le 9 novembre 2026 · Mis à jour le 9 novembre 2026 · Signaler une erreur

L'essentiel

  • Programmer, c'est concevoir, écrire, tester et maintenir des programmes avec un langage de programmation.4
  • Un langage est traduit pour la machine par un compilateur (traduction avant l'exécution) ou par un interprète (traduction à la volée).5
  • Pour une boucle, suis les valeurs des variables à la main dans un tableau de suivi : c'est la méthode la plus sûre.
  • Une boucle while doit toujours modifier ce qui sert à sa condition, sinon elle ne s'arrête jamais.
  • Avant de coder un calcul, pose-le sur le papier avec ses unités, puis compare avec le résultat du programme.

Comment utiliser ces exercices

Cette page te propose des exercices de difficulté croissante sur la programmation, au niveau du Bac pro CIEL. Tu y retrouves ce qui sert partout en cybersécurité, en réseaux et en électronique : lire un programme, prévoir ce qu'il affiche, le corriger, puis en écrire un petit morceau. Tu peux les faire sur papier ou dans un éditeur Python.

Rappels utiles avant de commencer

Un programme typique contient des boucles while ou for, qui répètent un bloc de code tant qu'une condition est vraie ou un nombre de fois donné.4 Il peut aussi utiliser des types de données personnalisés ou des exceptions pour traiter les erreurs.4 Les langages ont beaucoup évolué pour rendre l'écriture plus simple et les programmes plus fiables.4

Écrire dans un langage de haut niveau évite au programmeur de gérer les particularités du matériel, ce qui lui laisse du temps pour les vrais problèmes.5 La portabilité, elle, désigne la possibilité de faire tourner un programme prévu pour une plateforme sur une autre.5

Les exercices

Exercice 1 Compilateur ou interprète ?

★☆☆Environ 8 min

Deux élèves de ta classe travaillent sur le même projet de contrôle d'une carte électronique.

  • Léa écrit son code, lance une première étape qui produit un fichier exécutable, puis exécute ce fichier.
  • Karim lance directement son script et le programme est traduit instruction après instruction pendant l'exécution.
  1. Qui utilise un compilateur ? Qui utilise un interprète ?
  2. Karim modifie une ligne de son script. Que doit-il faire pour tester la modification ?
  3. Donne un avantage qu'apporte un langage de haut niveau au programmeur.
Indice 1

Un compilateur traduit le code source en un code cible avant son exécution.

Indice 2

Un interprète traduit « à la volée », donc au moment où le programme tourne.

Voir la correction pas à pas
  1. Léa passe par une étape de traduction qui produit un code cible exécutable ensuite : c'est le rôle d'un compilateur.5

  2. Karim fait traduire son code pendant l'exécution, à la volée : il utilise un interprète.5

  3. Pour tester sa modification, Karim relance simplement son script : l'interprète retraduit le code modifié. Léa, elle, devrait relancer la traduction avant d'exécuter.

  4. Avantage d'un langage de haut niveau : le programmeur n'a pas à tenir compte des particularités du matériel et se concentre sur des problèmes plus avancés.5

Retiens la différence de moment : le compilateur traduit avant, l'interprète traduit pendant l'exécution.5

Exercice 2 Somme des entiers avec une boucle for

★☆☆Environ 8 min

On considère le programme suivant :

s = 0
for i in range(1, 6):
    s = s + i
print(s)

Quelle valeur le programme affiche-t-il ?

Indice 1

Écris la liste des valeurs prises par i : la borne de fin de range est exclue.

Indice 2

Construis un tableau de suivi avec les colonnes i, s avant, s après.

Voir la correction pas à pas
  1. range(1, 6) produit les valeurs 1, 2, 3, 4, 5. La valeur 6 n'est pas atteinte.

  2. Au départ, s = 0.

  3. Passage i = 1 : s = 0 + 1 = 1.

  4. Passage i = 2 : s = 1 + 2 = 3. Passage i = 3 : s = 3 + 3 = 6.

  5. Passage i = 4 : s = 6 + 4 = 10. Passage i = 5 : s = 10 + 5 = 15.

  6. Après la boucle, print(s) affiche 15.

Le programme affiche 15. La boucle for répète le bloc un nombre de fois connu à l'avance.4

Exercice 3 Calculer un prix TTC

★☆☆Environ 8 min

Un programme gère les licences logicielles d'un petit réseau.

prix_ht = 80
taux = 0.20
prix_ttc = prix_ht * (1 + taux)
print(prix_ttc)

Le prix hors taxes est exprimé en euros. Quel prix TTC le programme affiche-t-il, en euros ?

Indice 1

Remplace les variables par leurs valeurs dans la formule.

Indice 2

1 + 0,20 se calcule d'abord, à l'intérieur des parenthèses.

Voir la correction pas à pas
  1. Les variables valent prix_ht = 80 et taux = 0,20.

  2. Les parenthèses sont prioritaires : 1 + 0,20 = 1,20.

  3. On multiplie : 80 × 1,20 = 96.

  4. Le programme affiche 96 (ou 96.0 en Python, car taux est un nombre décimal), soit 96 €.

Le prix TTC est de 96 €. Une variable garde une valeur nommée : si le taux change, une seule ligne est à modifier.

Exercice 4 Doublements avec une boucle while

★★☆Environ 12 min

Voici un programme :

n = 3
while n < 100:
    n = n * 2
print(n)
  1. Complète un tableau de suivi de la variable n.
  2. Quelle valeur le programme affiche-t-il ?
Indice 1

La condition n < 100 est testée avant chaque passage.

Indice 2

La boucle s'arrête dès que n atteint ou dépasse 100, et la dernière valeur calculée est conservée.

Voir la correction pas à pas
  1. Départ : n = 3, et 3 < 100 est vrai : on entre dans la boucle.

  2. Premier passage : n = 6. Test : 6 < 100, vrai.

  3. Deuxième passage : n = 12. Troisième : n = 24. Quatrième : n = 48. Chaque fois, la condition reste vraie.

  4. Cinquième passage : n = 96. Test : 96 < 100, encore vrai, donc la boucle continue.

  5. Sixième passage : n = 192. Test : 192 < 100 est faux, la boucle s'arrête.

  6. print(n) affiche 192. On a bien 3 × 2⁶ = 192.

Le programme affiche 192. Une boucle while répète tant que la condition est vraie.4 Remarque que la valeur finale dépasse le seuil : le test se fait avant le doublement, pas après.

Exercice 5 Combien de temps pour tester tous les codes ?

★★☆Environ 12 min

Dans un cours de cybersécurité, on étudie une attaque par essais successifs sur un code d'accès composé de 6 chiffres (chaque chiffre va de 0 à 9). Un programme de test essaie tous les codes de 000000 à 999999 avec une boucle.

for code in range(10**6):
    tester(code)

Le programme réalise 1 000 essais par seconde. Combien de secondes faut-il, au maximum, pour parcourir tous les codes ?

Indice 1

Compte d'abord combien de codes différents existent : 10 choix pour chacun des 6 chiffres.

Indice 2

Temps = nombre d'essais ÷ nombre d'essais par seconde.

Voir la correction pas à pas
  1. Chaque chiffre a 10 valeurs possibles et il y a 6 chiffres : 10⁶ = 1 000 000 de codes.

  2. La boucle range(10**6) passe bien par 1 000 000 de valeurs, de 0 à 999 999.

  3. À 1 000 essais par seconde, le temps maximal est 1 000 000 ÷ 1 000 = 1 000 secondes.

  4. On convertit pour se représenter la durée : 1 000 s = 16 min 40 s, car 16 × 60 + 40 = 1 000.

Il faut au plus 1 000 secondes. C'est pourquoi un code court est faible : un programme parcourt très vite un espace de quelques millions de possibilités. Allonger le code multiplie ce temps.

Exercice 6 Écrire une fonction moyenne

★★☆Environ 15 min

On veut une fonction qui calcule la moyenne d'une liste de notes.

def moyenne(notes):
    total = 0
    for n in notes:
        total = total + n
    return total / len(notes)
  1. Que renvoie moyenne([12, 15, 9, 16]) ?
  2. Que se passe-t-il avec moyenne([]) ? Propose une correction.
Indice 1

len(notes) donne le nombre d'éléments de la liste.

Indice 2

Que vaut la division par zéro en Python ?

Voir la correction pas à pas
  1. La liste [12, 15, 9, 16] contient 4 notes : len(notes) vaut 4.

  2. La boucle ajoute chaque note : 0 + 12 = 12, puis 12 + 15 = 27, puis 27 + 9 = 36, puis 36 + 16 = 52.

  3. La fonction renvoie 52 / 4 = 13.0, soit une moyenne de 13 sur 20.

  4. Avec une liste vide, len(notes) vaut 0 : la division 0 / 0 provoque une erreur (ZeroDivisionError) et le programme s'arrête.

  5. Correction : tester d'abord la liste avec if len(notes) == 0: puis renvoyer None ou un message, avant de faire la division.

La moyenne vaut 13. Un bon programme prévoit aussi les cas d'erreur : le traitement des erreurs est une partie normale de l'écriture d'un programme.4

Exercice 7 Trouver l'erreur : la boucle qui ne finit jamais

★★★Environ 15 min

Un élève veut afficher les entiers de 0 à 4. Son programme ne s'arrête jamais.

i = 0
while i < 5:
    print(i)
  1. Explique pourquoi la boucle est infinie.
  2. Corrige le programme de deux façons : avec while, puis avec for.
  3. Que doit-on toujours vérifier dans une boucle while ?
Indice 1

Regarde si la variable i change dans le corps de la boucle.

Indice 2

Pour la version for, range(5) convient.

Voir la correction pas à pas
  1. Au départ i = 0. La condition i < 5 est vraie.

  2. Le corps de la boucle affiche i mais ne le modifie jamais : i reste à 0, la condition reste vraie à chaque test et la boucle ne s'arrête pas.

  3. Correction avec while : ajouter i = i + 1 dans le corps de la boucle, après le print. On obtient 0, 1, 2, 3, 4, puis i vaut 5 et le test est faux.

  4. Correction avec for : for i in range(5): print(i). Le compteur est géré automatiquement, il n'y a pas de risque d'oubli.

  5. Vérification à faire dans un while : la condition finit-elle par devenir fausse ? Autrement dit, quelque chose dans le corps modifie-t-il les variables du test ?

L'erreur est un oubli d'incrémentation. Quand on connaît le nombre de répétitions, for est plus sûr ; while convient quand on répète jusqu'à ce qu'une condition change.4

Exercice 8 Courant dans un montage électronique

★★★Environ 15 min

Pour un projet d'électronique, tu écris un programme qui calcule l'intensité du courant dans un conducteur ohmique. On donne la relation I=URI = \dfrac{U}{R}, avec II en ampères, UU en volts et RR en ohms.

U = 12      # volts
R = 400     # ohms
I = U / R   # ampères
print(I * 1000)
  1. Que représente la valeur affichée par print(I * 1000) ?
  2. Quelle valeur est affichée ?
  3. Le programme doit maintenant tester plusieurs résistances. Écris une boucle qui affiche l'intensité en mA pour R = 200, 400 et 600 ohms.
Indice 1

Multiplier des ampères par 1 000 donne des milliampères.

Indice 2

Pour parcourir une liste de valeurs, for R in [200, 400, 600]: convient.

Voir la correction pas à pas
  1. Le calcul I = U / R donne l'intensité en ampères : 12 / 400 = 0,03 A.

  2. Multiplier par 1 000 convertit les ampères en milliampères (mA). La valeur affichée est donc l'intensité en mA.

  3. 0,03 × 1 000 = 30 : le programme affiche 30 (ou 30.0 en Python), soit 30 mA.

  4. Pour la boucle : for R in [200, 400, 600]: puis, dans le corps, print(12 / R * 1000).

  5. Résultats attendus : 60 mA pour 200 Ω, 30 mA pour 400 Ω, 20 mA pour 600 Ω. Plus la résistance augmente, plus l'intensité diminue.

L'intensité vaut 30 mA pour R = 400 Ω. Écrire le calcul dans une boucle évite de recopier le même code trois fois, et le commentaire sur chaque ligne rend le programme lisible par l'équipe qui le relira, ce qui compte autant que la machine.5

Les questions qu'on se pose

Faut-il connaître Python par cœur pour réussir ces exercices ?

Non. Il faut surtout savoir suivre l'exécution d'un programme : lire une affectation, une condition, une boucle, et noter la valeur des variables à chaque étape. Python est un bon support, mais le raisonnement vaut pour d'autres langages, car tous servent à décrire des données et des algorithmes.5

Comment savoir si je dois utiliser for ou while ?

Si tu sais combien de fois répéter, prends for. Si tu répètes jusqu'à ce qu'une condition change (un code trouvé, une valeur dépassée), prends while. Les deux existent dans la plupart des langages pour exécuter un bloc en boucle.4 Avec while, vérifie toujours que la condition peut devenir fausse.

Pourquoi parler de compilateur et d'interprète en programmation ?

Parce que la machine ne comprend pas directement le langage que tu écris. Un traducteur automatique est nécessaire : le compilateur produit un code cible avant l'exécution, l'interprète traduit à la volée.5 Savoir lequel tu utilises t'aide à comprendre quand une erreur apparaît et comment relancer un test.

Sources

Programme visé : Bac pro Cybersécurité, Informatique et réseaux, Électronique (CIEL) — rentrée 2023 · Éduscol STI (Ministère de l'Éducation nationale)

  1. Bac pro Cybersécurité, Informatique et réseaux, Électronique (CIEL) — rentrée 2023, Éduscol STI (Ministère de l'Éducation nationale). Consulté le 9 novembre 2026.
  2. Python — ressources et logiciels pour l'enseignement, Éduscol STI. Consulté le 9 novembre 2026.
  3. Des ressources libres sur la science informatique (programmation, machine, réseau, codage de l'information), Éduscol STI. Consulté le 9 novembre 2026.
  4. Programmation informatique, Wikipédia. Consulté le 9 novembre 2026.
  5. Langage de programmation, Wikipédia. Consulté le 9 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2
  • CM1
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page