Hoppa till huvudinnehåll

Vetamix

Lär dig grunderna i programmering med exempel i PHP

Från 2018
Kodning
Bild: Unsplash/Kobu Agency

En dator är en maskin som kan läsa och utföra instruktioner. Utan instruktioner gör en dator ingenting. Då vi talar om datorer menar vi ofta bordsdatorer eller laptops men även i mobiltelefoner, TV:n, bilar, robotar, räknemaskiner och alla möjliga andra elektroniska apparater finns det inbyggda datorer.

Instruktionerna som en dator får måste vara skrivna på ett sätt som datorn kan tolka, detta kallar vi programkod. Vi kan få en dator att göra i princip vad som helst bara vi programmerar den rätt, det vill säga ger den rätt programkod. Med programkod kan vi skriva alla möjliga sorters dataprogram, till exempel spel, navigationsprogram, inbandningsprogram, bildredigeringsprogram, webbsidor och mobilappar.

En screenshot på kodningsspelet The Foos
Bildtext Kodningsprogram kan ha enkel grafik så att också mindre barn förstår dem.

Programkod kan skrivas i olika programmeringsspråk

Då vi skriver programkod gör vi det i olika programmeringsspråk, beroende på vilken typ av dataprogram vi vill ha. Vissa programmeringsspråk används t.ex. för webbapplikationer medan andra programmeringsspråk används för att skriva dataprogram som styr robotar.

Yumi robot, abb
Bildtext Robotar används exempelvis inom industrin.
Bild: Yle/Carmela Walder

De många olika programmeringsspråken har i grund och botten mycket gemensamt så om du lärt dig använda ett språk så är det mycket lättare att lära dig andra efter det. Några exempel på populära programmeringsspråk är C, C++, C#, Java, Ruby, Python, PHP, ASP och JavaScript.

Programmeringsspråket PHP används för webbsidor

I den här artikeln är exemplen skrivna i PHP eftersom det passar bra för att förklara grundläggande operationer. Vi håller oss på en teoretisk nivå för att bekanta oss med hur programkod kan se ut. För att i verkligheten kunna exekvera, alltså “köra”, programkod i PHP behöver du tillgång till en webbserver som har PHP installerat. PHP är ett programmeringsspråk som används då man bygger webbsidor och -applikationer.

Programmering är problemlösning

Då vi programmerar, det vill säga skapar ett dataprogram, måste vi tänka logiskt och vara noggranna. En dator gör endast det vi ber den om och precis i den ordning som våra instruktioner förekommer. Ett dataprogram som verkar enkelt kan ändå behöva många, många rader programkod för att fungera.

Innan du kan börja skriva programkoden måste du först ha klart för dig exakt vad du vill att programmet skall åstadkomma. Då du vet vad resultatet skall bli kan du börja planera metoderna för hur du uppnår det. Vilken information behövs och hur skall den informationen användas för att få fram önskat resultat?

Programmering är som problemlösning där vi delar upp problemet i mindre delproblem och sedan delar upp delproblemen i ännu mindre delproblem tills vi kommit ner på en nivå där vi har själva lösningen. Då vi programmerar talar vi om indata, utdata och algoritmer.

Indata är den information vi har att utgå från, utdata är den information vi vill att programmet skall ge oss. Att förvandla indata till utdata är själva “problemet”. Lösningen på problemet är en algoritm. Och en algoritm är en följd av klara, tydliga instruktioner. Då algoritmen skrivs ner i programkod har vi skrivit ett dataprogram.

Kodare jobbar i öppet landskap.
Bildtext Att förvandla indata till utdata är själva "problemet".
Bild: Yle

Exempel 1:
Vi vill skriva ett dataprogram som räknar ut hur många kakor som behövs till en fest. För att kunna komma fram till det måste vi veta hur många gäster som kommer och för hur många personer en kaka räcker. I detta exempel räknar vi med 70 gäster och att en kaka räcker till 15 personer.

Indata:
70 gäster
En kaka räcker åt ca 15 personer

Utdata:
Antal kakor som behövs till festen.

Algoritm:
antal kakor som behövs till festen = antal gäster / antal personer en kaka räcker åt

Algoritmen skriven i programkod, i programmeringsspråket PHP.
Bildtext Algoritmen skriven i programkod, i programmeringsspråket PHP.

Det här lilla dataprogrammet kommer då att skriva ut resultatet 4.6666666666667 på skärmen. Då programmet körs märks det snabbt om det fungerar eller inte. Men då det blir frågan om mer komplicerade program är testning och felsökning av program en viktig del av programmeringsprocessen.

Dessa få rader programkod gick också relativt snabbt och lätt att skriva ihop tecken för tecken. Men då vi skapar större dataprogram är det a och o att kunna återanvända befintlig kod, att kopiera tidigare lösningar för liknande problem och ändra på dem så att de passar de aktuella behoven.

Några grundläggande element

I programkoden i exempel 1 ser vi att den börjar med <?php och slutar med ?>. Programkod i PHP omges alltid av dessa två taggar så att datorn skall veta vilken sorts kod det är frågan om.

$gaster, $personer_per_kaka och $antal_kakor kallas för variabler. En variabel är en slags “behållare” för ett visst värde. Variabeln kan sedan användas många gånger i programmet för olika slags funktioner. Tack vare variablerna blir det mindre programkod att skriva (åtminstone i mer komplexa program än detta) och färre ändringar att göra ifall vi vill använda samma program men med andra värden.

Vi säger att vi deklarerar en variabel då vi skriver ut variabelnamnet för första gången och ger den ett värde. Man kan välja vilket namn som helst för sin variabel, fast inom vissa begränsningar. Variabelnamnet måste t.ex. vara unikt (två olika variabler kan inte heta samma sak) och i PHP skall variabelnamnet alltid börja med dollartecknet $. Det finns olika begränsningar inom olika programmeringsspråk.

Ett annat grundelement i programkod är operatorerna. En operator är t.ex. en symbol som utför en viss beräkning eller jämförelse av olika tal eller värden. I exempel 1 har vi två operatorer, likamedstecknet och divisionstecknet.

I exemplet ser vi också att varje programsats avslutas med semikolon. Samma regel gäller också i flera andra programmeringsspråk och detta är för att skilja de olika instruktionerna från varandra. Vi ser dock att det efter //Skriv ut antalet kakor på skärmen inte står något semikolon. Det beror på att den raden inte är en instruktion till datorn utan endast en kommentar som förklarar vad nästa programsats betyder. En kommentar kan också skrivas in mellan tecknen /* och */. I välskriven programkod har programmeraren alltid skrivit in förklarande kommentarer, då är det lättare för en utomstående personer att förstå hur programmet fungerar.

Då vi vill skriva ut något på skärmen, t.ex. resultatet av en beräkning som i exemplet ovan ger vi i PHP kommandot echo och därefter värdet som vi vill få utskrivet. Hur motsvarande kommando används i andra programmeringsspråk varierar mycket.

Sekvenser, villkors- och upprepningssatser

Inom programmering talar man ofta om att det finns tre grundläggande typer av instruktioner, nämligen sekvenser, villkorssatser och upprepningssatser. Sekvenser är enskilda programsatser som alla utförs i tur och ordning efter varandra, liksom i exempel 1. Först deklareras variabler för vår indata, sedan görs en beräkning och till sist skrivs svaret ut på skärmen.

I villkorssatser ger vi däremot olika alternativ för vad som kan göras. För varje alternativ finns ett villkor och datorn måste välja det alternativ vars villkor uppfylls. Med villkorssatser kan vi få datorn att göra olika saker för oss, beroende på vad indatan är.

I följande exempel har vi byggt vidare på vårt program som nu även innehåller en villkorssats. Vi vill att datorn berättar för oss hur många kakor som behövs på ett lite trevligare sätt.

Exempel 2:

En algoritm skriven i programmeringsspråket PHP.
Bildtext Vilket alternativ som väljs beror alltså på vilket värde variabeln får

I det här exemplet finns det tre olika alternativ för vad datorn kan skriva ut åt oss på skärmen. Datorn får endast välja ett alternativ, det första av dessa tre vars villkor stämmer. Vilket alternativ som väljs beror alltså på vilket värde variabeln $antal_kakor får. Villkor skrivs här inom parentes () och de alternativ av kod som kan köras skrivs inom klammerparentes {}.

Om det första villkoret ($antal_kakor <= 1) stämmer, skriver datorn ut "Det kommer att räcka med en kaka.". Men om det första villkoret inte stämmer går datorn vidare för att se om nästa villkor ($antal_kakor < 5) stämmer, vilket det gör i det här fallet. Datorn skriver då ut “Det behövs 4.6666666666667 stycken kakor till festen.” på skärmen. Men om vi t.ex. ändrar variabeln $gaster till 90, så kommer $antal_kakor att få värdet 6. Då måste datorn gå vidare till det tredje och sista alternativet och skriva ut "Vilken stor fest det skall bli, 6 stycken kakor kommer att gå åt."

I nästa exempel vill vi göra ett litet program som skriver ut en prislista åt oss. Vi vet att en kaka för 15 personer kostar 53.50 euro. Men på prislistan vill vi kunna se vad två kakor kostar tillsammans, vad tre kakor kostar och så vidare. Vi vill veta vad upp till tio kakor skulle bli att kosta. För att få den här information utskriven som en prislista med uträkningar rad för rad använder vi oss av en upprepningssats.

Exempel 3:

En algoritm skriven i programmeringsspråket PHP.
Bildtext Algoritm för en prislista med kakpriserna

Resultatet kommer att bli följande utskrift på skärmen:
Priset för 1 kaka/kakor blir: 53.5 euro.
Priset för 2 kaka/kakor blir: 107 euro.
Priset för 3 kaka/kakor blir: 160.5 euro.
Priset för 4 kaka/kakor blir: 214 euro.
Priset för 5 kaka/kakor blir: 267.5 euro.
Priset för 6 kaka/kakor blir: 321 euro.
Priset för 7 kaka/kakor blir: 374.5 euro.
Priset för 8 kaka/kakor blir: 428 euro.
Priset för 9 kaka/kakor blir: 481.5 euro.
Priset för 10 kaka/kakor blir: 535 euro.

I exemplet deklarerar vi först en variabel för vad en kaka kostar. Vi deklarerar också variabeln $x för att definiera vilket tal vi vill multiplicera kakans pris med första gången. Efter variablerna har vi while-loopen, vår upprepningssats. I den bestämmer vi att så länge som vårt villkor ($x <= 10) stämmer så skall de programsatser som står inom klammerparenteserna köras.

Inom klammerparenteserna har vi tre programsatser. Först har vi en beräkning av priset för x stycken kakor. Sedan görs en utskrift på skärmen som berättar för oss hur mycket x stycken kakor kostar sammanlagt (taggen <br> betyder “ny rad”). Till sist har vi programsatsen $x++; som betyder att programmet skall addera ett till värdet för variabeln $x. Det kunde alltså lika väl skrivas $x = $x + 1;. Den här loopen resulterar därmed i att koden inom klammerparentesen körs tio gånger.

Ordlista

Länkar med mera info om programering:

Kodning är enklare än du tror

Programmeringsbegrepp

Vad är programmering?

Programmera mera, UR Skola

Mer om ämnet på Yle Arenan

Diskussion om artikeln