Programmeren in Notepad++
Over wat programmeren is, en hoe je praktisch C# consoleprogramma's maakt in Notepad++ lees je in https://rogiervdl.github.io/DEVENV-course/05_npp.html
Console
Met de klasse Console
is het mogelijk om tekst naar de console te schrijven en invoer van de gebruiker uit de console uit te lezen (basis I/O).
Waarde schrijven
op één regel
Console.Write("a");
Console.Write("b");
Console.Write("c");
abc
op aparte regels
Console.WriteLine("a");
Console.WriteLine("b");
Console.WriteLine("c");
a b c
Waarde inlezen
Tekst inlezen
Console.Write("Voer je naam in: "); // vraag om de naam van de gebruiker (blijf op zelfde lijn)
string naam = Console.ReadLine(); // lees de naam in en sla deze op in een variabele
Console.WriteLine($"Hallo, {naam}"); // schrijf een boodschap naar de console

Getal inlezen
Console.ReadLine() geeft altijd een tekst terug; als je een getal wil, moet je het converteren met Convert.ToInt32()
(gehele getallen) of Convert.ToDouble()
(kommagetallen):
Console.Write("Geef een aantal in: ");
int aantal = Convert.ToInt32(Console.ReadLine()); // zet de tekst om naar een geheel getal met Convert.ToInt32()
Console.Write("Geef een prijs in: ");
double prijs = Convert.ToDouble(Console.ReadLine()); // zet de tekst om naar een kommagetal met Convert.ToInt32()
Karakter inlezen
met weergave
Console.Write("Wil je verder gaan? [j/n]: ");
char keuze = Console.ReadKey().KeyChar;
Console.WriteLine($"\nJe koos: {keuze}");

zonder weergave
Console.Write("Wil je verder gaan? [j/n]: ");
char keuze = Console.ReadKey(true).KeyChar; // true → karakter wordt niet weergegeven in console
Console.WriteLine($"\nJe koos: {keuze}");

Soms wordt dit ook gebruikt om met het vervolg van het programma te wachten tot de gebruiker een toets indrukt:
Console.WriteLine("druk een toets om verder te gaan...");
Console.ReadKey(true);
Tekstkleuren
Met de properties ForegroundColor
en BackgroundColor
kan je de tekstkleur, respectievelijk de achtergrondkleur van de uitvoer in de console instellen.
Console.ForegroundColor = ConsoleColor.Red; // rode tekstkleur
Console.BackgroundColor = ConsoleColor.White; // witte achtergrond
Console.WriteLine("Hello, World!");

Om opnieuw de oorspronkelijke tekst- en achtergrondkleur in te stellen, maak je gebruik van de methode ResetColor()
:
Console.ResetColor();
Console wissen
Om het console-venster leeg te maken, maak je gebruik van de Clear()
-methode:
Console.Clear(); // wis de inhoud van het console-venster
UTF-8 karakters
Standaard kan je in de console alleen de eerste 127 ASCII karakters gebruiken (zie b.v. asciitable.com ). Andere karakters worden fout weergegeven:
Console.WriteLine("A 1 +"); // gewone ASCII karakters worden correct weergegeven
Console.WriteLine("∑ → ◈"); // andere karakters worden fout weergegeven
A 1 + S ⸮ ?
Om speciale karakters correct weer te geven, moet je Console.OutputEncoding
instellen:
Console.OutputEncoding = Encoding.UTF8; // stel utf-8 karakterset in
Console.WriteLine("A 1 +");
Console.WriteLine("∑ → ◈"); // andere karakters worden nu ook correct weergegeven
A 1 + ∑ → ◈
Merk op: zelfs dan kunnen karakters soms verkeerd of anders weergegeven worden, afhankelijk van de beschikbare lettertypes, en zeker bij emoji's.
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("✂ ✍ ✈ ☀");

Samenvatting properties en methodes
Overzicht van alle properties en methodes gebruikt in dit hoofdstuk:
Property | Omschrijving |
---|---|
BackgroundColor |
De achtergrondkleur die achter de tekst in de console wordt weergegeven |
ForegroundColor |
De tekstkleur voor het weergeven van tekst in de console |
OutputEncoding |
Het karakterset gebruikt in de console |
Methode | Omschrijving |
---|---|
Clear() |
Wist de inhoud van het console-venster |
Read() |
Lees één karakter uit, uit de console |
ReadKey() |
Leest één karakter uit, uit de console. Biedt de mogelijkheid om de ingetypte toets niet weer te geven |
ReadLine() |
Leest een volledige regel uit, uit de console |
ResetColor() |
Herstelt de voor- en achtergrondkleur naar de oorspronkelijke kleuren |
Write() |
Schrijft de waarde naar de console |
WriteLine() |
Schrijft de waarde naar de console en eindigt de regel met een newline-karakter |
Strings
Een string is een datatype dat een reeks van karakters (letters, cijfers, ...) kan bevatten. String's worden altijd tussen dubbele quotes geplaatst.
string boodschap = "Hello, World!";
Console.WriteLine(boodschap);
Hello, World!
Karakters escapen
De volgende karakters moeten ge-escaped worden d.m.v. een backslash (\
):
- dubbele quote (
"
) - backslash (
\
)
Console.WriteLine("Simon says: \"jump\"");
Console.WriteLine("C:\\users\\john.doe\\documents");
Simon says: "jump" C:\users\john.doe\documents
Concatenatie
Om meerdere strings samen te voegen tot één string (concatenatie), maak je gebruik van de
+
-operator:
// voorbeeld 1
string begroeting = "Hallo, ";
string naam = "John";
string boodschap = begroeting + naam;
Console.WriteLine(boodschap);
// voorbeeld 2
Console.WriteLine("Mijn naam is: " + naam);
Hallo, John Mijn naam is: John
Newlines
Je kunt op twee manieren het begin van een nieuwe regel markeren:
- met behulp van het
\n
-karakter - met
Environment.NewLine
(aanbevolen)
Console.WriteLine("Regel 1\nRegel 2"); // optie 1
Console.WriteLine($"Regel 1{Environment.NewLine}Regel 2"); // optie 2
Regel 1 Regel 2 Regel 1 Regel 2
De notatie met Environment.NewLine
krijgt de voorkeur, omdat op sommige besturingssystemen \r\n
verwacht wordt in plaats van \n
.
Multiline strings
Om een string over meerdere regels te spreiden, kan je gebruik maken van multiline strings. Om een multiline string te maken, zet je een @
-karakter vóór de openings-quote:
Console.WriteLine(@"Regel 1
Regel 2
Regel 3");
Regel 1 Regel 2 Regel 3
Multiline strings hebben aparte regels voor escapes: \
-karakters hoef niet te escapen, en een dubbele quote ("
) moet je verdubbelen:
Console.WriteLine(@"C:\users\john.doe\documents"); // backslash NIET escapen
Console.WriteLine(@"Simon says: ""jump!"""); // quotes verdubbelen
Als je dat allemaal wat veel vindt om te onthouden, vermijd dan multiline strings als je karakters moet escapen.
String interpolatie
Via string-interpolatie kan je eenvoudig strings samenstellen. Dit kan op twee verschillende manieren:
string naam = "John";
int leeftijd = 35;
Console.WriteLine("Mijn naam is " + naam + ", ik ben " + leeftijd + " jaar oud."); // zonder interpolatie
Console.WriteLine("Mijn naam is {0}, ik ben {1} jaar oud.", naam, leeftijd); // interpolatie met parameters
Console.WriteLine($"Mijn naam is {naam}, ik ben {leeftijd} jaar oud."); // interpolatie met $ → gebruik bij voorkeur deze notatie
Mijn naam is John, ik ben 35 jaar oud. Mijn naam is John, ik ben 35 jaar oud. Mijn naam is John, ik ben 35 jaar oud.
Je kan niet alleen variabelen, maar ook expressies interpoleren, b.v.:
int getal = 17;
Console.WriteLine($"Het getal {getal} is {(getal % 2 == 0 ? "even" : "oneven")}."); // let op: expressie moet tussen haakjes () staan
Het getal 17 is oneven.
Je kan $ interpolatie tenslotte combineren met @ multiline:
string name = "Bozo";
int year = 2024;
string header = $@"******************************
** {name} for president in {year}
******************************";
Console.WriteLine(header);
****************************** ** Bozo for president in 2024 ******************************
Properties en methodes
.NET biedt een aantal extra properties en methodes die je kan gebruiken op strings via de String
wrapper class, zie appendix: .NET - String klasse
Commentaar
Met commentaar voeg je extra informatie toe aan je code. Commentaar is vrije tekst die niet uitgevoerd wordt.
Commentaar op één regel
// Eerste regel
// Tweede regel
Commentaar over meerdere regels
/* Eerste regel
Tweede regel */
Vuistregels voor goede commentaar
Enkele tips/vuistregels voor een zo leesbare commentaar:
- voeg commentaar pas toe als je programma zo goed als af is, zo vermijd je nodeloos werk
- grote blokken als methodes voorzie je bovenaan van een commentaarblok
- verdeel de coderegels in stukken van telkens een paar regels, en zet bovenaan elk stuk commentaar in één regel (sla niks over)
- scheid stukken telkens met één blanco regel
/// <summary>
/// Theorie hoofdstuk 03 – commentaar voorbeeld
/// Auteur: Rogier van der Linde
/// </summary>
static void Main(string[] args)
{
// vraag een antwoord
Console.Write("Geef een geheel getal: ");
string antwoord = Console.ReadLine();
// converteer naar getal
int getal1 = Convert.ToInt32(antwoord);
// resultaat teruggeven
Console.WriteLine($"Het kwadraat is: {getal1 * getal1}");
Console.ReadLine();
}