## 3.4 Programmer **Ce que recouvre la compétence** : écrire des programmes et des algorithmes pour répondre à un besoin (automatiser une tâche répétitive, résoudre un problème, traiter un volume important) ou pour créer un contenu riche comme un jeu ou un site. Thématiques Pix : algorithmique (séquences, boucles, conditions, variables, fonctions), langages, automatisation, débogage, programmation web. ### Progression par niveaux (résumé) - **N1-N2** : lire et comprendre un algorithme simple, programmer des séquences d'instructions par blocs. - **N3** : utiliser boucles, conditions et variables, corriger un programme qui ne fonctionne pas. - **N4-N5** : passer à un langage textuel, structurer avec des fonctions, automatiser une tâche réelle. - **N6+** : concevoir un programme complet, gérer les erreurs, réutiliser des bibliothèques, planifier l'exécution automatique de tâches. ### Version Linux et libre **Programmation par blocs** - **Snap!** : libre, dans le navigateur, plus puissant que Scratch - **TurboWarp** : version libre et rapide compatible Scratch, avec application de bureau Linux - Blockly Games : progression ludique vers la logique de programmation **Python, le passage naturel au code textuel** - **Thonny** : conçu pour débuter, avec exécution pas à pas pour visualiser les variables - **Basthon** : Python et notebooks dans le navigateur, pensé pour l'enseignement en France - JupyterLab pour mêler code, texte et graphiques - Module `turtle` pour dessiner, Pyxel ou Pygame pour créer des jeux **Automatiser sous Linux** (l'atout majeur de l'environnement) - Scripts **Bash** : boucles sur des fichiers, renommage par lots, sauvegardes - Exemple parlant : `for f in *.jpg; do magick "$f" -resize 800x "petit-$f"; done` - Planifier des tâches : **cron** ou les minuteurs systemd, ce qui répond directement à la mention des « logiciels de planification de tâches » dans le référentiel - Alias et petits scripts dans `~/bin` pour se créer ses propres commandes - Macros LibreOffice en Basic ou en Python **Éditeurs et environnements** - Geany, Kate : simples et légers - **VSCodium** : version libre de VS Code, sans télémétrie - nano pour débuter en terminal, Vim ou Emacs pour aller loin **Web** - HTML, CSS, JavaScript avec un éditeur et Firefox - Outils de développement de Firefox (F12) : inspecter, modifier une page en direct, lire les erreurs - **p5.js** : programmation créative et visuelle **Jeux** - **Godot** : moteur de jeu libre complet, 2D et 3D - GDevelop : création de jeux sans coder ou presque **Robotique et électronique** - **Raspberry Pi** : ordinateur sous Linux pour piloter capteurs et moteurs - Arduino IDE, MicroPython, micro:bit - Thymio : petit robot éducatif avec environnement libre **La culture du libre** - Lire le code source d'un logiciel qu'on utilise - Versionner son travail avec Git et le publier sur Codeberg (lien 2.3) **Débogage** - Lire un message d'erreur, afficher des valeurs intermédiaires, exécuter pas à pas, tester avec des cas limites ### Idées d'activités - Débuter avec Snap!, puis réécrire le même programme en Python dans Thonny - Écrire un script Bash qui trie un dossier de téléchargements par type de fichier, puis le planifier chaque soir avec cron - Programmer un petit jeu avec Pyxel ou Godot - Modifier une page web en direct avec les outils de développement de Firefox, puis créer la sienne - Piloter une LED ou un capteur avec un Raspberry Pi - Modifier un petit logiciel libre existant (changer un texte, une couleur) pour comprendre ce que signifie avoir accès au code