Console-applicaties

Een console-applicatie is een programma dat zijn in- en uitvoer via een klassiek commando/shell-scherm toont. Zoals al verteld: in dat boek ga ik je enkel console-applicaties leren maken. Grafische Windows applicaties komen niet aan bod.

In en uit - ReadLine en WriteLine

Een programma zonder invoer van de gebruiker is niet erg boeiend. De meeste programma’s die we leren schrijven vereisen dan ook “input” (IN). We moeten echter ook zaken aan de gebruiker kunnen tonen. Denk bijvoorbeeld aan een foutboodschap of de uitkomst van een berekening tonen. Dit vereist dat er ook “output” (UIT) naar het scherm kan gestuurd worden.

In het begin zullen al je applicaties deze opbouw hebben.

In het begin zullen al je applicaties deze opbouw hebben.

Console-applicaties maken in C# vereist dat je minstens twee belangrijke C# methoden leert gebruiken:

  • Met behulp van Console.ReadLine() kunnen we input van de gebruiker inlezen en in ons programma verwerken.
  • Via Console.WriteLine() kunnen we tekst op het scherm tonen.

Je eerste console programma

Sluit het eerder gemaakte “MyFirstProject” project af en herstart Visual Studio. Maak nu een nieuw console-project aan. Noem dit project Demo1. Open het Program.cs bestand via de solution Explorer (indien het nog niet open is). Veeg de code die hier reeds staat niet weg!

Voeg onder de lijn Console.WriteLine("Hello World!"); volgende code toe (vergeet de puntkomma niet):

Console.WriteLine("Hoi, ik ben het!");

Zodat je dus volgende code krijgt:

namespace Demo1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.WriteLine("Hoi, ik ben het");
        }
    }
}

Compileer deze code en voer ze uit: druk hiervoor weer op het groene driehoekje bovenaan. Of via het menu Debug en dan Start Debugging.

Belangrijk

Moet ik niets bewaren?

Neen. Telkens je op de groene “build en run” knop duwt worden al je aanpassingen automatisch bewaard. Trouwens: Kies nooit voor “save as…”! want dan bestaat de kans dat je project niet meer compileert. Dit zal aardig wat problemen in je project voorkomen, geloof me maar.

Belangrijk

Laat je niet afschrikken door wat er nu volgt. Ik gooi je even in het diepe gedeelte van het zwembad maar zal je er op tijd uithalen . Vervolgens kunnen we terug in het babybadje rustig op de glijbaan kunnen gaan spelen en C# op een trager tempo verder ontdekken.

Analyse van de code

Tip

Voorlopig negeren!

De keywords namespace, class en static void Main lijken nu nog mysterieus. Dat geeft niet: negeer ze gewoon even. Het enige wat jij momenteel moet doen is code schrijven binnen de accolades van Main. We pluizen deze keywords vanaf hoofdstuk 7 helemaal uit.

Ik zal nu iedere lijn code kort bespreken. Sommige lijnen code zullen lange tijd niet belangrijk zijn. Onthoud nu alvast dat: alle belangrijke code staat tussen de accolades onder de lijn static void Main(string[] args)!

  • Lijn 1: Dit is de unieke naam waarbinnen we ons programma zullen plaatsen, en het is niet toevallig de naam van je project. Verander dit nooit tenzij je weet wat je aan het doen bent. Ik bespreek namespaces in hoofdstuk 10.
  • Lijn 3: Hier start je echte programma. Alle code binnen deze Program accolades zullen gecompileerd worden naar een uitvoerbaar bestand. Vanaf hoofdstuk 9 zal deze lijn geen geheimen meer hebben voor je.
  • Lijn 5: Het startpunt van iedere console-applicatie. Wat hier gemaakt wordt is een methode genaamd Main. Je programma kan meerdere methoden (of functies) bevatten, maar enkel degene genaamd Main zal door de compiler als het startpunt van het programma gemaakt worden. Deze lijn zal ik in hoofdstuk 7 en hoofdstuk 8 uit de doeken doen.
  • Lijn 7: Dit is een statement dat de WriteLine-methode aanroept van de Console-bibliotheek. Het zal alle tekst die tussen de aanhalingstekens staat op het scherm tonen.
  • Lijn 8: en ook deze lijn zorgt ervoor dat er tekst op het scherm komt wanneer het programma zal uitgevoerd worden.
  • Accolades op lijnen 2, 4, 6, 9, 10 en 11: voor iedere openende accolade (lijnen 2, 4 en 6) moet eerder in de code ook een bijhorende sluitende volgen (lijnen 9, 10 en 11). We gebruiken accolades om de scope aan te duiden, iets dat we in hoofdstuk 5 geregeld zullen nodig hebben.

Net zoals een recept, zal ook in C# code van boven naar onder worden uitgevoerd.

Voor ons wordt het echter pas interessant op lijn71. Dit is het startpunt van ons programma en de uitvoer ervan. Al de zaken ervoor kan je voorlopig keihard nergeren.

Het programma zal alles uitvoeren dat tussen de accolades van het Main-blok staat. Dit blok wordt afgebakend door de accolades van lijn 6 en 9. Dit wil ook zeggen dat van zodra lijn 9 wordt bereikt, dit het signaal voor je computer is om het programma af te sluiten.

Jawadde…Wat was dit allemaal?! We hebben al aardig wat vreemde code zien passeren en het is niet meer dan normaal dat je nu denkt “dit ga ik nooit kunnen”. Wees echter niet bevreesd: je zal sneller dan je denkt bovenstaande code als ‘kinderspel’ gaan bekijken. Een tip nodig? Test en experimenteer met wat je al kunt!

Laat deze info rustig inzinken en onthoud alvast volgende belangrijke zaken:

  • Al je eigen code komt momenteel enkel tussen de Main accolades.
  • Eindig iedere lijn code daar met een puntkomma (;).
  • Code wordt van boven naar onder uitgevoerd.
Tip

De oerman verschijnt wanneer we een stevige stap gezet hebben en je mogelijk even onder de indruk bent van al die nieuwe informatie. Hij zal proberen informatie nog eens vanuit een ander standpunt toe te lichten en te herhalen waarom deze nieuwe kennis zo belangrijk is.

WriteLine: Tekst op het scherm

De WriteLine-methode is een veelgebruikte methode in Console-applicaties. Het zorgt ervoor dat we tekst op het scherm kunnen tonen.

Voeg volgende lijn toe na de vorige WriteLine-lijn in je project:

Console.WriteLine("Wie ben jij?!");

De WriteLine methode zal alle tekst tonen die tussen de aanhalingstekens (" ") staat. De aanhalingstekens aan het begin en einde van de tekst zijn uiterst belangrijk! Alsook het puntkomma helemaal achteraan.

Je code binnen de Main accolades zou nu moeten zijn:

Console.WriteLine("Hello World!");
Console.WriteLine("Hoi, ik ben het");
Console.WriteLine("Wie ben jij?!");

Kan je voorspellen wat de uitvoer zal zijn? Test het eens!

Tip

Ik toon niet telkens de volledige broncode. Als ik dat zou blijven doen dan wordt dit boek dubbel zo dik. Ik toon daarom (meestal) enkel de code die binnen de Main (of later ook elders) moet komen.

Stagiair Steven

Tijd om iemand voor te stellen die je doorheen dit boek nog vaak zal tegenkomen: Stagiair Steven.

Steven is onze stagiair. Hij is slim genoeg, maar hij laat zijn code tegenwoordig volledig door A.I. schrijven en kijkt zelf amper nog na wat er staat. Daardoor levert hij geregeld code in die er op het eerste gezicht prima uitziet, maar net niet werkt. Aan jou om telkens te spotten waar het misloopt.

Voor zijn allereerste programma moest Steven gewoon “Hallo” op het scherm tonen. Hij kreeg dit van de A.I. en leverde het meteen in:

Console.Writeline(Hallo)

“Eén lijntje, klaar”, zegt hij trots.

Er zitten drie fouten in dat ene regeltje. Vind jij ze? (klik op antwoord om de oplossing te zien)

Drie klassieke beginnersfouten:

  1. Writeline met een kleine l bestaat niet. C# is hoofdlettergevoelig, het moet WriteLine zijn.
  2. Hallo staat zonder aanhalingstekens, waardoor C# het niet als tekst herkent. Het moet "Hallo" zijn.
  3. Er ontbreekt een puntkomma op het einde van de lijn.

De juiste oplossing was: Console.WriteLine("Hallo");

Steven zag het niet omdat hij blind op de A.I. vertrouwde en de rode kringeltjes in Visual Studio negeerde. Hou jij hem de komende hoofdstukken mee in het oog?


  1. “Hello world” op het scherm laten verschijnen wanneer je een nieuwe programmeertaal leert is ondertussen een traditie bij programmeurs. Er is zelfs een website die dit verzamelt namelijk helloworldcollection.de. Deze site toont in honderden programmeertalen hoe je “Hello world” moet programmeren.↩︎