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 C++, Javascript, Python, Ruby, Scala. Olika språk är bra för olika saker; en del passar bättre för att koda och styra maskiner och apparater så de funkar som de ska, somliga mer för att skapa avancerade eller större datorprogram eller andra för att koda exempelvis spel eller webbsidor på nätet. 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 - alltså HUR kan man använda kod så något funkar som man vill. 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: digitala spel och berättelser, 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: surfplattor och mobiltelefoner, mikrovågsugnar, tvättmaskiner, dörrkod i porten och stöldlarm i affären, en del leksaker, tjänster för streamad musik eller film, robotar, bilar... Tänk efter så kommer du säkert på massor av fler prylar som innehåller kod i någon form.

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. Syftet med Scratch är att introducera barn och unga till programmering och digitalt skapande med kod på ett kreativt och utforskande sätt.

NYHET: I januari 2019 kom den efterlängtade uppdateringen av Scratch som nu är version Scratch 3. Detta innebär att Kodbokens instruktioner för att skapa olika projekt med Scratch är under uppdatering för att anpassas till nya Scratch, som ju fungerar och ser lite annorlunda ut än den gamla versionen av Scratch. Vi  uppdaterar alla instruktioner så snabbt vi kan, men var under tiden uppmärksam på om det i inledningen till instruktionen du väljer står att den är anpassad för Scratch 3 eller gamla Scratch 2. Notera att alla gamla instruktioner för Scratch 2 finnas kvar att tillgå på Kodboken, då dessa fungerar för den nedladdningsbara offline-versionen av Scratch som finns att finna på Scratch sajt här.

Börja programmera

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 av handledare/lärare genom den första uppgiften, steg för steg framför storskärm om möjligheten finns. 

Bug Race - Intro heter Kodbokens egen introduktionsuppgift för Scratch, där man skapar ett enkelt spel. Vi rekommenderar alla att börja med Bug Race - Intro om man är ny på programmeirng med Scratch.

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

  • Gå till hemsidan för Scratch. Ställ in språket till Svenska eller annat önskat språk. Låt deltagarna skapa sina egna konton för att kunna spara sina projekt (notera att användare måste vara över 13 år för att kunna skapa konto, annars krävs vuxen/målsman). Användaren behöver en egen mejladress för att skapa ett konto. Det finns även möjligheten att skapa lärarkonton med klasser och elevkonton kopplade till lärare/handledare istället för till enskilda elever/deltagande barn. Notera att man kan även skapa med Scratch utan att ha ett konto, men då kan man ej spara sitt projekt och det försvinner när man avslutar.
  • Visa exempel på spelet ”Bug Race” som vår volontär Thomas Arts har gjort. 
  • Följ sedan instruktionerna steg-för-steg i uppgiften ”Bug Race - Intro”. Gör gärna uppgiften tillsammans vid en storskärm, där du som handledare styr kodningen medan alla deltagare involveras i att föreslå kommandon för att programmera spelet - steg-för-steg. När programmerare kodar tillsammans i grupp kallas det för mobbprogrammering.

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