Subversion Repositories wimsdev

Rev

Rev 3502 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1.  
  2. <h2 class="wimscenter">Parametri casuali in un esercizio interattivo</h2>
  3. <p>
  4. L'utilizzo di parametri casuali permette di programmare esercizi
  5. più interessanti, in quanto ogni volta che si apre l'esercizio di fatto
  6. si ottiene un esercizio differente.
  7. </p><p>
  8. Per esempio, la riga seguente permette di definire una variabile con nome
  9. <span class="tt wims_code_variable">x1</span>, il cui valore sarà un
  10. numero intero casuale tra
  11. -10 e 10 (inclusi):
  12. </p><pre>
  13. \integer{x1=random(-10..10)}
  14. </pre>
  15. Una volta definito, questo parametro potrà essere utilizzato chiamando
  16. la variabile
  17. <b><span class="tt wims_code_variable">\x1</span></b>, in ogni punto
  18. dell'esercizio (l'enunciato, le risposte, i suggerimenti e la soluzione).
  19. In altre parole ogni volta che viene utilizzato il comando <span class="tt wims_code_variable">\x1</span> in uno di tali testi
  20. questo sarà sostituito con il valore casuale
  21. del parametro. Questa sostituzione ha luogo anche nella definizione di altri
  22. parametri che richiamano il valore di <span class="tt wims_code_words">x1</span>.
  23. <p>
  24. Per esempio inseriamo il seguente codice
  25. </p>
  26. <pre>
  27. \integer{x1=random(-10..10)}
  28. \integer{y1=\x1+3}
  29. </pre>
  30. nel campo di definizione dei parametri e il seguente testo
  31. <pre>
  32. Calcola il prodotto di \x1 per \y1.
  33. </pre>
  34. <p>nell'enunciato dell'esercizio. Quando viene richiamato l'esercizio vengono
  35. attribuiti valori casuali alle variabili, per esempio
  36. supponiamo che il valore casuale <span class="tt wims_code_variable">-7</span> sia assegnato a \x1. Allora
  37. il parametro seguente \y1 avrà valore -4, e l'enunciato apparirà
  38. con tali valori
  39. </p><p class="wimscenter">Calcola il prodotto di -7 per -4.
  40. </p>
  41. È allora possibile definire una risposta numerica con nome <span class="tt">Il prodotto</span>, definendo come risposta corretta <span class="tt">(\x1)*(\y1)</span>. (Sottolineiamo il fatto
  42. che le parentesi sono necessarie in quanto la sostituzione dei valori
  43. delle variabili è letterale.)
  44. <a id="list"></a>
  45. !if oefparm isitemof $special_parm
  46.  !changeto help/oefparm.phtml
  47. !endif
  48. $table_header
  49. <caption>Alcuni esempi di definizione di variabili
  50. !href cmd=help&special_parm=$special_parm,oefparm#list [elenco completo]
  51. </caption>
  52. $table_hdtr<th>Definizione</th><th>Risultato</th></tr>
  53. $table_tr<td class="tt wims_code_words">\real{x=random(-5..5)}
  54.     </td><td>\x sarà un numero reale casuale<br>tra -5 e 5
  55. </td></tr>
  56. $table_tr<td class="tt wims_code_words">\real{a=randitem(-5,-3,0.3,4)}
  57.     </td><td>\a sarà un numero reale preso casualmente <br>tra -5,-3,0.3 e 4
  58. </td></tr>
  59. $table_tr<td class="tt wims_code_words">\complex{z=(1+2*i)^3}
  60.     </td><td>\z sarà il numero complesso z=(1+2*i)^3
  61. </td></tr>
  62. $table_tr<td class="tt wims_code_words">\text{sign=randitem(+,-)}
  63.     </td><td>\sign sarà un segno casuale: + o -
  64. </td></tr>
  65. $table_tr<td class="tt wims_code_words">\integer{n=3*exp(\a)}
  66.     </td><td>\n sarà l'intero più vicino a 3*e<sup>\a</sup> <br>(dipende dal
  67.    valore di \a)
  68. </td></tr>
  69. $table_tr<td class="tt wims_code_words">\function{f=randitem(x^2+1,sin(x),log(x))}
  70.    </td><td>\f sarà una funzione casuale: o x^2+1,<br>o sin(x), oppure
  71.    log(x)
  72. </td></tr>
  73. $table_tr<td class="tt wims_code_words">\real{a=evalue(x^2+sin(y),x=3,y=4)}
  74.    </td><td>Valore assunto dalla funzione x^2+sin(y),<br>
  75.    per x=3, y=4
  76. </td></tr>
  77. $table_tr<td class="tt wims_code_words">\real{r=solve(x^3-3*x+1,x=0..1)}
  78.    </td><td>\r sarà una radice semplice di x^3-3x+1 tra 0 e 1
  79. </td></tr>
  80. $table_tr<td class="tt wims_code_words">\function{h=simplify(x^5*y^3*x^2/y)}
  81.    </td><td>Espressione semplificata: x<sup>7</sup>y<sup>2</sup>
  82. </td></tr>
  83. $table_tr<td class="tt wims_code_words">\function{g=diff(sin(x)+cos(y),x)}
  84.    </td><td>\g sarà la derivata di sin(x)+cos(y) rispetto a x
  85. </td></tr>
  86. $table_tr<td class="tt wims_code_words">\function{F=int(x^2+3*x+1,x)}
  87.    </td><td>\F sarà una primitiva di x^2+3*x+1,<br>
  88.     il termine costante potrebbe variare da funzione a funzione
  89. !!$table_tr<td class="wims_code_words">\function{F=int(t^2+3*t+1,t=1..x)}
  90. !!    <td>\F sarà la primitive x^2+3*x+1 tale che g(1)=0
  91. </td></tr>
  92. $table_tr<td class="tt wims_code_words">\real{a=int(t^2+3*t+1,t=0..1)}
  93.    </td><td>\a sarà l'integrale numerico di x^2+3*x+1, da 0 a 1
  94. </td></tr>
  95. $table_tr<td class="tt wims_code_words">\text{f=htmlmath(2*x^2+3*x)}
  96.     </td><td>\f sarà convertito in html come: 2x<sup>2</sup>+3x
  97. </td></tr>
  98. $table_tr<td class="tt wims_code_words">\text{f=texmath(2*x^2+3*x)}
  99.     </td><td>\f sarà il sorgente TeX dell'espressione.
  100. </td></tr>
  101. $table_tr<td class="tt wims_code_words">\integer{n=items(a,b,c,d,e,f)}
  102.    </td><td>\n sarà il numero di elementi (in questo caso 6) nella lista
  103.     {a,b,c,d,e,f}
  104. </td></tr>
  105. $table_tr<td class="tt wims_code_words">\text{i=item(3,a,b,c,d,e,f)}
  106.    </td><td>\i sarà l'elemento numero 3 della lista
  107.      {a,b,c,d,e,f} (quindi c).
  108. </td></tr>
  109. $table_tr<td class="tt wims_code_words">\text{s=shuffle(6)}
  110.     </td><td>\s sarà la lista dei 6 interi 1,2,...,6, in ordine casuale.
  111. </td></tr>
  112. $table_tr<td class="tt wims_code_words">\text{s=shuffle(a,b,c,d,e)}
  113.     </td><td>\s sarà la lista delle lettere {a,b,c,d,e} in ordine casuale.
  114. </td></tr>
  115. $table_tr<td class="wims_code_words">\matrix{m=1,2,3<br>4,5,6<br>7,8,9}
  116.     </td><td>\m sarà la matrice di 3 righe e 3 colonne.
  117. </td></tr>
  118. $table_tr<td class="tt wims_code_words">\text{t=asis(Come va? matrix(1,2,3))}
  119.     </td><td>\t è la stringa esattamente come è scritta, <br>senza alcuna conversione o verifica di condizioni.
  120. </td></tr>
  121. $table_end
  122.  
  123. Parametri con condizioni: si può scrivere
  124. <pre>
  125. \text{ttt=_condizione?_def1}
  126. \text{ttt=_condizione?_def1:_def2}
  127. </pre>
  128. <p>
  129. In questo modo <span class="tt wims_code_words">ttt</span> avrà il valore <span class="tt wims_code_words">_def1</span> se
  130. <span class="tt wims_code_words">_condizione</span> è verificata, oppure <span class="tt wims_code_words">_def2</span> altrimenti (nella seconda
  131. forma).
  132. !href target=wims_mhelp cmd=help&special_parm=if Elenco completo delle condizioni
  133. </p><p>
  134. La posizione di una definzione rispetto all'enunciato è importante:
  135. se una variabile è definita DOPO l'enunciato, la sua valorizzazione
  136. avrà luogo unicamente DOPO che è stata data una risposta alla domanda.
  137. In questo caso tale definizione può utilizzare le risposte date,
  138. utilizzando le variabili <span class="tt wims_code_variable">\reply1</span>, <span class="tt wims_code_variable">\reply2</span>, ecc. E le
  139. variabili così definite possono essere utilizzate per parametrizzare
  140. la visualizzazione di commenti e condizioni.
  141. </p>
  142.  
  143.