Aller au contenu
M02 · A. Modéliser un problème

Découper un problème, de haut en bas ou de bas en haut

Comprendre l'approche descendante et l'approche ascendante pour décomposer un problème complexe en tâches simples.

1Situer

Votre établissement veut un programme qui produit le relevé de notes de fin de semestre de chaque stagiaire : moyennes par module, moyenne générale, décision. Le problème est trop gros pour être écrit d'un bloc. Il faut le découper en morceaux que l'on sait résoudre un par un.

2Comprendre

L'approche descendante, niveau par niveau
Produire le relevé de notes Saisir Calculer Décider Afficher Moy. module Moy. générale Somme ÷ nb feuilles = instructions

On part du problème complet, sans entrer dans les détails.

1 / 5

Un problème réel est rarement simple. Pour le résoudre, on le décompose en sous-problèmes. Il existe deux façons de le faire.

Approche descendante (du haut vers le bas)

On part de l’objectif général, puis on le découpe en grandes étapes, que l’on découpe à leur tour, jusqu’à obtenir des tâches simples. C’est l’approche la plus utilisée pour concevoir un algorithme.

Produire le relevé
├── Saisir les notes
├── Calculer les moyennes
│   ├── Moyenne de chaque module
│   └── Moyenne générale
├── Décider
└── Afficher

Approche ascendante (du bas vers le haut)

On part de briques simples qui existent déjà (des fonctions, des procédures) et on les assemble pour construire une solution plus grande. C’est l’approche naturelle quand on réutilise du code.

En pratique

Les deux approches se combinent : on découpe le problème de haut en bas, puis on écrit et teste les petites briques en premier, avant de les assembler. Chaque brique deviendra plus tard une fonction ou une procédure (leçon B.3).

Exemple simple

Préparer un thé à la menthe

Le gros problème « faire le thé » se découpe en petites tâches simples : chauffer l'eau, rincer le thé, ajouter la menthe et le sucre, laisser infuser, servir. Chaque tâche est facile à faire seule.

Exemple simple

Organiser une sortie de classe

On part du haut (« la sortie ») et on descend : choisir le lieu, réserver le bus, collecter l'argent, prévenir les parents. Quand une tâche est encore trop grosse, on la redécoupe.

Sortie de classe
├─ Choisir le lieu
├─ Transport
│   ├─ Demander des devis
│   └─ Réserver le bus
└─ Budget
    ├─ Calculer le prix par stagiaire
    └─ Collecter l'argent

3Manipuler

Dépliez l'arbre pour voir comment l'approche descendante découpe le problème, du plus général au plus détaillé.

4Pratiquer

Exercice 1 · Découper un problème de stock

Un magasin veut connaître, en fin de journée, les produits dont le stock est passé sous 5 unités. Proposez une décomposition descendante en 3 ou 4 tâches, puis détaillez la tâche la plus complexe.

Voir un indice

Commencez par les grandes étapes (lire, calculer, comparer, afficher) avant de détailler.

Voir le corrigé
Repérer les produits à recommander
1. Lire la liste des produits et leur stock du matin
2. Lire les ventes de la journée
3. Calculer le stock restant de chaque produit
     Pour chaque produit :
       stockRestant ← stockMatin - quantitéVendue
4. Afficher les produits dont stockRestant < 5

Exercice 2 · Ascendant ou descendant ?

Vous disposez déjà de trois sous-programmes écrits par un collègue : CalculerMoyenne, LireNote et AfficherMention. Vous les assemblez pour produire un bulletin. Quelle approche utilisez-vous ? Justifiez.

Voir le corrigé
Approche ascendante : on part de briques déjà existantes
(LireNote, CalculerMoyenne, AfficherMention) et on les assemble
pour construire la solution complète.

5Vérifier

1. L'approche descendante consiste à...
2. Quand s'arrête-t-on de découper une tâche ?
3. Quel est l'avantage principal de l'approche ascendante ?