Imaginez que vous vouliez constituer une liste de lecture : quels livres sont déjà terminés, lesquels n'ont pas encore été commencés, comment conserver la progression pour la reprendre la fois suivante ?
Pour un seul livre, quelques lignes de code semblent suffire. Avec dix livres, il faut stocker plusieurs enregistrements ; pour filtrer les éléments non lus, il faut expliciter une règle de décision ; et ce n'est qu'après avoir fermé le programme que l'on découvre que les modifications apportées n'ont pas été enregistrées.
Un besoin très modeste fait déjà apparaître plusieurs problèmes centraux de la programmation. Le cours AI001 « Initiation à la programmation Python » d'EvoClass organise dix séances autour de ces compétences de base, partant de la syntaxe et du flux de contrôle pour progresser vers les listes, les fonctions, les dictionnaires, les modules et la lecture-écriture de fichiers.
Comment un programme sait-il quoi faire ensuite
Face à une liste, une personne décide souvent naturellement quels éléments traiter en premier. Un programme, lui, a besoin de conditions et d'étapes explicites.
Dans Lesson 2 : Control Flow and Logic, le cours passe de l'exécution séquentielle aux tests conditionnels, aux expressions booléennes et aux choix à plusieurs branches, tout en soulignant les blocs de code délimités par l'indentation.
Revenons à la liste de lecture : on peut d'abord ne poser qu'une seule question : l'état d'un enregistrement donné est-il « non lu » ? Selon la réponse, on décide de le conserver ou de l'ignorer, puis on applique la même règle aux autres enregistrements.
À ce stade, l'exercice utile consiste à transformer une exigence floue en critère explicite. Par exemple, « trouver les éléments utiles » reste trop vague, tandis que « conserver les éléments dont l'état est non lu » peut déjà se traduire en une règle vérifiable.
Quand les données se multiplient, réfléchir d'abord à leur rangement
Lorsque les éléments ne sont plus uniques, la manière d'organiser les données commence à influencer l'écriture du programme.
Lesson 3 : Using Lists aborde les collections ordonnées, les index, les tranches, ainsi que l'ajout et la suppression d'éléments. Une série de titres de livres peut être placée dans une liste, puis traitée élément par élément au moyen d'une boucle.
Mais un livre peut aussi comporter un auteur, un état de lecture et une date d'enregistrement. Si l'on se fie uniquement à la position pour se souvenir de « ce qu'est le deuxième élément », les modifications ultérieures deviennent plus lourdes à gérer. Lesson 8 : Using Dictionaries introduit les clés et les valeurs, afin de donner aux champs des noms explicites.
Placer un dictionnaire par élément dans une liste est une des organisations possibles pour cet exercice. Il ne s'agit que d'une suggestion d'apprentissage, dont le but est de comprendre que le choix d'une structure de données rend certaines opérations plus directes et influence aussi la façon dont les autres lisent le programme.
Répéter la même opération : comment réduire les copies
Si l'on duplique la règle de filtrage à l'affichage à l'écran, à l'export de la liste et au comptage, il faudra vérifier plusieurs endroits à la fois dès que la condition change.
Lesson 5 : Using Functions to Reuse Code traite de la définition de fonctions, des paramètres, des appels et des valeurs de retour, et explique comment regrouper une opération cohérente en une unité réutilisable.
Le filtrage de la liste de lecture peut ainsi devenir un exercice : recevoir un ensemble d'enregistrements et renvoyer ceux qui remplissent la condition. L'endroit qui l'appelle se charge de l'affichage ou de l'enregistrement, tandis que le filtrage lui-même garde une responsabilité claire.
Une fois le nom, les entrées et les sorties de la fonction fixés, la vérification devient plus concrète. Que renvoyer lorsqu'il n'y a aucun enregistrement ? Que se passe-t-il si tous les livres sont déjà lus ? Ces questions de limites aident souvent davantage à comprendre le programme qu'une exécution réussie.
Après la fermeture du programme, comment conserver le résultat
Les données gardées dans des variables pendant l'exécution ne deviennent pas automatiquement des enregistrements qui existeront encore à la prochaine ouverture du programme.
Lesson 9 : File Input and Output emmène l'apprentissage hors du programme lui-même : lire et écrire du texte, gérer les ressources de fichiers et découvrir des formats de données courants comme CSV et JSON.
La liste de lecture peut se perfectionner le long de ce chemin : d'abord lire depuis un fichier, puis traiter les enregistrements, enfin écrire les résultats à conserver. À l'écriture, il faut aussi distinguer écrasement et ajout, pour éviter qu'une exécution ultérieure ne modifie les données que l'on souhaitait garder.
Cette liste est une idée pédagogique destinée à relier les connaissances ; ce n'est ni un projet complet déjà proposé par le cours, ni un test logiciel réalisé dans cet article. Son intérêt est que chaque nouveau concept répond à un besoin concret, au lieu de traiter les points de syntaxe comme une liste d'éléments séparés.
Sur la page du cours AI001, on peut apprendre progressivement à partir des bases, ou revenir aux chapitres correspondants avec ses propres petites tâches. Au final, ces quelques lignes de code exécutables pourront devenir un outil que l'on comprend, que l'on peut modifier et que l'on pourra réutiliser la prochaine fois.
Cet article est rédigé à partir du catalogue et des supports de cours actuels d'EvoClass ; les liens des séances renvoient à des documents en anglais. La liste de lecture est une suggestion d'apprentissage ; cet article n'a exécuté aucun exercice du cours et ne garantit pas la livraison d'un logiciel de production à l'issue du cours ; les conditions d'accès complet et d'utilisation des fonctionnalités de programmation sont celles indiquées sur les pages concernées.