Teknik 1 · Kapitel 5
Programmering för problemlösning
Från ett tydligt problem till instruktioner som datorn kan utföra.
Lektionsmål
Efter kapitlet ska du kunna...
- förklara hur programmering används för problemlösning
- beskriva programmeringsprocessens fem steg
- förklara variabler, villkor, loopar och funktioner
- resonera om testning, automatisering och kodkvalitet
Startfråga
Vad behöver datorn veta?
Uppgift: räkna ut medelvärdet av tre tal.
- Vilka tal ska användas?
- Vilka beräkningar ska göras?
- Vad ska visas för användaren?
- Vad händer om inmatningen är fel?
Programmering kräver att problemet uttrycks exakt.
Begrepp
Vad är programmering?
Att skriva instruktioner som en dator kan följa.
Instruktionerna skrivs i programmeringsspråk som Python, JavaScript eller C#.
Datorn följer instruktionerna snabbt och noggrant – även när instruktionerna är fel.
Problemlösningsverktyg
Koden är inte målet
Programmering kan användas för att:
Målet är en fungerande lösning på ett verkligt problem.
Helhetsbild
Programmeringsprocessen
Nya testresultat kan skicka oss tillbaka till ett tidigare steg.
Steg 1
Förstå problemet
- Vad ska programmet göra?
- Vilken indata behövs?
- Vilken utdata ska skapas?
- Hur ska programmet användas?
- Vilka fel behöver hanteras?
Indata · bearbetning · utdata
Beskriv lösningens flöde
En tydlig modell gör det lättare att kontrollera om programmet löser rätt problem.
Steg 2
Planera lösningen
- Läs in talen.
- Räkna ut summan.
- Dela summan med antalet tal.
- Visa resultatet.
Pseudokod och flödesscheman hjälper oss att tänka igenom logiken innan syntaxen tar plats.
Pseudokod
Planen utan programspråk
LÄS IN tre tal
summa = tal 1 + tal 2 + tal 3
medelvärde = summa / 3
VISA medelvärde
Pseudokoden beskriver logiken men behöver inte följa ett programspråks exakta regler.
Steg 3
Skriv kod
tal = [5, 8, 11]
summa = sum(tal)
medelvarde = summa / len(tal)
print(medelvarde)
Resultat: 8.0
Koden är en möjlig implementation av planen – inte själva planen.
Fyra byggstenar
Så uttrycks lösningen
| Variabel | Lagrar information. | poang = 10 |
|---|---|---|
| Villkor | Väljer mellan alternativ. | if poang > 5 |
| Loop | Upprepar en instruktion. | for tal in lista |
| Funktion | Samlar kod för en uppgift. | berakna_summa() |
Variabler
Ge information ett namn
namn = "Anna"
poang = 120
aktiv = True
Variabelnamnet ska hjälpa läsaren att förstå vad värdet betyder.
x = 120 fungerar för datorn, men poang = 120 är tydligare för människor.
Villkor
Låt programmet välja
if alder >= 18:
print("Myndig")
else:
print("Inte myndig")
Villkoret kontrolleras. Endast den gren som stämmer körs.
Loopar
Upprepa utan kopiering
for namn in ["Anna", "Erik", "Lisa"]:
print(namn)
Samma instruktion körs en gång för varje namn.
Loopar är användbara när antalet värden kan förändras.
Funktioner
Samla en tydlig uppgift
def medelvarde(tal):
return sum(tal) / len(tal)
resultat = medelvarde([5, 8, 11])
Funktionen kan återanvändas med andra listor och testas separat.
Interaktivt exempel
Beräkna medelvärde
Tryck på Beräkna.
Steg 4
Testa programmet
| Testfall | Vad kontrolleras? |
|---|---|
5, 8, 11 | Vanliga giltiga värden |
0, 0, 0 | Nollvärden |
-5, 5 | Negativa tal |
fem, 8 | Felaktig inmatning |
| tomt | Saknad inmatning |
Kontrollfråga
Vilket test saknas?
Ett program som räknar med tal har bara testats med 2, 4 och 6.
Steg 5
Förbättra lösningen
- rätta buggar och logiska fel
- hantera oväntad inmatning
- göra koden tydligare
- förbättra snabbhet och användbarhet
Program utvecklas ofta i flera versioner. Versionshantering gör ändringarna möjliga att följa och återställa.
Webbplats
JavaScript skapar interaktion
Exempel: menyer, formulärkontroll, meddelanden och dynamiskt innehåll.
Unity
C# styr spelvärlden
Samma princip används för hopp, kollisioner, poäng och interaktion med objekt.
Automatisering
Låt datorn utföra återkommande arbete
- sortera stora mängder data
- beräkna resultat på samma sätt varje gång
- kontrollera formulär
- skapa rapporter från data
Automatisering sparar tid och kan minska mänskliga misstag – om reglerna och programmet är korrekta.
Viktig begränsning
Datorn automatiserar även fel
Ett program kan utföra en felaktig regel snabbt, konsekvent och i stor skala.
- Är indata tillförlitlig?
- Är reglerna rimliga?
- Kan resultatet kontrolleras?
- Vem ansvarar när något blir fel?
Felsökning
Vanliga utmaningar
| Syntaxfel | Språket kan inte tolka koden. |
|---|---|
| Exekveringsfel | Programmet avbryts när ett fel inträffar. |
| Logiskt fel | Programmet körs men ger fel resultat. |
| Otydligt problem | Koden löser fel behov. |
Kvalitet
Kod läses oftare än den skrivs
- använd tydliga namn
- dela upp koden i begripliga delar
- kommentera varför – inte varje självklar rad
- undvik onödig upprepning
- gör programmet begripligt för användaren
Ren kod är lättare att testa, ändra och samarbeta kring.
Praktisk övning
Planera ett automatiserat verktyg
- Välj en återkommande uppgift.
- Beskriv indata, bearbetning och utdata.
- Skriv pseudokod.
- Identifiera variabler, villkor, loopar och funktioner.
- Skapa minst fem testfall.
- Beskriv hur felaktig inmatning ska hanteras.
Exit ticket
Tre frågor
- Varför bör problemet och lösningen planeras innan koden skrivs?
- När behövs ett villkor och när behövs en loop?
- Varför måste ett automatiserat system testas med oväntad inmatning?
Sammanfattning
Kom ihåg
- Programmering uttrycker en problemlösning som exakta instruktioner.
- Förstå och planera innan du kodar.
- Variabler, villkor, loopar och funktioner bygger lösningen.
- Testa normala, extrema och felaktiga värden.
- Bra kod ska vara korrekt, begriplig och möjlig att förbättra.