9789175311784

Page 1


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

Turn static files into dynamic content formats.

Create a flipbook