Le répertoire `data/`_ contient des programmes C++. Le nom des
programmes est de la forme ``<theme>_nom.cpp`` ou ``<theme>_nom_input.cpp``.
Dans le premier cas, l'utilisateur doit deviner la sortie du
programme. Dans le second cas, le programme doit lire un entier entre
Le répertoire `data/`_ contient des programmes C++, qui peuvent être de deux types.
Pour les programmes du premier type, l'utilisateur doit deviner la sortie du programme.
Ces programmes sont nommés sous la forme ``<theme>_<nom>.cpp``.
Les programme du decuième type doivent lire un entier entre
0 et 99 sur l'entrée standard, et l'utilisateur doit deviner lequel
donne 42; pour l'instant cet entier doit être unique.
Ces programmes sont nommés ``<theme>_<nom>_input.cpp``
Pour les deux types de programme, le thème peut être constitué d'un thème principal et de sous-thèmes, séparés par des ``_`` (p. ex. ``loop_for``, ``loop_while``).
Les noms de fichiers ne doivent contenir que des caractères alphanumériques et le caractère ``_``.
En vue d'obtenir un peu de variabilité les programmes sont transformés
avant affichage et compilation, de la manière suivante:
...
...
@@ -61,20 +63,33 @@ L'infrastructure du module est implant
premier type affiche au moins un caractère. Éviter les caractères
unicode compliqués aussi :-)
Création automatique des exercices de type OEF
----------------------------------------------
L'entête du fichier `src/cpp/read_program.cpp` permet de définir les exercices de type OEF qui vont être construits automatiquement par WIMS lors de l'import du module (voir section suivante).
L'entête doit être de la forme ``target=<cible1> <cible2> <cible3> ...``.
WIMS crée un exercice OEF par cible sous la forme d'un fichier `src/<cible>.oef`.
Lors de chaque exécution de l'exercice OEF `<cible>.oef`, un programme est choisi aléatoirement parmi tous les programmes de `data/static` dont le nom commence par ``<cible>``.
Il est ainsi possible de définir un exercice OEF prenant en compte tous les programmes ayant un certain thème, ou un certain thème et sous-thème, ou simplement un seul exercice (dans ce dernier cas, la cible doit être le nom du programme complet, sans l'extension ``.cpp``).
Pour chaque cible, le fichier `src/cpp/read_program.cpp` doit contenir les définitions suivantes:
Mise à jour de l'exercice sur WIMS
----------------------------------
``#if defined TARGET_<cible>
#define TARGET <cible>
#define TARGET_FR <Titre de l'exercice>
#endif``
Importer ou mettre à jour le module sur WIMS
--------------------------------------------
Lancer `make archive` dans ce répertoire. Cela créé une archive: