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#, hvis vi ønsker å utføre en kodebit et bestemt antall ganger, bruker vi for loop.

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

main.cs

main.cs

copy
123
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. Dette ø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 ny 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, vil betingelsen i < 10 bli 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 løkkens kodeblokk. 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 dette gjør at løkken kjører uendelig hvis 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 inkluderte fortsatt 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 til 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. Det totale antallet iterasjoner var ti. Vi kan endre initialiseringen, betingelsen og operasjonen 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 lage betingelsen med 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 blir utdataene fra 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

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#, hvis vi ønsker å utføre en kodebit et bestemt antall ganger, bruker vi for loop.

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

main.cs

main.cs

copy
123
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. Dette ø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 ny 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, vil betingelsen i < 10 bli 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 løkkens kodeblokk. 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 dette gjør at løkken kjører uendelig hvis 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 inkluderte fortsatt 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 til 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. Det totale antallet iterasjoner var ti. Vi kan endre initialiseringen, betingelsen og operasjonen 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 lage betingelsen med 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 blir utdataene fra 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