For-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
123456789101112131415using 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 somi = i + 1. Det øker verdien til variabelen med1. Tilsvarende vili--redusere verdien med1.
int i = 0er initialiseringsdelen. Initialisering skjer når løkken starter. Ved starten av løkken opprettes en midlertidig variabel kaltiog settes til verdien0.i < 10er 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 tiliøkes etter hver iterasjon, blir betingelseni < 10usann 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
12345678910111213141516using 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
1234567891011121314151617using 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
1234567891011121314151617using 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
123456789101112131415using 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å tallet0, men vi vil kun bruke partall over0i disse eksemplene.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Merk
i += 2er en kortere måte å skrivei = i + 2på. Denne syntaksen er også gyldig for andre operatorer, for eksempeli -= 2,i *= 2,i /= 2,i %= 2osv.
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
1234567891011121314using 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
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
For-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
123456789101112131415using 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 somi = i + 1. Det øker verdien til variabelen med1. Tilsvarende vili--redusere verdien med1.
int i = 0er initialiseringsdelen. Initialisering skjer når løkken starter. Ved starten av løkken opprettes en midlertidig variabel kaltiog settes til verdien0.i < 10er 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 tiliøkes etter hver iterasjon, blir betingelseni < 10usann 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
12345678910111213141516using 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
1234567891011121314151617using 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
1234567891011121314151617using 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
123456789101112131415using 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å tallet0, men vi vil kun bruke partall over0i disse eksemplene.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Merk
i += 2er en kortere måte å skrivei = i + 2på. Denne syntaksen er også gyldig for andre operatorer, for eksempeli -= 2,i *= 2,i /= 2,i %= 2osv.
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
1234567891011121314using 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
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Takk for tilbakemeldingene dine!