Presentationer Slide 1/1

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_averge i stället för rätt namn
  • skriv text när programmet frågar efter ett tal

Egen övning

Program: fyller 100 år

  1. Fråga efter användarens namn.
  2. Fråga efter användarens ålder.
  3. Beräkna vilket år personen fyller 100.
  4. 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.