Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer For-lus | Lussen
C# Basisprincipes

bookFor-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

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"); } } } }

Opmerking

i++ is hetzelfde als i = i + 1. Hiermee wordt de waarde van de variabele met 1 verhoogd. Op dezelfde manier verlaagt i-- de waarde met 1.

  • int i = 0 is het initialisatiegedeelte. Initialisatie vindt plaats wanneer de lus start. Aan het begin van de lus wordt een nieuwe tijdelijke variabele genaamd i aangemaakt en geïnitialiseerd met de waarde 0.
  • i < 10 is 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 van i na elke iteratie wordt verhoogd, wordt de conditie i < 10 na 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

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"); } } } }

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

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++; } } } }

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

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"); } } } }

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

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); } } } }

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 getal 0, maar in deze voorbeelden behandelen we alleen even getallen groter dan 0.

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); } } } }

Opmerking

i += 2 is een kortere manier om i = i + 2 te schrijven. Deze syntaxis is ook geldig voor andere operatoren, bijvoorbeeld i -= 2, i *= 2, i /= 2, i %= 2 enz.

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

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); } } } }

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

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

Wat zal de uitvoer zijn van het volgende programma? De waarde van sum neemt bij elke iteratie toe met i, daarom zal de waarde tijdens de eerste vier iteraties zijn: 1, 3, 6, 10.

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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-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

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"); } } } }

Opmerking

i++ is hetzelfde als i = i + 1. Hiermee wordt de waarde van de variabele met 1 verhoogd. Op dezelfde manier verlaagt i-- de waarde met 1.

  • int i = 0 is het initialisatiegedeelte. Initialisatie vindt plaats wanneer de lus start. Aan het begin van de lus wordt een nieuwe tijdelijke variabele genaamd i aangemaakt en geïnitialiseerd met de waarde 0.
  • i < 10 is 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 van i na elke iteratie wordt verhoogd, wordt de conditie i < 10 na 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

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"); } } } }

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

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++; } } } }

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

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"); } } } }

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

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); } } } }

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 getal 0, maar in deze voorbeelden behandelen we alleen even getallen groter dan 0.

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); } } } }

Opmerking

i += 2 is een kortere manier om i = i + 2 te schrijven. Deze syntaxis is ook geldig voor andere operatoren, bijvoorbeeld i -= 2, i *= 2, i /= 2, i %= 2 enz.

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

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); } } } }

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

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

Wat zal de uitvoer zijn van het volgende programma? De waarde van sum neemt bij elke iteratie toe met i, daarom zal de waarde tijdens de eerste vier iteraties zijn: 1, 3, 6, 10.

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 1
some-alt