From f29f588e00a2044cb35cb91b477a5e0848691c3d Mon Sep 17 00:00:00 2001
From: Adrien Rougny <rougny@gmail.com>
Date: Fri, 12 Feb 2016 17:52:51 +0100
Subject: [PATCH] ajouts dans README.rst

---
 test~coding~readingCppPrograms.fr/README.rst | 35 ++++++++++++++------
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/test~coding~readingCppPrograms.fr/README.rst b/test~coding~readingCppPrograms.fr/README.rst
index dd0f478..1527925 100644
--- a/test~coding~readingCppPrograms.fr/README.rst
+++ b/test~coding~readingCppPrograms.fr/README.rst
@@ -21,13 +21,15 @@ g
 Étendre le module avec de nouveaux programmes
 ---------------------------------------------
 
-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:
 
     /tmp/modtool-test~coding~readingCppPrograms.fr.tgz
 
-Que l'on peut charger dans son compte modtools sur sur WIMS avec:
+Charger l'archive dans son compte modtools sur WIMS avec:
 
     wims.u-psud.fr -> serveur de l'université -> Accueil WIMS -> modtools -> login -> Restauration
 
-
-
 Documentation générique des modules WIMS
 ========================================
 
-- 
GitLab