07 desember, 2021

"Pro tip": Lagre tekst på Scratch sine servere

Når ein registrerer seg på Scratch kan ein laga prosjekt der ein brukar variabler som høyrer til ein bestemt figur, eller til alle figurane. Omtrent som lokale og globale variable, altså. Men når ein har bidratt litt i Scratch-miljøet (litt uklårt nøyaktig kor mykje ein må bidra) så blir ein ganske raskt oppgradert til "Scratcher", som da får tilgang til ein ny type variablar,  nemlig skyvariablar. Desse blir lagra på servarane til Scratch slik at dei typisk kan brukast til dømes for å lagre highscore i eit spel ein har laga. Ein kan kun lagra tal, ikkje bokstavar eller lister. Men for ei datamaskin er det jo egentlig ikkje så stor skilnad på korleis ein bokstav eller eit tal er lagra - via ein ASCII-tabell kan ein jo omsete alle teikn til tal og tilbake. 

Hugsar ein tilbake til dei gamle arkadespela (Pac-man, Space Invaders og alt det der) så var det alltid slik at ein berre kunne lagre tre bokstavar som namnet sitt når ein fekk highscore. Dette kan vi få til i Scratch med eit lite omsetingsskript.  

For å kunne omsete att og fram brukar vi ei liste med bokstavane A-Z og ei liste med samsvarande ASCII-kodar. Slike tabellar med ASCII-kodar finn ein lett ved eit google søk, til dømes her: https://www.asciitable.com/ . Vi lagar to slike lister i Scratch, som på biletet:


I prosjektet blir brukaren spurd om tre bokstavar, og taktikken er at desse skal lagras i eitt og same tal. For å få alle tre ASCII-kodane inn i eitt tal finn vi først koden for den første bokstaven og gangar den med 1000000 (ein million). Så legg vi til koden for den neste bokstaven ganget med 1000 og så den siste koden. Da vil vi få eit nisifra tal, der dei første tre gir den første bokstaven, dei neste tre den andre bokstaven og dei siste tre den tredje bokstaven.





Dette talet lagrar vi så i ein skyvariabel. På biletet ser du at variabelen inneheld talet 216 072 076.



Dette talet er altså ei omseting av tre bokstavar, men som no kan lagrast i ein skyvariabel. Du kan jo sjølv slå opp i ASCII-tabellen for å sjå kva det står der. For å få tilbake det opprinnelige namnet (altså dei tre bokstavane) må vi plukke frå kvarandre dette talet og slå opp i lista over ASCII-verdiar igjen. 



For å få den første bokstaven må vi første kvitte oss med dei seks siste desimalane for å kunne få talet 216. Da deler vi først på 100000 og tek heiltalet (modulo) av det. Trekker vi dette frå det opprinnelege talet står vi igjen med 216 000 000. Da kan vi dele dette på ein million for å få 216. Så slår skriptet opp posisjonen av 216 i ASCII-lista, og ser at der står det 28. Til slutt finn vi det 28. elementet i den alfabetiske lista, som gir oss Ø. Tilsvarande gjer vi for dei neste to siffergruppene og sett saman resultatet for å få dei tre initialene. Skulle ikkje forundre meg om det er ein kar ved namn Øyvind som har fuska seg til highscore her.

Det er nok fleire måtar å forbedre dette skriptet på, slik eg gjorde det her er kun henta frå hukommelsen frå eit snart tredve år gammelt programmeringskurs. Mulege forbedringar av dette highscore-konseptet er at ein kan bruke tre nettvariabler for dei tre bokstavane for å gjere det litt mindre matematisk komplisert å omsete mellom tal og bokstavar. Treng ein forresten å halde seg til ASCII-kodar? Ein kan jo like gjerne dikte opp sine eigne kodar for dette. Ein kan sjølvsagt lagre lengre ord, men det blir fort ganske omstendelege scratch-kodar om ein skal skrive det ut i ei snakkeboble. Derfor vil det nok trenges eit lurare triks om ein skal skrive lengre ord. Det er vel og ei grense på kor mange skyvariablar ein kan bruke i eit prosjekt. 

Sjå inni prosjektet under for å sjå korleis dette fungerer:

 

16 november, 2021

Median

 I dette prosjektet tenkte eg å vise korleis ein kan bruke Scratch til å lage ein slags animert forklaringsvideo. Kombinasjonen av lav inngangsterskel og mange muligheter gjør at Scratch er godt eigna til slike ting, og med større fleksibilitet enn til dømes PowerPoint eller tilsvarende. 

Her er det ingen interaksjon med brukeren, det er berre Scratcy som teiknar og forklarer korleis einn finn median i eit datasett. Datasettet har forskjellig storleik og forskjellige dataelement kvar gong prosjektet køyrast.

09 november, 2021

3D puslespel del 2

Nevnte på ein tidlegare post at ein kan lage det fantastiske (ja, for det er det nemlig!) tredimensjonale puslespelet ved hjelp av origami. Ein kan sjølvsagt ta det vidare og lage ei massiv utgåve i plast, no når ein har 3d skrivarar tilgjengelege i mange skular. Mange har vel og kjøpt slike privat. 

Slik ser mitt puslespel ut i 3D-printa versjon:


Her har eg printa ein open kube, fire pyramider og eit regulært tetraeder. No kan ein vel kalle pyramidene tetraedere og, men dei er ikkje regulære i dette høvet. 



Det ein kan tenkje på når ein skal printe desse formene er at sjølv om matematikken er eksakt så må ein bruke avrunda verdier i printinga. I tillegg er nok ikkje printarane nøyaktige nok (iallfall ikkje min) til at det blir heilt perfekt uansett. Så eg måtte slipe til litt ekstra etter printing, og i tillegg akseptere at det stakk ein millimeter opp av kuben når alt var plassert inni. Litt prøving og feiling må nok til.

28 oktober, 2021

3D-puslespill del 1

Eg har alltid hatt sansen for papirbretting (origami) og fått mykje matematisk å tenkje på i arbeid med origami-figurar. Til dømes har eg ofte brukt fugletetraederet i første økt med lærarstudentar da denne figuren har gitt oss mykje matematikk å prate om. Den er fin til å få nye studentar til å snakke saman og til å tenkje matematisk, kanskje på litt uvant måte og. Du kan lese om denne i (Gjøvik, 2005) eller (Gjøvik, 2012). Medan eg satt og laga teikningar av korleis ein skulle gå fram for å brette fugletetraederet kom eg over ei liknande origami-oppskrift. Fugletetraederet er bygd opp av to pyramider, og om ein lagar fire slike pyramidar, og eit regulært tetraeder så klakker dette saman heilt nøyaktig til ein kube. Dette høyres kanskje korkje logisk eller imponerandes ut, men om ein ser for seg dei fem formene, så kan det vera vanskeleg å tru på at dette får plass oppi kuben. Prøv sjølv, brett eska, tetraederet og dei fire pyramidane og sett saman! Du kan finne bruksanvisninga her i pdf (den er litt endra frå det formatet den opprinneleg fantes i på nettet):


Du treng fire pyramidar som dette:

Så treng du eit tetraeder som du lager av to ark på denne måten:
Og så treng du til slutt ei eske å stappe dei fem andre figurane oppi. 


Gjøvik, Ø. (2005). Fugletetraederet. Tangenten, 2005(2), 40–45.
Gjøvik, Ø. (2012). Flying Higher with the Bird Tetrahedron. Mathematics Teacher, 106(1), 16–21.

27 oktober, 2021

Øvelse i gjenkjenning

Brukar du Scratch, har du ei grei mulegheit til å lage øvingsopplegg til elevane dine der ein skal kjenne igjen bestanddeler av kjende figurer eller situasjonar. Til dømes kan det dreie seg om å identifisere/kjenne igjen alle formane for firkantar som vi har, dei forskjellige delane av ei celle eller sette namn på religiøse symbol eller planetane i Melkeveien. Med Scratch kan du legge inn bilete av det du vil det skal handle om, for så å legge til knappar på kvar del som kjennast igjen. Når eleven trykker på knappen kan hen få lese opp med lyd eller tekst kva delen heiter. Her er eit døme der eg har lagt inn dei nye fylka i Noreg. Kan du alle desse? Vel, det er kanskje eit retorisk spørsmål no når dei ser ut til å skifte ut fylka våre med kvar ny regjering, men pr. oktober 2021 er det iallfall desse som gjeld! :)

Kartet er henta frå Wikipedia og i kvart fylke kan du trykke på knappen for å få namnet på fylket lese opp. Eg har brukt tillegg "tekst til tale" slik at figurane i Scratch får mulegheit til å prate. Om du vil kan du la elevane lese inn det som skal seiast og heller spele det av som lydfiler. Det kan kanskje gi ytterlegare ein slags eigarskap til prosjektet.

Tekst-til-tale-tillegget kan også være kjekt å vite om, viss du skal jobbe med til dømes gloseprøver i engelsk, eller kanskje spansk?