<h2>OEFµÄ¸ß¼¶¼¼ÇÉ</h2>
<h3>Òþ²ØÍ¼ÐÎÃû³Æ</h3>
Èç¹ûÄãµÄÁ·Ï°ÐèҪʶ±ðËæ»úѡȡµÄͼÐÎ, ͼÐÎÎļþÃû¾ÍÊÇÒ»¸öÖØÒªµÄÌáʾ.
ΪÁËÒþ²Ø´ËÎļþÃû, Äã¿ÉÒÔд in parts
<span class="tt wims_code_variable">statement</span>,
<span class="tt wims_code_variable">feedback</span>, etc
<pre>\img{\imagedir/picture.jpg alt="picture"}</pre>
ÕâÑùѧÉúÔÚä¯ÀÀÆ÷Àï¿´µ½µÄÊÇ
<pre><img src="a_random_unrelated_file_name" alt="picture"></pre>
ÕæÊµÎļþÃû±»Òþ²ØÁË.
<p><b>×¢Òâ</b>. ²»ÒªÖ±½ÓʹÓÃWIMSÃüÁî <em>rename</em> ´¦ÀíÎļþÃû,
·ñÔòÁ·Ï°½«²»ÄÜÔÚ±»±£´æµÄ»·¾³ÀïÕý³£¹¤×÷.
<h3>·Ö²½Á·Ï°</h3>
·Ö²½Á·Ï°¿Éͨ¹ýÃüÁî <span class="tt">\steps</span> ¶¨Òå. ¾ÙÀýÀ´Ëµ, Èç¹ûÄ㶨Òå
<pre>\steps{choice 1, reply 1
choice 2, reply 2, reply 3
choice 3
}</pre>
<p>
´ËÁ·Ï°½«·Ö³É3²½, µÚÒ»²½ÒªÇó¶àÖØÑ¡Ôñ(choice 1)ÒÔ¼°×ÔÓɸñʽµÄ»Ø´ð(reply 1),
µÚ2²½ÊÇÒ»¸ö¶àÖØÑ¡ÔñÒÔ¼°Á½¸ö×ÔÓɸñʽµÄ»Ø´ðµÄ»Ø´ð, µÈµÈ.
</p><p>
<span class="tt">\steps</span> µÄÄÚÈݽÓÊÜ(Ç°ÃæÒѶ¨ÒåµÄ)²ÎÊýÒÔ¼°Ìõ¼þ¶¨Òå,
ÕýÈç¶Ô²ÎÊýµÄ¶¨ÒåÒ»Ñù. ÕâÑù¾ÍʹµÃÄã¿ÉÒÔÑ¡ÔñÐÔµØÕ¹Ê¾»Ø´ðÀ¸(¸ù¾Ý²ÎÊýµÄËæ»ú±äÁ¿),
ÉõÖÁÖ»º¬Ò»²½µÄÇéÐÎÒ²ÊÇÈç´Ë.
</p><p>
Çë×¢Òâ, Èç¹ûÓû§ÔÚÇ°ÃæµÄ²½ÖèÀï³öÁË´í, ÒÔºóµÄ²½Öè¾Í²»³öÏÖÁË(¿ÉÒÔÈÏΪȫ¶¼´íÁË).
</p><p>
ÔÚÁ·Ï°µÄ³ÂÊöÀï, µ±Ç°µÄ²½Êý¿Éͨ¹ý±äÁ¿ <span class="tt">\step</span> »ñµÃ,
´Ë±äÁ¿Ëæ×ÅÓû§»Ø´ðµÄ½øÕ¹¶øÖð²½È¡Öµ 1,2,...
</p><p>
ΪÁËÉè¼Æ¶¯Ì¬µÄ·Ö²½Á·Ï°(²½ÊýËæÓû§µÄ»Ø´ð¶ø·¢Éú±ä»¯),
Äã¿ÉÒÔʹÓÃÃüÁî <span class="tt">\nextstep{...}</span>. <span class="tt">\nextstep</span> ÀàËÆÓÚ <span class="tt">\steps</span>,
µ«Ö»ÓеÚÒ»ÐÐÊÇÓÐЧµÄ. Ëü½öµ±ÆäÄÚÈÝÊÇÓÉÕâÑùµÄ±äÁ¿¸ø³öʱ²ÅÄÜʹÓÃ,
Õâ¸ö±äÁ¿Ó¦¸ÃÓÉ post-reply µÄ²ÎÊý¶¨ÒåËù¸Ä±ä.
µ±ÔÚijһ²½Ê± <span class="tt">\nextstep</span> µÄÄÚÈݱä³É¿ÕÁË, Á·Ï°¾ÍÍ£Ö¹ÁË.
</p><p>
ÔÚÈκÎÇéÐÎ, ÔÚÒ»¸öOEFÔ´ÂëÄÚ, ×î¶àÖ»ÄܳöÏÖÒ»¸ö <span class="tt">\steps</span> »ò
<span class="tt">\nextstep</span> µÄÉùÃ÷.
</p>
<h3>Ìõ¼þ·Ö²æÓëÑ»·</h3>
¿ÉÓõÄÃüÁî:
<pre>
\if{Ìõ¼þ}{ifµÄÄÚÈÝ}
\if{Ìõ¼þ}{ifµÄÄÚÈÝ}{ÆäËüÄÚÈÝ}
\ifval{Ìõ¼þ}{ifµÄÄÚÈÝ}
\ifval{Ìõ¼þ}{ifµÄÄÚÈÝ}{ÆäËüÄÚÈÝ}
\for{var=n1 to n2}{Ñ»·ÄÚÈÝ}
\while{Ìõ¼þ}{Ñ»·ÄÚÈÝ} (Ö»ÓÃÔÚÖ÷»·¾³)
</pre>
ÕâЩÃüÁî(<span class="tt">while</span> ³ýÍâ)¿ÉÒÔ±»ÓÃÓÚ³ÂÊö(<span class="tt">statement</span>)¡¢Ìáʾ(<span class="tt">hint</span>)¡¢½â´ð(<span class="tt">solution</span>)»ò·´À¡(<span class="tt">feedback</span>)ÄÚ,
»òÓÃÓÚÖ÷»·¾³Àï.
ÔÚ×îºóÒ»ÖÖÇéÐÎ, Ìõ¼þÖ´ÐÐÖ»Ó°Ïì²ÎÊýµÄ¶¨Òå.
<h3>Ô¤´¦Àí×ÊÔ´</h3>
±¾¹¦Äܲ»ÄÜÓÃÓÚ´´½¨Á·Ï°(createxo). Äã¿ÉÔÚÄ£¿é¹¤¾ß(Modtool)ÏÂʹÓÃËüÀ´Ð´OEF(¼°Deductio)Á·Ï°.
<p>
ËüʹÄã¿ÉÒÔ°ÑÔ´ÂëµÄ¹«¹²²¿·Ö°üº¬ÔÚ¼¸¸öoefÎļþÀï.
ÄãÒ²¿ÉÒÔÀûÓÃËü´ÓÒ»¸öÔ¤×ÊÔ´ÅúÉú³É¼¸¸öoef, ËüÃÇÏ໥֮¼äÏà²îһЩºê¶¨Òå.
</p><p>
ΪʹÓÃÕâ¸ö¹¦ÄÜ, Ó¦ÔÚ src Ͻ¨Á¢Ò»¸ö×ÓĿ¼ cpp/.
Ô¤×ÊÔ´ÎļþÒÔ .cpp ×÷Ϊºó׺·ÅÈë´Ë×ÓĿ¼. ÔÚÕâЩÎļþÀï,
Äã¿ÉÒÔ¼ÓÈë cpp µÄÖ¸ÁîÈç <span class="tt">#include</span> »ò <span class="tt">#if</span>.
(Çë²Î¿´ cpp ÊÖ²á»ò c µÄ˵Ã÷ÒÔÁ˽âÓï·¨ÏêÇé.)
</p><p>
cppÎļþµÄµÚÒ»ÐÐÓ¦¸Ã¶¨ÒåÒ»¸öÄ¿±ê±í, Æä¸ñʽΪ
</p>
<pre>
target=targ1 targ2 targ3 ...
</pre>
ÕâÐÐÃüÁîµÄÒâÒåÊDZ¾cppÎļþ½«Éú³É targ1.oef, targ2.oef, µÈµÈ.
(Êä³öÎļþ»á×Ô¶¯Ìí¼Óºó׺ .oef). ¶øÇÒºê
<em>TARGET_targ1</em> Ò²±»¶¨Òå.
ËùÒÔÔÚcppÔÎļþÀï¿ÉÒÔ¼ÓÈëÈçϵÄÐÐ:
<pre>
#if define TARGET_targ1
\title{Á·Ï°1}
\integer{v1=3}
\text{t1=ÕâÊÇtarget 1}
#endif
#if define_TARGET_targ2
\title{Á·Ï°2}
\integer{v1=5}
\text{t1=ÕâÊÇtarget 2}
#endif
</pre>
ʹµÃÉú³ÉµÄÄÚÈÝÓëÄ¿±êÓйØ.
<p>
ÎļþÃû (±¾ÀýÖÐÊÇ
<span class="tt wims_code_words">targ1</span>, ...)
±£´æÔÚÒÔϱäÁ¿Àï
<span class="tt wims_code_words">OEFFILE</span>.
ÔÚÒÔÏÂÀý×ÓÀïÁ·Ï°µÄ±êÌâÊÇ
<span class="tt wims_code_words">targ1</span>
</p>
<pre>
#if defined TARGET_targ1
\title{OEFFILE}
\integer{v1=3}
\text{t1=dit is target 1}
#endif
</pre>
<p>
°üº¬ÎļþÒ²Ó¦¼ÓÉϺó׺ .inc ºó·Åµ½ src/cpp Ŀ¼Àï. ÃüÁîÐÐ
</p>
<pre>
#include "common.inc"
</pre>
½«°Ñ common.inc µÄÄÚÈݲåÈëÉú³ÉµÄoefÎļþÀï.
Çë×¢Òâ, ΪÁ˰²È«µÄÔÒò, ½ûÖ¹Ö¸Ã÷°üº¬ÎļþµÄĿ¼.
<p>
ÌØ±ðÌáʾ; Èç¹ûÄãµÄcppÎļþµÄÎı¾ÀﺬÓÐδ¹Ø±ÕµÄµ¥ÒýºÅ»òË«ÒýºÅµÄ»°,
cpp»áÏÝÓÚ»ìÂÒ. ÔÚÕâÖÖÇéÐÎ,
Äã¿ÉÒÔÀûÓà c µÄ×¢½â(<span class="tt">/* ... */</span>)°Ñº¬ÓÐÕâÑùÎı¾µÄÃüÁî±£»¤ÆðÀ´.
</p>
<div class="wims_warning">
<span class="wims_warning">$wims_name_warning</span> : ÔÚÒÔ # ÆðÊ×µÄÃüÁî,
Èç <span class="tt">#include</span> Àï, ×Ö·û <span class="tt">#</span> ±ØÐëÊÇÕâÒ»ÐеĵÚÒ»¸ö×Ö·û.
²»¿ÉÒÔ°Ñ <span class="tt">#</span> ÓÃ×÷×¢½â×Ö·û.
</div>
<h3>Á·Ï°»·¾³</h3>
ÌØÊâ±äÁ¿ <span class="tt">\oefenv</span> ¿ÉÓÃÀ´²âÊÔÁ·Ï°µÄ»·¾³(Èç¹ûÔÚÁ·Ï°ÀïûÓжÔËüÖØ¶¨ÒåµÄ»°).
<p>
Ŀǰ´Ë±äÁ¿ÄܲâÊÔµÄÄÚÈÝÖ»ÓÐ
``debug''. ÔÚÒÔÏÂÇéÐÎÀï, debug½«³öÏÖÔÚ <span class="tt">\oefenv</span> Àï:
</p>
<ol>
<li>µ±ËüÔÚ´´½¨Á·Ï°(createxo)ÄÚÖ´ÐÐʱ.</li>
<li>µ±ËüÔÚÄ£¿é¹¤¾ß(modtool)ÄÚ±»²âÊÔʱ, Ä¿µÄÊÇΪÁË¿ª·¢.</li>
<li>µ±ËüÊǰ༶µÄÁ·Ï°, ¶øÇÒ±»Ö÷³Ö½ÌʦִÐÐʱ.
</li>
</ol>
<p>
ÔÚÕâЩÇéÐÎ, Ðí¶àÀàÐ͵ÄÊäÈëÀ¸Àï¶¼»áÏÔʾÕýÈ·µÄ´ð°¸,
ÈÃÄã¿´µ½Á·Ï°ÆÚÍûµÄ½á¹ûÊÇʲô.
</p><p>
Äã¿ÉÒÔÓÃÒÔÏÂÐÎʽÔÚÁ·Ï°ÀïÌí¼Ó¾À´íÐÅÏ¢
</p><pre>
\if{debug iswordof \oefenv}{ÓûÌí¼ÓµÄ¾À´íÐÅÏ¢}
</pre>
µ±Á·Ï°±»²âÊÔʱ, ÕâЩÐÅÏ¢»á×Ô¶¯ÏÔʾ, ¶øÇÒѧÉú×ö×÷ҵʱÓÖ×Ô¶¯Òþ²Ø.