

PROGRAMMERING 1
Copyright © Docendo AB
Det Àr förbjudet att kopiera bilder och text i denna bok genom att trycka, fotokopiera, skanna eller pÄ annat sÀtt mÄngfaldiga enligt upphovsrÀttslagen.
VÄra böcker och tillhörande produkter Àr noggrant kontrollerade, men det Àr ÀndÄ möjligt att fel kan förekomma. Vi tar gÀrna emot förbÀttringsförslag.
Produkt- och producentnamnen som anvÀnds i boken Àr Àgarens varumÀrken eller registrerade varumÀrken.
Tryckt av Elanders
Utgiven 2024
ISBN: 978-91-7531-178-4
Artikelnummer: 3120
Författare: Oscar Antbring
Omslag: Docendo AB
Bild pÄ omslaget: © Adobe Stock
InnehÄllsförteckning
8 Upprepa kod ..................................... 93 while loopen 94
JÀmförelseoperatorer 95
Att kombinera villkor .......................................... 99
Det âhemligaâ talet 102
Villkor och flödeskontroll 103
En variabels livslÀngd 108
Att hantera omspel för gissningsleken 109
Sammanfattning 110
9 Planera din kod................................ 111
Pseudokod 112
Pseudokod och kodflödet 112
Skriv pseudokod med talsprÄk 112
Vad utmÀrker en bra pseudokod? 114
Exempel pÄ pseudokoder 114
Pseudokod för mer komplex kod 118
Aktivitetsdiagram ............................................ 118
Att visualisera ett kodflöde ................................... 119
Att hantera lÄnga diagram ....................................123
Sammanfattning 124
10 Vektorer ....................................... 125
Installera NumPy 126
Skapa en vektor med tal ................................... 127
Ett âbingo-spelâ och en vektor ..............................129
Specificera indexposition med en variabel .............. 130
Vektorer och loopar 130
While loop och vektorer 131
Funktionen len()
For-sats och vektorer .......................................
Skriva ut alla tal ur vektorn 132
Mata in tal i vektorn 133
Funktionen range() och for loopar 133
Anpassa for loopen 136
Ett âbingo-spelâ med vektorer och loopar
Datastrukturer i Pythons bibliotek
NĂ€stlade loopar och vektorer
TvÄdimensionella vektorer
En âriktigâ bingobricka
2 Programutveckling i Python
Vad utmÀrker Python?
Den virtuella maskin (PVM) .
.7
.12
Objektorienterad programmering . . . . 13
En utvecklingsmiljö för Python . . . . . . 14
Ramverk, paket och moduler . . . . . . . 16
Sammanfattning . . . . . . . . . . . . . . . . . . 20
I detta kapitel ska du fÄ lÀsa om Python som Àr ett av vÀrldens mest kÀnda och populÀra programmeringssprÄk. Det Àr ett mÄngsidigt sprÄk och anvÀnds inom flera omrÄden sÄsom för att bygga mobila applikationer, hantera databaser eller skriva skrivsbordsprogram till vanliga operativsystem som MacOS och Microsoft Windows.
Python Àr ocksÄ kanske det allra mest populÀra programmeringssprÄket idag för att utveckla AI (artificiell intelligens). NÄgra andra vanliga ÀndamÄl Àr att det anvÀnds för forskning, analys av data samt utveckling av webbapplikationer.
En viktig anledning till att Python Àr populÀrt inom sÄ vitt skilda omrÄden Àr för dess omfattande utbud av bibliotek. Ett bibliokek Àr en uppsÀttning fÀrdiga koder som Àr skriven för ett sÀrskilt ÀndamÄl och som finns fritt tillgÀngliga för alla utvecklare att anvÀnda.
I detta kapitel sÄ kommer du att fÄ lÀsa om flera programmeringsbegrepp och idéer som du bör kÀnna till. I detta skede sÄ handlar det om att göra dig som lÀsare medveten om dessa och vad de innebÀr men den verkliga förstÄelsen kommer nog inte infinna sig Ànnu.
Avslutningsvis sÄ kommer du att kunna lÀsa om hur du installerar Python och en utvecklingsmiljö i syfte att skriva koder och utveckla program.
Vad utmÀrker Python?
Om du skulle lÀsa pÄ nÀtet eller i böcker om vilka för- och nackdelar som Python medför som utvecklingssprÄk sÄ omnÀmns ofta mÄnga. I detta avsnitt ska du fÄ lÀsa om utvalda sÄdana och som vi tycker Àr sÀrskilt intressanta och/eller viktiga.
Fördelar med Python
Följande fördelar omnÀmns ofta i samband med att man lÀser om Python som programmeringssprÄk:
Enkel syntax
En fördel som uppskattas av mÄnga Àr Pythons syntax som Àr vÀldigt enkel och förhÄllandevis lÀttlÀst.
Kodsyntax Àr de regler som Àr kopplade till ett programmeringssprÄk och som styr vilka tecken du behöver skriva och med vilken struktur för att det ska kunna Ästadkomma nÄgot specifikt.
I kodexemplet (1) kan du se kod som skapar en samling (lista) i Python med flera tal och att dessa sedan skrivs ut.
1 #Exempel 1: Skapa en lista med tre frukter i Python
2
3 . my_fruits = []
4 my_fruits append(âĂ€pplenâ)
5 my_fruits append(âapelsinerâ)
6 my_fruits append(âbananerâ)
7 .
8 print(my_fruits)
Motsvarande kod i Java ser ut som föjer:
#Skapa en lista
#LĂ€gg till en âfruktâ i listan
#LĂ€gg till en âfruktâ i listan
#LĂ€gg till en âfruktâ i listan
#Skriver ut âfrukternaâ
1 #Exempel 2: Skapa en lista med tre frukter i Java
2 .
3 . import java .util .ArrayList
4
5 public class Program{
//LÀgger till en klass för samlingar
//Man mÄste inte lÀgga all kod i klasser i Python
6 . public static void main(String[] args){ //Man mÄste inte lÀgga all kod i metoder i Python
7 . ArrayList myFruits = new ArrayList(); //Skapa en lista
8 myFruits add(âĂ€pplenâ); //LĂ€gg till en âfruktâ i listan
9 myFruits add(âapelsinerâ); //LĂ€gg till en âfruktâ i listan
10 . myFruits .add(âbananerâ); //LĂ€gg till en âfruktâ i listan
11
12 System out println(myFruits); //Skriver ut âfrukternaâ
13 }
14 . }
Nu visar dock exemplet en ogynnsam situation för Java och skillnaden Ă€r vanligtvis inte sĂ„ hĂ€r pĂ„taglig. En viktig anledning till att koden i Python kan skrivas sĂ„ mycket enklare i detta fall Ă€r för att Python tillĂ„ter att du skriver kod rakt upp och ner, utan att koden behöver âpaketeras inâ i sĂ„ kallade klasser och metoder (som vi snart kommer skriva mer om)
I andra kÀnda programmeringssprÄk som Java och C# sÄ mÄste all kod paketeras in pÄ detta sÀtt.
Det Ă€r vanligt att nybörjare i programmering vĂ€ljer Python som sprĂ„k just för att koden i sig upplevs enklare och mindre âskrĂ€mmandeâ. Och det ska inte underskattas sĂ„ klart.
Men Pythons enkla syntax Ă€r inte bara fördelaktigt för nybörjare som vill lĂ€ra sig programmering. Ăven erfarna progammerare uppskattar den enkla syntax och inom vissa omrĂ„den sĂ„som i att programmera smart utrustning i vĂ„ra hem (IoT) sĂ„ kommer sĂ€rskilt den enkla och rena syntax till sin rĂ€tt.
Plattformsoberoende
En av de viktigaste fördelarna med Python Àr att det Àr plattformsoberoende.
För att förstÄ vad det innebÀr sÄ behöver vi utreda begreppet plattform. En sÄdan handlar i princip om vilken datormiljö du syftar till och dÄ en specifik hÄrdvara och ett operativsystem
NÀr det handlar om hÄrdvara sÄ grupperar man dessa utifrÄn vilken processor som finns i datorn och den vanligaste sÄdan Àr x86 (som i tur inkluderar flera olika varianter). Eller som du troligtvis kÀnner igen plattformen som: PC (Àven om kopplingen mellan begreppet PC och x86 inte Àr helt okomlicerad).

Andra exempel pÄ hÄrdvaruplattformar Àr ARM (som anvÀnds i exempelvis chromebook, mobiltelefoner och Arduino) och Playstation.
I bilden kan du en Arduino som Àr en sÄ kallad enkorts-dator och som bland annat bestÄr av en processor med ARM-arkitekturen.
En plattform Ă€r den datormiljö som anvĂ€ndaren sitter vid och det syftar till hĂ„rdvara (det du kan âta pĂ„â) samt operativsystemet som Ă€r det program som styr hĂ„rdvaran.
Ăven en dator med samma hĂ„rdvara (som en PC) kan innebĂ€ra olika plattformar och det beror pĂ„ att en dator kan köra olika operativsystem. Och ett operativstem Ă€r den viktigaste mjukvaran pĂ„ en dator och som hanterar datorns hĂ„rdvara samt tillĂ„ter en miljö för andra program att köra i. Det betyder att program som webblĂ€sare, ordbehandlingsprogram och datorspel behöver ett operativsystem för att kunna köra.
Exempel pĂ„ operativsystem som finns till PC-kompatibla arkitekturer Ă€r OS/2 (âmacâ), Linux och Microsoft Windows.
Alla dessa kombinationer av hÄrdvara och mjukvara bildar en möjlig plattform. Och att Python Àr plattformsoberoende innebÀr alltsÄ att den kod som du skriver kan köras oberoende av vilken typ av dator eller annan utrustning som programmet Àmnar anvÀndas för.
Vi kommer att Äterkomma lite mer till detta nÀr du kommer lÀsa om hur kod som du skriver i Python omvandlas till ett körbart program.
Python anvÀnds för IoT
Python anvÀnds ofta för att styra mindre enheter som Àr uppkopplade mot nÀtet och som gÄr under samlingsbegreppet Internet Of Things. Enheter som kan betecknas ingÄ i detta begrepp Àr exempelvis sensorer, lampor och kameror.
För Ă€ndamĂ„let Ă€r Python mĂ„ngsidigt och har ett stort utbud av fĂ€rdiga relevanta bibliotek och moduler. Ăven programmeringssprĂ„kets enkla och lĂ€sbara syntax Ă€r en aspekt som ofta omnĂ€mns nĂ€r man lĂ€ser om varför de flesta som utvecklar mjukvara för denna typ av utrustning vĂ€ljer att anvĂ€nda Python.
Python har ett enormt âcommunityâ
âCommunityâ Ă€r inte bara en vĂ€ldigt rolig tv-serie utan ocksĂ„ begreppet för en grupp mĂ€nniskor med gemensamma intressen och som verkar för att tillsammans utveckla det som de Ă€r intressadera av. I detta fall programmeringssprĂ„ket Python.
Och de personer som Àr en del av denna gemenskap har en betydande roll i hur Python utvecklar sig som programmeringssprÄk. Detta skapar ett genuint engagemang dÀr pengar inte nödvÀndigtvis den högsta motivationsfaktorn.
Det handlar om att utveckla ramverk, bibliotek och andra resurser som bidrar till ökad(e) produktivitet och anvÀndningsomrÄden.
Python Àr ett objekt-orienterat programmeringssprÄk...
De flesta moderna programmeringssprÄk bygger pÄ en tankeidé hur moderna program ska konstrueras - ett paradigm som kallas objektorientering.
Ett programmeringsparadigm Àr ett synsÀtt pÄ hur program ska konstrueras och fungera. Ett objektorienterat paradigm anvÀnds i sprÄk som Java, C# och Python
Vi kommer snart beskriva begreppet lite mer ingÄende, mest för att du ska kunna förstÄ andra koncept kopplat till Python som programmeringssprÄk och PyCharm som utvecklingsmiljö.
Och i det sista kapitlet i denna lÀrobok sÄ kommer du att uttryckligen skriva kod enligt ett objektorienterat synsÀtt.
... men ocksÄ ett scriptsprÄk..
Det Àr dock viktigt att pÄpeka att Python inte Àr ett renodlat objektorienterat sprÄk, utan att det ocksÄ Àr ett scriptsprÄk som kÀnnetecknas av mindre koder som tolkas rad för rad. Sedan Àr det ocksÄ delvis fel att sÀtta ett motsatsförhÄllande mellan scriptsprÄk och objektorienterad programmering.
3 Hello World
Din första kod
Mer om funktioner
21
22
Kommentarer i koden
Sammanfattning
Du ska nu fÄ skriva dina allra första körbara kod. Sedan kommer du bara att utveckla dina kunskaper genom kommande kapitel och dina program kommer bli alltmer omfattande och anvÀndbara. Och roliga att skriva koden för.
Inledningsvis sÄ kommer du sÀkerligen bli varse hur petigt det Àr med programmering. Ett felaktigt tecken gör koden okörbar. Lyckligtvis sÄ jobbar du i en utvecklingsmiljö som PyCharm och som hjÀlper dig att skriva en korrekt kod. Detta skrev vi om i föregÄende kapitel.
Din första kod
Du ska skriva ett program som skriver ut en klassisk text âHello Worldâ och som brukar utgöra det allra första programmet som en programmerare skriver. Om du skulle söka pĂ„ uttrycket sĂ„ skulle kunna inse att det har gedigna historiska anor och omnĂ€mns i vĂ€ldigt gamlga programmeringsböcker. Enligt vissa kĂ€llor sĂ„ kan man hitta dess ursprung sĂ„ lĂ„ngt bakĂ„t som till slutet av 60-talet och sprĂ„ket BCPL (Basic Combined Programming Language).
För att skriva ut texten sÄ behövs oavsett enbart följande kod:
1 #Exempel 1: Utskrift av âHello worldâ som script
2 . 3 . print(âHello worldâ)
Och det Àr det som krÀvs. Du anvÀnder en funktion som heter print() och innanför parentesen skriver du texten som ska skrivas ut, funktionens argument.

24
26
Hello world med fÀrdig kod
Vi ska dock utgÄ ifrÄn att du valt att skapa ett projekt med alternativet för vÀlkomst script. Och dÄ kommer det innebÀra mer kod.
I kodexempel (2) sĂ„ har vi skrivit en programsats som skriver ut texten âHello Worldâ pĂ„ skĂ€rmen.
1 #Exempel 2: âHello worldâ med vĂ€lkomstscript
2 .
3 def print_text(word):
4 #Kodblock som tillhör funktionen main() börjar : Du skriver all din kod hÀr
5 print(word)
6 .
7 if __name__ == â__main__â: #Om koden (modulen) körs som ett script (toppnivĂ„instruktion)
8 print_text(âHello worldâ) # sĂ„ körs metoden main()
Detta Àr den kod som alltsÄ visas om du valt att markera alternativet för att skapa ett script i samband med att du vÀljer att skapa ett nytt projekt.
I bilagan kan du lÀsa en mer ingÄende beskrivning av detta vÀlkomstscript och dÀr vi beskriver syftet med de olika kodraderna. Vi har valt att lÀgga det som en bilaga dÄ du som lÀsare sjÀlv kan bedöma nÀr det kÀnns rimligt att ta sig an innehÄllet.
Mer om funktioner
NedanstÄende avsnitt inkluderar kodning som vi gÄr genom frÄn och med nÀsta kapitel. Syftet Àr dÀrmed inte i första hand att du ska förstÄ koderna utan att du ska fÄ en inledande idé om hur du arbetar med funktioner samt hur den kontextuella hjÀlpen som finns inbyggd i utvecklingsmiljön kan underlÀtta arbetet med koden.
Prova gÀrna att skriva koderna och se om du kan fÄ funktionerna att fungera samt att du kan se den inbyggda hjÀlpen i utvecklingsmiljön som visas sÄsom du kan se i bilderna.
I Python jobbar du inledningsvis med funktioner och dessa bygger pÄ precis samma princip och har samma syfte som en metod men med skillnaden att en funktion Àr fristÄende. Den tillhör ingen klass. SÄsom funktionen print_text() i kodexemplet tidigare.
Dessa skapas (ofta) direkt pÄ toppnivÄn i koden, alltsÄ utan nÄgon indentering (indrag frÄn vÀnster).
TÀnk tills vidare att funktioner och metoder Àr exakt samma sak. Det Àr bara att de Àr placerade lite annorlunda i koden. DÀr metoder tillhör klasser medan funktioner ligger pÄ den högsta nivÄn i koden utan indentering.
4 Variabler
Att skapa en variabel
Att skapa bÀttre utskrifter
Inmatningar i programmet
Med all respekt för programmet som kan skriva ut âHello Worldâ men det hĂ€nder inte sĂ„ dĂ€r vĂ€ldigt mycket. För att vi ska kunna ta nĂ€sta steg och involvera anvĂ€ndaren i programmet sĂ„ behöver vi lĂ€ra oss att anvĂ€nda variabler.
En fundamental komponent i alla programmeringssprÄk Àr variabler som Àr ett sÀtt för oss att hantera vÀrden. Dessa vÀrden kan vara av olika typer som text, heltal och decimaltal. Vi kan ge en variabel ett vÀrde direkt i koden, men Ànnu mer spÀnnande blir det nÀr vi ber anvÀndaren att mata in vÀrdet. DÄ öppnas Àntligen dörrarna för att vi ska kunna skapa interaktiva program. AlltsÄ att anvÀndaren fÄr en aktiv roll i programmet, att det sker ett samspel mellan anvÀndaren och datorn.
I detta kapitel sÄ kommer du att fÄ lÀra dig att hantera variabler och olika typer av vÀrden. Detta kommer du behöva tampas med ett tag. Sedan kommer du ocksÄ att lÀra dig hantera inmatningar frÄn anvÀndaren, som dÄ alltsÄ Àr en förutsÀttning för att skapa en interaktion.
Ăven om du skrev din första kod i förra kapitlet sĂ„ Ă€r det i och med detta kapitel som du kan börja skriva koder som skapar nĂ„gon form av anvĂ€ndbara program. Att programmet kan interagera med anvĂ€ndaren Ă€r inte bara trevligt, det Ă€r ju helt avgörande för de flesta typer av program.
Det finns mÄnga kodexempel i detta kapitel. Jobba med dessa och hitta gÀrna pÄ egna övningar. Du kommer sÀkert vilja lÀsa detta kapitel ett par gÄnger, men kom ihÄg att det Àr först nÀr du sÀtter dig ner för att skriva kod som den verkliga utvecklingen sker. Du kan inte lÀsa dig till att bli duktig i programmering, det mÄste praktiseras ocksÄ.
Att skapa en variabel
En variabel Àr oavsett en plats i ett program dÀr vi kan lagra ett vÀrde, och för att Ästadkomma detta sÄ behöver du tÀnka pÄ tre moment.
NedanstÄende beskrivning utgÄr ifrÄn scenariot att du skapar tre olika variabler i koden och som alla kan lagra ett specifikt typ av vÀrde.
1 #Exempel 1: Tre variabler med olika datatyper
2
3 . whole_number: int = 15
4 . decimal_number : float = 3 .14159
5 letters : str = âhejâ
#type hint (int)
#type hint (float)
#type hint (str)
I kodexemplet (1) kan du se koden som skapar de tre variabler som vi berÀttar om nu:
Namnge variabeln
Du behöver bestÀmma namnet pÄ variabeln (1) och detta kommer du att mÀrka Àr inte sÄ lÀtt som det lÄter. I alla fall nÀr det kommer till att vÀlja bra namn för variabeler. Tills vidare sÄ ska du dock inte ligga vaken om nÀtterna pÄ grund av detta.

Vi kommer att Ă„terkomma till namngivning av variabler titt som tĂ€tt genom boken. I bilden sĂ„ har vi exempelvis gett en variabel namnet âwhole_numerâ och för detta exempel fĂ„r vi lov att sĂ€ga att det Ă€r ett tydligt och lĂ€mpligt namn. Men i kommande program sĂ„ Ă€r det troligtvis inga vidare bra namn, eftersom syftet med variabeln troligtvis Ă€r nĂ„got annat Ă€n att demonstrera att det lagrar just ett heltal.
FaststÀlla en datatyp
I Python kan du inte faststÀlla en datatyp sjÀlv, i alla fall inte nÀr variabeln skapas. DÀremot kan du i ett senare skede tvinga koden att tolka en variabel som om den innehar en specifik datatyp (mer om det snart).
Alla variabler mÄste tilldelas en datatyp (2) men till skillnad frÄn mÄnga andra programmeringssprÄk dÀr du som utvecklare styr detta sÄ sker alltsÄ valet i datatyp av Python.
PROGRAMMERING 1 MED PYTHON
Boken Àr skriven för dig som vill lÀra dig programmering med Python frÄn grunden. Programmering Àr utvecklande pÄ flera sÀtt, du kommer att utveckla din problemlösningsförmÄga och din logiska tankeförmÄga. LikasÄ kommer du att fÄ trÀna upp ditt tÄlamod och din förmÄga att uppmÀrksamma detaljer och vÄr utgÄngspunkt nÀr vi skrev boken Àr att programmering Àr lika mycket ett kreativt omrÄde som ett tekniskt.
I denna lÀrobok sÄ fÄr du lÀra dig det som krÀvs för att du ska fÄ en stabil grund att stÄ pÄ inför ytterligare studier och med mer avancerad programmering. Du kommer att fÄ lÀra dig om variabler och vektorer som Àr tvÄ olika sÀtt att lagra vÀrden pÄ. Vidare kommer du att fÄ lÀra dig att anvÀnda kontrollstrukturer som anvÀnds för att styra program i olika riktningar. Som vi ofta vill ska styras av anvÀndaren till programmering. Vidare sÄ kommer du att fÄ lÀra dig att anvÀnda funktioner som anvÀnds för att gruppera koder som fyller ett sÀrskilt syfte och att vi sedan kan anvÀnda den uppsÀttning kod nÀr vi behöver den. PÄ samma sÀtt som att vi har olika verktyg i en verktygslÄda och som alla har en specifik uppgift, en funktionalitet.
Du kommer fÄ lÀsa om vad som anses vara en bra kod. Hur du kommenterar och dokumenterar kod, hur du strukturerar koden och hur du ska tÀnka för att efterstrÀva enkel kod i förmÄn för onödigt svÄr kod. LikasÄ kommer du att fÄ lÀra dig om vad som utmÀrker Python som programmeringssprÄk och vad som krÀvs för att du ska kunna skriva dina allra första program. Boken Àr grundad i ett paradigm eller tankesÀtt som kallas för objektorienterad programmering. Det innebÀr att du lÀr dig att skriva klasser som representerar saker eller sÄ kallade entiteter i vÄr omvÀrld, och att du sedan kan skapa förekomster av dessa som kallas för objekt.
Boken Àr skriven utifrÄn gymnasieskolans lÀroplan och de riktlinjer som ligger till grund för kursen Programmering 1.
ISBN 978-91-7531-178-4