Yleistä palauteohjelmasta sekä tehtävien laadintaohjelma
Yleiskomennot
Kommentit /* … */
voi käyttää myös jakamaan vastaus riveihin
Ominaisuuksien päälle- ja poiskytkeminen
prop3_off ja prop3_on nähtiin jo
draw_off ja draw_on: käyrien piirto
virheilmoituksissa
prove_off ja prove_on: todistimen käyttö
undef_off ja undef_on sekä funcpar_off ja
funcpar_on: ehdotan poistettavaksi
Tiettyjen ominaisuuksien vaatiminen vastaukselta
ban_comp: kieltää <, ≤, >, ja ≥
f_nodes: asettaa monimutkaisuusylärajan viimeiselle
lausekkeelle
f_ban_der: kieltää derivaattasymbolin viimeisessä lausekkeessa
solve: vaatii, että viimeinen väittämä on eksplisiittinen
(eli ratkaistu) annetun muuttujan suhteen
näitä voi tehdä lisää pedagogisten tarpeiden mukaan!
Tiedonkulun ja linkityksen ohjaaminen
hide_expr: lauseketta ei näytetä vaan näytetään sana
model-solution
next_URL ja no_next_URL: oikeaan vastaukseen
liitetään linkki seuraavaan tehtäväsivuun tai tieto, että valmiiksi tuli
end_of_answer: varmistaa, että vastauksen loppu ei sekaannu
jatkon kanssa vaikka vastaus olisi syntaktisesti väärin
Komentoja testausta varten, keskeneräisiä tai poistuvaksi tarkoitettuja,
yms.
debug_off ja debug_on
Tehtävien laadintaohjelma
Tehtäväsivun voi
käyttää saman tien eli vastata siihen
ottaa talteen selaimen toiminnoilla ⟨CTRL⟩+⟨s⟩ vietäväksi verkkokurssiin,
Examiin tms.
Ohjeita saa antamalla tyhjän laatikon
Käyttö on pyritty tekemään helpoksi
kappaleen vaihto osoitetaan tyhjällä rivillä kuten LaTeXissa
merkkijonoargumenttien rajoja ei tarvitse osoittaa
ohjelma lisää itse puuttuvia komentoja
⇨ alkuun riittää osata #title, #question ja
#hidden
Muuttujat ja satunnaistus
kokonaislukuarvoja voi tallettaa muuttujiin a, …,
z#let-komennossa
merkkijonoja voi tallettaa muuttujiin A, …, Z
(paitsi AsciiMath-hipsua)
arvoja voi tuottaa ja valita satunnaislukugeneraattorilla
merkkijonoliteraalit rajataan merkillä ", sisään saadaan
" kirjoittamalla #%
arvoilla voi hieman laskea
#let-komennon ulkopuolella eteen pitää lisätä #
< ⇄ < ja # ⇄
##-ongelmat
HTML:ssä neljä merkkiä ei tarkoita itseään: ",
&, < ja >
⇨ matematiikan esittämiseksi ne korvataan sellaisilla, joista ne tulevat
oikein: ", &, < ja
>
⇨ tarvitaan kikkoja, kun ne halutaankin HTML-merkityksissään:
#" jne., #html
tehtävien laadintaohjelmassa # aloittaa komennon
⇨ sekään ei tarkoita itseään
⇨ lisää kikkoja
myös on #-kikkoja tyhjän lisäämiseksi merkkijonon alkuun tai
loppuun
asiaa sotkee AsciiMathin rajain-hipsu
en ole vielä saanut tätä kaikkea toimimaan aivan kunnolla
Tulevaisuudessa on tavoitteena, että kaiken matematiikan voisi kirjoittaa
MathCheck-notaatiolla
nykyisellään MathCheckille menevä kirjoitetaan sillä, mutta opiskelijalle
näytettävä esim. AsciiMathilla
nykyisellään käyttäjä joutuu tekemään hieman lisätyötä jottei
satunnaistettuun lausekkeeseen tulisi `+0`, `1*` tms.
tavoitteena on myös päästä käyttämään MathCheckin käyrien ja puiden
piirtokomentoja
Ohjelmasta on myös versio, joka tekee kerralla monta HTML-tiedostoa
ajetaan pääteikkunassa komentotulkista
tiedostot voi olla ketjutettu siten, että kun on vastannut oikein
edelliseen, saa linkin seuraavaan: esimerkki
Exam-tuki
(Mallivastauksen) kevyt salaus
ei salaa sanan varsinaisessa merkityksessä
tekee kovin työlääksi tulkita ilman tietokonetta
purkava ohjelma on liian vaikea tehtäväksi tyhjästä tenttitilanteessa
(Ainakin) opiskelijan vastauksen kuljetus Examin läpi opettajalle
tilaa edeltä yhtälötehtävä
vastaa siihen
katso palautesivun lähdekoodin loppua
Prototyyppi toimii, mutta parempaa mietitään
Matematiikan syntaksi MathCheckissä
Matematiikan syntaksissa on painajaismaisia piirteitä
näkymätön kertolasku
`2 x` ja `-2 x` ovat ok ja `x 2` olisi ehkä hyväksyttävissä, mutta entä `x
-2`?
⇨ MathCheck sallii näkymättömässä kertolaskussa paljaan luvun tms. vain
alussa
sekaluvut
itseisarvon alku ja loppu
⇨ MathCheck vaatii ja itse kirjoittaa näennäisesti ylimääräisiä sulkuja
funktiokutsun presedenssi
Tiedämme, että
joten jos `sin` sitoo voimakkaammin kuin näkymätön kertolasku, niin
ja päinvastaisessa tapauksessa
lisäksi asiaa sotkee ainakin derivaatta
⇨ MathCheck käyttää monimutkaista sääntöä
funktiokutsun sulut
muutoin nyrkkisääntö “laita funktion argumentin ympärille aina
sulut“ ei toimisi
meille opetetaan kaksiarvoinen logiikka ja sanotaan sen olevan kaiken
pohja ⚓
se ei kuitenkaan selitä mitä tarkoitamme, kun sanomme `AA x != 0: x * 1/x = 1`, sillä sehän tarkoittaa `AA x: (1/x * x = 1 vv x = 0)`, joka on määrittelemätön
MathCheckissä oli pakko kohdata tämä ongelma silmästä silmään
Haluamme `f(x) = g(x) hArr x = x_1 vv ... vv x =
x_n` tarkoittavan ne `x`:n arvot, joilla molemmat
puolet ovat määriteltyjä ja tuottavat saman, ovat `x_1` ja … ja
`x_n`
Jos aritmeettisen lausekkeen osa on määrittelemätön, myös koko lausekkeen
täytyy olla
jos pätisi esim. `0 * 1/0 = 1`, niin `x=1` olisi yhtälön `x = 0 * 1/0`
juuri
Kannattaa lisätä kolmas totuusarvo `sf"U"`
muutoin `x=0` toteuttaa joko `x < 1/0` tai `not(x < 1/0)` eli(?) `x ≥
1/0`
`not`
`^^`
F
U
T
`vv`
F
U
T
`rarr`
F
U
T
`harr`
F
U
T
F
T
F
F
F
F
F
F
U
T
F
T
T
T
F
T
U
F
U
U
U
F
U
U
U
U
U
T
U
U
U
T
U
U
U
U
T
F
T
F
U
T
T
T
T
T
T
F
U
T
T
F
U
T
`rArr` ja `hArr` ovat eri asioita kuin `rarr` ja `harr`
ottavat huomioon asiayhteyden
case `x < 0`: … `x^2 = 9 hArr x = -3`
syntaksin ansiosta eivät voi olla negaation kohteena
voi ja täytyy olla `sf"U " hArr sf"
F"`:
`sqrt(x) = 2 hArr x=4` kun `x = -1`