<p><center><h2>Geavanceerd gebruik van OEF</h2></center>
<h3>Verberg de naam van een plaatje</h3>
Als de oefening vraagt om een willekeurige afbeelding te herkennen,
geeft de naam van zo'n bestand vaan een aanwijzing.
Om de naam te verbergen:
<pre>\img{\imagedir/picture.jpg align=middle alt="picture"}</pre>
In het browservenster zal de computervaardige leerling kunnen zien:
<pre><img src="een_willekeurige_naam" align=middle alt="picture"></pre>
De echte bestands naam is dus verborgen voor de leerling.
<p><b>Opmerking</b>.
Het direct gebruik van het WIMS commando <em>rename</em> voor dit doel wordt
niet aangeraden: de oefening zal dan onder omstandigheden niet meer functioneren.
<h3>Oefeningen met meerdere stappen</h3>
Een "multi-step" oefening kan met het commando <tt class="wims_code_variable">\steps</tt>
worden geactiveerd.
<br>Bijvoorbeeld:<br>
<pre>\steps{choice 1, reply 1
choice 2, reply 2, reply 3
choice 3
}</pre>
Hier zal de oefening een 3-tal stappen geven, zo kan de eerste stap
een meerkeuze vraag [ choice 1 ] en een open_antwoord [ reply 1 ] verwachten.
De tweede stap zal ook een meerkeuze [ choice 2 ] en een tweetal open_antwoorden verwachten [reply 2 , reply 3].
De derde en laatste stap is weer een meerkeuze vraag [ choice 3 ] .
<p>
De sleutels van het commando <tt class="wims_code_variable">\steps</tt>
accepteerd parameters [gedefinieerde variabelen] als ook condities !
<br>
De default instelling van <tt class="wims_code_variable">\steps</tt> is dat een fout in een bepaalde stap de
oefening beeindigd, en dat voor de resterende stappen het cijfer 0 wordt gegeven.
Er is de mogelijkheid om hiervan af te wijken.
<p>
Het volgnummer van een stap wordt opgeslagen in de variabele <tt class="wims_code_variable">\step</tt>,
en is oproepbaar in het <em>statement</em> van de OEF.
De eerste stap geeft dus <tt class="wims_code_words">\step = 1</tt>
Als de leerling bezig is met de tweede stap in de OEF wordt de variabele <tt class="wims_code_words">\step = 2</tt> enz.
<p>
Om met multi-step OEF's nog interactiever te reageren op de antwoorden van leerlingen,
is het commando <tt class="wims_code_words">\nextstep{...}</tt>.
De sleutel
die dit commando accepteerd is vergelijkbaar met
<tt
class="wims_code_words">\steps
{...}</tt
>
Beide commando's mogen niet door elkaar gebruikt worden.
<h3>Het if-statement en for loops</h3>
Beschikbare commando's:
<pre>
\if{condition}{conditie_is_waar_inhoud}
\if{condition}{conditie_is_waar_inhoud}{zo_niet_dan_dit}
\for{var=n1 to n2}{loop_inhoud}
\while{condition}{loop_inhoud} (alleen in het <tt class="wims_code_words">main</tt> gedeelte van OEF)
</pre>
Als deze commando's [behalve de while loop] kunnen overal in OEF worden aangeroepen:
in het <tt class="wims_code_words">main</tt> gedeelte van een OEF script, in het <tt class="wims_code_words">\statement{}</tt>,
in de <tt class="wims_code_words">\hint{}</tt>,
de <tt class="wims_code_words">\solution{}</tt> en <tt class="wims_code_words">\feedback{}</tt>
Uitzondering is de <tt class="wims_code_words">\while{}{}</tt> loop: deze kan alleen worden gebruikt bij de variabele definities/declaraties in het main gedeelte van een OEF script
<a name=special></a>
<h3>Speciale methoden</h3>
Met het commando <tt class="wims_code_words">\special{...}</tt> in het <tt class="wims_code_words">\statement{}</tt> van een OEF script
geeft de volgende mogelijkheden:
<p>
!if $special_parm=all
!for sp in $special_list
<p><center><h4>De speciale methode <tt class="wims_code_words">$sp</tt></h4></center> <p>
Algemene syntax: <tt class="wims_code_words">\special{$sp <i>parameters</i>}</tt> <p>
!read oef/special/$sp.phtml help
!next sp
!else
!for sp in $special_list
!href cmd=help&special_parm=oefadv&special_parm2=$sp#special $sp
!next sp
!endif
!if $special_parm2 isitemof $special_list
<p><center><h4>De speciale methode <tt class="wims_code_words">$special_parm2</tt></h4></center> <p>
Algemene syntax: <tt class="wims_code_words">\special{$special_parm2 <i>parameters</i>}</tt> <p>
!read oef/special/$special_parm2.phtml help
!endif
<h3>cpp codering</h3>
Dit systeem is niet beschikbaar vanuit het Createxo hulpmiddel.<br>
Via Modtool kunt U dit systeem inzetten voor het compact produceren van random
oefeningen in OEF of Deductio.
<p>
Dit <tt>cpp</tt> systeem maakt hergebruik van overeenkomstige code mogelijk:
diverse OEF scripten kunnen deze gemeenschappelijke code aanroepen [compile time].
En op deze manier is "bulk productie" van oefeningen mogelijk.
<p>
Om dit systeem te gebruikem moet er eerst een subdirectory src/cpp worden aangemaakt,
waarin alle *.cpp scripten worden geplaatst.
U kunt gebruik maken van preproccessor statements als <tt class="wims_code_words">#include</tt> of <tt class="wims_code_words">#if</tt>.
(Lees de cpp handleiding voor meer details van de te gebruiken syntax.)
<p>
De eerste regel van een *.cpp bestand moet een lijst van targets definieren,
zoals
<pre>
target=oefening_1 oefening_2 oefening_3 ...
</pre>
Deze regel zorgt ervoor dat het cpp systeem in de <em>src directory</em> de volgende OEF scripten aanmaakt:
oefening_1.oef oefening_2.oef oefening_3.oef ...
Wanneer de file <em>oefening_1</em> wordt gegenereerd, het
predicaat <tt>#TARGET</tt> wordt defenieerd als <em>oefening_1</em>.
(en een macro <em>TARGET_oefening_1</em> wordt eveneens aangemaakt.)
Hiertoe kan in de cpp code worden vermeld:
<pre>
#if #TARGET (oefening_1)
\title{Opdracht 1}
\integer{v1=3}
\text{t1=dit is target 1}
#endif
#if #TARGET (oefening_2)
\title{Opdracht 2}
\integer{v1=5}
\text{t1=dit is target 2}
#endif
</pre>
zodat de inhoud target afhankelijk kan worden.
<p>
Alle include bestanden met een uitgang <tt>*.inc</tt> moeten ook in de directory src/cpp worden geplaatst.
<br>
De regel
<pre>
#include "common.inc"
</pre>
zal de inhoud van de file genaamd common.inc invoegen in het corresponderende OEF script.
Let op: om beveiligins redenen is het niet mogelijk het pad naar een include file aan te geven.
Ze moeten in dezelde directory worden geplaatst als de cpp bestanden.
<p>
Opmerking:<br>
De cpp processor raakt in de war als er een oneven aantal aanhalingstekens worden gebruikt.<br>
U kunt gewone opmerkingen bij de code beschermen door (<tt>/* ... */</tt>).
<div class="wims_warning">
<span class="wims_warning">$wims_name_warning</span> : Alle commando's beginnende met een "#", zoals in
<tt>#include</tt>, de <tt>#</tt> moet het eerste teken zijn op een regel.
Een <tt>#</tt> is hier geen kommentaar teken.
</div>
<h3>oefenv en debug</h3>
De speciale omgevings variabele <tt class="wims_code_variable">\oefenv</tt> kan worden gebruikt om het gecompileerde OEF
script te testen.
<p>
Op dit moment is alleen de variabele <tt class="wims_code_words">debug</tt> actief binnen <tt class="wims_code_variable">\oefenv</tt> in de
volgende situaties:
<ol>
<li>OEF wordt uitgevoerd binnen het hulpmiddel Createxo.
<li>OEF wordt uitgevoerd door de ontwikkelaar zelf binnen het hulpmiddel Modtool
<li>OEF is een script binnen een klas [klasse oefening] en als ze wordt uitgevoerd door de supervisor van de klas
</ol>
Opmerking: in al deze gevallen zal het door uw OEF gedefinieerde goede antwoord worden getoond in het invulveld.
<p>
De syntax voor het aanroepen van de debug info is :
<pre>
\if{debug iswordof \oefenv}{de gewenste debug informatie }
</pre>
Deze info wordt automatisch getoond als de oefening wordt getest.
Wanneer de oefening in gebruik is door een leerling, wordt deze niet getoond.