alpinux-wiki/docs/presentations/Pix orientée Libre/Programmer.md
2026-10-15 00:28:56 +02:00

74 lines
3.6 KiB
Markdown

## 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