- Let op Gebruik in alle oefeningen string interpolatie (
$) om variabelen en berekeningen in tekst te plaatsen. De+-operator gebruik je enkel om een lange tekst over meerdere codelijnen te splitsen. - Toon je tekens zoals
€,♥of een emoji, zet dan als allereerste lijn inMain:Console.OutputEncoding = System.Text.Encoding.UTF8;. Zonder die lijn worden ze op een Belgische pc een vraagteken of een ander teken. Meer uitleg vind je in Vreemde tekens in console tonen. - De voorbeelduitvoer toont kommagetallen met een komma en geldbedragen in euro, zoals op een pc met Belgische instellingen. Staat je pc in het Engels, dan zie je een punt en een dollarteken.
Mad Libs (Essential)
Mad Libs is een populair woordspelletje waarbij de gebruiker een aantal verschillende woorden moet opgeven, zonder te weten waarvoor ze dienen. Vervolgens worden deze woorden in een verhaal geplaatst dat zo plots erg grappig kan worden.
In deze oefening vraag je aan de gebruiker volgende zaken:
- Een naam (bv. Jos)
- Een zelfstandig naamwoord (bv. bal)
- Een adjectief (bv. groene)
- Een werkwoord (bv. springen)
Vervolgens worden deze woorden in volgende zin geplaatst en aan de gebruiker getoond (gebruik hier string interpolatie voor).
Op een dag ging [naam] naar de AP Hogeschool. Hij zag daar een [adjectief] [zelfstandig naamwoord] en vond dat zo grappig dat hij begon te [werkwoord].
Voorbeeld werking:
Geef een naam:
>Jos
Geef een zelfstandig naamwoord:
>bal
Geef een adjectief:
>groene
Geef een werkwoord:
>springen
Hier komt het!
Op een dag ging Jos naar de AP Hogeschool. Hij zag daar een groene bal en vond dat zo grappig dat hij begon te springen.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Deel 2. Vraag er nog een vijfde woord bij: een uitroep (bv. Joepie). Het verhaal wordt zo:
Op een dag ging [naam] naar de AP Hogeschool. Hij zag daar een [adjectief] [zelfstandig naamwoord] en vond dat zo grappig dat hij begon te [werkwoord]. Toen de docent vroeg wat er zo grappig was, riep [naam] "[uitroep]!" De naam [naam] telt [aantal] letters.
Dat past niet meer op één codelijn. Splits de tekst in je WriteLine over drie codelijnen met +, zoals in Wanneer gebruik je + wel?. Zorg dat in het tweede en in het derde stuk ook een variabele staat. Het aantal letters laat je door C# berekenen: tel het niet zelf. Gebruik daarvoor .Length, zoals in Berekeningen doen bij string interpolatie.
Met de woorden van hierboven en de uitroep Joepie verschijnt:
Op een dag ging Jos naar de AP Hogeschool. Hij zag daar een groene bal en vond dat zo grappig dat hij begon te springen. Toen de docent vroeg wat er zo grappig was, riep Jos "Joepie!" De naam Jos telt 3 letters.
Werkt het? Haal dan bij het tweede stuk de $ weg en voer opnieuw uit. Wat verandert er?
Een $ geldt enkel voor het stuk tekst dat er meteen achter staat. Elk stuk tussen aanhalingstekens is een aparte string, dus elk stuk met een variabele heeft zijn eigen $ nodig. Vergeet je er een, dan compileert je code nog altijd, maar staan de accolades letterlijk in je verhaal.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Char of string? (Essential)
Voer onderstaande code nog niet uit. Schrijf eerst op papier exact op wat er op het scherm zal verschijnen, lijn per lijn.
char letter1 = 'A';
char letter2 = 'B';
Console.WriteLine('A' + 'B');
Console.WriteLine("A" + "B");
Console.WriteLine('1' + 1);
Console.WriteLine('a' - 'A');
Console.WriteLine("1" + 1 + 1);
Console.WriteLine(1 + 1 + "1");
Console.WriteLine($"{letter1}{letter2}");Voer de code daarna uit en vergelijk met wat je opschreef. Klopt een lijn niet, zoek dan uit waar je redenering fout liep voor je naar de oplossing kijkt.
Welk type heeft '1'? Kijk in de ASCII-tabel in het begin van hoofdstuk 3.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Escape conversatie (Essential)
Gegeven volgende code:
string personage1 = "Alice";
string personage2 = "Bob";
string dialoog = $"X";
Console.WriteLine(dialoog);Zorg ervoor dat volgende dialoog op het scherm, met juiste formatering getoond wordt. Je mag enkel de tekst tussen de aanhalingstekens (in de plaats van X) van de variabele dialoog gebruiken (en zal dus escape characters nodig hebben):
Alice: "Hoe gaat het met je?"
Bob: "Goed, dank je! Hoe gaat het met jou?"
Alice: "Ook goed, bedankt dat je het vraagt."
Gebruik \t om de tekst van Bob te doen inspringen. Bij jou springt Bob waarschijnlijk verder in dan hier in het voorbeeld. Dat is geen probleem.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Deel 2. Zet een @ voor je string uit deel 1, zodat er $@"..." staat, en voer opnieuw uit. Wat gebeurt er?
Schrijf de dialoog daarna opnieuw, nu als verbatim string. Zo’n string mag over meerdere codelijnen lopen: een nieuwe lijn in je code is een nieuwe lijn op het scherm. Je gebruikt dus geen enkele escape character meer, en Bob moet nog altijd inspringen. Hoe je in een verbatim string een aanhalingsteken schrijft, lees je in Het verbatim karakter @.
In een verbatim string is de backslash een gewoon teken. \n en \t doen er niets meer, en een aanhalingsteken schrijf je als "". Alles tussen de aanhalingstekens komt letterlijk op het scherm, ook de nieuwe lijnen en de spaties in je code.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Stevens bestandspad (Essential)
Stagiair Steven moet de gebruiker laten weten waar zijn notities bewaard werden. De A.I. gaf hem deze lijn:
Console.WriteLine("Bestand bewaard in C:\temp\notities.txt");Het compileert, dus Steven levert het in. Op het scherm verschijnt echter:
Bestand bewaard in C: emp
otities.txt
Steven denkt dat het aan de kleine letters ligt, en “fixt” het zo:
Console.WriteLine("Bestand bewaard in C:\Temp\Notities.txt");Nu compileert het programma niet meer. Visual Studio toont twee keer de melding CS1009 Unrecognized escape sequence.
- Verklaar wat er bij de eerste versie op het scherm verscheen.
- Verklaar waarom de tweede versie niet compileert, terwijl de eerste dat wel deed.
- Herstel de lijn op twee manieren, zodat
Bestand bewaard in C:\Temp\Notities.txtverschijnt. - Welke van Stevens twee versies is het gevaarlijkst?
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Prijskaartje (Essential)
In de kaaswinkel drukt de weegschaal een etiket af. Maak zo’n etiket na. De gegevens zet je hard in de code:
int artikelnummer = 4217;
string omschrijving = "Jonge kaas";
double gewicht = 0.45; // in kg
double prijsPerKilo = 27.44;Bereken de prijs en toon het etiket zo:
******************************
Artikel: 004217
Omschrijving: Jonge kaas
Gewicht: 0,450 kg
Prijs per kg: € 27,44
Te betalen: € 12,35
******************************
Gebruik voor elke waarde de juiste formattering uit Strings mooier formatteren:
- het artikelnummer altijd met zes cijfers;
- het gewicht altijd met drie cijfers na de komma;
- de twee bedragen als geldbedrag.
De waarden staan onder elkaar dankzij \t. Het euroteken verschijnt enkel juist met de UTF-8-lijn uit de melding bovenaan deze pagina. Probeer ook eens zonder.
Toon daarna ook de prijs zonder formattering. Wat kost de kaas echt? Werd er afgerond of afgekapt?
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Tekens uit de tabel
Zoek op symbl.cc twee tekens die niet op je toetsenbord staan, bijvoorbeeld een hartje en een schaakstuk. Noteer telkens de hexadecimale code.
Toon ze op het scherm, elk op een andere manier (zie UNICODE karakters tonen):
- het eerste met de
\u-notatie; - het tweede door het teken te kopiëren en in je string te plakken.
Toon daarna een emoji met de \U-notatie. Het lachende gezichtje heeft code 1F600.
Zet de UTF-8-lijn bovenaan. Haal ze daarna eens weg en kijk wat er verandert.
Toon tot slot met .Length hoeveel tekens C# telt in een string met enkel die emoji. Verklaar het resultaat.
Zie je een vierkantje in plaats van je teken, dan kent het lettertype van je console dat teken niet. Daar kan je code niets aan doen.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Unicode Art
Genereer je naam als Unicode Art met een online generator, bijvoorbeeld patorjk.com/software/taag. Kies er een lettertype. Toon de tekening aan de start van een van je bestaande programma’s, zodat eerst je naam verschijnt en daarna de rest.
Zet de tekening in een verbatim string met @, zoals in UNICODE-kunst tonen. Vergeet de UTF-8-lijn niet. Zonder die lijn worden sommige blokjes op een Belgische pc zonder melding een ander blokje, en vervormen je letters.
Kies je een lettertype met backslashes (zoals Standard of Graffiti), dan heb je de @ zeker nodig. In een gewone string begint elke \ een escape character. \_ bestaat niet en geeft een compileerfout, maar een \t of \n in je tekening compileert wel en verandert ze stilletjes.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Deel 2. Met @ moet je tekening tegen de linkerkantlijn van je code staan, terwijl de rest van je code in Main inspringt. Anders komen die spaties mee op het scherm. Schrijf de tekening nu als raw string literal, zodat ze even ver inspringt als de rest van je code, zonder dat die spaties op het scherm verschijnen.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Systeem informatie (Essential)
Maak een applicatie die met Environment de belangrijkste informatie over je computer toont. Toon minstens:
UserNameMachineNameProcessorCountIs64BitOperatingSystemWorkingSet, in MB en in GB
WorkingSet geeft het geheugen in bytes. Reken het om naar megabytes en gigabytes, en toon beide met twee cijfers na de komma (met F2). Laat de lijnen tussen de streepjes inspringen met \t.
Toon de eerste twee lijnen (de titel en de streepjes eronder) met één enkele WriteLine. Gebruik voor de nieuwe lijn daartussen geen \n, maar Environment.NewLine, zoals in Over de nieuwe regel.
Voorbeelduitvoer:
Systeeminformatie voor admin op damsPowahPC:
---------------------------------------------
Aantal processors: 8
64-bit besturingssysteem: True
Huidig geheugengebruik: 21,79 MB (0,02 GB)
---------------------------------------------
Voer je programma daarna twee keer na elkaar uit en vergelijk. Leg je uitvoer ook eens naast die van een medestudent.
Environment geeft de gegevens van de computer waarop het programma op dat moment draait. Iedereen krijgt dus een andere uitvoer. WorkingSet verschilt zelfs bij elke run op dezelfde pc.
Deel door 1024.0 en niet door 1024. geheugenInBytes / (1024 * 1024) is een deling van een long door een int, dus een gehele deling. F2 toont dan altijd ,00: 21,00 MB in plaats van 21,79 MB.
Environment.NewLine is een gewone string, dus je zet ze tussen accolades in je interpolatie. Ze bevat de nieuwe lijn van het systeem waarop je programma draait: \r\n op Windows, \n op Linux en macOS.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Nooddeur
Voer onderstaande code nog niet uit.
Console.WriteLine("Het alarm gaat af.");
Console.WriteLine("Iedereen naar de nooddeur!");
Environment.Exit(3);
Console.WriteLine("Iedereen is buiten.");- Welke lijnen verschijnen op het scherm?
- Welke exitcode meldt Visual Studio onderaan het consolevenster als het programma stopt?
- En welke exitcode als je de lijn met
Exitweghaalt?
Schrijf je antwoorden op, en voer de code daarna uit om ze te controleren. Lees zo nodig Programma afsluiten nog eens na.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.
Boardingpass (Final Essentials)
Maak een applicatie die de gebruiker om vluchtinformatie vraagt (naam, vertrek, bestemming, gate) en daarna een boardingpass op het scherm toont. De ticketprijs is voor iedereen dezelfde: 249,99 euro. Zet die als constante in je code.

Gebruik hierbij:
- String interpolatie om de data in de tekst te verwerken.
- Escape characters zoals
\t(tab) en\n(nieuwe lijn) om de tekst netjes uit te lijnen. - De formattering voor een geldbedrag voor de prijs. Vergeet de UTF-8-lijn niet.
Environment.UserNameom onderaan te tonen wie de pass heeft afgedrukt.
Voorbeeldoutput: (tekst na > is invoer)
Boardingpass generator
**********************
Naam passagier:
>Joske Vermeulen
Vertrekplaats:
>Brussel (BRU)
Bestemming:
>New York (JFK)
Gate:
>A45
(Scherm wordt leeg gemaakt...)
****************************************
BOARDINGPASS
****************************************
Passagier: Joske Vermeulen
Van: Brussel (BRU)
Naar: New York (JFK)
Gate: A45
Prijs: € 249,99
Vluchtgegevens gecontroleerd door: admin
****************************************
Een \t springt naar de volgende tabstop, niet een vast aantal spaties verder. Tel dus per label hoeveel tabs het nodig heeft om de waarden onder elkaar te krijgen. Lees Over tabstops nog eens na.
Vergeet niet Console.Clear() te gebruiken om het scherm leeg te maken.
De tabstops staan om de acht posities: op 8, 16, 24, enzovoort. Passagier: is 10 tekens lang, dus één \t brengt de naam naar positie 16. Van: is maar 4 tekens lang: één \t brengt je naar positie 8, en pas een tweede naar 16. Daarom krijgen de korte labels twee tabs.
Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel
gebruikt, dan verschijnt de oplossing hier vanzelf.