Du problème à l'algorithme
Entrée, traitement, sortie : structurer un problème avant de coder.
Objectifs
À la fin de cette leçon, vous saurez :
- décomposer un problème en entrée, traitement, sortie ;
- écrire un algorithme en pseudo-code avant de coder ;
- découper un problème complexe en sous-problèmes simples ;
- identifier les cas particuliers avant qu'ils ne cassent votre programme.
Le schéma de tout traitement informatique
Quel que soit le programme, la structure est toujours la même :
ENTRÉE TRAITEMENT SORTIE
(données) → (étapes ordonnées) → (résultat)
Exemples :
| Problème | Entrée | Sortie |
|---|---|---|
| Calculer une moyenne | liste de notes | nombre |
| Trouver le plus grand | liste de nombres | nombre |
| Tester un mot de passe | chaîne | vrai / faux |
Poser ces trois cases avant d'écrire du code, c'est déjà faire de l'algorithmique.
Qu'est-ce qu'un algorithme
Un algorithme est une suite d'étapes finies, ordonnées et non ambiguës qui transforme l'entrée en sortie. Recette de cuisine ou programme : même nature de texte.
Le pseudo-code permet de l'écrire sans subir les règles de syntaxe :
ALGORITHME maximum
ENTRÉES : liste de nombres
SORTIE : le plus grand nombre, ou « vide » si la liste est vide
1. Si la liste est vide → répondre « vide »
2. Prendre le premier élément comme candidat
3. Pour chaque élément suivant :
si l'élément est plus grand que le candidat,
il devient le nouveau candidat
4. Répondre le candidat
Aucune syntaxe JS ici : uniquement la logique. On traduit ensuite en code.
Décomposer pour vaincre
Un problème trop gros se découpe :
Problème : afficher la moyenne des notes supérieures à 10
↓ décomposition
1. filtrer les notes ≥ 10 (sous-problème A)
2. calculer la moyenne du filtre (sous-problème B)
3. afficher (sous-problème C, trivial)
Chaque sous-problème reçoit son propre trio entrée/traitement/sortie. C'est exactement ce que feront vos fonctions au chapitre suivant.
Les cas particuliers, ennemis silencieux
Un algorithme naïf marche sur l'exemple type et casse sur les bords. Les questions à se poser systématiquement :
- liste vide ?
- élément absent ?
- valeurs égales (deux maxima ex æquo) ?
- entrée invalide (texte là où on attend un nombre) ?
L'algorithme maximum ci-dessus traite explicitement la liste vide à l'étape 1 : c'est ce réflexe qu'il faut installer.
Exercice
Écrivez le pseudo-code (pas le JavaScript) des algorithmes suivants, avec gestion des cas particuliers :
- Somme des nombres pairs d'une liste.
- Recherche : dire si une valeur donnée existe dans une liste.
- Compter combien de fois une lettre apparaît dans un texte.
Pour chacun : précisez entrée, sortie, étapes numérotées et comportement des cas limites (liste vide, lettre absente).
Résumé
- Entrée → traitement → sortie : le cadre de tout problème.
- Pseudo-code d'abord, JavaScript ensuite : on sépare la logique de la syntaxe.
- Décomposer un problème, c'est produire plusieurs petits trios clairs.
- Les cas particuliers se traitent dans l'algorithme, pas après coup.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Solutions en pseudo-code
1. Somme des nombres pairs
ALGORITHME sommePairs
ENTRÉES : liste de nombres
SORTIE : nombre (0 si aucune valeur paire)
1. total ← 0
2. Pour chaque n de la liste :
si n est pair (reste de n ÷ 2 égal à 0),
alors total ← total + n
3. Répondre total
Cas limite : liste vide → la boucle ne tourne pas, réponse 0. C'est cohérent : la somme d'aucun nombre vaut zéro.
2. Recherche d'une valeur
ALGORITHME contient
ENTRÉES : liste, valeur cherchée
SORTIE : vrai ou faux
1. Pour chaque élément de la liste :
si l'élément est égal à la valeur → répondre vrai
2. Après la boucle complète → répondre faux
Cas limite : liste vide → boucle sautée, réponse faux immédiate. Notez l'ordre : on répond dès la première égalité (inutile de continuer), sinon seulement à la fin.
3. Comptage d'une lettre
ALGORITHME compterLettre
ENTRÉES : texte, lettre
SORTIE : nombre d'apparitions
1. compteur ← 0
2. Pour chaque caractère du texte :
si le caractère est identique à la lettre → compteur ← compteur + 1
3. Répondre compteur
Cas limite : lettre absente → compteur reste à 0 ; texte vide → idem. Variante à prévoir : majuscule/minuscule — décider explicitement si « A » compte comme « a ».