programmering Åk 7-9 - skelleftea.se och kulturkontoret/innehallssidor... · stor fördel med...

72
-Programmering i Kojo Programmering Åk 7-9

Upload: donhu

Post on 13-Sep-2018

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

-Programmering i Kojo

Programmering

Åk 7-9

Page 2: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Innehåll

2

o Lärarhandledning till programmering i Kojo……………………………………….o Vad är Kojo?...........................................................................................................o Varför Kojo?...........................................................................................................o Installera Kojo………………………………………………………………………………………………o Hur ser det ut?.......................................................................................................o Grundläggande begrepp………………………………………………………………………………o Programmeringskoncept i Kojo……………………………………………………………………o Styra sköldpaddan……………………………………………………………………………………….o Pixel……………………………………………………………………………………………………………..o Kommandon och program…………………………………………………………………………..o Experimentera……………………………………………………………………………………………..o Sekvens…………………………………………………………………………………………………….....o Osynligt och synligt………………………………………………………………………………………o Färg………………………………………………………………………………………………………………o Lista över kommandon i Kojo………………………………………………………………………

o Övningar till programmering i Kojo…………………………………………………….o 1. Samtalsövning: begrepp och ord……………………………………………………………..o 2. Rita en kvadrat…………………………………………………………………………………………o 3. Rita en trappa…………………………………………………………………………………………..o 4. Gör en loop………………………………………………………………………………………………o 5. Färglägg din loop……………………………………………………………………………………..o 6. Rita en figur……………………………………………………………………………………………..o 7. Spåra programmet………........................................................……………………….o 8. Hur snabb är din dator?...........…………………………………………………………………o 9a-9b Vinklar………………………………………………………………………………………………..o 10. Koordinater (x, y)……………………………………………………………………………………o 11. Koordinater och vinklar………………………………………………………………………….o 12. Upptäck mer med loopar……………………………………………………………………….

s4s5s7s8s9s13s14s15s16s27s21s22s23s24s27

s29s30s31s32s33s34s36s37s38s39s41s42s44

Page 3: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

3

o 13. Geometriska former med 3 dimensioner.………………………………………………o Quiz 1.……………...………………………………………………………………………………………….o 14. Beräkningar……………………………………………………………………………………………o 15. Variabel............................................................................................................o 16. Cirkelns area....................................................................................................o 17. Typ (type)……………….………………………………………………………………………………o 18. Logiska uttryck………………….……………………………………………………………………o 19. Alternativ med if………..…………………………………………………………………………..o 20. Skillnaden mellan val och var………………………………………………………………..o Quiz 2…………………………….…………………………………………………………………………….o 21. Definiera………………………………………………………………………………………………..o 22. Gör din egen funktion….…………………………………………………………………………o 23. Stapla kvadrater …………………………………………………………………………………...o 24. Gör en stapelfunktion…………………………………………………………………………...o 25. Gör ett rutnät…….…………………………………………………………………………………..o 26. Funktion och parameter......................................................……………………….o 27. Kvadrat med parameter…………………………………………………………………………o 28. Rita ett kvadratansikte……………………………………………………………………………o 29. Rita en polygon………………………………………………………………………………………o 30. Rita många polygoner…………………………………………………………………………….o 31. Vektorer…………………………………………………………………………………………………o Fortsätt med fler övningar och uppdrag………………………………………………..o Svar till Quiz 1 och 2…………………………………………………………………………………….

Lärarhandledningen är inspirerade av Lalit PantÖvningarna: 2,3,4,6,7,8,16,18,20,21,22,23,24,25,26,27,28,29,30,31 är bearbetningar från ”Uppdrag med Kojo” av Björn Regnell

s45s47s48s49s51s52s53s54s56s57s58s59s60s61s62s63s64s65s66s67s68s69s71

Page 4: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

4

Lärarhandledning tillProgrammering i Kojo

Page 5: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Kojo är ett hjälpmedel för programmeringsundervisning och bygger på det moderna och kraftfulla programspråket Scala. Vid programmering i Kojo används alltså ett riktigt programspråk. Det är en öppen källkodsapplikation som körs på Windows, Mac och Linux. Kojo är en lärandemiljö med många olika funktioner inom områdena programmering och datalogiskt tänkande vilket ger möjligheter till att arbeta med ett flertal aspekter av:

• matematik och teknik • systematiskt och analytiskt tänkande• konst, musik och kreativt tänkande • problemlösning • elektronik och robotik • dator - och Internet-litteracitet

Applikationen har utvecklats för att ge elever en miljö där de själva kan påverka lärandet på ett interaktivt sätt, genom att undersöka och upptäcka. Kojo innehåller ett lättanvänt programbibliotek för att rita bilder med hjälp av en programmerbar sköldpadda.

Genom egen utveckling av program som styr sköldpaddan, till exempel med instruktionerna ”fram”, ”vänster”, ”cirkel”, ”färg”, ”hoppa”, illustreras allmängiltiga programmeringsprinciper.

Vad är Kojo?

5

Page 6: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Du kan tänka dig Kojo som en plats och utrymme för att öva olika färdigheter.

• Ett gym – där du kan utöva din hjärna.

• En studio/ateljé – där du kan vara kreativ och skapa målningar.

• Ett labb – där du kan experimentera med matematiska och vetenskapliga idéer.

I gymmet tränar du det du redan har en uppfattning kring men du ges också möjlighet att utmana dig själva och utveckla nya sidor. Ett gym kan vara upplagt för individuell träning men också för gruppaktiviteter. När det gäller programmering är det en ganska vanligt scenario att parprogrammera, det ger goda möjligheter till samarbete och mer ”input” men också bra vid felsökning och att slutföra olika projekt.

När du vanligtvis går in i en studio/ateljé så kanske du är van att måla med färg och penslar på en duk eller på papper. I Kojo skall du istället med hjälp av programmering rita och måla upp bilder i datorn. Här finns det möjligheter till att låta kreativitet ta stor plats för att tänka fritt och skapa. När du skall skriva kod och utföra ditt verk så behöver du också tänka linjärt.

I ett labb ges du ofta tillfälle att experimentera och utföra laborationer. Likaså i Kojo och här handlar det om att experimentera med olika värden och lösningar. Se Kojo som ett virtuellt labb där du har möjlighet att laborera och testa olika idéer. Matematik blir ett tydligt inslag direkt du börjar skriva kod och den visuella sidan (sköldpaddan som ritar) ger grund till en förståelse av geometriska former och

dess förutsättningar.

Vad är Kojo?

6

Page 7: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Varför skall du använda Kojo för att lära dig programmera? Några goda incitament är följande:

• Det har en öppen källkod

• Det är gratis och fritt tillgängligt.

• Det går att skriva kod på svenska

• Det bygger på ett kraftfullt programspråk med låg ingångströskel

• Det finns få begräsningar hur långt du kan ta olika projekt.

Varför Kojo?

7

”En stor fördel med Scala jämfört med till exempel Java är att Scala harså kallad typhärledning, vilket innebär att kompilatorn (det programsom tolkar koden du skriver och gör om den till maskinkod som datornkan köra) är smart nog att lista ut en hel del saker som du därmedslipper att skriva.

Kompilatorn förstår om du vill ha ett heltal, en textsträng eller ettdecimaltal då du använder dessa utan att du även måste skriva ettspeciellt typnamn som i Java och många andra äldre språk.”(Björn Regnell, Professor vid Institutionen för datavetenskap, Lunds Universitet)

Page 8: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Lärare kan installera Kojo via Tjänsteportalen

Eleverna går ut på nätet och hämtar hem det och installerar: Kojo

De väljer att ladda ner programvaran för Windows

Installera Kojo

8

Page 9: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

När du startar Kojo, ser du en sköldpadda som är placerad nära mitten av skärmen i ett fönster som heterRitfönstret. Dina program instruera sköldpaddan att göra saker. Du kan instruera den att flytta sig framåt och ritaen linje när den gör det. Du kan instruera den att vända vänster eller höger. Du kan instruera den att ändra färg påde linjer som den ritar och färg på de former den färglägger. Allt detta kan användas för att skapa intressanta ochdetaljerade bilder. I nedre vänstra hörnet hittar du arbetsytan som kallas Skripteditor, det är där som du skriverdina program (eller skript, som är små program). Skripteditorn har ett verktygsfält med knappar som snabbt låter digutföra de flesta av de grundläggande saker som du behöver göra i Kojo: köra program, spåra program, felsöka dinaprogram etc. Nere till höger är Utdatafönstret. Där ger Kojo dig informativa meddelanden och ger dig en guide föreventuella misstag som du gör i dina program. Det ger dig också möjlighet att skriva ut resultat från dina program.

Hur ser det ut?

Ritfönstret

Skripteditor Utdatafönster

9

Page 10: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Knappen Kör skriptet – kör ditt skript/program, dvs innehållet i Skripteditorn. 2. Knappen Kör och visa värde – skriptet körs och värden visas efter varje rad3. Knappen Spåra skript – spårar ditt skript, för att låta dig se rad för rad vad ditt program gör4. Knappen Stoppa skript – avslutar ett skript som körs. 5. Knappen Kolla efter fel – hjälper dig att exakt lokalisera fel i stora skript. 6. Knappen Föregående – går tillbaka till det senaste kommandot/skriptet som du körde.7. Knappen Nästa – tillsammans med knappen föregående, kan du flytta fram och tillbaka inom din

kommando/skript-historik. 8. Knappen Sudda – rensar Skripteditorn, vilket gör det enkelt för dig att börja skriva en ny kod9. Knappen Ladda upp kod – låter dig ladda upp din kod till Kojo Exchange Server, så att andra kan ta

del av din kod10. Knappen Sudda utdatafönstret – rensar utdatafönstret vilket gör det enklare att se utdata för

skript som körs efter det du just arbetat med

1 2 3 4 5 6 7 8 9 10

Hur ser det ut?

10

Page 11: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Hur ser det ut?

Experimentera med att med panorera över arbetsytan, och zooma in och ut. Panorera gör du genom att dra i den vita duken i ritfönstret. Zooma in/ut genom att använda musens rullhjul.

Du kan återställa panorering och zoomning genom att högerklicka på arbetsytan och klicka på ”Nollställ panorering och zoom.

11

Zooma-in genom att föra rullhjulet framåt (från dig)

Zooma-ut genom att föra rullhjulet bakåt(mot dig)

”original-storlek”Panorera genom att använda vänster-klick och dra i ritfönstret med muspekaren (dra-och-släpp)

Återställ genom högerklick och ”Nollställ panorering och zoom”

Page 12: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Hur ser det ut?

Om vi jämför med ett annat programmeringsupplägg som bygger på blockprogrammering så ser det annorlunda ut, du behöver skriva kommandon med hjälp av text. Nedan ser du hur ett skript ser ut i Scratch (blockprogrammering) och hur samma skript skrivs i Kojo

12

Page 13: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Grundläggande begrepp

Här följer en lista på några grundläggande begrepp inom programmering som du kommer att arbeta med när du programmerar med hjälpa av Kojo. Dessa är bra att redan från början tänka och samtala kring för att inte fastna i enskilda begrepp. Begreppen bygger tillsammans upp SARA Sekvens Alternativ Repetition Abstraktion och är den grund man behöver för att förstå.

Algoritm: beskrivning hur man löser ett problem (ett slags recept)– Sekvens: göra saker steg för steg– Iteration: upprepa vissa steg ett givet antal gånger– Alternativ: välja nästa steg beroende på variablers värde

Abstraktion– Funktion: en del av ett program som har fått ett namn och som kan återanvändas gång på gång– Parameter: ger olika värden som påverkar vad funktionen ger för resultat– Variabel: plats i datorns minne för värden som kan ändras, tänk att det är en ”låda” som du fyller med ett innehåll. Innehållet kan sedan förändras. – Objekt: en del av ett program som sammanför och kapslar in funktioner och variabler– Klass: kod som beskriver många objekt av samma typ

Uppdragen i Kojo börjar med: sekvens, repetition, funktion, parameter.

13

Page 14: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

De mest grundläggande programmeringskoncepten i Kojo är:

• Instruktioner, rad för rad • Variabler • Iteration (loop) • Villkor • Funktion

De flesta aktiviteter i början av lärarhandledningen innehåller fullständigt definierade program och en bild av vad programmen kommer att utföra. Uppmuntra eleverna till eftertanke och samtal kring vad de gör och vad programmet kommer att innebära. Vissa aktiviteter innehåller ofullständig program, som eleverna får fundera kring själva och försöka lösa med den kunskap de har fått med sig. Det ger goda möjligheter till samarbete där eleverna tar hjälp av varandra och försöka lösa uppgifter tillsammans.

Vid varje steg, uppmuntra:

• utforskande, upptäckande och en känsla av lek. • uthållighet inför oväntade resultat och nyfikenhet att räkna ut vad som gick fel. • reflektion och diskussion om vad de lärt. • hitta egna vinklar och idéer: det viktigaste är inte att slutföra alla aktiviteter. Men ge tid att gå

in på djupet för att skapa en reell förståelse.

Programmeringskoncept i Kojo

14

Page 15: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

För att få en uppfattning om hur sköldpaddan rör sig så kan du börja med att välja ”Styra paddan” under fliken ”verktyg”.

Du kan sedan trycka på de olika fälten som dyker upp i ritfönstret och se hur sköldpaddan rör sig utifrån det du trycker på. Här är det dock på Engelska.

Styra sköldpaddan

15

Page 16: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Pixel

16

I det här materialet kommer du att skapa en hel del digitala bilder med hjälp av programmering. För att förstå hur digital bildbehandling och bildskärmar fungerar så är det bra att känna till begreppet pixel, ibland även kallat bildpunkt. En digital bild är uppbyggd av många små kvadratiska rutor som var och en är enfärgad. Tillsammans bildar de en mosaik som lurar vår hjärna att tro att det är en sammanhängande bild. En pixel är den minsta byggstenen som programmet/spelet kan använda i den upplösningen du kör, pixlarna blir då större desto lägre upplösning. Pixlar kan också användas som en måttenhet. Det används som måttenhet vid beskrivning av en skärms eller en bilds upplösning, exempelvis 1280×720. Om du zoomar in tillräckligt i en bild så kommer du att se pixlarna.

När det gäller digitala bilder och kameror så handlar det ofta om miljontals pixlar. En miljon pixlar är en megapixel. En kamera i en smartphone har ofta 10 megapixlar eller mer. Om du tar en bild som är rektangulär och har 4000 X 3000 pixlar så är det 12 miljoner pixlar, 12 megapixlar. Att ha en bild med 12 megapixlar är överdrivet om det handlar om att visa på nätet eller infoga i ett dokument. Då är det smidigt att minska ner antalet pixlar, dvs göra bilden mindre.

Datorn räknar ut vilka pixlar som kan tas bort utan ögat märker någon större skillnad, om du väljer ett allt för lågt antal kommer ögat/hjärnan att notera det. Bilden kan då upplevas grovkornig. Om du skall framkalla en bild eller skriva ut den så behåll dess orginalstorlek, du kommer då att få en mer högupplöst bild. Bildbehandlingsprogram ser inte din bild som just en bild utan ett stort antal ettor och nollor beroende på pixlar och färg.

Page 17: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Dessa inledande aktiviteter innebär följande:• Lära sig om kommandon, åtgärder och program. • Lära sig att rita linjer med sköldpaddan.

• Lära sig några kommandon: sudda, fram, höger, vänster, båge och cirkel • Utforska längdenhet, avstånd och rät vinkel, och använda dem för att göra en fyrkantig geometriskt figur. • Hitta fel i koden

Steg 1. Skriv in följande kod i Skripteditorn och kör den:

fram(100)

Frågeställning 1: Vad gör sköldpaddan? Rör den sig? Hur mycket? I vilken riktning?

Kommandon och program

Steg 2.Rensa raden du gjorde i ritfönstret i föregående steg genom att högerklicka på arbetsytan i ritfönstret och trycka på Sudda.

Du kan också ta bort din kod i Skripteditorn genom att trycka på knappen ”sudda”

17

Page 18: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Frågeställning 2b. Vad tror du kommandot fram gör? Vad gör värdet du satt inom parentes (200)?

Obs! När du blir ombedd att räkna ut vad ett kommando gör så kan du gärna starta en Kojo Scratchpad (genom > Ny extra Kojo) för att experimentera med olika värden till kommandot. En Kojo Scratchpad är en ny instans av Kojo för att testa och räkna ut saker när du arbetar med en aktivitet inuti Kojo. Tänk lite som ett ”kladdpapper”

Steg 3.Rensa arbetsytan och Skripteditorn. Skriv följande kod och kör den:

höger() framvänster()

Frågeställning 3a. Vad tror du kommandot höger() gör?

Frågeställning 2a: Vad tror du kommandot gör? I vilken enhet visas sköldpaddans rörelse: cm, mm eller kanske i enheten Pixel?

Högerklicka på ritfönstret och bocka för ”visa axlar”

Skriv sedan i Skripteditorn

fram(200)

18

Page 19: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Steg 5 Rensa Skripteditor. Skriv följande kod och kör den. Men gissa först (innan du kör koden) vilken figur din programmering kommer att rita upp:

sudda()fram(100)höger() fram(100) vänster()

Frågeställning 5: Varför tror du att det är bra att börja med kommandot ”sudda”?

Steg 4Rensa Skripteditorn (men inte arbetsytan). Skriv följande kod och kör den:

sudda()

Frågeställning 4: Vad gör kommandot?

Steg 6 Rensa Skripteditorn. Skriv i följande felaktiga kod och kör den:

sudda()framY(100)

Frågeställning 6a: Vad berättar Kojo i utdatafönstret? Observera meddelandetsom Kojo visar dig när du anger ett felaktigt kommando.

Frågeställning 6b: Kan du hitta felet i din kod genom att använda meddelandet?. Kan du gå till raden i ditt program som har problem? Tips -Klicka på ”Locate error in script” i utdatafönstret

?

19

Page 20: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Steg 7Rensa Skripteditorn. Nu skall du rita en glad ”mun”Skriv följande kod och kör den:

sudda()båge(-90, 180)

Frågeställning 7a: Hur kan du förändra koden så att det blir en ledsen ”mun”? Frågeställning 7b: Vad tror du värdena inom parentesen står för?

Steg 8Rensa Skripteditorn. Nu skall du få sköldpaddan att rita en cirkelSkriv följande kod och kör den:

sudda()cirkel(100)

Frågeställning 8: Vad tror du värdet (100) står för när det gäller cirkeln?

Steg 9Rensa Skripteditorn. Nu skall du få sköldpaddan att flytta sig utan att rita. Skriv följande kod och kör den:

sudda()hoppa()

Frågeställning 9: Hur långt tror du att den hoppar? Använd ”visa axlar” för att få uppfattning.

20

Page 21: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

ExperimenteraExperimentera med de olika kommandon som vi hittills använt oss av.

suddafram()höger()vänster()båge()cirkel()

Om vi sätter in ett värde i parentesen vid höger och vänster så anger det hur många grader sköldpaddan skall vrida sig. Prova att förändra värden för olika kommandon och prova även att göra medvetna fel, för att få en bra överblick över vad som inträffar då och hur Kojo kan hjälpa dig att hitta och åtgärda felet

Om du vill att sköldpaddan skall flytta sig utan att rita så använder du kommandot: pennaUpp

När du sedan vill rita igen så skriv då:pennaNer

Ett enkelt program skulle kunna se ut så här:sudda()fram(50)pennaUppfram (50)pennaNerfram(50)

21

Page 22: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Sekvens

När du nu börjar att experimentera och prova olika kommandon och följder av kommandon så blir det viktigt att du tänker i vilken följd du skriver dessa instruktioner. Datorn kommer att utföra programmet olika beroende på vilken ordning du skriver kommandon, du skapar alltså en sekvens som datorn följer. Testa att använda samma kommandon men byt ordningsföljden på dessa, så att du får en förståelse hur du låter datorn utföra det just du vill. Nedan ser två olika exempel men med samma kommandon. Ordningsföljden innebär att det blir två helt olika scenarion.

sudda()fram(50)höger(90)fram (50)vänster(90)fram(50)

22

sudda()fram(50)fram (50)vänster(90)fram(50)höger(90)

Exempel 1. Exempel 2.

Page 23: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Osynligt och synligt

Om du vill rita upp former, figurer eller mönster utan att sköldpaddan syns vid själva ritandet så använder du kommandot:

osynlig

För att sedan göra den synlig igen använder du kommandot:

synlig.

Om du inte specificera att sköldpaddan skall vara osynlig så är den i grunden synlig, så du behöver inte alltid lägga till det. Men om du i samma program vill växla mellan osynlig och synlig så behöver du visa det för datorn. Två enkla program skulle kunna se ut så här:

sudda()osynligfram(50)höger(90)fram (50)höger(90)fram (50)

23

sudda()osynligfram(50)höger(90)fram (50)höger(90)fram (50)synlig

Page 24: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Färg

När du ritar upp former, figurer eller mönster så har du möjlighet att förändra färg på sköldpaddans ”penna”. Standard är röd. När du ritar med den pennan så ser linjen orange ut till sköldpaddan har genomfört det specifika kommandot och då ändras färgen till röd. Om du vill rita med andra färger så använder du kommandot

färg()

Inom parentesen så väljer du vilken färg du vill ha. Prova att byta till olika färger och se vilka du kan använda.

24

Du kan också blanda egna färger genom att högerklicka i skripteditorfönstret och ”välj färg”.

Page 25: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Färg

Välj sedan RGB. Nu kan du välja färg helt steglöst genom att föra muspekaren över färgfältet. Du kan även manipulera genom att dra i reglagen till höger eller förändra värden med de små pilmarkörerna för varje färg.

Du kommer att se vilken färg du valt i den nedre delen av färgväljaren. Där jämförs din färg mot den röda standardfärgen.

När du är nöjd med ditt val så trycker du på OK.

Titta nu i utdatafönstret. Där kommer ditt färgval upp och du kan nu använda den färgen för att rita i ditt program genom kommandot:

färg(Color(106,200,165))

Notera att din färgblandning skrivs som en egen parentes vilket gör att det blir en parentes inom parentesen, så du måste avsluta med två parentestecken.

25

Page 26: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Färg

När du programmerar och skapar grafiska bilder så kan du använda olika färger som ett led till att skapa mer komplexa verk. När det gäller bakgrunder så finns kommandot:

bakgrund()

Inom parentesen så skriver du in den färg du önskar. Som i exempel 1. Om du vill att din bakgrund skall gå över i en annan färg så väljer du kommandot:

bakgrund2()

Då väljer du att skriva två färger inom parentesen med ett kommatecken mellan. Som i exempel 2. Testa att byta plats på dina färgval och se vad som händer.

Vill du rita upp figurer och former som är fyllda med färg så använder du kommandot:

fyll()

Och där skriver du in vilken färg du vill använda i parentesen.

26

exempel 1 exempel 2

Page 27: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

fram Paddan går frammåt 25 steg.fram(100) Paddan går frammåt 100 steg.höger Paddan vrider sig 90 grader åt höger.höger(45) Paddan vrider sig 45 grader åt höger.vänster Paddan vrider sig 90 grader åt vänster.vänster(45) Paddan vrider sig 45 grader åt vänster.hoppa Paddan hoppar 25 steg utan att rita.hoppa(100) Paddan hoppar 100 steg utan att rita.hoppaTill(100, 200) Paddan hoppar till läget (100, 200) utan att rita.

gåTill(100, 200) Paddan vrider sig och går till läget (100, 200). hem Paddan går tillbaka till utgångsläget (0, 0). home()öster Paddan vrider sig så att nosen pekar åt höger. väster Paddan vrider sig så att nosen pekar åt vänster.norr Paddan vrider sig så att nosen pekar uppåt. söder Paddan vrider sig så att nosen pekar neråt.mot(100,200) Paddan vrider sig så att nosen pekar mot läget (100, 200)

sättVinkel(90) Paddan vrider nosen till vinkeln 90 grader.vinkel Ger vinkelvärdet dit paddans nos pekar. sakta(5000) Gör så att paddan ritar jättesakta.skriv("hej") Paddan skriver bokstäverna "hej”.textstorlek(100) Paddan skriver med jättestor text nästa gång du gör skriv.

båge(100, 90) Paddan ritar en båge med radie 100 och vinkel 90. cirkel(100) Paddan ritar en cirkel med radie 100.synlig Paddan blir synlig. osynlig Paddan blir osynlig.läge.x Ger paddans x‐läge läge.y Ger paddans y‐lägepennaNer Sätter ner paddans penna så att den ritar när den går. pennaUpp Höjer paddans penna så att den INTE ritar när den går.

pennanÄrNere Kollar om pennan är nere eller inte.

färg(rosa) Sätter pennans färg till rosa.fyll(lila) Sätter ifyllnadsfärgen till lila. fyll(genomskinlig) Gör så att paddan inte fyller i något när den ritar.

bredd(20) Gör så att pennan får bredden 20. sparaStil Sparar pennans färg, bredd och fyllfärg.laddaStil Laddar tidigare sparad färg, bredd och fyllfärg. sparaLägeRiktning Sparar pennans läge och riktning.laddaLägeRiktning Laddar tidigare sparad riktning och läge.siktePå Sätter på siktet.sikteAv Stänger av siktet. sudda Ritfönstret suddassuddaUtdata Utdatafönstret suddas.bakgrund(svart) Bakgrundsfärgen blir svart.bakgrund2(grön,gul) Bakgrund med övergång: grönt till gult.utdata("hej") Skriver texten "hej" i utdatafönstret.val t = indata("Skriv")utdata("Du skrev:” + t) Väntar på inmatning efter ledtexten "Skriv". Det som användaren skriver matar in hamnar i värdet t. Därefter skrivs "Du skrev:" och t ut.

upprepa(4) {framvänster}Detta är en upprepning: paddan går fram och svänger vänster 4 gånger.

Lista över kommandon i Kojo

27

Page 28: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

def kvadrat = { upprepa(4) {framvänster}}

räkneslinga(4) { i =>utdata(i)}

var i = 1sålänge (i < 5) {utdata(i)}i = i + 1

slumptal(100) Ger ett slumptal mellan 0 och 99.slumptalMedDecimaler(100) Ger ett slumptal mellan 0 och 99.99999systemtid Ger nuvarande systemklocka i sekunder.räknaTill(5000) Kollar hur lång tid det tar för din dator att räkna till 5000.avrunda(3.99) Avrundar 3.99 till 4.0

Med en def kan du göra egna byggblock som då kan återanvändas:upprepa(4) {framkvadrat}

Detta är en räkneslinga som skriver ut 1, 2, 3, 4 på var sin rad iutdatafönstret. Räknaren i börjar på 1 och blir ett mer för varje runda.

Detta är en ”sålänge‐slinga” som gör samma sak som räkneslingan ovan.

Lista över kommandon i Kojo

28

Page 29: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övningar till Programmering i Kojo

29

Page 30: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Uppgift 1:

Uppgift 2:

Uppgift 1: Brainstorma kring begrepp och ord som har med programmering och digitalisering att göra.

Vilka begrepp och ord förknippar ni med datoreroch programmering. Skriv dessa i det högra fältetoch sök förklaringar till dem, via internet eller annankälla

Uppgift 2: Samtala vidare och resonera tillsammans

a) Kunskaper om språk och ord kan göra att vikänner oss delaktiga och tillhör en grupp eller ettsammanhang. Frånvaron av dessa ord och begreppkan göra att vi inte känner oss delaktiga. Fundera påen situation där just dina kunskaper om ord ochbegrepp runt ett område gjort att du känt digdelaktig , eller inte delaktig

b) Hur tror ni att kunskaper om begrepp och ord,som finns i programmering, gör att vi lättare förstårhur datorer fungerar? Beskriv hur ni tänker

c) Vad händer om vi inte vill lära oss om hur teknikoch programmering fungerar och bara ett fåtalpersoner kan det? Beskriv hur ni tänker

Övning 1Gruppuppgift

Samtalsövning: begrepp och ord

30

Page 31: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Rita en kvadrat med sköldpaddan.

Skriv i skripteditorn:

suddaframhöger

2. Om du skriver vänster eller höger så vrider sigPaddan utifrån det kommandot

3. Prova ditt skript genom att trycka

4. Utöka skriptet så att det blir en kvadrat,

Rita en kvadratÖvning 2

31

Page 32: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Rita en trappa med sköldpaddan.

Skriv i skripteditor-fönstret:

sudda()fram; vänsterfram; höger

2. Med semikolon ; mellan satserna kan du ha flerasatser på samma rad.

3. Prova ditt skript genom att trycka

4. Utöka skriptet så att det blir en trappa

Rita en trappaÖvning 3

32

Page 33: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Gör en loop med sköldpaddan.

Skriv i skripteditorn:

sudda()upprepa(4){ fram; höger }

2. Vad händer om du ändrar 4 till 100?

3. Prova ditt skript genom att trycka

4. Rita en trappa med 100 trappsteg

Gör en loopÖvning 4

33

Page 34: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Gör en loop

upprepa(4){fram; höger}

upprepa(4){framhöger}

två sätt att skriva en loop

Använd semikolon när du skriver flera koder på samma rad

Hur många ggr det skall upprepas

”Måsvingar” berättar var loopen börjar och slutar

1.

2.

En loop på flera rader

34

En loop på en rad

Page 35: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Färglägg din loop genom kommandot: fyll()

Skriv i skripteditorn:

sudda()fyll(grön)upprepa(4){ fram; höger }

2. Prova ditt skript genom att trycka

Färglägg din loopÖvning 5

35

Page 36: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Rita en figur 1. Rita en figur med sköldpaddan. Tips: prova olika kommandon exempelvis: hoppavänster(180)fram(300)hoppa(100)hoppaTill(25,-28)skriv(”hello world")färg(lila)fyll(grön)Rita en figur med dessa nya kommandon i åtanke

2. Du kan se paddans läge nere till vänster medan durör muspekaren over ritfönstret. Det är dessa du lägger in i kommandot hoppaTill()3. Prova ditt skript genom att trycka

Övning 6

36

Page 37: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Skriv ett program som ritar ett trappsteg.

1. Tryck på den orange-färgade play-knappen.

2. Klicka på ett av anropen: CALL fram. Vad händer i Ritfönstret?

3. När en del av programmet är markerad med blått körs bara denna del om du trycker play. Avmarkera genom att klicka bredvid markeringen.

4. Lägg till fler satser i ditt program och se vad somhänder när du spårar.

5. Stäng fönstret: Programspårning när du är klar.

Spåra programmetÖvning 7

37

Page 38: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Kör räknaTill(5000) och kolla om din dator är snabbare än 0.32 millisekunder.

2. Hur lång tid tar det för din dator att räkna till en miljon?

3. Hur långt hinner din dator räkna till på en sekund?

Den första elektroniska datorn hette ENIAC och kunde räkna till 5000 på en sekund.

I Kojo finns en funktion: räknaTill som mäter hur snabbt datorn kan räkna.

När du kör räknaTill(5000) på din dator så skrivs detta i utdata-fönstret: *** Räknar från 1 till ... 5000 *** KLAR!Det tog 0.32 millisekunder. (exempelvis)

Eniac

Hur snabb är din dator?Övning 8

38

Page 39: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Vinklar

Denna aktivitet innebär följande:

• Få sköldpaddan att röra sig i vinklar som inte endast är 90 °• Undersöka vinklar med tanke på invändiga och utvändiga vinklar i en triangel • Använda idén om kompletterande vinklar.

Övning 9a

39

1. Börja med att högerklicka i ritfönstret och visa gradskivan

2. Nu kommer det att se ut på det här viset i ditt ritfönster. När du vill se gradskivan, axlar eller linjal under hela programmets gång skall du inte börja med ”sudda()”. Det innebär att de försvinner direkt och du måste åter ta fram dem vid programmets slut. Det är därför bra att kopiera koden när du skrivit klart för att enkelt kunna klistra in den igen om du vill förändra den.

Page 40: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Nu skall du få sköldpaddan att rita en triangel:

vinkel

2. Skriv sedan:

fram(100)höger(120)fram(100)höger(120)fram(100)höger(120)

3. Hur kan du skriva en loop av sköldpaddans färd att rita triangeln?

VinklarÖvning 9b

40

Fråga 1.Hur tror du gradskivan kan användas för att mäta alla vinklar i bilden?, fundera innan du försöker svara på den. Obs! Du kan dra gradskivan att flytta runt den, och skift + dra om du vill rotera den. Om du zoomar in och förstorar ritningen blir det enklare att se och mäta vinklarna.

Fråga 2. Vad tror du att värdet för kommandot ”höger(120) anger?

Fråga 3. Vinklarna i en liksidig triangel är 60°. Varför används 120° för att göra den ovanstående liksidig triangeln?

Fråga 4. Hur är kommandon i övningen relaterad till inre och yttre vinklar i en triangel?

Page 41: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

41

Koordinater (x, y)

Ett koordinatsystem utgörs av två tallinjer som korsar varandra i sina nollpunkter. Ett annat ord för dessa linjer är koordinataxlar. I Kojo refereras de till som ”axlar”

Man kallar den vertikala koordinataxeln för y-axeln och den horisontella för x-axeln så om vi har ett värde på x t.ex. 20 så vet du att det är punkten där 20 finns på x-axeln. Det går lika bra att använda negativa värden, de kommer då att finnas på minus(-) koordinaterna.

Punkten där koordinataxlarna korsar varandra kallas origo, det är här tallinjerna har sin nolla.koordinatsystemet kan delas in i fyra rutor s.k. kvadranter – till dessa kan man hänvisa till när man t.ex. pratar om var någonstans en punkt ligger.

I bilden ovan ser du en punkt med värdena

X= 20Y= 20

I det här läget behöver du förstå vad X och Y står för i ett koordinatsystem.

X

Y

Origo

Övning 10

Page 42: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övning 11

42

Koordinater och vinklar

1. Börja med att högerklicka i ritfönstret och visa axlar och rutnät

2. Ta även fram gradskivan för att få en överblick över vinklar i förhållande till koordinater

Nu skall då få sköldpaddan röra sig mellan olika koordinater med hjälp av olika kommandon som relateras till vinklar.

1.

2.

Page 43: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

3. Börja med att vinkla sköldpaddan

sättVinkel(120)fram(200)

4. Fortsätt med

sättVinkel(0)fram(200)

5. Vilka två kommandon saknas för att slutföra triangeln som på bild 5?

Tänk på det du gick igenom med den liksidiga triangeln tidigare

Övning 11

43

3. 4.

5.

Koordinater och vinklar

Page 44: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övning 12

44

Upptäck mer med loopar

Steg 3. Figuren i steg 1 är stängd men inte i steg 2. Varför? Försök att förklara detta i termer av den totala vinkeln som sköldpaddan använder för att rita upp figuren. Vilket har att göra med vinkeln i ”höger” och antal upprepningar.

Fortsätt att laborera med koden i steg 1 och 2. Försök att avgöra vilka kombinationer av upprepning och vinkel skapar slutna respektive öppna figurer.

• Lära sig att använda ”upprepa” för att göra intrikata figurer. • Lära sig betydelsen av 360° för att att göra slutna figurer. • Tillämpa tanken på en minsta gemensamma nämnare att göra intressanta siffror.

Steg 1.Skriv in följande kod och kör den:

sudda() sakta(10) färg(svart) upprepa(9) {

fram(100) höger(80)

}

Steg 2. Skriv in följande kod och kör den:

sudda()sakta(10) färg(svart) upprepa(9) {

fram(100) höger(85)

}

Page 45: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

45

Geometriska former med 3 dimensioner

Ett rätblock är en tredimensionell åttahörnig geometrisk figur. Du kan tänka på den som en tegelsten. En kub är specialfall av ett rätblock då alla kanter är lika långa. En kub förhåller sig alltså till ett rätblock som en kvadrat till en rektangel.

Du har än så länge ritat upp geometriska former i ett 2-D-perspektiv. Nu skall du lägga till en tredje dimension så att du skapar ett djup på skärmen.

Du har stor nytta av det du gjort med gradskiva, axlar och rutnät. Ta fram dessa genom att högerklicka i ritfönstret som stöd när du skall fundera ut hur du skall kunna programmera fram ett rätblock. Testa också att skapa andra former: cylinder, kon, pyramid, kub eller andra former med 3 dimensioner

Övning 13

Page 46: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övning 13

46

Geometriska former med 3 dimensioner (rätblock)

I skriptet finns en början till ett rätblock men det saknas ett antal kommandon för att slutföra hela skriptet. Prova också att ändra färg på bakgrund och ”penna”

Page 47: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

47

Nu har du använt ett antal olika kommandon och börjat skriva kod. Det är nu dags att göra ett litet Quiz för att testa det du gått igenom så här långt. Försök att se vilken kod som hör till vilken figur nedan.

1.

2.

3.

4.

Quiz 1

Page 48: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övning 14

48

BeräkningarDen här övningen innebär att du kan använda programmering för att göra beräkningar. Du kan precis som med en miniräknare skriva in olika värden och räknesätt och sedan få datorn att räkna ut svaret. Symboler för räknesätt är: + (addition), - (subtraktion), * (multiplikation) och / (division)

Steg 1. Skriv in följande kod och kör den med ”Knappen Kör och visa värde”

20 + 2 20 - 2 20 * 2 20 / 2

Kojo visar dig resultatvärde på samma rad som uttrycket, efter en följd av avgränsningstecken / / > När ett program körs på det här viset, visas resultatet av varje uttryck i slutet av raden som innehåller uttrycket. Teckensekvensen / / > betyder: efter så kommer en kommentar för mänsklig kommunikation och Kojo kommer inte att ta med den i skriptet som körs. Dessa kommentarer är bra för att förklara för andra människor som skall använda eller arbeta vidare med skriptet.

Kojo följer matematisk standard. Vi kan se det genom att vi väljer samma heltal men vi boxar in delar med parentes. Skriv in följande kod och kör den genom ”Knappen Kör och visa värde”

5 + 2 * 8

(5 + 2) * 8

Page 49: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Tänk på variabler som en låda med en etikett som kan förpackas med ett innehåll. Sedan kan lådans innehåll relateras till på flera sätt under programmeringens gång. När du använder variabler behöver du bara ändra värdet på den på ett ställe, då ändras även värdet på andra ställen som variabeln hänvisar till.

Genom att deklarera variabeln med begreppet var kan du koppla ett namn till ett värde.

Exempel:var apelsin = 2apelsin = 2 + 2

Det innebär att först räknas apelsin (2) sedan adderas det med (2) och summan blir då 4

Uppdrag:Prova programmet nedan. Vad skriver sköldpaddan?

var a = 0suddaupprepa(10){a = a + 2fram; skriv(a)}

Övning 15

49

Variabel

Page 50: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Experimentera med några olika variabler så att du förstår hur du kan använda dem vid exempelvis beräkningar. Högerklicka i ”utdatafönstret” och välj ”Skriv ut alla resultat”.

var x = 5var y = 5var summa = x + y

När du skall köra du skripten använder du den ljusblå play-knappen”Knappen Kör och visa värde”

Testa även de andra räknesätten med samma variabler

var x = 5var y = 5var summa = x - y

var x = 5var y = 5var summa = x * y

var x = 5var y = 5var summa = x / y

Övning 15

50

Variabel

Page 51: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övning 16

51

Cirkelns area

Nu skall du räkna ut en cirkels area genom att skapa variabler som hjälper dig att utföra uträkningen. Du kommer att behöva skapa ett antal olika variabler och skriptet nedan hjälper dig igång. Försök att skriva så lite kod som möjligt och låt variablerna sköta arbetet.

3. När du sedan skall köra skriptet så gör det genom att använda den ljusblå play-knappen ”Knappen Kör och visa värde”

Fundera sedan: I vilken enhet kommer svaret ut? Kom ihåg att en pixel redan är en kvadrat

Hur kan du räkna ut arean på andra geometriska former med hjälp av programmering?

2. Högerklicka i ”utdatafönstret” och välj där att resultat skall skrivas ut

1.

Page 52: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

52

Typ (type)

Alla värden, variabler, konstanter, parametrar, etc. har en typ.

• Tre vanliga typer:– Int eller Heltal– Double eller Decimaltal– String eller Sträng

• Det finns många fler typer i Scala och Kojo• Man kan också göra egna nya typer• Typer anges efter kolon• I Scala slipper man ofta att ange typ eftersom kompilatorn gissar typ om den kan.

Övning 17

Page 53: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

53

Logiska uttryck

Ett logiskt uttryck är ett uttryck vars värde är true (sant) eller false (falskt). Sådan uttryck används huvudsakligen i så kallade villkors- och iterations-satser (t ex if- och for-satser) men förekommer bland annat även i tilldelningssatser.

Tecken Logisk betydelse

< Mindre än

> Större än

<= Mindre än eller lika med

>= Större än eller lika med

== Lika med

!= Skiljt från

II Eller

&& Och

100 > 99 har värdet true

100 < 99 har värdet false

98 <= 99 är true

99 >= 99 är true

99 == 99 (kolla om samma värde) true

99 != 99 (kolla olika värde) false

99 > 100 II 99 < 100 är true

(98 < 99) && (98 > 99) false

Övning 18

Page 54: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övning 19

54

Alternativ med if

Villkorssats eller if-sats. Det använder du för att formulerar ett villkor i programkoden som antingen kan vara sant eller falskt. Om villkoret stämmer så körs den kod du har formulerat, annars hoppar exekveringen förbi. Du kan även lägga till else som då bara körs om if-satsen inte körs. Du uppmanar alltså datorn att välja väg inom ditt program genom villkor som sätts upp för vägvalet. Datorns skall alltså göra på ett visst sätt om villkoret är uppfyllt och på ett annat sätt om villkoret inte är uppfyllt. Valet görs genom ett logiskt uttryck som antingen är ”sant” (true) eller ”falskt” (false)

Exempel:

if (10 > 9) utdata (”rätt”)else utdata (”fel”)

Alltså: om (if)10 är större än 9 så skriv ut ”rätt”, annars (else) skriv ut ”fel”

Här följer några exempel där villkoret är ”sant”

100 == 10099 < = 100

(99 > 98) && (98<99)99 != 100

Här följer några exempel där villkoret är ”falskt”

100 < 9999 >= 100

99 == ”hello world”100 != 100

Page 55: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Övning 19

55

If-sats (exempel)

Så kan en enkel if-sats se ut. Vi skriver vad skall mätas emot varandra och sedan skall programmet välja väg utifrån utfall. Så: om det är sant att 100 är ett annat värde än 99 så skall sköldpaddan röra sig 50 pixlar framåt. Om det är sant att 99 är skiljt från 99 skall sköldpaddan röra sig 50 pixlar framåt, om det inte stämmer skall sköldpaddan röra sig 100 pixlar framåt

Page 56: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Förkortningen val är en förkortning av engelskans ”value”, du ger alltså val ett värde. Det värdet är konstant och ändras aldrig igen. Om du tänker dig ett exempel.

val apelsiner = 29 + 1

Det innebär att val hela tiden kommer vara precis 29 + 1

När det gäller var så är det ju precis som du gått igenom tidigare, värdet kan förändras genom en tilldelningssats som då skriver över värdet som var lagrat innan i var.

var apelsiner = 29 + 1apelsiner = apelsiner + 1

Det är den stora skillnaden mellan val och var

56

Skillnaden mellan val och varÖvning 20

Page 57: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

57

Nu har du börjat använda variabler när du programmerar. Det innebär att din programmering har blivit mer effektiv. Gör en koll om du förstått vad variabler innebär och hur du kan använda dessa.

1. Vad är en av fördelarna med att använda variabler?

a) Du slipper skicka in parametrar till dina funktioner?

b) Du slipper ändra på många ställen i koden när något värde ändras?

c) Du slipper använda semikolon i din kod?

2. Hur skapar du en variabel som heter ”apelsinvariabeln” och ger den värdet 20?

a) apelsinvariabeln var = 20

b) var apelsinvariabeln = 20

a) apelsinvariabeln = var 20

3. När ska du skriva ut ordet var?

a) När du skapar, använder eller ändrar en variabel

b) Endast när du skapar eller ändrar en variabel

c) Endast när du skapar en variabel

4. Vad innebär det om du kör variabeln apelsinvariabeln och får svaret:

a) Att det inte finns någon variabel med namnet apelsinvariabeln

b) Att variabeln apelsinvariabeln är skapad men inte har något värde (än)

c) Att det är fel värde i variabeln apelsinvariabeln

Quiz 2

Page 58: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Definiera

58

Genom var(iabel) och val(ue) så har du nu lärt dig hur du kan skapa egna byggstenar. Du kan också skapa sådana byggblock genom att definiera en eller flera kodrader genom def som bildar en funktion. Du kan sedan anropa den funktionen genom hela programmet. Då exekveras (körs) instruktionen du skrivit för din def.

Så här skapar du exempelvis funktionen för en kvadrat:

def kvadrat = upprepa(4){fram; höger}

def minFunktion = 41 + 1–En funktion som sätter namn på en eller flera kodrader– Varje gång minFunktion anropas så körs koden som funktionen definierar– En funktion som inte lämnar något värde kallas för procedur eller kommando, t.ex.: def minProcedur { skriv(41+1) }

Övning 21

Page 59: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Gör din egen funktion.

1. Skriv i skripteditorn:

def kvadrat = upprepa(4){fram; höger}

2. Skriv sedan:

sudda()kvadrathoppakvadrat

3. Byt färg på kvadraterna genom att använda kommandot

fyll(grön)fyll(röd)

4. Du behöver skriva det före ”kvadrat” så att färgen kopplas ihop med det som skall hända härnäst

Gör din egen funktion

En funktion är ett ”byggblock” av instruktioner som exekveras när funktionen anropas.

Gör din egen funktion med def

Med def kan du göra egna funktioner som du själv väljer namn på.

Övning 22

59

Page 60: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Nu skall du få sköldpaddan att stapla 10 kvadrater på varandra. Skriv:

def kvadrat = upprepa(4){fram; höger}

2. Skriv sedan:

sudda(); sakta(100)

3. Skriv därefter:

Upprepa(10){???}

4. Vad skall stå inom måsvingarna för att sköldpaddan skall rita upp hela stapeln?

Stapla kvadrater

Gör en stapel med 10 kvadrater (som på bilden till höger)

Övning 23

60

Page 61: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Nu skall du få sköldpaddan att stapla 10 kvadrater på varandra. Skriv:

def kvadrat = upprepa(4){fram; höger}

2. Skriv sedan:

def stapel = upprepa(10){kvadrat; fram}

3. Skriv därefter:

sudda(); sakta(100)stapel

Gör en stapelfunktion

Gör en funktion som heter stapel, som ritar en stapel med 10 kvadrater.

Tips:def kvadrat = upprepa(4){ fram; höger }def stapel = ???sudda; sakta(100)stapel

Övning 24

61

Page 62: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Nu skall du få sköldpaddan att rita upp ett rutnät Skriv:

def kvadrat = upprepa(4){fram; höger}def stapel = upprepa(10){kvadrat; fram}

2. Skriv sedan:

sudda(); sakta(100)stapelupprepa(10){stapel; hoppa (-10 * 25); ???}

3. Vad skall ersättas av frågetecknen innan koden stängs av måsvingen? Se tipset

Gör ett rutnät

Gör ett rutnät med 10*10 kvadrater.

Tips:• Använd din stapelfunktion från tidigare.• Du kan hoppa baklänges en hel stapelhöjd med hoppa(-10 * 25)• Du kan sedan hoppa till rätt plats medhöger; hoppa; vänster

Övning 25

62

Page 63: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

Funktion och parameter

63

En funktion kan ha ett namn, många parametrar och ett uttryck som resulterar i ett resultatvärde.

def dubbla(x: Int) = 2*x

def plus(a: Heltal, b: Heltal): Heltal = a + b

def multipliceraOchSkriv(x: Int, y: Int) = {

val resultat = x * y

skriv(resultat)

resultat

}

namn parameter typ uttryck

returtyp

Sista uttrycket i blocket blir funktionens returvärde

Övning 26

Page 64: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Nu skall du få sköldpaddan att rita upp lika stora kvadrater

def kvadrat(sidlängd : Heltal) =upprepa(4){ fram(sidlängd); höger }

2. Skriv sedan:

sudda(); sakta(100); osynligkvadrat(100)kvadrat(70)kvadrat(40)

3. Du kan byta färg med: fyll(blå)färg(rosa)

Kvadrat med parameter

Rita olika stora kvadrater.

Tips:Ge din kvadrat-funktion en parameter, med namnet sidlängd och typen Heltal. Parameter är det vi skriver inom parentesen ( )

Övning 27

64

Page 65: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

def kvadrat(x: Heltal, y: Heltal, sidlängd: Heltal) = {hoppaTill(x, y)upprepa(4) { fram(sidlängd); höger }}def huvud(x: Heltal, y: Heltal) = { fyll(rosa); färg(röd); kvadrat(x, y, 200) }def öga(x: Heltal, y: Heltal) = { fyll(vit); färg(svart); kvadrat(x, y, 40) }def pupill(x: Heltal, y: Heltal) = { fyll(svart); färg(svart); kvadrat(x, y, 10) }def näsa(x: Heltal, y: Heltal) = { fyll(blå); färg(genomskinlig); kvadrat(x, y, 30) }def mun(x: Heltal, y: Heltal) = { bredd(10); fyll(svart); färg(röd); kvadrat(x, y, 40) }sudda; sakta(20); osynlighuvud(0, 0)öga(40, 100); pupill(60, 100)öga(120, 100); pupill(140, 100)näsa(???)mun(???)

Rita ett kvadratansikte

Rita ett ansikte med hjälp av olika stora kvadrater.

Tips

Övning 28

65

Page 66: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Nu skall du få sköldpaddan att rita en polygon Skriv:

def polygon(n:Heltal) = upprepa(n){fram(100)vänster(360.0/n)}

2. Skriv sedan:

sudda(); sakta(100)polygon(7)

3. Testa att ersätta n med 10, och förändra även polygon till

polygon(10)

4.Hur stor behöver n vara för att polygonen skall se ut som en cirkel?

Rita en Polygon

Prova koden till höger.

• Lägg till en parameter sidlängd (n)och rita olika stora polygoner.

Övning 29

66

Page 67: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

1. Nu skall du få sköldpaddan att rita många polygoner Skriv:

def polygon(n: Heltal, sidlängd: Heltal) = upprepa(n){fram(sidlängd)vänster(360.0/n)}def snurra(n: Heltal, vinkel: Heltal, sidlängd: Heltal) =upprepa(360/vinkel){ polygon(n, sidlängd); vänster(vinkel) }

2. Skriv sedan:

sudda(); sakta(5)snurra (7, 10, 100)

3. Testa att ändra antalet sidor och vinkel. Fyll polygonerna med färg

Rita många polygoner

Prova koden till höger.

Övning 30

67

Page 68: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

• Strängar med text är en slags vektor av bokstäver och många operationer som fungerar på Vector fungerar också på String:"svensk musikgrupp från 80-talet".reverse

• Prova denna funktion som kollar om en sträng är en palindrom:

def ärPalindrom(s: String) = { s.reverse == s }utdata(ärPalindrom("ABBA"))

VektorerVektorer är programmeringens "arbetshästar”. Tänkt som du gjort när du lagrat värde i en variabel men nu kan du lagra flera värden i en lista. En vektor är en serie tal eller bokstäver i en bestämd ordning

Övning 31

68

// räkning = Vector(1, 2, 3, 4)// huvud: Int = 1// svans: Vector[Int] = Vector(2, 3, 4)// omvänt: Vector[Int] = Vector(4, 3, 2, 1)// svansOmvänd: Vector[Int] = Vector(4, 3, 2)// dubblad: Vector[Int] = Vector(2, 4, 6, 8)

räkning är alltså namnet på vektornräkning.head betyder vektorns huvud och det första elementet inom parentesen, räkning.tailbetyder resterande element.

Du kan också vända på vektorn genom räkning.reverse i det här fallet eller vänd på svansen genom räkning.tail.reverse

Om du vill dubblera talen i vektorn så skriv räkning.map(_*2)

Page 69: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

License

Fortsätt med övningar och uppdrag

För att fortsätta med fler övningar och uppdrag så går till den här adressen på Webben.

http://fileadmin.cs.lth.se/cs/Personal/Bjorn_Regnell/uppdrag.pdf

Där hittar du fler övningar med stigande svårighetsgrad

69

Page 70: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

70

Svar till Quiz 1och 2

Page 71: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

71

Nu har du använt ett antal olika kommandon och börjat skriva kod. Det är nu dags att göra ett litet Quiz för att testa det du gått igenom så här långt. Försök att se vilken kod som hör till vilken figur nedan.

1.

2.

3.

4.

Quiz 1

2.1. 4. 3.

Page 72: Programmering Åk 7-9 - skelleftea.se och kulturkontoret/Innehallssidor... · stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket

72

Nu har du börjat använda variabler när du programmerar. Det innebär att din programmering har blivit mer effektiv. Gör en koll om du förstått vad variabler innebär och hur du kan använda dessa.

1. Vad är en av fördelarna med att använda variabler?

a) Du slipper skicka in parametrar till dina funktioner?

b) Du slipper ändra på många ställen i koden när något värde ändras?

c) Du slipper använda semikolon i din kod?

2. Hur skapar du en variabel som heter ”apelsinvariabeln” och ger den värdet 20?

a) apelsinvariabeln var = 20

b) var apelsinvariabeln = 20

a) apelsinvariabeln = var 20

3. När ska du skriva ut ordet var?

a) När du skapar, använder eller ändrar en variabel

b) Endast när du skapar eller ändrar en variabel

c) Endast när du skapar en variabel

4. Vad innebär det om du kör variabeln apelsinvariabeln och får svaret:

a) Att det inte finns någon variabel med namnet apelsinvariabeln

b) Att variabeln apelsinvariabeln är skapad men inte har något värde (än)

c) Att det är fel värde i variabeln apelsinvariabeln

Quiz 2