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