Programmer
Penser en algorithmes
Avant tout langage : décomposer un problème en étapes qu'une machine peut suivre.
01Objectif
À la fin de cette séquence : Décomposer une tâche en instructions non ambiguës, reconnaître les trois structures qui composent tout programme, et détecter une consigne impossible à exécuter.
02L'essentiel
Un algorithme n'admet aucun implicite
« Mets la table » suppose des dizaines de savoirs. Une machine exige : prendre une assiette, la poser devant la chaise, répéter pour chaque convive.
Trois structures suffisent à tout
La séquence (faire ceci puis cela), le choix (si... alors... sinon), la répétition (tant que... faire). Tout programme, du plus simple au plus complexe, n'est qu'un assemblage de ces trois.
Une répétition doit pouvoir s'arrêter
« Tant qu'il reste des assiettes » s'arrête, car le nombre diminue. Une condition qui ne change jamais produit une boucle infinie : la machine ne s'arrête plus.
L'ordre change le résultat
Verser le café puis le lait ne donne pas la même chose que l'inverse. C'est la source la plus fréquente d'erreurs chez les débutants comme chez les professionnels.
03Le schéma
04À retenir
- Séquence, choix, répétition : les trois briques de tout programme.
- Aucun implicite. Ce qui n'est pas dit ne sera pas fait.
- Toute boucle doit progresser vers sa sortie, sinon elle ne s'arrête jamais.
05Exercice
Écrivez la marche à suivre pour dessiner un carré, à donner à quelqu'un les yeux fermés qui n'a jamais vu de carré. Faites-la exécuter à la lettre. Ce qui rate indique ce que vous aviez supposé sans le dire.
Indice — Comptez les angles : si vous n'avez pas précisé « tourner d'un quart de tour », le résultat sera surprenant.
06Vérification des acquis
Qu'est-ce qu'une boucle infinie ?
Une répétition dont la condition d'arrêt n'est jamais atteinte, parce que rien dans le corps de la boucle ne la fait évoluer. Le programme se fige.
Pourquoi l'ordre des instructions compte-t-il autant ?
Parce que chaque instruction modifie l'état de la machine, et que la suivante travaille sur cet état modifié. Inverser deux lignes peut changer entièrement le résultat.