Tilbake
3.3
Pseudokode og flytdiagrammer

3.3 Pseudokode og flytdiagrammer

Lær å beskrive algoritmer ved hjelp av pseudokode og flytdiagrammer.

55 min
7 oppgaver
PseudokodeFlytdiagramProsessymbolBeslutningssymbol
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 7 oppgaver

Tegn før du bygger

En arkitekt tegner plantegninger før byggearbeiderne begynner. På samme måte bør en programmerer beskrive algoritmen før hen koder. To verktøy er sentrale: pseudokode og flytdiagrammer.

Pseudokode er en uformell, tekstlig beskrivelse av en algoritme. Den bruker strukturerte nøkkelord som HVIS, ELLERS, GJENTA SÅ LENGE og FOR HVER, men er ikke bundet til noe bestemt språks syntaks. Den skal være presis nok til å oversettes til kode, men lesbar nok til at også ikke-programmerere forstår den. Det finnes ingen offisiell standard, men noen vaner hjelper: bruk innrykk for å vise struktur, skriv nøkkelord med store bokstaver, bruk beskrivende navn, og vær presis. Pseudokode er ikke ment å kjøres – den er et kommunikasjonsverktøy mellom mennesker, og klarhet er det viktigste.

Det fine er hvor direkte pseudokode oversettes til Python. Se på en algoritme som leser karakterer til brukeren skriver -1, og så regner ut gjennomsnittet:

SETT sum = 0, antall = 0
LES karakter
GJENTA SÅ LENGE karakter != -1:
    SETT sum = sum + karakter
    SETT antall = antall + 1
    LES karakter

GJENTA SÅ LENGE blir while, HVIS/ELLERS blir if/else, LES blir input(), og VIS blir print(). Oversettelsen er nesten mekanisk.

📝Oppgave Quiz 1

Å se algoritmen for seg

Mens pseudokode er tekst, er et flytdiagram et bilde. Det bruker standardiserte symboler koblet med piler for å vise hvordan kontrollen flyter. En oval (avrundet rektangel) markerer Start og Stopp. Et rektangel er en prosess – en handling eller beregning. En rombe (diamant) er en beslutning som alltid har to utganger: Ja og Nei. Et parallellogram er inn- og utdata. Og pilene viser retningen, som hovedregel ovenfra og ned.

Reglene er enkle: hvert diagram har én Start og minst én Stopp, alle symboler skal ha piler, beslutninger har to utganger, og flyten går nedover. For en partall/oddetall-sjekk leser du inn tallet (parallellogram), stiller spørsmålet «Er tall % 2 == 0?» (rombe), og lar de to grenene skrive «Partall» eller «Oddetall» før de møtes i Stopp. Diagrammet gjør det visuelt tydelig at det finnes to veier gjennom programmet.

Løkker vises ved at en pil går tilbake til et tidligere punkt, slik at en gruppe symboler gjentas. En nedtelling fra 5 sjekker «Er teller > 0?»; er svaret Ja, vises telleren, den reduseres med 1, og pilen går tilbake til spørsmålet. Det er denne tilbakepilen som skaper løkken – og det er avgjørende at noe inni løkken endrer betingelsen, ellers stopper den aldri. En for-løkke ser nesten lik ut, men telleren økes automatisk hver runde, slik som for i in range(1, 11).

📝Oppgave Quiz 2

Velg riktig verktøy – men planlegg alltid

Begge verktøyene er nyttige, men har ulike styrker. Pseudokode er tekstlig, skalerer godt for detaljerte og komplekse algoritmer, og oversettes svært direkte til kode. Flytdiagrammer er visuelle, perfekte for å vise den overordnede logikkflyten – særlig betingelser og løkker – men kan bli uoversiktlige for store algoritmer. Anbefalingen: bruk flytdiagram for å forstå den store strukturen, og pseudokode for detaljene. Mange erfarne programmerere bruker begge, og bruker faktisk mer tid på planlegging og design enn på selve kodingen.

La oss ta et mer sammensatt eksempel: en passordvalidering. Passordet må ha minst 8 tegn og inneholde minst én stor bokstav, én liten og ett siffer. I pseudokode setter du tre flagg (har_stor, har_liten, har_siffer) til USANN, går gjennom hvert tegn og slår på flaggene etter hvert, og returnerer en feilmelding hvis noe mangler. Oversatt til Python blir det:

def valider_passord(passord):
    if len(passord) < 8:
        return "For kort – minst 8 tegn kreves"
    har_stor = har_liten = har_siffer = False
    for tegn in passord:
        if tegn.isupper(): har_stor = True
        if tegn.islower(): har_liten = True
        if tegn.isdigit(): har_siffer = True
    if not har_stor: return "Mangler stor bokstav"
    if not har_liten: return "Mangler liten bokstav"
    if not har_siffer: return "Mangler siffer"
    return "Passordet er gyldig!"

Metodene .isupper(), .islower() og .isdigit() sjekker tegntype. Uansett hvilket planleggingsverktøy du velger – det viktigste er at du planlegger før du koder.

📝Oppgave Quiz 3

Oppsummering

God kode begynner med god planlegging. Pseudokode beskriver algoritmen i strukturert tekst med nøkkelord som HVIS, GJENTA SÅ LENGE og FOR HVER, og oversettes nesten mekanisk til Python. Flytdiagrammer tegner algoritmen visuelt med ovaler (start/stopp), rektangler (prosess), romber (beslutning) og parallellogrammer (inn/ut), der en tilbakepil skaper løkker.

Pseudokode skalerer best for detaljer, mens flytdiagrammer viser den store strukturen tydeligst – og mange bruker begge. Enten det gjelder en enkel partallsjekk eller en passordvalidering, er hovedpoenget det samme: planlegg før du koder, akkurat som arkitekten tegner før huset bygges.

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.