Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære For-løkke | Løkker
C#-Grunnleggende

bookFor-løkke

En løkke lar oss utføre en kodebit så mange ganger vi ønsker. Det finnes ulike typer løkker. I C# bruker vi for loop når vi vil utføre en kodebit et bestemt antall ganger.

Malen (syntaksen) for en for-løkke er følgende:

for(initiation; condition; operation) { 
    // code to execute
}


La oss se på et eksempel hvor vi bruker denne syntaksen:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Merk

i++ er det samme som i = i + 1. Det øker verdien til variabelen med 1. Tilsvarende vil i-- redusere verdien med 1.

  • int i = 0 er initialiseringsdelen. Initialisering skjer når løkken starter. Ved starten av løkken opprettes en midlertidig variabel kalt i og settes til verdien 0.
  • i < 10 er betingelsen. Betingelsen sjekkes ved hver iterasjon (gjentakelse) av løkken. Løkken fortsetter å kjøre den omsluttede kodeblokken så lenge betingelsen er sann.
  • i++ er operasjonen som utføres etter hver iterasjon. Operasjonen er vanligvis en økning eller reduksjon. Siden verdien til i økes etter hver iterasjon, blir betingelsen i < 10 usann etter 10 iterasjoner, og løkken stopper.

Det er viktig å forstå at alle de tre komponentene i en for-løkke — initialization, condition og operation — er valgfrie. Du kan utelate hvilken som helst av dem, men dette kan endre hvordan løkken oppfører seg.

Selv om det ikke anbefales, kan du erklære løkkevariabelen utenfor løkken og la initialization-delen stå tom. Dette betyr at løkken fortsatt vil fungere, men du må være forsiktig, da det kan føre til uventede resultater hvis det ikke håndteres riktig.

main.cs

main.cs

copy
12345678910111213141516
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Vi kan også fjerne operation-delen og plassere den på slutten av kodeblokken til løkken. Løkken vil oppføre seg på samme måte som før, siden variabelen i fortsatt blir økt etter hver iterasjon.

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }

Merk at vi i koden ovenfor fortsatt plasserte et semikolon (;) i løkkesyntaksen der int i = 0 var forventet. Dette semikolonet må alltid være der, enten vi oppretter en løkkevariabel eller ikke.

Det er også mulig å fjerne løkkebetingelsen, men da vil løkken kjøre uendelig dersom den ikke avsluttes manuelt (noe vi skal lære mer om i senere kapitler).

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }

Merk

Vi har fortsatt inkludert begge semikolonene i løkkesyntaksen for(;;), disse er nødvendige, ellers vil kompilatoren vise feil.

Siden verdien til i endres for hver iterasjon, kan vi utnytte dette. For å forstå dette, la oss se på et enkelt program som skriver ut verdien av i for hver iterasjon:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }

Merk at den slutter på 9 fordi den starter med sifferet 0. Totalt antall iterasjoner var ti. Vi kan endre initialisering, betingelse og operasjon for å skrive ut de ti partallene fra 2 til 20.

Merk

Partall er tall som er delelige med 2. For eksempel 2, 4, 6, 8, 10, osv. Partall inkluderer også tallet 0, men vi vil kun bruke partall over 0 i disse eksemplene.

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }

Merk

i += 2 er en kortere måte å skrive i = i + 2 på. Denne syntaksen er også gyldig for andre operatorer, for eksempel i -= 2, i *= 2, i /= 2, i %= 2 osv.

Løkken starter med 0 og øker verdien av i med 2 for hver iterasjon. Vi endret betingelsen til i <= 20 slik at løkken stopper ved 20.

Logikken ovenfor var for å illustrere hvordan en for-løkke fungerer. Vi kan bruke en mye enklere logikk for å skrive ut de ti første partallene:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }

I dette tilfellet er betingelsen mye enklere. For eksempel, hvis vi ønsker de første 27 partallene, må vi vite hva det 27. partallet er for å kunne danne betingelsen for den forrige metoden, men i dette tilfellet trenger vi bare å endre betingelsen til i <= 27:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
question mark

Hva vil være utskriften av følgende program? Verdien til sum øker for hver iterasjon med i, derfor vil verdien under de fire første iterasjonene være: 1, 3, 6, 10.

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain how to use a for loop to print odd numbers?

What happens if I remove all three components from the for loop?

Can you show an example of an infinite for loop and how to stop it?

Awesome!

Completion rate improved to 1.59

bookFor-løkke

Sveip for å vise menyen

En løkke lar oss utføre en kodebit så mange ganger vi ønsker. Det finnes ulike typer løkker. I C# bruker vi for loop når vi vil utføre en kodebit et bestemt antall ganger.

Malen (syntaksen) for en for-løkke er følgende:

for(initiation; condition; operation) { 
    // code to execute
}


La oss se på et eksempel hvor vi bruker denne syntaksen:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Merk

i++ er det samme som i = i + 1. Det øker verdien til variabelen med 1. Tilsvarende vil i-- redusere verdien med 1.

  • int i = 0 er initialiseringsdelen. Initialisering skjer når løkken starter. Ved starten av løkken opprettes en midlertidig variabel kalt i og settes til verdien 0.
  • i < 10 er betingelsen. Betingelsen sjekkes ved hver iterasjon (gjentakelse) av løkken. Løkken fortsetter å kjøre den omsluttede kodeblokken så lenge betingelsen er sann.
  • i++ er operasjonen som utføres etter hver iterasjon. Operasjonen er vanligvis en økning eller reduksjon. Siden verdien til i økes etter hver iterasjon, blir betingelsen i < 10 usann etter 10 iterasjoner, og løkken stopper.

Det er viktig å forstå at alle de tre komponentene i en for-løkke — initialization, condition og operation — er valgfrie. Du kan utelate hvilken som helst av dem, men dette kan endre hvordan løkken oppfører seg.

Selv om det ikke anbefales, kan du erklære løkkevariabelen utenfor løkken og la initialization-delen stå tom. Dette betyr at løkken fortsatt vil fungere, men du må være forsiktig, da det kan føre til uventede resultater hvis det ikke håndteres riktig.

main.cs

main.cs

copy
12345678910111213141516
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Vi kan også fjerne operation-delen og plassere den på slutten av kodeblokken til løkken. Løkken vil oppføre seg på samme måte som før, siden variabelen i fortsatt blir økt etter hver iterasjon.

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }

Merk at vi i koden ovenfor fortsatt plasserte et semikolon (;) i løkkesyntaksen der int i = 0 var forventet. Dette semikolonet må alltid være der, enten vi oppretter en løkkevariabel eller ikke.

Det er også mulig å fjerne løkkebetingelsen, men da vil løkken kjøre uendelig dersom den ikke avsluttes manuelt (noe vi skal lære mer om i senere kapitler).

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }

Merk

Vi har fortsatt inkludert begge semikolonene i løkkesyntaksen for(;;), disse er nødvendige, ellers vil kompilatoren vise feil.

Siden verdien til i endres for hver iterasjon, kan vi utnytte dette. For å forstå dette, la oss se på et enkelt program som skriver ut verdien av i for hver iterasjon:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }

Merk at den slutter på 9 fordi den starter med sifferet 0. Totalt antall iterasjoner var ti. Vi kan endre initialisering, betingelse og operasjon for å skrive ut de ti partallene fra 2 til 20.

Merk

Partall er tall som er delelige med 2. For eksempel 2, 4, 6, 8, 10, osv. Partall inkluderer også tallet 0, men vi vil kun bruke partall over 0 i disse eksemplene.

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }

Merk

i += 2 er en kortere måte å skrive i = i + 2 på. Denne syntaksen er også gyldig for andre operatorer, for eksempel i -= 2, i *= 2, i /= 2, i %= 2 osv.

Løkken starter med 0 og øker verdien av i med 2 for hver iterasjon. Vi endret betingelsen til i <= 20 slik at løkken stopper ved 20.

Logikken ovenfor var for å illustrere hvordan en for-løkke fungerer. Vi kan bruke en mye enklere logikk for å skrive ut de ti første partallene:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }

I dette tilfellet er betingelsen mye enklere. For eksempel, hvis vi ønsker de første 27 partallene, må vi vite hva det 27. partallet er for å kunne danne betingelsen for den forrige metoden, men i dette tilfellet trenger vi bare å endre betingelsen til i <= 27:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
question mark

Hva vil være utskriften av følgende program? Verdien til sum øker for hver iterasjon med i, derfor vil verdien under de fire første iterasjonene være: 1, 3, 6, 10.

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1
some-alt