En 3e, tu ne te contentes plus de modifier un programme : tu conçois toi-même l’algorithme d’une fonctionnalité, tu le structures en sous-programmes, puis tu le traduis et le testes. Tu découvres aussi le passage de la programmation par blocs à un langage textuel : Python.
Objectifs
- Décomposer un problème en sous-problèmes plus simples
- Écrire un algorithme principal qui appelle des sous-programmes
- Structurer un programme avec des fonctions et des commentaires
- Faire correspondre un programme par blocs et sa traduction en Python
- Tester et mettre au point un programme pas à pas
1. Décomposer le problème
Face à un problème complexe, on applique la pensée informatique : on le décompose en sous-objectifs plus simples, on ne garde que l’essentiel (abstraction), puis on écrit un algorithme pour chaque partie.
Projet : un distributeur de croquettes automatique pour animal
- Sous-objectif 1 : savoir s’il est l’heure du repas.
- Sous-objectif 2 : vérifier qu’il reste des croquettes (capteur de niveau).
- Sous-objectif 3 : faire tourner la vis de distribution pendant une durée donnée.
- Sous-objectif 4 : prévenir le propriétaire si le réservoir est vide (IHM).
2. Sous-programmes et fonctions
Sous-programme (ou fonction) : Bloc d’instructions nommé, écrit une fois et que l’on peut appeler autant de fois que nécessaire. Une fonction peut recevoir des paramètres et renvoyer un résultat.
fonction distribuer(durée)
démarrer le moteur de la vis
attendre durée secondes
arrêter le moteur
programme principal
répéter indéfiniment
si heure du repas ET réservoir non vide alors
distribuer(3)
sinon si réservoir vide alors
allumer le voyant d’alerte
fin si
fin répéter- Modularité : chaque fonction se teste séparément, ce qui facilite la recherche d’erreurs.
- Réutilisation : on appelle distribuer(3) ou distribuer(5) sans réécrire les instructions.
- Lisibilité : des noms clairs et des commentaires expliquent le rôle de chaque partie.
3. Des blocs au langage Python
| Programmation par blocs | Python |
|---|---|
| mettre compteur à 0 | compteur = 0 |
| répéter 10 fois | for i in range(10): |
| répéter indéfiniment | while True: |
| si … alors … sinon | if condition: … else: … |
| définir le bloc distribuer(durée) | def distribuer(duree): |
# Fonction qui renvoie True si la température dépasse le seuil
def trop_chaud(temperature, seuil):
return temperature > seuil
# Programme principal
mesures = [21, 24, 27, 30]
for t in mesures:
if trop_chaud(t, 25):
print(t, "-> ventilateur allumé")
else:
print(t, "-> ventilateur éteint")4. Tester et mettre au point
- Tester chaque fonction séparément, en mode pas à pas.
- Tester le programme principal pas à pas.
- Tester sur l’objet réel, dans toutes les situations prévues (réservoir plein, vide, heure du repas ou non).
- Corriger, puis tester à nouveau.
À retenir
- On décompose un problème en sous-objectifs, chacun traité par un sous-programme.
- Une fonction est nommée, peut recevoir des paramètres et renvoyer un résultat.
- Modularité, réutilisation et commentaires rendent un programme lisible et facile à corriger.
- Python : def, if/else, for, while ; l’indentation délimite les blocs.
- On teste chaque fonction, puis le programme principal, puis l’objet réel.

Et maintenant, à toi !
Vérifie que tu as compris avec les exercices, puis révise avec la fiche.