Créer un projet de programmation avec des dossiers et de nombreux fichiers, dans le navigateur
Un vrai programme ne tient pas dans un seul fichier. Un paquet Python avec un module d’outils, un projet Java réparti en classes et en paquets, une application Node avec un dossier lib et un dossier de données à côté : une tâche de code peut être chacun de ces projets, écrit et exécuté entièrement dans le navigateur, sans rien installer sur l’ordinateur de l’établissement.
Chaque élève reçoit sa propre copie du projet entier, voit la même arborescence que celle que vous avez écrite et l’exécute avec le même bouton « Exécuter » qu’un exercice d’un seul fichier. Les tests cachés, la notation, le rendu et le reste fonctionnent exactement comme pour un seul fichier.
L’arborescence des fichiers
Les fichiers d’une tâche de code forment une arborescence à côté de l’éditeur. « Nouveau fichier » et « Nouveau dossier » en créent un, « Importer » apporte des fichiers texte de votre ordinateur, et « Renommer ou déplacer » prend un chemin complet : saisir lib/helpers.py place un fichier dans un dossier lib. Chaque fichier s’ouvre dans son propre langage : README.md en Markdown, un .csv en texte brut et helpers.py en Python.
« Retirer » enlève un fichier aussitôt, avec « Annuler » à côté pendant quelques secondes. Un dossier existe tant qu’il contient un fichier : un nouveau dossier commence donc par son premier fichier. Dans l’arborescence, les flèches passent d’un fichier à l’autre et ouvrent ou ferment les dossiers, Entrée ouvre un fichier, F2 le renomme et Suppr le retire.
- Ouvrez la tâche dans son éditeur. N’importe quelle tâche de code : Python, Java, Go, JavaScript ou TypeScript sur Node, Bash et les autres langages de programmation.
- Ajoutez des fichiers et des dossiers. Cliquez sur « Nouveau fichier » et saisissez un chemin comme lib/helpers.py, ou sur « Nouveau dossier », ou sur « Importer » pour apporter les fichiers texte que vous avez déjà.
- Vérifiez le fichier qui s’exécute. Le programme est le fichier marqué « L’exécution part d’ici ».
- Distribuez-la. Chaque élève reçoit sa propre copie de chaque fichier, dans la même arborescence.
Il s’exécute comme le projet sur votre propre ordinateur
Le programme est le fichier marqué « L’exécution part d’ici », et il peut être renommé ou placé dans un dossier comme n’importe quel autre. Son extension reste celle du langage, et un programme Java, C#, Haskell ou Kotlin garde son nom où qu’il aille.
Les fichiers sont disposés comme dans l’arborescence, si bien que le code les trouve là où vous les avez mis : un programme Python importe depuis ses dossiers, les classes d’un projet Java peuvent se trouver dans des paquets sous src/main/java, un module Go compile ses propres sous-paquets, et JavaScript et TypeScript sur Node importent d’un dossier à l’autre. Un programme peut ouvrir n’importe lequel de ses fichiers par son chemin : un dossier de CSV se lit comme data/readings.csv.
Ce qu’un projet peut contenir
Jusqu’à 50 fichiers à côté du programme, de 64 Ko au plus chacun et 1 Mo en tout, dans des dossiers jusqu’à 7 niveaux de profondeur. Seulement du texte : un fichier importé est vérifié en le lisant et non d’après son nom, si bien qu’une image renommée data.csv est refusée et qu’un fichier texte sans extension est accepté.
Un nom commence par une lettre, un chiffre ou un trait de soulignement, puis utilise des lettres, des chiffres, des traits de soulignement, des points et des tirets. Pas d’espace, volontairement : une espace est la façon la plus courante de faire échouer une ligne de commande dans le programme d’un élève.
Ce que reçoivent les élèves
Distribuer la tâche copie chaque fichier chez chaque élève, qui voit la même arborescence et peut modifier chaque fichier sur sa copie. Il ne peut ajouter ses propres fichiers que si la tâche en autorise plusieurs, et les fichiers que vous lui avez donnés gardent leur nom. Les fichiers d’entraînement et les bacs à sable ont la même arborescence, si bien qu’un élève peut essayer un projet à lui en dehors de tout module.
Il n’y a toujours qu’un seul fichier de tests et qu’une seule liste de paquets. La liste de paquets est un vrai fichier en haut de l’arborescence, comme requirements.txt ou pom.xml, et a sa propre page dans ce manuel. Les tests cachés restent cachés, quel que soit le nombre de fichiers de la tâche.
Quand l’exercice doit rester un seul fichier
Décochez « Plusieurs fichiers » dans l’onglet des paramètres de la tâche. Les fichiers qu’elle contient déjà sont conservés et peuvent toujours être renommés et déplacés, mais personne ne peut en ajouter. Une page web et une tâche SQL ne prennent jamais de fichiers supplémentaires, car leurs volets sont ce qui les compose.
Questions fréquentes
- Puis-je apporter un projet que j’ai déjà ?
- Oui. « Importer » place dans l’arborescence des fichiers texte de votre ordinateur. Un projet qui se trouve dans un dépôt Git peut être chargé en entier, avec ses dossiers, par « Charger depuis Git », qui a sa propre page dans ce manuel.
- Les élèves peuvent-ils ajouter leurs propres fichiers ?
- Oui, si la tâche autorise plusieurs fichiers, ce qui est le cas d’une nouvelle tâche de code. Les fichiers que vous leur avez donnés gardent leur nom, si bien que les tests les trouvent toujours.
- Un projet Java doit-il tenir en une seule classe ?
- Non. Mettez chaque classe dans son propre fichier, dans des paquets si vous le souhaitez ; le programme est le fichier marqué « L’exécution part d’ici ».
- Les élèves ont-ils besoin d’un IDE installé ?
- Non. L’arborescence, l’éditeur et « Exécuter » sont tous dans le navigateur, et le code s’exécute sur nos machines, dans un conteneur neuf à chaque fois.