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#, 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
123for(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. Dette ø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 ny 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, vil betingelseni < 10bli 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
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 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
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 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
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 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
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. 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å 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 lage betingelsen med 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
Fantastisk!
Completion rate forbedret til 1.67
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#, 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
123for(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. Dette ø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 ny 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, vil betingelseni < 10bli 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
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 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
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 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
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 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
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. 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å 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 lage betingelsen med 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!