Om programmering

Vad är programmering och kod?

En dator eller ett program kan göra saker som är helt fantastiska och som löser svåra problem som vi människor har svårt för att lösa på egen hand, men egentligen gör dessa bara vad människan har sagt åt den. Datorer lyder instruktioner som människor har gett dem - det är att programmera.

Programmering handlar om att lösa problem med hjälp av en dator. Du skriver instruktioner för hur problem ska lösas i ett språk som en dator kan förstå, ett s.k. programmeringsspråk (programspråk).

Egentligen förstår datorn bara maskinkod, ett språk som är svårt för oss människor. Därför har vi skapat programmeringsspråk som är enklare för oss människor att skriva och läsa, och som sedan kan översättas till maskinkod. Datorns språk består i grunden enbart av (ström) PÅ eller AV, 1 och 0.

Det finns flera olika programmeringsspråk, t ex Javascript, Python, Ruby, Scala. Olika språk är bra för olika saker. Programmeringsspråken är på engelska.

Men programmering handlar alltså inte bara om att skriva kod, utan även om att hitta på lösningar på problem. Det finns ofta flera olika lösningar på samma problem. Ett tips när du programmerar är att tänka ut en lösning först, beskriva den med vanliga ord, och först därefter skriva koden.

Med programmering kan du skapa allt möjligt: spel, program/appar, musik, konst! Allt digitalt är uppbyggt av kod. Det finns många saker i din vardag som du kanske inte tänker på att någon har programmerat. Exempel: mobiltelefoner, mikrovågsugnar, leksaker, tjänster för streamad musik eller film, robotar, bilar.

Vad är en algoritm?

En instruktion som löser ett särskilt problem eller en uppgift kallas för en algoritm. Program består av flera algoritmer, flera instruktioner.

Datorn är en maskin som bara gör exakt det som den blir tillsagd att göra. Därför måste du vara väldigt tydlig när du skriver instruktioner till en dator.

Algoritmen måste vara:

  1. I rätt ordning – datorn kan inte förstå om den behöver göra i en annan ordning.
  2. Exakt – datorn kan inte förstå om du stavar fel eller glömmer ett tecken.
  3. Fullständig – datorn kan inte förstå om du har glömt att skriva något som den behöver göra, den kan inte tolka ofullständiga meningar så som en människa kan.

Det finns olika typer av instruktioner:

  • Sekvens – kommandon som sker i tur och ordning, först – sedan – sist.
  • Villkor – olika val för kommandon, om– då – annars. Om något händer, då ska ett kommando utföras, annars ska ett annat kommando utföras.  
  • Repetition – upprepar kommandon i ”loopar”. Kommandon kan upprepas för alltid, X antal gånger, eller tills något annat händer.

När vi programmerar i Scratch kommer vi att prata om skript, ett antal block som vi sätter ihop för att lösa ett särskilt problem i programmet eller spelet vi bygger. Varje skript är en algoritm, och tillsammans bildar de ett program.

Algoritm som ett recept

En liknelse som är enkel att använda sig av är att beskriva algoritmer som recept. Så här förklarar Karin Nygårds, lärare och författare som introducerar programmering i skolan, vad en algoritm är till sina elever:

”Algoritm = En lista över i vilken ordning man ska göra saker. En instruktion eller ett recept.

Datorn utför din kod i den ordning du skriver den. Därför är det viktigt att du skriver kod i rätt ordning. Om du skriver cirkel(50); färg(grön), kommer datorn först rita en cirkel, sen plocka fram den gröna färgen. Alltså vet inte datorn att det är cirkeln som du vill ska bli grön. Du måste ändra receptet. Du kan ju inte börja med att vispa äggen, innan du knäckt dem, om du ska baka en sockerkaka.

Om vi ska baka en sockerkaka kan vi skriva instruktioner (=algoritmer) på olika sätt. För att veta vilken algoritm som är den bästa kan man jämföra recepten på tre olika sätt.

  • Vilket recept går fortast att göra?
  • Vilket recept kräver minst verktyg och ingredienser?
  • Vilket recept kräver minst avancerade tekniker?

Vilket recept är bäst? Det beror på vad som är viktigast för dig just nu. Har du bråttom? Har du inte så många olika bunkar, vispar eller ingredienser? Hur duktig är du på att baka? Om du har gott om tid på dig, är duktig på att baka och gärna gör saker ordentligt från grunden, ja då väljer du ett annat recept än nybörjaren som måste få till en sockerkaka på en kvart.”

Algoritm för att koka makaroner

Det här är ett exempel från Wikipedia på hur du kan beskriva algoritmer som recept för att koka makaroner:

Algoritm Makaroner

Invärden: Makaroner, kastrull, vatten, spis, sil, tallrik
Resultat: Färdig-lagade makaroner, klara att äta.

Fyll kastrull till hälften med vatten. -- fyll(kastrull, vatten, storlek(kastrull) / 2)

Häll i makaroner i kastrull. -- häll(makaroner, kastrull)

Placera kastrull på spis och aktivera spis. -- placera(kastrull, spis) && aktivera(spis)

Låt koka tills makaroner är mjuka. -- medan(makaroner != mjuka) vänta

Ta av kastrull från spis och häll ut innehåll i sil. -- placera(kastrull, !spis) && häll(kastrull, sil)

Häll i makaroner från sil på tallrik. -- häll(sil, tallrik)

Ät makaroner -- ät(makaroner)

Programmering i Scratch

Scratch är ett programmeringsspråk som är framtaget av Lifelong Kindergarten Group på det amerikanska universitetet MIT och deras Media Lab. Det är ett blockbaserat språk, vilket betyder att du inte skriver koden utan bygger upp den med grafiska block, som påminner om pusselbitar eller Lego. Syftet med Scratch är att introducera barn och unga till programmering på ett kreativt och utforskande sätt.

Nu är det dags att titta på Scratch och göra ett första, enkelt spel. Tanken är att denna första uppgift görs i helgrupp, och att deltagarna blir instruerade genom den första uppgiften, steg för steg vid storskärm om möjligheten finns. 

Om det inte finns någon som kan instruera deltagarna kan ni låta dem titta på Kodbokens filmer för att komma igång med Scratch och den första uppgiften. 

Bug Race - Intro heter vår introduktionsuppgift för Scratch. Berätta för deltagarna att de kommer att få lära känna Scratch och samtidigt göra ett enkelt spel. De kommer att lägga grunden till spelet under introduktionen, därefter får bygga vidare och göra spelet mer personligt, med hjälp av nästa uppgift: Bug Race - Tillägg.

  • Gå till hemsidan för Scratch och ställ in språket till Svenska eller önskat språk. Låt deltagarna skapa sina egna konton för att kunna spara sina projekt. De behöver en egen mailadress för att göra detta. Det finns även möjligheten att skapa lärarkonton med klasser och elevkonton kopplade till läraren.
  • Visa exempel på spelet ”Bug Race” som vår volontär Thomas Arts har gjort. 
  • Följ instruktionerna steg-för-steg i uppgiften ”Bug Race - Intro”. Gör gärna uppgiften tillsammans vid en storskärm, att du som handledare styr kodningen men att alla deltagare involveras i att föreslå kommandon. När programmerare kodar ihop kallas det för mobbprogrammering.
  • Finns inte den möjligheten kan deltagarna titta på Kodbokens filmer för att komma igång med Scratch

Tips på spel, lekar och läromiljöer

Det här är spel och lärmiljöer som passar bra för att introducera grunderna för programmering:

  • Code.org: introducerande spelliknande övningar med blockprogrammering, på teman som Minecraft, Frost och Star Wars. Väldigt bra för att komma igång med kod! På svenska, från 4 år och uppåt. Webbaserat.
  • Lightbot: App och webbspel med gratis demo. En robot ska programmeras för att ta sig runt en bana och tända en lampa. Introducerar grundläggande kommandon, funktioner och loopar, med banor som blir svårare ju längre du kommer. På engelska. 
  • Code Monster: Enkla steg-för-steg-lektioner till Javascript, där du får ändra i skriven kod och parallellt se vad som händer i grafiken. Tar upp variabler, loopar, villkor, funktioner etc. På engelska. 
  • Lek gärna några av de skärmfria lekar som finns här i Kom igång-kapitlet!
Har du kommentarer till materialet på den här sidan? Mejla info@kodcentrum.se