Dette opplegget ble til mens jeg holdt på med veiledning av en masterstudent. Vi snakket om et prosjekt rundt reaksjonstid, og jeg foreslo bruk av lister eller tabeller for å lagre verdiene. Dermed dukket det opp mange ideer til et undervisningsopplegg i Scratch som tar for seg ganske mange kompetansemål fra 7.klasse matematikk.
Kompetansemål matematikk etter 7.trinn:
– 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
På forhånd bør elevene være kjent med sentralmål innen statistikk, og hvordan en finner fram til dem.
Krav til programmet
Programmet skal vise et objekt med tilfeldige intervaller. Programmet skal regne ut hvor lang tid en bruker fra objekt vises til det klikkes på. Resultatet skal lagres i en liste. Til slutt skal en regne ut gjennomsnittet, og finne min og max-tiden.
Steg 1 – Pseudokode
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: Del 1 som er visning av objektene, del 2 som regner ut tiden og lagrer i listen, del 3 som finner gjennomsnittet og del 4 som finner min og max-tiden.
Steg 2 – Bakgrunn og karakter
Velg en karakter som skal være objektet som vises og velg en bakgrunn som passer. Tenk på størrelsen og fargen på objektet og at det ikke må forsvinne i bakgrunnen.

Steg 3 – Oppstart
Når det grønne flagget klikkes, skal figuren skjules.

Deretter skal vi vente et tilfeldig antall sekunder før vi viser figuren.

Steg 4 – Ta tiden
Da er det tid for å starte tidtakingen. Når blokken er vist, må vi starte klokken. Vi trenger en variabel, som vi kaller «start», som tar vare på tiden når vi starter.

Da er det bare å vente på at figuren klikkes, og for å unngå at programmet kjører videre, må vi lenge inn en vent-funksjon, slik at vi venter helt til figuren faktisk er klikket. Til det trenger vi en variabel som styrer dette. Den må settes til «0» før vi viser figuren, og så må den settes til «1» når figuren klikkes. I hovedprogrammet må vi vente til denne er satt til «1» før vi går videre.

Reaksjonstesten skal kjøres mange ganger, og i dette eksempelet skal vi kjøre 10 repetisjoner slik at vi får et skikkelig utvalg. Det må derfor legges en løkke rundt koden vist over.
Steg 7 – Når figuren klikkes
Når figuren klikkes, skal reaksjonstiden måles. Vi må altså stoppe tiden, og vi trenger en variabel som heter «slutt» som tar vare på den verdien. Vi skjuler så figuren og deretter regne vi ut hvor lang tid brukeren brukte på å klikke på figuren.

Siden brukeren har klart å klikke på figuren er programmet klart til å gå videre, så vi setter variabelen «klikket» til «1».
Steg 8 – lagre i en liste
Vi skal lagre verdiene i en liste, så vi oppretter en liste vi kaller «reaksjonstid». Denne listen skal vises, og i denne legger vi inn verdien vi regnet ut i forrige steg, for hver runde.

NB! Denne må vi huske å slette når vi starter programmet.
Steg 9 – testing
La oss teste om programmet, så langt fungerer slik vi har tenkt.
– skjules figuren når programmet starter?
– dukker den opp med tilfeldige intervaler?
– forsvinner den når vi klikker på den?
– registreres tiden i tabellen?
– stopper spillet etter ønsket antall repetisjoner (10)?
Steg 10 – finne gjennomsnittet
La oss bruke dataene i listen til å finne gjennomsnittet av registreringene vi gjorde. Vi lager en egen funksjon vi kaller «gjennomsnitt», som vi kaller etter at den er ferdig med løkken. Nye funksjoner lager vi under «Mine klosser».
Vi trenger noen variabler til arbeidet med å finne gjennomsnittet. Den ene er en «sum» som summerer opp alle verdiene i listen. Den andre er «element» som er en teller som vi bruker for å arbeide oss gjennom listen, element for element.

Det er 10 elementer i listen, så vi trenger en løkke, som går gjennom listen 10 ganger. Den henter ut et og et element, og legger verdien til sum, før den velger å gå til neste element neste gang løkken kjøres.

Til slutt må vi regne ut gjennomsnittet og presentere for brukeren. Til dette trenger vi en variabel, som tar vare på denne og viser resultatet på skjermen.

Steg 11 – test
På tide med ny test. Vi skal sjekke at den regner ut gjennomsnittet slik vi ønsker.
– registrerer spillet 10 resultater i listen?
– regner den ut gjennomsnittet? stemmer resultatet?
Steg 12 – finne min og max reaksjonstid
Vi bruker resultatene i listen til å finne den raskeste og tregeste reaksjonstiden. Til dette lager vi en egen funksjon som vi kaller min og max, og som vi kaller etter at vi har funnet gjennomsnittet.
Vi trenger to variabler til min og max, og disse skal vises. Vi setter variabelen max til null, slik at alle verdier senere vil være høyere enn den første. Tilsvarende setter vi min til til 1000, slik at alle verdier senere vil være mindre.

Vi arbeider oss deretter gjennom listen og henter ut et og et element, akkurat slik vi gjorde på gjennomsnittet. Hver verdi sjekkes mot min og max for deretter bytte ut dersom den er større enn max og mindre enn min.

Steg 13 – test
På tide med en siste test. Vi skal sjekke at den finner min og max slik vi ønsker.
– finner den raskeste reaksjon?
– finner den tregeste reaksjon?
– vises resultatene på skjermen?
En variant av programmet kan du prøve på https://scratch.mit.edu/projects/593079173
Differensiering
– dette programmet er låst på 10 repetisjoner. Kan du legge inn en variabel som gjør at du enkelt kan endre til 5 eller 20 repetisjoner?
– kan du få figuren til å dukke opp tilfeldige steder på skjermen? Hva skjer med reaksjonstiden da?
– om du har en MakeyMakey tilgjengelig, prøv å koble denne til og lag en «knapp» som du skal klikke på