Kap 1.3
Strukturerad problemlösning med kod
Vi delar upp program i tydliga delar som går att förstå, återanvända och testa.
Mål
Efter lektionen ska du kunna...
- strukturera kod i funktioner
- förklara varför vi delar upp program
- skilja på parameter och argument
- skriva ett enkelt program med tydligt huvudflöde
Från Prog 1
I Programmering 1 fick du lära dig byggstenarna
- variabler sparar värden
- villkor väljer väg
- loopar upprepar kod
- funktioner samlar kod som hör ihop
Repetition
Variabler sparar värden
name = "Anna"
age = 17
En variabel har ett namn och ett värde.
print(name)
print(age)
Vi kan använda värdet senare i programmet.
Repetition
Villkor väljer väg
if age >= 18:
print("Myndig")
else:
print("Inte myndig")
Programmet kör olika kod beroende på om villkoret är sant eller falskt.
Kolon och indrag visar vilken kod som hör till villkoret.
Repetition
Loopar upprepar kod
for i in range(3):
print("Hej")
En for-loop används när vi vet ungefär hur många varv vi vill köra.
while age < 18:
age = age + 1
En while-loop kör så länge villkoret är sant.
Problemet
Kod växer snabbt
Ett kort program är ofta lätt att läsa.
Ett längre program blir snabbt rörigt.
Därför behöver vi struktur.
Princip
En del gör en sak
En funktion ska ha ett tydligt ansvar.
Namnet ska visa vad funktionen gör.
Då blir programmet lättare att läsa och felsöka.
Exempel
Beräkna medelvärde
Programmet ska fråga efter tre tal.
Sedan ska det räkna ut medelvärdet.
Till sist ska det skriva ut resultatet.
Helheten först
Hela programmet
def get_number(prompt):
return float(input(prompt))
def calculate_average(n1, n2, n3):
return (n1 + n2 + n3) / 3
def main():
number1 = get_number("Enter first number: ")
number2 = get_number("Enter second number: ")
number3 = get_number("Enter third number: ")
average = calculate_average(number1, number2, number3)
print(f"The average is {average:.2f}")
main()
Funktion 1
Hämta ett tal
def get_number(prompt):
return float(input(prompt))
Funktionen frågar användaren och gör svaret till ett decimaltal.
prompt gör att samma funktion kan visa olika frågor.
Funktion 2
Räkna ut medelvärdet
def calculate_average(n1, n2, n3):
return (n1 + n2 + n3) / 3
Funktionen tar emot tre tal och returnerar resultatet.
Den frågar inte användaren och skriver inte ut något.
Huvudflöde
main() håller ihop programmet
def main():
number1 = get_number("Enter first number: ")
number2 = get_number("Enter second number: ")
number3 = get_number("Enter third number: ")
Här styr vi i vilken ordning saker händer.
Huvudflöde
Beräkna och skriv ut
average = calculate_average(number1, number2, number3)
print(f"The average is {average:.2f}")
:.2f visar talet med två decimaler.
main()
Anropet startar programmet.
Helheten
Hela programmet
def get_number(prompt):
return float(input(prompt))
def calculate_average(n1, n2, n3):
return (n1 + n2 + n3) / 3
def main():
number1 = get_number("Enter first number: ")
number2 = get_number("Enter second number: ")
number3 = get_number("Enter third number: ")
average = calculate_average(number1, number2, number3)
print(f"The average is {average:.2f}")
main()
Begrepp
Parameter och argument
def greet(name):
print("Hej " + name)
name är en parameter.
greet("Anna")
"Anna" är ett argument.
Kom ihåg
Plats och värde
Parametern är platsen i funktionen.
Argumentet är värdet som skickas in.
Samma funktion kan därför användas med olika värden.
Testa fel
Felmeddelanden är information
- ta bort kolon efter
def main() - ta bort ett indrag inne i en funktion
- skriv
calculate_avergei stället för rätt namn - skriv text när programmet frågar efter ett tal
Egen övning
Program: fyller 100 år
- Fråga efter användarens namn.
- Fråga efter användarens ålder.
- Beräkna vilket år personen fyller 100.
- Skriv ut ett personligt meddelande.
Reflektion
Fundera
- Vilken funktion var lättast att förstå?
- Vad vinner vi på att ha en
main()-funktion? - Hur hjälper strukturen när program blir större?
Sammanfattning
Kom ihåg
- Dela upp kod i funktioner med tydligt ansvar.
main()samlar programmets huvudflöde.- Parametrar finns i definitionen.
- Argument skickas in när funktionen anropas.
- Strukturerad kod är lättare att läsa, testa och ändra.