Om programmering

Det här är en introduktion till programmering och algoritmer.

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, utifrån fem P:n - projects, passion, play, peers. Detta kan översättas till projektbaserat, lustfyllt och lekfullt lärande samt samarbete. 

Har du kommentarer till materialet på den här sidan? Mejla info@kodcentrum.se