Loops
Præsenter som slidesLæringsmål
- Kan forklare forskellen på for, while, do-while og foreach
- Kan bruge loops til at gentage kode baseret på en betingelse
- Kan anvende break og continue til at styre et loop
- Kan iterere over arrays, lister og dictionaries med for og foreach
- Kan bruge nested loops til at gennemløbe lister af lister
Løkker og iterationer
Loops (løkker) er grundlæggende programmeringsteknikker, der gentager en blok kode, indtil en betingelse er opfyldt. I C# findes for, while, do-while og foreach — hver med sit eget brugsscenarie.
| Løkke | Brug når |
|---|---|
for |
Du ved, hvor mange gange du skal iterere |
while |
Gentagelse baseret på en betingelse |
do-while |
Mindst én iteration skal køre |
foreach |
Gennemløb af en samling uden indeks |
for-løkken
for bruges, når du ved, hvor mange gange koden skal gentages. Den har tre dele: initialisering, betingelse og opdatering.
int i = 0— startværdi (kører én gang)i < 10— betingelse (tjekkes før hver iteration)i++— opdatering (kører efter hver iteration, samme somi = i + 1)
Loopet udskriver tallene 0 til 9.
Videoer
Se det i praksis
Branching and While Loops [Pt 10] | C# for Beginners
For Loops [Pt 11] | C# for Beginners
while-løkken
while gentager en blok, så længe betingelsen er sand — tjekkes før hver iteration:
Brug while, når antallet af iterationer afhænger af en betingelse — fx brugerinput eller en flag-variabel.
do-while-løkken
do-while minder om while, men kører mindst én gang, fordi betingelsen tjekkes efter koden:
Brug do-while, når menuen eller prompten skal vises mindst én gang — fx "Vil du prøve igen?"
foreach-løkken
foreach itererer over alle elementer i en samling uden at håndtere indeks:
foreach er den simpleste løkke, når du bare skal læse hvert element. Du kan ikke ændre samlingens størrelse under en foreach (fx Add/Remove) — det giver runtime-fejl.
break og continue
break afslutter løkken med det samme:
continue springer resten af den nuværende iteration over og går videre til næste:
Brug break når du har fundet det, du leder efter. Brug continue til at springe ugyldige elementer over.
Iteration over arrays
Et array er en samling af elementer af samme type med fast længde.
Med for — når du har brug for indeks:
Med foreach — når du bare skal læse elementer:
Iteration over lister
En List er dynamisk — du kan tilføje og fjerne elementer. Begge løkketyper virker:
Med for:
Med foreach:
Nested loops — lister af lister
Når hvert element også er en liste (fx en matrix), bruger du nested loops — en løkke inde i en anden:
Med foreach:
Nested loops bruger du i praksis til fx IP-adresse-konvertering og binær matematik — se kapitlet Binary Numbers & IP Addresses.
Iteration over Dictionary
En Dictionary gemmer nøgle/værdi-par. foreach er den naturlige måde at gennemløbe den:
Du kan også iterere over nøgler eller værdier separat:
Praktisk eksempel — sum og gennemsnit
Løkker er essentielle til beregninger over mange værdier:
Mønsteret initialiser → loop → akkumuler bruger du konstant i GF2.
Git-trin
- Branch:
main - Commit:
feat: loekker og iteration
Opsummering
forer bedst når du kender antal iterationer;whileogdo-whilenår betingelsen styrer loopetforeacher perfekt til arrays, lister og dictionariesbreakstopper løkken;continuespringer til næste iteration- Nested loops gennemløber lister af lister og 2D-data
- Dictionaries kan itereres som nøgle/værdi-par, eller kun keys/values
Test din viden
Spørgsmål 1
Hvilken løkke bruger du, når du kender antallet af iterationer på forhånd?
for har initialisering, betingelse og opdatering i én linje — perfekt når du ved, hvor mange gange koden skal gentages, fx for (int i = 0; i < 10; i++).
Spørgsmål 2
Hvad er forskellen på while og do-while?
while tjekker betingelsen før koden kører — den kan springe over helt. do-while kører koden mindst én gang og tjekker derefter betingelsen.
Spørgsmål 3
Hvad gør break i en løkke?
break stopper løkken helt og fortsætter koden efter løkken. Brug det, når du har fundet det, du leder efter, og ikke har brug for flere iterationer.
Spørgsmål 4
Hvad gør continue i en løkke?
continue hopper til næste iteration uden at køre resten af koden i den nuværende. Fx spring lige tal over med if (i % 2 == 0) continue;.
Spørgsmål 5
Hvorfor bør du undgå at kalde .Add() på en liste under en foreach?
Under en foreach må samlingens størrelse ikke ændres. Tilføjelse eller fjernelse under gennemløb giver fejl. Brug for baglæns, hvis du skal fjerne elementer under iteration.
Spørgsmål 6
Hvad er forskellen på .Length på et array og .Count på en liste?
Arrays bruger .Length, lister bruger .Count. Begge fortæller, hvor mange elementer der er — men syntaksen er forskellig, fordi det er forskellige typer.
Spørgsmål 7
Hvordan gennemløber du en Dictionary med både nøgle og værdi?
foreach over en dictionary giver KeyValuePair-elementer med .Key og .Value. Du kan også iterere over .Keys eller .Values separat.