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

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# gebruiken we de for loop als we een stuk code een specifiek aantal keren willen uitvoeren.

Het sjabloon (de syntaxis) van een for-lus is als volgt:

main.cs

main.cs

123
for(initiation; condition; operation) { // code to execute }

Laten we een voorbeeld bekijken waarin we deze syntaxis gebruiken:

main.cs

main.cs

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

i++ is hetzelfde als i = i + 1. Het verhoogt de waarde van de variabele met 1. 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 er een of meerdere 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 gedeelte initialization leeg laten. De lus werkt dan nog steeds, maar je moet voorzichtig zijn omdat dit tot onverwachte resultaten kan leiden als het niet goed wordt afgehandeld.

main.cs

main.cs

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 gedeelte operation weglaten en dit 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

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 dit zorgt ervoor dat de lus oneindig blijft draaien als deze niet handmatig wordt beëindigd (waar we later in de hoofdstukken meer over zullen leren).

main.cs

main.cs

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.

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

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

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 voorwaarde aangepast naar i <= 20 zodat de lus stopt bij 20.

De bovenstaande logica was 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

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 voor de vorige methode te kunnen vormen, maar in dit geval hoeven we alleen de voorwaarde aan te passen naar i <= 27:

main.cs

main.cs

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, dus de waarde tijdens de eerste vier iteraties zal zijn: 1, 3, 6, 10.

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 37

Vraag AI

expand

Vraag AI

ChatGPT

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

Sectie 1. Hoofdstuk 37
some-alt