Lær hva algoritmer er, hvordan de brukes i hverdagen og i matematikk, og hvordan vi kan beskrive dem med flytskjema og pseudokode.
Algoritmar er overalt
Kvar gong du fylgjer ein oppskrift for å lage pannekaker, bruker du ein algoritme. Når du forklarar nokon vegen til skulen, beskriver du ein algoritme. Når du sorterer ein kortstokk frå lavast til høgast, fylgjer du ein algoritme.
Ein algoritme er berre og bart ein presis, steg-for-steg-beskrivelse av korleis ein løyser eit problem eller utfører ein oppgåve. Det som gjer algoritmar spesielle, er at dei er så tydlege at alle (eller ein datamaskin) kan fylgje dei og komme fram til riktig resultat.
I dette kapitlet skal vi sjå på kva som karakteriserer ein god algoritme, og lære ulike måtar å beskrive algoritmar på.
Ein algoritme er ein endeleg, ordna sekvens av entydige instruksjonar som løyser eit bestemt problem eller utfører ein bestemt oppgåve.
Ein algoritme har desse eigenskapane:
- Endeleg: Ho stoppar etter eit bestemt tal på steg.
- Entydig: Kvart steg er klart definert, utan rom for tolking.
- Input: Ho kan ta inn data (men treng ikkje).
- Output: Ho gir eit resultat.
Algoritmar i kvardagen
Her er nokre døme på algoritmar vi bruker dagleg, utan å tenkje over det:
Oppskrift for kokt egg:
1. Fyll ein kjele med vatn.
2. Set kjelen på plata og kok opp vatnet.
3. Legg egget forsiktig i det kokande vatnet.
4. Vent i 4 minutt (bløtkokt) eller 8 minutt (hardkokt).
5. Ta egget opp med ein skje og kjøl det under kaldt vatn.
Veibeskrivelse:
1. Gå ut døra og ta til venstre.
2. Gå rett fram i 200 meter.
3. Ta til høyre ved lyskrysset.
4. Bygningen er den tredje på venstre side.
Legg merke til at begge døma har noko til felles: dei har ein klar rekkjefølgje, kvart steg er tydleg, og dei fører til eit bestemt resultat.
Beskriv ein algoritme for å utføre heiltalsdivisjon av 47 med 6 (finn kor mange gongar 6 går opp i 47, og kva resten blir).
1. Start med dividenden (47) og divisoren (6).
2. Set tellaren til 0.
3. So lenge dividenden er større enn eller lik divisoren:
- Trekk divisoren frå dividenden:
- Auk tellaren med 1.
4. Gjenta steg 3:
- , teller = 2
- , teller = 3
- , teller = 4
- , teller = 5
- , teller = 6
- , teller = 7
5. No er dividenden (5) mindre enn divisoren (6), so vi stoppar.
Svar: med rest (fordi ).
Finn største felles faktor (GCD) av 48 og 18 ved hjelp av Euklids algoritme.
Gjenta følgjande: Del det største talet på det minste. Erstatt det største talet med resten. Stopp når resten er 0.
1. Del 48 på 18: (rest 12)
2. Del 18 på 12: (rest 6)
3. Del 12 på 6: (rest 0)
Resten er 0, so vi stoppar. Det siste talet vi delte med er 6.
Svar: Største felles faktor av 48 og 18 er .
Vi kan sjekke: og , og 8 og 3 har ingen felles faktorar.
Flytskjema
Eit flytskjema er ein visuell framstilling av ein algoritme. Vi bruker ulike symbol:
- Oval (avrunda rektangel): Start og stopp
- Rektangel: Ein handling eller berekning
- Rombe (diamant): Eit val / ein betingelse (ja/nei)
- Piler: Viser rekkjefølgja
Flytskjema gjer det lett å sjå strukturen i ein algoritme, særleg når det er val og gjentakingar involvert.
Døme: Flytskjema for å sjekke om eit tal er partall
[Start] → [Les inn talet n] → <Er n delelig med 2?>
| |
Ja Nei
| |
[Skriv "Partall"] [Skriv "Oddetall"]
| |
→ → [Stopp] ← ←Pseudokode
Pseudokode er ein måte å skrive algoritmar på med vanlaugs tekst, utan å bruke eit bestemt programmeringsspråk. Det er ein mellomting mellom naturleg språk og programkode.
Her er pseudokode for å sjekke om eit tal er partall:
LES inn talet n
HVIS n er delelig med 2
SKRIV "Talet er partall"
ELLERS
SKRIV "Talet er oddetall"Og her er pseudokode for å finne det største talet i ei liste:
LES inn ei liste med tal
SETT størst = første tal i lista
FOR kvart tal i lista:
HVIS tal > størst
SETT størst = tal
SKRIV størstPseudokode bruker innrykk for å vise kva instruksjonar som høyrer saman, akkurat som i ekte programmering.
Betingelse (val) betyder å utføre ulike instruksjonar avhengig av om noko er sant eller usant. Vi bruker ord som HVIS ... ELLERS (IF ... ELSE).
Desse to byggjesteinane, saman med sekvens (instruksjonar etter kvarandre), er alt vi treng for å beskrive kvar algoritme.
Skriv pseudokode for å berekne summen .
SETT sum = 0
FOR n = 1 TIL 100:
SETT sum = sum + n
SKRIV "Summen er: ", sumGjennomgang:
- Vi startar med sum = 0.
- Løkka køyrer for n = 1, 2, 3, ..., 100.
- For kvar verdi av n legg vi n til sum.
- Etter løkka har vi: sum .
Vi kan sjekke med formelen: ✓
Kva av desse er døme på algoritmar?
Skriv ein algoritme (i pseudokode) for å avgjere om eit tal er positivt, negativt eller null.
Bruk Euklids algoritme til å finne største felles faktor (GCD) av 84 og 36. Vis alle stega.
Når du har skrive ein algoritme i pseudokode, er det korte vegen til å gjere ho om til eit dataprogram. Pseudokode liknar på ekte programkode, men bruker vanlaugs norsk i stad for engelske nøkkelord.
I neste kapittel skal vi lære å skrive algoritmar i programmeringsspråket Python, som er eitt av dei enklaste språka å kome i gang med.
Skriv pseudokode for ein algoritme som finn det minste talet i ei liste med fem tal. Bruk ei løkke.
Oppsummering
I dette kapitlet har du lært:
- Algoritme: Ein endeleg, ordna sekvens av entydige instruksjonar som løyser eit problem.
- Pseudokode: Ein uformell måte å skrive algoritmar på, uavhengig av programmeringsspråk.
- Flytskjema: Grafisk framstilling av ein algoritme med boksar og piler.
- Byggjesteinan: Sekvens (steg etter steg), val (viss/ellers) og iterasjon (løkker).
Nøkkelbegrep
| Begrep | Forklaring |
|---|---|
| Algoritme | Steg-for-steg-oppskrift som løyser eit problem |
| Pseudokode | Algoritme skrive i klartekst |
| Iterasjon | Gjentaking (løkke) |
| Betingelse | Test som avgjør kva veg algoritmen tek |
Døme: Euklids algoritme
- Gjenta: erstatt det største talet med resten av divisjonen, til resten er . Siste divisor er største felles faktor.
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.
