Variabler

Numbas kan lage oppgaver med datatyper som tall, tallområder, stringer, lister, vektorer, mengder og matriser. En variabel er en navngitt verdi på en av disse datatypene. I stedet for å bruke konkrete tall direkte kan vi for et rektangel lage variablene bredde = 3 og hoyde = 4 og beregne arealet som areal = bredde * hoyde. En variabel er altså en dataverdi som vi kan referere til med variabelnavnet.

En randomisert variabel er et tilfeldig tall hentet fra et tallområde eller en liste. Randomiserte verdier som brukes å lage utgaver med tilfeldige tallsett i et spørsmål. Det gir muligheter til å øve inn metode i oppgaveløsning eller til å gi individueller oppgaver i en testsituasjon.

Eksempel:
For en student ser spørsmålet slik ut: $\text{Faktoriser}\;\;x^2 - 2 x - 3$ :         

Spørsmålet av typen Mathematical expression er kanskje laget slik: Faktoriser $\simplify{x^2 + {a+b}*x + {a*b}}$
med a og b som randomiserte tall, laget av følgende JME kode:
a = random(-5..5 except 0)
b = random(-5..5, except[0, a])

Riktig svar settes opp i feltet Marking som (x+{a})*(x+{b})

Student Ane kan svare   [(x-3)*(x+1)$(x-3)(x+1)$
student Ben kan svare:   [(x+1)*(-3+x)$(x+1)(-3+x)$
og begge svar blir markert riktig fordi de evalueres numerisk til samme testverdier som fasit.

Et lignende eksempel er gjennomgått i Numbas dokumentasjon.

JME

JME er et eget regneapparat i Numbas som kan håndtere tall, tabeller, vektorer, mengder og matriser. Det kjenner også trigonometriske funksjoner, logaritmefunksjoner, funksjoner for tallbehandling, vektoraritmetikk og mange andre. Ved redigering av oppgaver kan vi bruke JME til å lage variabler med randomiserte verdier og gjøre mellomregninger.

Den fullstendige dokumentasjonen av JME lister opp alle funksjoner og muligheter, nedenfor er en kort gjennomgang av hvordan vi lager randomiserte tall.

Når du redigerer en oppgave vil menyvalget Variables be deg lage en ny variabel med valget Add a variable. Etter det må du gi variabelen Name og gi den en Data type. Du får valget mellom
- JME code
- Number
- Range of numbers
- Random number from range
- Text string
- List of numbers
- List of strings

Datatypen Random number from range er det vi er ute etter i dette kurset. Men, for å demonstrere litt JME syntaks velger jeg å bruke JME code direkte til dette. Ta en titt på oppgaven i eksemplet ovenfor, der ønsker jeg å la nullpunktene a og b få forskjellige verdier i et område fra -7 til 7, og verdien 0 skal være unntatt. Med Random number from range er dette ikke mulig.

Her er bitene som lager de tilfeldige tallene jeg er ute etter samlet sammen til en JME kode:

JME kode Verdieksempel
-7..7 Et tallområde (range) [-7, 7]
-7..7 except 0 Alle tallene i -7..7 med unntak av 0
random(-7..7) Et tilfeldig tall i -7..7
random(-7..7 except [0, a]) Et tilfeldig tall i -7..7 med unntak av 0 og verdien som variabelen a har.

Dette er alt du trenger å vite om JME kode i dette kurset. Bruk klipp/lim og sett inn i feltet for JME kode når du lager tilfeldige tall. Klikk gjerne noen ganger på Regenerate values for å sjekke at du får verdier slik du har tenkt deg.

Fasitsvar med variabler

Oppgaven i eksemplet ovenfor forventer svar som (x+1)*(x-3) hvis a=-1 og b=3. Ved inntasting av riktig svar under Marking henter JME de aktuelle verdiene til a og b ved å sette de inn mellom {}-parenteser. Riktig svar settes altså til (x+{a})*(x+{b}).

Men, fordi Numbas tester om et svar er riktig ved å beregne uttrykkene ved å sette inn noen tall i både studentens svar og fasitsvaret - og sammenlikne om de evaluerer likt - så kan vi i dette tilfellet også sette at x^2 + {a+b}*x+{a*b} også er riktig svar. Hvis vi skal forsikre oss om at studenten har faktorisert kan vi for eksempel sette at tegnene '()()' må være med i svaret.

Legg merke til at JME evaluerer {a} til verdien som a har i øyeblikket, og sammensatte uttrykk som {a+b} og {a*b} blir utregnet med de aktuelle verdiene som a og b har.

Spørsmål med variabler

Spørsmål med Mathematical expression