Digitalt lärande och programmering i klassrummet Introduktionsworkshop - Bygg ett akvarium i Scratch
Introduktion Scratch är en programmeringsomgivning utvecklad av forskare på Massachusetts Institute of Technology (MIT) med målsättningen att göra programmering tillgängligt för barn redan från ung ålder. Scratch är en visuell programmeringsomgivning vilket innebär att man slipper fundera på komplicerade textkommandon. Istället jobbar man med att visuellt kombinera små funktionsblock som får datorn att göra olika saker. När funktionsblocken i Scratch kopplas samman skapar de enkla program. Programmering blir lite som att bygga med lego! Syfte Workshopen introducerar grundläggande programmeringsbegrepp och ger en snabb överblick på vilka möjligheter Scratch-programmet erbjuder till att arbeta med bild, ljud och rörelse. Exempelprojektet introducerar också en programmeringsmetod eller tradition kallad objektorienterad programmering. Vi illustrerar begreppet genom att använda kod för att bygga upp små karaktärer som kan interagera med sin omgivning. Innehåll Vi bekantar oss med: Sekventiell logik Hantering av händelser Slingor som styr rörelse, ljud och bild Villkorssatser Kloner 1! /! 9
! Instruktioner Kom igång Gå till scratch.mit.edu Skapa ett eget konto (om du inte har gjort det redan). Såhär ser Scratch-programfönstret ut! Till vänster ser du en förhandsgranskning på ditt spel samt alla delar som spelet består av: sprajtar och bakgrund. Till höger har du arbetsbordet. De blåa kanterna visar dig vilket objekt som är valt, alltså vad du har på arbetsbordet: En sprajt, eller En bakgrund Arbetsbordet ser olika ut beroende på om du arbetar med kod, bilder eller ljud. Du kan alltid välja mellan olika mellanblad för att komma åt de funktioner du vill jobba med. 2! /! 9
Bygg ett akvarium! Börja med att skapa en bakgrund som passar till ditt projekt: Ny bakgrund: Välj bakgrund från biblioteket Lägg till några fiskar eller andra passliga vattendjur: Ny sprajt -> Välj sprajt från biblioteket Lägg också till några växter som du ritar själv: Ny sprajt -> Rita ny sprajt Flytta omkring sprajtarna så att du är nöjd med hur de ser ut på skärmen. Om du vill kan du förstora eller förminska dem så de passar in bättre. Du kan också radera sprajtar du inte längre vill använda: Radera sprajt! Förstora sprajt! Förminska sprajt! 3! /! 9
! Ge liv åt ditt akvarium! För att få liv i ditt projekt måste du programmera beteende åt dina fiskar. Det gör du genom att kombinera funktionsblock som beskriver dels vilka händelser sprajtarna ska reagera på och också vad de då ska göra. Välj mellandbladet SCRIPT Du kommer att märka att blocken är olika beroende på om du har en sprajt eller bakgrund vald Eftersom vi har olika figurer ska vi vara noga med att vi definierar rätt funktion till rätt karaktär. Simmande fiskar Vi börjar med att definiera beteende åt fiskarna så att de kan simma runt. Scratch-program är händelsebaserade vilket innebär att alla programsnuttar ska börja med en händelse som programmet reagerar på för att börjar göra något. Här använder vi när gröna flaggan klickas på men det finns många olika händelser att välja emellan, bland annat tangentslag och input från musen. Allt vi vill att ska utföras i samband med en händelse ska vi koppla fast under själva händelseblocket. Vi ger sprajten i instruktion att gå 100 steg. När vi trycker på gröna flaggan utförs uppgiften en gång, sedan är programmet färdig. 4! /! 9
För att skapa kontinuerlig rörelse behöver vi använda en kontrollstruktur som håller igång rörelsen efter att händelsen har tagit slut. Genom att använda oss av slingor kan vi styra rörelsen så att den pågår en längre tid. I det här fallet använder vi en för alltid -slinga för att garantera att rörelsen pågår tills spelet stoppas. Vi ser också till att studsa vid kanten så att rörelsen fortsätter efter att karaktären har nått spelets kant. Slutligen kan vi vända karaktären en aning så att rörelsen blir intressantare. Vi ställer också in rotationsstilen till vänster-höger så att inte karaktären hamnar upp-och-ner när den studsar vid kanten. Nu kan vi skapa liknande sim-mönster åt alla våra fiskar. Hur kan du variera deras sim-mönster? Kanske de simmar olika hastighet? Testa vad som händer om du skulle placera rotationen inuti för alltid -slingan! Animerade alger Nästa beteende vi ska skapa är att animera våra alger. För att skapa illusionen av levande bild vill vi växla mellan olika bilder - är bilderna något lika varandra uppstår intrycket av rörelse. Gå in på din alg och kopiera klädseln för att skapa två klädslar, eller rita en till klädsel inuti samma sprajt: Ny klädsel -> Rita ny klädsel Så fort du har mer än en klädsel i en sprajt kan du skapa en animation genom att växla mellan de olika klädslarna. 5! /! 9
!! För att bläddra igenom klädslarna behöver du en händelse och en slinga som ser till att sprajten ständigt byter till nästa klädsel. Datorn är väldigt snabb med att utföra uppgifter. Får den arbeta i egen takt blir det ofta för snabbt. För att sakta ner takten kan du lägga till en vänta-instruktion som ser till att datorn stannar upp en stund efter varje byte av klädsel. Testa vad som händer om du lägger till bildeffekter samtidigt som du byter klädsel.. 6! /! 9
Bubbligt bakgrundsljud På samma sätt som vi kan välja färdiga bakgrundsbilder och sprajtar så har Scratch också ett stort urval färdiga ljudfiler som kan användas i projektet. För att skapa mera stämning till vårt projekt använder vi oss av ett bakgrundsljud. Det kan vara musik eller ljudeffekter, men var noga med att använda en ljudfil som tål att spelas om och om igen. Också här använder vi oss av en händelse och en slinga. Inuti slingan ska vi spela ljudet tills färdigt. Vad händer om du väljer blocket som bara heter spela ljudet? Flera fiskar! En av fördelarna med objektorienterad programmering är att vi kan skapa och styra ganska så komplicerade beteendemönster genom att definiera hur de enskilda objekten eller karaktärerna ska bete sig. Nu ska vi låta fiskarna föröka sig, så vi till slut får hela akvariet fullt! Istället för att beskriva varje enskild ny fisk räcker det med att vi beskriver reglerna som styr hur och när nya fiskar blir till - sedan kan vi låta datorn göra resten av jobbet. I vårt program finns en fisksort som kan föröka sig om den träffar på en lämplig partner. Vi måste därför definiera hur mötet mellan de två fiskarna går till. Det första vi måste se till är att fiskarna vet om ifall de har kommit i kontakt så att de kan reagera på situationen. 7! /! 9
! Om-då-blocket låter oss skapa en villkorssats för att avgöra vilket av två olika händelseförlopp som gäller: Om de två fiskarna rör vid varandra ska vi skapa en ny fisk. Om inte fiskarna rör vid varandra ska vi fortsätta som normalt. Som villkor använder vi en sensor som kan berätta åt oss ifall fisken just då rör en lämplig partner. Nu gäller det bara att definiera precis vad som ska hända när fiskarna möts. Genom att skapa kloner kan vi låta fiskarna göra kopior av sig själva. Slutligen ska vi se till att den nya klonen ärver allt beteende från sin förälder. Då kommer också den nya fisken att simma, studsa vid kanten, och föröka sig - precis på samma sätt som sin förälder. Den nya klonen kan inte reagera på gröna flaggan som normal är det första en sprajt gör (för när gröna flaggan klickades fanns klonen inte ännu!). Istället kan vi använda en annan händelse som utförs den stunden som klonen blir till: när jag startar som klon. 8! /! 9
Nu innehåller fisken all kod som behövs: Koden under [när gröna flaggan klickas på] beskriver vad fisken själv gör och hur (i vilka situationer) den förökar sig. Koden under [när jag startar som klon] beskriver vad fiskens alla barn gör och hur (i vilka situationer) de förökar sig. Övningar Bygg ett akvarium med fiskar och växter. Använda färdigt bildmaterial som du hittar i Scratch, eller rita egna bilder. Ge liv åt ditt akvarium. Skapa rörelse, lägg till ljud och animationer. Experimentera med olika rörelsemönster och bildeffekter. Skapa massvis med nya fiskar. Låt fiskarna föröka sig och fyll ditt akvarium med nya fiskar. Experimentera med att låta olika fiskar föröka sig med varandra. 9! /! 9