For-lus
Een lus stelt ons in staat om een stuk code zo vaak uit te voeren als we willen. Er zijn verschillende soorten lussen. In C#, als we een stuk code een specifiek aantal keren willen uitvoeren, gebruiken we de for loop.
Het sjabloon (de syntaxis) van een for-lus is als volgt:
for(initiation; condition; operation) {
// code to execute
}
Laten we een voorbeeld bekijken waarin we deze syntaxis gebruiken:
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"); } } } }
Opmerking
i++is hetzelfde alsi = i + 1. Hiermee wordt de waarde van de variabele met1verhoogd. Op dezelfde manier verlaagti--de waarde met1.
int i = 0is het initialisatiegedeelte. Initialisatie vindt plaats wanneer de lus start. Aan het begin van de lus wordt een nieuwe tijdelijke variabele genaamdiaangemaakt en geïnitialiseerd met de waarde0.i < 10is de conditie. De conditie wordt bij elke iteratie (herhaling) van de lus gecontroleerd. De lus blijft de ingesloten codeblok uitvoeren zolang de conditie waar is.i++is de bewerking die na elke iteratie wordt uitgevoerd. De bewerking is meestal een verhoging of verlaging. Omdat de waarde vanina elke iteratie wordt verhoogd, wordt de conditiei < 10na 10 iteraties onwaar en stopt de lus.
Het is belangrijk om te begrijpen dat alle drie de componenten van de for-lus — initialization, condition en operation — optioneel zijn. Je kunt elk van hen weglaten, maar dit kan het gedrag van de lus veranderen.
Hoewel het niet wordt aanbevolen, kun je de lusvariabele buiten de lus declareren en het deel initialization leeg laten. Dit betekent dat de lus nog steeds werkt, maar je moet voorzichtig zijn omdat dit tot onverwachte resultaten kan leiden als het niet correct wordt afgehandeld.
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"); } } } }
We kunnen ook het deel operation verwijderen en het aan het einde van het codeblok van de lus plaatsen. De lus zal zich hetzelfde gedragen als voorheen, omdat de variabele i nog steeds na elke iteratie wordt verhoogd.
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++; } } } }
Let op dat we in de bovenstaande code nog steeds een puntkomma (;) in de lus-syntaxis hebben geplaatst waar int i = 0 werd verwacht. Deze puntkomma moet er altijd staan, of we nu een lusvariabele aanmaken of niet.
Het is ook mogelijk om de lusvoorwaarde weg te laten, maar hierdoor blijft de lus oneindig doorgaan tenzij deze handmatig wordt beëindigd (waar we in latere hoofdstukken meer over zullen leren).
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"); } } } }
Opmerking
We hebben nog steeds beide puntkomma's opgenomen in de lus-syntaxis
for(;;), deze zijn essentieel, anders geeft de compiler fouten weer.
Aangezien de waarde van i bij elke iteratie verandert, kunnen we hiervan profiteren. Om dit te begrijpen, bekijken we een eenvoudig programma dat de waarde van i bij elke iteratie weergeeft:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Let op dat het eindigt bij 9 omdat het begint met het cijfer 0. Het totale aantal iteraties was tien. We kunnen de initiatie, conditie en de bewerking aanpassen om de tien even getallen van 2 tot 20 weer te geven.
Opmerking
Even getallen zijn getallen die deelbaar zijn door
2. Bijvoorbeeld 2, 4, 6, 8, 10, enzovoort. Even getallen omvatten ook het getal0, maar in deze voorbeelden behandelen we alleen even getallen groter dan0.
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); } } } }
Opmerking
i += 2is een kortere manier omi = i + 2te schrijven. Deze syntaxis is ook geldig voor andere operatoren, bijvoorbeeldi -= 2,i *= 2,i /= 2,i %= 2enz.
De lus begint met 0 en verhoogt de waarde van i met 2 bij elke iteratie. We hebben de conditie aangepast naar i <= 20 zodat de lus stopt bij 20.
De bovenstaande logica is bedoeld om het functioneren van een for-lus te verduidelijken. We kunnen een veel eenvoudigere logica gebruiken om de eerste tien even getallen weer te geven:
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); } } } }
In dit geval is de voorwaarde veel eenvoudiger. Bijvoorbeeld, als we de eerste 27 even getallen willen, moeten we weten wat het 27e even getal is om de voorwaarde te kunnen vormen voor de vorige methode. In dit geval hoeven we echter alleen de voorwaarde aan te passen naar 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); } } } }
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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-lus
Veeg om het menu te tonen
Een lus stelt ons in staat om een stuk code zo vaak uit te voeren als we willen. Er zijn verschillende soorten lussen. In C#, als we een stuk code een specifiek aantal keren willen uitvoeren, gebruiken we de for loop.
Het sjabloon (de syntaxis) van een for-lus is als volgt:
for(initiation; condition; operation) {
// code to execute
}
Laten we een voorbeeld bekijken waarin we deze syntaxis gebruiken:
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"); } } } }
Opmerking
i++is hetzelfde alsi = i + 1. Hiermee wordt de waarde van de variabele met1verhoogd. Op dezelfde manier verlaagti--de waarde met1.
int i = 0is het initialisatiegedeelte. Initialisatie vindt plaats wanneer de lus start. Aan het begin van de lus wordt een nieuwe tijdelijke variabele genaamdiaangemaakt en geïnitialiseerd met de waarde0.i < 10is de conditie. De conditie wordt bij elke iteratie (herhaling) van de lus gecontroleerd. De lus blijft de ingesloten codeblok uitvoeren zolang de conditie waar is.i++is de bewerking die na elke iteratie wordt uitgevoerd. De bewerking is meestal een verhoging of verlaging. Omdat de waarde vanina elke iteratie wordt verhoogd, wordt de conditiei < 10na 10 iteraties onwaar en stopt de lus.
Het is belangrijk om te begrijpen dat alle drie de componenten van de for-lus — initialization, condition en operation — optioneel zijn. Je kunt elk van hen weglaten, maar dit kan het gedrag van de lus veranderen.
Hoewel het niet wordt aanbevolen, kun je de lusvariabele buiten de lus declareren en het deel initialization leeg laten. Dit betekent dat de lus nog steeds werkt, maar je moet voorzichtig zijn omdat dit tot onverwachte resultaten kan leiden als het niet correct wordt afgehandeld.
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"); } } } }
We kunnen ook het deel operation verwijderen en het aan het einde van het codeblok van de lus plaatsen. De lus zal zich hetzelfde gedragen als voorheen, omdat de variabele i nog steeds na elke iteratie wordt verhoogd.
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++; } } } }
Let op dat we in de bovenstaande code nog steeds een puntkomma (;) in de lus-syntaxis hebben geplaatst waar int i = 0 werd verwacht. Deze puntkomma moet er altijd staan, of we nu een lusvariabele aanmaken of niet.
Het is ook mogelijk om de lusvoorwaarde weg te laten, maar hierdoor blijft de lus oneindig doorgaan tenzij deze handmatig wordt beëindigd (waar we in latere hoofdstukken meer over zullen leren).
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"); } } } }
Opmerking
We hebben nog steeds beide puntkomma's opgenomen in de lus-syntaxis
for(;;), deze zijn essentieel, anders geeft de compiler fouten weer.
Aangezien de waarde van i bij elke iteratie verandert, kunnen we hiervan profiteren. Om dit te begrijpen, bekijken we een eenvoudig programma dat de waarde van i bij elke iteratie weergeeft:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Let op dat het eindigt bij 9 omdat het begint met het cijfer 0. Het totale aantal iteraties was tien. We kunnen de initiatie, conditie en de bewerking aanpassen om de tien even getallen van 2 tot 20 weer te geven.
Opmerking
Even getallen zijn getallen die deelbaar zijn door
2. Bijvoorbeeld 2, 4, 6, 8, 10, enzovoort. Even getallen omvatten ook het getal0, maar in deze voorbeelden behandelen we alleen even getallen groter dan0.
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); } } } }
Opmerking
i += 2is een kortere manier omi = i + 2te schrijven. Deze syntaxis is ook geldig voor andere operatoren, bijvoorbeeldi -= 2,i *= 2,i /= 2,i %= 2enz.
De lus begint met 0 en verhoogt de waarde van i met 2 bij elke iteratie. We hebben de conditie aangepast naar i <= 20 zodat de lus stopt bij 20.
De bovenstaande logica is bedoeld om het functioneren van een for-lus te verduidelijken. We kunnen een veel eenvoudigere logica gebruiken om de eerste tien even getallen weer te geven:
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); } } } }
In dit geval is de voorwaarde veel eenvoudiger. Bijvoorbeeld, als we de eerste 27 even getallen willen, moeten we weten wat het 27e even getal is om de voorwaarde te kunnen vormen voor de vorige methode. In dit geval hoeven we echter alleen de voorwaarde aan te passen naar 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); } } } }
Bedankt voor je feedback!