Programmering nivå 1 med Python

Kapitel 11: Struktur och läsbar kod

I detta kapitel lär du dig namngivning, kommentarer och hur du strukturerar kod så att program blir tydliga och lätta att underhålla.

Innehållsförteckning

Klicka på ett avsnitt för att hoppa direkt.

11.1 Namngivning

När man programmerar är det viktigt att använda tydliga namn på variabler och funktioner.

Bra namn gör koden

  • lättare att läsa
  • lättare att förstå
  • lättare att felsöka

Dåliga namn

x = 10
y = 20
z = x + y

Det är svårt att förstå vad variablerna betyder.

Bra namn

width = 10
height = 20
area = width * height

Nu blir det tydligare vad programmet gör.

Namn på funktioner

Funktioner bör ha namn som beskriver vad de gör.

Dåligt exempel

def f(a, b):
    return a + b

Bra exempel

def add(a, b):
    return a + b

Regler i Python

Variabelnamn

  • ska börja med en bokstav eller underscore
  • får innehålla bokstäver och siffror
  • får inte vara ett reserverat ord

Bra vanor

  • Använd engelska namn i kod
  • Använd små bokstäver
  • Använd tydliga ord istället för förkortningar

Exempel

total_price = 100
user_name = "Anna"

Sammanfattning

Bra namngivning gör att

  • koden blir tydligare
  • det blir lättare att förstå programmet
  • det blir enklare att arbeta vidare med koden

Övning

Förbättra namnen i koden nedan

a = 5
b = 10
c = a * b
print(c)

Interaktivt exempel: tydliga namn

Jämför otydliga variabelnamn med namn som visar vad programmet räknar ut.

Prova till exempel att:

  • byta a till width
  • byta b till height
  • byta c till area
  • lägga till tydliga utskrifter, till exempel print(f"Bredd: {width}"), print(f"Höjd: {height}") och print(f"Area: {area}")
Resultat
Tryck på Kör kod för att testa programmet.

11.2 Kommentarer

Kommentarer används för att förklara kod.

En kommentar skrivs med tecknet # och körs inte av programmet.

Exempel

# detta är en kommentar
print("Hej")

Kommentarer används för att göra koden lättare att förstå för andra och för dig själv.

När man ska använda kommentarer

Kommentarer är bra när man vill

  • förklara vad programmet gör
  • förklara svåra delar av koden
  • beskriva syftet med variabler eller funktioner

Exempel

# fråga användaren efter ålder
age = int(input("Hur gammal är du? "))

# räkna ut ålder om 5 år
future_age = age + 5

print(f"Om fem år är du {future_age} år gammal")

När man inte ska använda kommentarer

Man ska inte skriva kommentarer som bara upprepar vad koden redan visar.

Dåligt exempel

# sätt x till 10
x = 10

Det är redan tydligt vad koden gör.

Bättre kod istället för kommentarer

Ibland är det bättre att skriva tydligare kod istället för att använda kommentarer.

Dåligt exempel

# räkna ut area
a = w * h

Bättre exempel

area = width * height

Nu behövs ingen kommentar eftersom variabelnamnen är tydliga.

Kommentarer i funktioner

Kommentarer är extra viktiga i funktioner.

def add(a, b):
    # returnerar summan av två tal
    return a + b

Sammanfattning

Använd kommentarer för att

  • förklara varför något görs
  • förklara svår kod

Undvik kommentarer som förklarar självklar kod. Det beror på vem som ska läsa koden hur utförlig den ska vara.

Övning

Lägg till lämpliga kommentarer i koden

name = input("Vad heter du? ")
age = int(input("Hur gammal är du? "))
future_age = age + 10
print(f"Hej {name}")
print(f"Om tio år är du {future_age} år gammal")

Interaktivt exempel: kommentarer

Testa kommentarer som förklarar varför programmet gör vissa steg.

Prova till exempel att:

  • ändra eller ta bort kommentarerna och se att programmet körs likadant
  • lägga till en kommentar som förklarar uträkningen
  • ändra från 10 år till 5 år
Resultat
Tryck på Kör kod för att testa programmet.

11.3 Strukturera kod

Att strukturera kod betyder att man organiserar programmet så att det blir lätt att läsa, förstå och vidareutveckla.

Bra struktur gör stor skillnad när program blir större.

Dela upp i funktioner

Istället för att skriva all kod i en lång lista kan man dela upp programmet i funktioner.

Dåligt exempel

name = input("Vad heter du? ")
age = int(input("Hur gammal är du? "))
future_age = age + 5
print(f"Hej {name}")
print(f"Om fem år är du {future_age} år gammal")

Bättre exempel

def greet(name):
    print(f"Hej {name}")

def calculate_future_age(age):
    return age + 5

name = input("Vad heter du? ")
age = int(input("Hur gammal är du? "))
greet(name)
future_age = calculate_future_age(age)
print(f"Om fem år är du {future_age} år gammal")

Använd tydliga steg

Ett program blir tydligare om det följer en struktur

  • input
  • bearbetning
  • output

Exempel

# input
age = int(input("Hur gammal är du? "))

# bearbetning
future_age = age + 5

# output
print(f"Om fem år är du {future_age} år gammal")

Undvik onödigt upprepad kod

Om samma kod används flera gånger bör man använda funktioner.

Dåligt exempel

print("Hej Anna")
print("Hej Erik")
print("Hej Sara")

Bättre exempel

def greet(name):
    print(f"Hej {name}")

greet("Anna")
greet("Erik")
greet("Sara")

Sammanfattning

Bra struktur innebär att

  • program delas upp i funktioner
  • koden följer tydliga steg
  • upprepning undviks

Det gör programmet

  • lättare att läsa
  • lättare att felsöka
  • lättare att utveckla

Övning

Gör om koden så att den använder funktioner

name = input("Vad heter du? ")
number = int(input("Skriv ett tal: "))
result = number * 2
print(f"Hej {name}")
print(f"Ditt tal gånger två är {result}")

Interaktivt exempel: strukturera ett kassaprogram

Testa hur ett verkligare program blir tydligare när beräkning och utskrift ligger i egna funktioner.

Prova till exempel att:

  • ändra pris, antal och rabatt i inmatningen
  • ändra rabattregeln i rakna_rabatt()
  • lägga till en funktion som heter rakna_moms()

Fyll i en rad för varje fråga:

  1. Vilken vara köper kunden?
  2. Pris per vara
  3. Antal
  4. Rabatt i procent
Resultat
Tryck på Kör kod för att testa programmet.

11.4 Dela upp program och läslig kod

När program blir större är det viktigt att både dela upp programmet och skriva läsbar kod.

Det gör att programmet blir lättare att förstå, ändra och felsöka.

Dela upp program i delar

Ett program bör delas upp i mindre delar med hjälp av funktioner. Varje funktion ska ha en tydlig uppgift.

Exempel

def greet(name):
    print(f"Hej {name}")

def double(number):
    return number * 2

name = input("Vad heter du? ")
number = int(input("Skriv ett tal: "))

greet(name)

result = double(number)
print(f"Resultatet är {result}")

Läslig kod

Kod ska vara lätt att läsa, både för dig själv och för andra.

Det uppnås genom

  • tydliga variabelnamn
  • tydliga funktioner
  • bra struktur
  • korrekta indrag

Exempel på oläslig kod

n=input("namn")
a=int(input("ålder"))
print("hej",n,a+5)

Exempel på läsbar kod

name = input("Vad heter du? ")
age = int(input("Hur gammal är du? "))

future_age = age + 5

print(f"Hej {name}")
print(f"Om fem år är du {future_age} år gammal")

Tänk på

  • Lämna tomma rader mellan delar av programmet
  • Använd konsekvent stil
  • Undvik onödigt komplex kod

Sammanfattning

Att dela upp program och skriva läsbar kod gör att

  • program blir tydligare
  • det blir enklare att hitta fel
  • det blir lättare att utveckla vidare

Övning

Förbättra koden så att den blir mer läsbar

x=input("namn")
y=int(input("tal"))
z=y*2
print("hej",x)
print(z)

Interaktivt exempel: gör koden läsbar

Jämför kompakt kod med samma program skrivet med tydliga namn och mellanrum.

Prova till exempel att:

  • byta x till user_name
  • byta y till number och z till doubled_number
  • lägga till mellanrum runt = och *
  • göra utskriften tydligare, till exempel print(f"Ditt tal gånger två är {doubled_number}")
Resultat
Tryck på Kör kod för att testa programmet.

11.5 Övningar

I dessa övningar ska du träna på

  • namngivning
  • kommentarer
  • struktur
  • läsbar kod

Övning 1

Förbättra namnen i koden

a = 5
b = 10
c = a + b
print(c)

Övning 2

Lägg till kommentarer som förklarar vad koden gör

name = input("Vad heter du? ")
age = int(input("Hur gammal är du? "))
future_age = age + 5
print(f"Hej {name}")
print(f"Om fem år är du {future_age} år gammal")

Övning 3

Gör koden mer läsbar

n=input("namn")
x=int(input("tal"))
y=x*2
print("hej",n)
print(y)

Övning 4

Dela upp programmet i funktioner

name = input("Vad heter du? ")
number = int(input("Skriv ett tal: "))
result = number * 2
print(f"Hej {name}")
print(f"Ditt tal gånger två är {result}")

Övning 5

Skriv ett eget program som

  • frågar användaren efter namn och ålder
  • räknar ut hur gammal personen är om 10 år
  • använder funktioner
  • har tydliga variabelnamn
  • innehåller minst två kommentarer

Programmet ska vara lätt att läsa och förstå.

Quiz

Svara på frågorna och klicka sedan på knappen längst ner för att se hur många rätt du fick.

1. Varför är tydliga variabelnamn viktiga?


2. Vad är en bra kommentar?


3. Varför delar man upp program?


4. Vad kännetecknar läslig kod?


5. Varför bör en funktion ofta ha ett tydligt ansvar?


11.6 Reflektionsfrågor

  1. Varför är det viktigt att använda tydliga variabelnamn?
  2. Vad kan hända om man använder otydliga namn i sin kod?
  3. När är det bra att använda kommentarer i ett program?
  4. När är det onödigt att använda kommentarer?
  5. Vad innebär det att strukturera kod?
  6. Varför är det bra att dela upp program i funktioner?
  7. Vad kännetecknar läsbar kod?
  8. Hur kan man göra ett program lättare att förstå för andra?
  9. Varför är det viktigt att skriva kod som man själv förstår i efterhand?
  10. Vad kan du göra för att förbättra din egen kod i framtiden?