Dette opplegget ble utviklet en morgen, da jeg plukket fram en gammel oppstartsaktivitet for å repetere regning med negative tall. Engler og demoner, som ble navnet på aktiviteten er et terningspill som foregår på følgende måte:

God trening i regning med negative tall, og en godt aktivitet som ikke krever så veldig mye. Etter hvert som elevene spilte, var det noen elever begynte å ytre misnøye om at de var så langt fra null, og ikke helt skjønte hvorfor det skjedde. Det ble derfor en del gode samtaler og diskusjoner rundt dette.
Noen tanker og påstander som ble fremmet av elevene:
– det burde jo ikke være noe problem å få 0 i sum allerede på første kastet
– hvor mange kast trengs for å få 0 i snitt
– hvor høy kan den negative totalsummen bli og hvor høy kan den positive totalsummen bli
Vi diskuterte disse spørsmålene litt, men kom liksom ikke i mål, da vi ikke hadde en fasit.
Da kom jeg til å tenke på noe jeg selv har predikert når jeg har vært ute og holdt programmeringskurs for lærere: – programmering er en fantastisk arena for utprøving av matematiske problem og utfordringer
Så hvorfor ikke lage et dataprogram som simulerer et stort antall spill av denne typen. Vi gjennomførte jo bare 25-30 spill på en økt i klasserommet, og det gir liksom ikke nok data.
Kompetansemål matematikk etter 7.trinn:
– utforske negative tall i praktiske situasjoner
– bruke sammensatte regneuttrykk til å beskrive og utføre utregninger
– utforske og bruke hensiktsmessige sentralmål i egne og andres statistiske undersøkelser
– logge, sortere, presentere og lese data i tabeller og diagrammer og begrunne valget av framstilling
– bruke programmering til å utforske data i tabeller og datasett
Kompetansemål matematikk etter 9.trinn:
– finne og diskutere sentralmål og spredningsmål i reelle datasett
– utforske og argumentere for hvordan framstillinger av tall og data kan brukes for å fremme ulike synspunkter
– beregne og vurdere sannsynlighet i statistikk og spill
– simulere utfall i tilfeldige forsøk og beregne sannsynligheten for at noe skal inntreffe, ved å bruke programmering
En ferdig versjon av programmet finnes på https://scratch.mit.edu/projects/683529056
Krav til programmet
Programmet skal foreta et stort antall spill, der det skal foretas et ukjent antall kast i hvert spill. Det skal kastes 4 terninger, der to terninger er positive og to er negative. Summen skal regnes ut, og totalsummen lagres og endres for hvert kast. I det øyeblikket totalsummen er 0, er spillet ferdig og antall kast skal lagres i en tabell.
Steg 1 – Spill terningspillet engler og demoner
La elevene spille terningspillet noen runder slik at de får en forståelse av spillet og de matematiske utfordringer som ligger i spillet. Ta en runde med elevene og snakk om hvor mange kast de brukte for å komme til null, totalsummer osv.
Steg 2 – Pseudokode programmet
Når vi skal løse slike oppgaver med elevene er det en god ide å «skrible» på tavlen sammen med dem for å skape en forståelse av hva som skal gjøres. Pseudokoding gjør det lettere å få en oversikt over hva som skjer med et og et tall og hvordan vi enklest kan løse utfordringene. Samtidig gir det en rask oversikt over hvor vi trenger løkker og vilkår, samt hvilke variabler vi trenger.
Lag pseudokode for de ulike delene av programmet: Hvilke variabler og tabeller som trengs, kast av terninger og utregning av ulike summer.
Steg 3 – Oppstart av programmet
Når det grønne flagget trykkes, skal programmet starte. Det er viktig å tømme listen som tar vare på kasten, før vi kjører selve programmet.

Steg 4 – En løkke for hvert spill
Det skal gjennomføres mange spill, så vi trenger å legge en løkke rundt koden som simulerer hvert enkelt spill.

Steg 5 – Nullstille variabler
Vi trenger en del variabler til å ta vare på ulik informasjon. Disse må nullstilles hver gang vi skal starter et nytt spill. Antall kast i spillet settes til null. Det samme må totalsummen som spilleren skal oppnå. I tillegg må vi ha et flagg, som indikerer når hvert spill er ferdig.

Steg 6 – foreta terningkast
Vi skal nå foreta terningkastene. For å gjøre det effektivt og ryddig, legger vi dette i en egen funksjon som vi kaller terningkast. Funksjoner lages under kategorien «Mine klosser».

Vi kaster først de to terningene som er positive. De vil få en tilfeldig verdi mellom 1 og 6. Vi lagrer verdien i to ulike variabler.

Deretter summerer vi disse i en variabel som tar varer på den positive summen.

Så gjør vi det samme for de negative terningene, og lagrer i en variabel som tar vare på den den negative summen.
Steg 7 – Test
Las oss teste at funksjonen fungerer. Merk av for at variablene vises, og kjør bare funksjonen.
- kastes terningene
- summeres positive og negative summer opp
Steg 8 – Kaste og finne totalsummen
Da er vi klar til å foreta selve spillet. Spillet skal foregå inntil vi får 0 i totalsum, så vi lager en ny løkke inne i den forrige vi laget, som kjøres helt til flagget blir satt til 1.

Det første vi gjør er å kalle funksjonen vi laget i sted, som foretar kastene for oss.

Deretter er det på tide å foreta de nødvendige utregningene. Vi finner differansen mellom den positive og negative summen, og regner deretter ut totalsummen.

Vi skal telle opp antall kast i hvert spill, så vi endrer variabelen som holder kontroll på antall kast.

Steg 9 – foreta nødvendig kontroll
Om totalsummen er blitt 0, så settes flagget til 1, og spillet er ferdig. Da vil løkken stoppe, og et nytt spill

Steg 10 – registrere antall kast
Siden spillet er ferdig er det på tide å lagre antall kast i tabellen.

Steg 11 – test
På tide å teste programmet. Istedenfor å kjøre 500 repetisjoner, kan vi kjøre 1 eller 2 første gangen, slik at vi ser at det fungerer. Det kan også være lurt å vise variablene når en tester
- slettes listen når programmet starter?
- stopper spillet når totalsummen er 0?
- teller den opp antall kast?
- legger den antall kast i listen?
Steg 12 – kjør programmet
Endre programmet til å kjøre 500 repetisjoner. Se hva som skjer.
Utvidelse av programmet
Dette programmet har mange mulige utvidelser. Her er noen som dere kan prøve ut.
– finn maksimum antall kast som blir kastet i et spill
– finn maksimum negativ og positiv totalsum i et spill
– finn gjennomsnittlig antall kast i testen