Burde sikkert laget dette opplegget for et år siden, men på oppfordring lager jeg et undervisningsopplegg som tar i bruk R-tallet, som viser hvor mange en person kan smitte, og der vi ser hvordan smitten utvikler seg. Opplegget kan løses rent teoretisk, der resultatet vises i en tall, eller visuelt der vi bruker ulike virkemidler for å vise spredningen av smitten.

Kompetansemål matematikk 10.klasse
– utforske sammenhengen mellom konstant prosentvis endring, vekstfaktor og eksponentialfunksjoner
– bruke funksjoner i modellering og argumentere for framgangsmåter og resultat
– utforske matematiske egenskaper og sammenhenger ved å bruke programmering
Forberedende arbeid
Elevene bør har kjennskap til R-tallet som brukes i forbindelse med Covid-19 pandemien, og hvordan en regner det. Er R-tallet 1, vil en person kun smitte en annen person. Om tallet er over 1 vil antallet smittede stige raskere enn om det er mindre enn 1.
Disse artiklene kan for eksempel brukes som utgangspunkt:
https://forskersonen.no/matematikk-meninger-populaervitenskap/tiltak-mot-smittespredning-stol-pa-matematikken-ikke-magefolelsen/1663728
https://www.faktisk.no/artikler/NzE/dette-ma-du-vite-om-smittetallet-r
Krav til programmet
Programmet skal spørre etter antall smittede personer(blir mer spennende om det alltid bare er 1 person som utgangspunkt), hvilket R-tall vi skal arbeide med, og hvor mange ledd vi ønsker å se smitten i.
Programmet skal finne antall smittede i hvert ledd og plassere dette i en tabell, samt at den skal vise totalt antall smittede personer.
Steg 1 – sette opp
Før en begynner å programmere, kan det være en ide å bestemme seg for hvordan en ønsker å presentere resultatene. I dette opplegget kommer jeg til å presentere to ulike varianter, men det finnes langt flere varianter. I mitt opplegg skal alt starte når jeg klikker på flagget. Jeg bruker ingen figurer, og derfor skjuler jeg figuren min, og kobler programmet til blokken «når flagget klikkes»
Steg 2 – Spørre etter startverdier
Når vi skal regne med R-tallet, må vi ha litt informasjon fra brukeren. Vi må spørre etter hvor mange smittede vi har i utgangspunktet, hvilket R-tall vi skal regne med og tilslutt hvor mange ledd vi skal beregne smitten i.
Vi lagrer svarene i variabler som vi navngir etter hva de spør etter. Legg merke til at jeg legger antall smittede inn i variabelen totalt antall smittede med en gang, slik at jeg ikke glemmer det senere.

Steg 3 – foreta beregningene
Vi har egentlig alt vi trenger for å beregne hvordan smitten utvikler seg. Vi lager en løkke, som skal kjøres like mange ganger som vi har ledd smitten skal gå. Samtidig må vi tenke gjennom hvilke data vi ønsker å hente ut. Vi skal sette antall nye smittede inn i en liste som vi kaller nye smittede og totalt antall smittede i en annen liste vi kaller totalt smittede.
Vi begynner med å beregne nye smittede. Dette finner vi på bakgrunn av antall smittede i forrige legg(første gang blir det altså antall smittede vi oppgir i starten og ganger med R-tallet. Jeg velger å avrunde svaret, da jeg synes desimalmennesker er litt teit. Det er viktig at vi setter smittede til antall nye smittede, ellers vil det bli foretatt beregning på feil tall i neste ledd. Tilslutt legger vi antall nye inn i listen nye_smittede.

Deretter er det på tid å summere opp totalt antall smittede, og det er jo tidligere registrert antall smittede + de nye smittede.

Da skal vi tilslutt sitte igjen med en løkke som ser slik ut:

Da er det snart på tide å teste programmet, men vi må unngå at listene fylles opp ved start av programmet, så derfor har jeg laget en nullstillingssekvens som kjøres når en klikker på det grønne flagget og starter programmet.
Steg 4 – foreta tester
Foreta en serie tester for å se at programmet regner ut korrekt antall nye smittede og antall totalt smittede. Prøv med ulike antall personer som utgangspunkt og ulike R-tall.
Steg 5 – visualisering
Ofte blir en slik oppgave mye stiligere og mer effektfull om vi visualiserer resultatet. Dette kan gjøres på mange måter. En kan klone en figur for hver smittede, en kan tegne en prikk for hver smittede, et tre som utvider osv. I dette opplegget kommer jeg til å vise to ulike varianter av en visualisering hvor jeg tegner en prikk for hver smittede.
Jeg begynner med å legge til pennverktøyet for å få tilgang til tegneblokkene. Jeg lager en ny startsekvens som tømmer skjermen og gjør klar pennen. Denne brukes for begge eksemplene.

Eksempel 1 – tilfeldige prikker
Det første eksempelet skal lage en tilfeldig prikk for hvert smittetilfelle. For hvert ledd skal den endre farge, slik at en ser forskjellen på de ulike leddene. For å gjøre det lettere å programmere lager jeg en funksjon som jeg kaller hver gang jeg skal inn på et nytt ledd i smitten. Jeg kaller det smitte, og jeg sender med antall smittede i dette leddet.

Funksjonen må kalles en gang før vi begynner å beregne antall nye smittede med antall smittede som vi skal beregne utfra. Deretter må vi kalle det hver gang vi beregner antall nye smittede, altså inne i beregningsløkken.
Deretter lager vi en funksjon som tegner prikkene. Den inneholder en løkke som skal kjøres så mange ganger som det er antall smittede, og flytte pennene til et tilfeldig sted på skjermen. Jeg har plassert listene til venstre på skjermen, og tilpasset plasseringen etter listenes plassering. For å tegne setter jeg pennen på og deretter av.

Eksempel 2 – prikker i et mønster
I dette eksempelet skal jeg tegne prikkene i et sirkelmønster som viser hvordan smitten øker. Ledd 0 er i midten, og så øker det utover.
Jeg lager en funksjon som får to parametere med seg i kallet; antall smittede og hvilket ledd som skal tegnes. På akkurat samme måte på den kalles en gang før beregningene begynner for å tegne de som i utgangspunktet var smittet, og deretter hver gang beregningene er gjennomført. I tillegg trenger vi en variabel som teller opp hvilket ledd som skal tegnes. Vi begynner med 0, altså de som er startpunktet. Husk også å endre denne telleren for hver gang en har beregnet og skal tegne smitten.

Deretter lager vi en funksjon som tegner de ulike smittede. Den tar utgangspunkt i et senter, gjerne 0,0. For å få den til å tegne i en sirkel, roterer den også et tilfeldig antall grader før den går ut. Den går så ut et tilfeldig antall skritt som jeg beregner ut fra en hvilken runde den går ut. For at ledd 0 ikke skal få prikkene oppå hverandre (20 x 0 = 0) så legger jeg til 5 før jeg begynner å beregne hvor langt ut hvert runde skal.

Da er programmet klar til å testes. En ferdig versjon av programmet ligger på https://scratch.mit.edu/projects/514610155
Legg igjen en kommentar