!set titb=Utiliser des fichiers de données
!set keyw=
!set datm=20050208
!set prev=
!set next=
!set upbl=main
!set dat1=19000101
!set dat2=24000101

!if $wims_read_parm!=$empty
 !goto $wims_read_parm
!endif

!exit

:content
<h2><center>Utiliser des fichiers de données indépendamment des exercices</center></h2>
<p>
On peut stocker des données dans un fichier que nous appellerons ici 
<tt class="e">tableau</tt> et les utiliser ensuite dans un ou plusieurs exercices. Prenons l'exemple
de l'exercice de grammaire 
!read primitives.phtml 1, fold, grammaire, suivant. 

<p>
Plutôt que d'avoir les phrases dans le fichier d'exercice, créez un fichier d'adresse 
<tt class="e">tableau</tt> (attention, cette fois-ci ne pas mettre <tt class="d">src
</tt>). Et mettez-y 
le texte suivant 
<p>
<pre class="fichier"> 
&#58;Je suis grand ??et,est,ai?? brun.
Le café ??est,et,ai?? chaud.
La fleur ??est,et,ai?? rouge.
Le soleil ??est,et,ai?? chaud
J'??ai,est,et?? chaud
	
&#58;L'élève ??est,et?? sérieux ??et,est?? appliqué.
Paul se ramasse ??et,est?? se relève.
Le pull ??est,et?? chaud ??et,est?? léger.
La rue ??est,et?? étroite ??et,est?? en pente.
Pierre ??est,et?? fort en mathématiques ??et,est?? en français.
La lumière sur le vieux port ??est,et?? très belle en hiver ??et,est?? en été.
</pre>
<p>
Remarquez le signe de ponctuation <tt class="c"> <font size= +2>&#58;</font></tt>
que nous avons un peu grossi. Il va être possible maintenant dans un exercice de 
<i>charger</i> ces données soit en entier, soit sélectivement pour la partie entre deux 
points consécutifs. 
<p>
Donnons les premières commandes  permettant cette utilisation et qui donneront un 
exercice équivalent au précédent &#58; 
<p>
<pre class="fichier">
<div class="variable">
\text{Tableau = wims(record 1 of tableau)}
\text{a = randomrow(\Tableau)}
</div>
</pre>
<div class="aide"><tt class="c">record 1</tt> chargera les cinq premières lignes
du tableau, plus exactement celles entre le premier <tt class="c">&#58;</tt> et 
le second. </div>
<p>
<pre class="fichier">
<div class="variable">
\text{Tableau = wims(record 2 of tableau)}
\text{a = randomrow(\Tableau)}
</div>
</pre>
<div class="aide"><tt class="c">record 2</tt> chargera les six dernières lignes
du tableau (il faudra bien sûr changer la suite de l'exercice 
qui ne fonctionnera plus)</div>
<p>
<pre class="fichier">
<div class="variable">
\text{Tableau = wims(record 0 of tableau)}
\text{a = randomrow(\Tableau)}
</div>
</pre>
<p>
<div class="aide"><tt class="c">record 0</tt> chargera toutes
les lignes du fichier <tt class="e">tableau</tt></div>
<p>
<pre class="fichier">
<div class="variable">
\integer{m = wims(recordcnt tableau)}
\matrix{Tableau = }
\for{ i = 1 to \m}{
  \text{Tableau = \tableau
  randrow(wims(record \i of tableau))}
</div>
</pre>
<div class="aide">Ici, on compte le nombre de "record" (ici 2, 
mais il pourrait y en avoir plus). Et on prend une ligne par type. 
On pourra donc poser une question de chaque type. 
</div>
<p>

!read primitives.phtml 2, fold, fichiergram, Un exemple d'exercice complet 

<p>
Donnons un autre exemple d'utilisation de tableau extérieur aux exercices. 
Il s'agit de tableau de type "dictionnaire" de la forme suivante &#58; 
<div class="fichier">
<pre class="c">
azote&#58;.....
hydrogene&#58;....
</pre>
</div>
<p>
On peut alors aller chercher la ligne associée à azote avec la commande <tt class="c">lookup</tt>
<p>
<pre class="c">
\text{ligne= wims(lookup azote in tableau)}
</pre>
et récupérer ensuite les informations qui suivent et dont vous avez besoin. 
