arrow-left

All pages
gitbookPowered by GitBook
1 of 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Strings en chars

hashtag
Char

Een enkel karakter (cijfer, letter, leesteken, etc.) als 'tekst' opslaan kan je doen door het char-type te gebruiken. Zo kan je bijvoorbeeld een enkel karakter als volgt tonen:

Het is belangrijk dat je de apostrof (' ) niet vergeet voor en na het karakter dat je wenst op te slaan daar dit de literal voorstelling van char-literals is (zie ook ).

Je kan eender welk in een char bewaren, namelijk letters, cijfers en speciale tekens zoals %, $, *, #, etc. Merk dus op dat volgende lijn: char eenGetal = '7'; weliswaar een getal als teken opslaat, maar dat intern de compiler deze variabele steeds als een character zal gebruiken. Als je dit cijfer zou willen gebruiken als effectief cijfer om wiskundige bewerkingen op uit te voeren, dan zal je dit eerst moeten converteren naar een getal (zie ).

hashtag
String

Een string is een reeks van 0, 1 of meerdere char-elementen, zoals je ook kan zien als je even met je muis boven een string keyword hovert in je code:

hashtag
Strings declareren

Merk op dat we bij een string literal gebruik maken van aanhalingstekens (") terwijl bij chars we een apostrof gebruiken ('). Dit is de manier om een string van een char te onderscheiden.

Volgende code geeft dus drie keer het cijfer 1 onder elkaar op het scherm, maar de eerste keer behelst het een char (enkelvoudig teken), dan een een string (reeks van tekens) en dan een int (effectief getal):

De output van dit programma zal dan zijn:

Fout gebruik van strings en chars zal code geven die niet zal gecompileerd worden:

  1. In de eerste toekenning proberen we dus een literal van het type string toe te kennen een variabele van het type char.

  2. In de tweede toekenning proberen we een literal van het type char toe te kennen een variabele van het type string.

  3. In de laatste toekenning proberen we een literal van het type char toe te kennen aan een variabele van het type

Strings samenvoegen

hashtag
Strings samenvoegen

Je kan strings en variabelen samenvoegen tot een nieuwe string op verschillende manieren:

  • +-operator

char eenLetter = 'X';
Console.WriteLine("eenLetter=" + eenLetter);

$ string interpolation

  • Of de oude manier: String.Format()

  • circle-info

    In deze cursus prefereren we manier 2, de string interpolatie. Dit is de meest moderne aanpak.

    hashtag
    In dit hoofdstuk

    We gaan van volgende informatie uit:

    • Stel dat je 2 variabelen hebt int age=13 en string name="Finkelstein".

    • We willen de inhoud van deze variabelen samenvoegen in een nieuwe string result die zal bestaan uit de tekst:

      Ik ben Finkelstein en ik ben 13 jaar oud.

    Volgende 3 manieren tonen hoe je steeds tot voorgaande string zal komen.

    hashtag
    Manier 1: String samenvoegen met de +-operator

    Je kan string en variabelen eenvoudig bij elkaar 'optellen'. Ze worden dan achter elkaar geplakt als het ware.

    Let er op dat je tussen de aanhalingsteken (binnen de strings) spaties zet indien je het volgende deel niet tegen het vorige stringstuk wilt 'plakken'.

    hashtag
    Manier 2: String interpolation met $

    In de oude dagen van C# gebruikten we String.Format() (zie hieronder) om meerdere strings en variabelen samen te voegen tot één string. Nu kan dat met string interpolation waarbij we het $-teken gebruiken.

    Door het $-teken VOOR de string te plaatsen geef je aan dat alle delen in de string die tussen accolades staan { } als code mogen beschouwd worden. Een voorbeeld maakt dit duidelijk:

    In dit geval zal dus de inhoud van de variabele name tussen de string op de plek waar nu {name} staat geplaatst worden. Idem voor age. Zoals je kan zien is dit veel meer leesbare code dan de eerste manier.

    hashtag
    Berekeningen doen bij string interpolatie

    Je mag eender welke expressie tussen de accolades zetten bij string interpolation, denk maar aan:

    Alle expressies tussen de accolades zullen eerst uitgevoerd worden voor ze tussen de string worden geplaatst. De uitvoer wordt nu dus: Ik ben Finkelstein en ik ben 17 jaar oud.

    Eender welke expressie is toegelaten, dus je kan ook complexe berekeningen of zelfs andere methoden aanroepen:

    hashtag
    Mooier formatteren

    Zowel bij manier string interpolation (manier 2) als de manier hierna kan je ook bepalen hoe de te tonen variabelen en expressies juist weergegeven moeten worden. Je geeft dit aan door na de expressie, binnen de accolades, een dubbelpunt te plaatsen gevolgd door de manier waarop moet geformatteerd worden:

    Wil je bijvoorbeeld een kommagetal tonen met maar 2 cijfers na de komma dan schrijf je:

    Nog enkele nuttige vormen:

    • D5: geheel getal bestaande uit 5 cijfers (123 wordt 00123) (werkt enkel op gehele getallen!)

    • E2: wetenschappelijke notatie met 2 cijfers precisie (12000000 wordt 1,20E+007)

    • C: geldbedrag (12,34 wordt € 12,34: teken van valuta afhankelijk van instellingen pc)

    Alle format specifiers staan hier opgelijstarrow-up-right.

    hashtag
    Manier 3: String.Format()

    String interpolatie met het $-teken is een nieuwe C# aanwinst. Je zal echter nog veel documentatie en online code tegenkomen die nog met String.Format werkt (ook zijn er nog zaken waar het te prefereren is om String.Format te gebruiken i.p.v. 1 van vorige manieren). Om die reden bespreken we dit nog in deze cursus.

    String.Format is een ingebouwde methode die string-interpolatie toe laat op een iets minder intuΓ―tieve manier:

    Het getal tussen de accolades geeft aan de hoeveelste parameter na de string hier in de plaats moet gezet worden (0= de eerste, 1= de tweede, enz).

    Volgende code zal een ander resultaat geven:

    Namelijk: Ik ben 13 en ik ben 13 jaar oud.

    circle-info

    Wens je meer informatie over string.Format, kijk dan hierarrow-up-right.

    string result= "Ik ben "+ name + " en ik ben "+ age+ " jaar oud.";
    string result= $"Ik ben {name} en ik ben {age} jaar oud.";
    string result= $"Ik ben {name} en ik ben {age+4} jaar oud.";
    string result= $"Ik ben {age*age+(3%2)} jaar oud.";
    double number = 12.345;
    Console.WriteLine($"{number:F2}");
    string result= String.Format("Ik ben {0} en ik ben {1} jaar oud.",name,age);
    string result= String.Format("Ik ben {1} en ik ben {1} jaar oud.",name,age);
    int
    .
    hier
    UNICODE-tekenarrow-up-right
    Convert en Casting
    char eenKarakter = '1'; 
    string eenString = "1"; 
    int eenGetal = 1;
    
    Console.WriteLine(eenKarakter);
    Console.WriteLine(eenString);
    Console.WriteLine(eenGetal);
    1
    1
    1
    char eenKarakter = "1"; //fout
    string eenString = '1'; //fout
    int eenGetal = '1'; //fout

    H2: Tekst in code

    Oefeningen

    hashtag
    Oefening: H2-string-interpolation

    hashtag
    Leerdoelen

    • gebruik van string interpolation

    hashtag
    Functionele analyse

    Oefening H1-maaltafels en H1-ruimte dienen we te herschrijven volgens de principes van string interpolation.

    hashtag
    Technische analyse

    hashtag
    UI

    console applicatie

    hashtag
    voorbeeldinteractie(s)

    Zie oefening H1-maaltafels en H1-ruimte.

    hashtag
    Technische hulp

    hashtag
    Programmaverloop

    Pas string interpolatie mbv $ (manier 2) toe.

    hashtag
    Testscenario's

    • Zie oefening H1-maaltafels en H1-ruimte.

    hashtag
    Ondersteunend materiaal

    Hou het voorlopig op de cursus.

    hashtag
    Oefening: H2-systeem-informatie

    hashtag
    Leerdoelen

    • gebruik van string interpolation

    • gebruik van Environment class

    hashtag
    Functionele analyse

    Maak een applicatie die de belangrijkste computer-informatie (geheugen, etc) aan de gebruiker toont.

    hashtag
    Technische analyse

    hashtag
    UI

    console applicatie

    hashtag
    voorbeeldinteractie(s)

    hashtag
    Technische hulp

    hashtag
    Programmaverloop

    Pas string interpolatie mbv $ (manier 2) toe. De computerinformatie kan je verkrijgen mbv de Environment-klasse. Hier enkele voorbeelden (kijk zelf of er nog nuttige properties over je computer in staan en voorzie deze ook binnen jouw code):

    WorkingSet geeft terug hoeveel geheugen het programma van windows toegewezen krijgt. Als je dus op 'run' klikt om je code te runnen dan zal dit programma geheugen krijgen en via WorkingSet kan het programma dus zelf zien hoeveel het krijgt. (wat een vreemde lange zin).

    Zoals je ziet wordt het geheugen in bytes teruggegeven. Zorg ervoor dat het geheugen steeds in mega of gigabytes op het scherm wordt getoond.

    Formatteer de informatie met behulp van de $-notatie zodat deze deftig getoond worden en de gebruiker snel de belangrijke informatie over z'n systeem te zien krijgt.

    hashtag
    Testscenario's

    • wat gebeurt er wanneer je het datatype string zou wijzigen in int?

    hashtag
    Ondersteunend materiaal

    Hou het voorlopig op de cursus.

    hashtag
    Oefening: H2-weerstandberekenaar-deel1

    hashtag
    Leerdoelen

    • gebruik van math class

    hashtag
    Functionele analyse

    Stel dat je in het labo een weerstand vastneemt en je kent de kleurcodes van de streepjes wel, maar niet hoe je die kunt omzetten naar de effectieve weerstandswaarde. In dit programma kunnen we de gebruiker helpen.

    (Bron afbeelding: )

    hashtag
    Technische analyse

    hashtag
    UI

    console applicatie

    hashtag
    voorbeeldinteractie(s)

    hashtag
    Technische hulp

    hashtag
    Programmaverloop

    Maak een programma dat de weerstandwaarde berekent gebaseerd op:

    • Ring 1: die de tientallen voorstelt

    • Ring 2: die de eenheden voorstel

    • Ring 3: die de exponent (10 tot de macht) voorstelt. (tip:Math.Pow(10,ring3))

    Gebruik drie variabelen van het type int. (we veronderstellen dus dat de gebruiker de kleurcode heeft omgezet naar een getal en dat toewijst aan de variabele)

    Test dat je "formule/berekening" klopt om gebaseerd op 2 (of 3) ringen de weerstandswaarde te berekenen.

    hashtag
    Testscenario's

    • wat gebeurt er wanneer je een hoger getal dan 9 zou invoeren?

    hashtag
    Ondersteunend materiaal

    Hou het voorlopig op de cursus.

    hashtag
    Oefening: H2-weerstandberekenaar-deel2

    hashtag
    Leerdoelen

    • gebruik van UNICODE

    hashtag
    Functionele analyse

    Zie deel 1.

    hashtag
    Technische hulp

    hashtag
    Programmaverloop

    Zie deel 1 en plaats het geheel in een mooie UNICODE-tabel.

    Hier enkele nuttige tekens:

    Gebruik $-string interpolatie om de informatie in de tabel te tonen zodat je volgende uitvoer kunt genereren:

    of:

    hashtag
    Testscenario's

    • wat gebeurt er wanneer je een waarde van circle 1, 2 of 3 uit meer dan twee cijfers bestaat?

    hashtag
    Ondersteunend materiaal

    Hou het voorlopig op de cursus.

    hashtag
    Oefening: H2-shell-starter

    hashtag
    Leerdoelen

    • gebruik van Process.Start()

    • verwerken van uitvoer

    hashtag
    Functionele analyse

    Je kan de output van een Process.Start() programma naar je console scherm sturen. Dit vereist wat meer code. Volgende voorbeeld zal de output van het commando ipconfig /all op het scherm tonen:

    Onder macOS heb je een ander commando nodig. Gebruik daar "ifconfig" voor het (uitvoerbaar) bestand en geef een lege string mee voor de argumenten.

    hashtag
    Technische hulp

    hashtag
    Programmaverloop

    Maak enkele kleine C# programma's die bepaalde shell-commando's zullen uitvoeren en die de uitvoer in hoofdletters weergeven in plaats van in de gewone vorm. Enkele nuttige shell-commando's in de netwerk-sfeer zijn bijvoorbeeld:

    hashtag
    Testscenario's

    • Probeer van bovenstaande programma's al die, die compatibel zijn met je besturingssysteem.

    hashtag
    Ondersteunend materiaal

    Hou het voorlopig op de cursus.

    Uitbreidingsoefeningen

    Volgende oefeningen zijn al iets stevigers. Ze gebruiken concepten die nog niet aan bod gekomen zijn in de cursus en je wordt niet verondersteld ze te kunnen maken aan het begin van het semester. Je kan ze wel bekijken als je eerder al geprogrammeerd hebt of wanneer je aan het studeren bent voor het examen.

    hashtag
    Oefening: H2-systeem-informatie-pro

    hashtag
    Leerdoelen

    • gebruik van string interpolation

    • gebruik van System.IO

    hashtag
    Functionele analyse

    Je moet informatie over de harde schijven op je systeem weergeven.

    hashtag
    Technische analyse

    hashtag
    UI

    console applicatie

    hashtag
    voorbeeldinteractie(s)

    hashtag
    Technische hulp

    hashtag
    Programmaverloop

    Ook informatie over de harde schijven kan je verkrijgen (in bits). Dit vereist wel dat je bovenaan je programma volgende lijn bijschrijft: using System.IO.

    Vervolgens kan je in je programma schrijven:

    De lijn met using is om aan te geven dat we iets uit de System.IO bibliotheek nodig hebben, namelijk DriveInfo. Schrijven we dat niet dan moeten we in onze code DriveInfo aanroepen met z'n volledige path: System.IO.DriveInfo....

    De 0 tussen rechte haakjes is de index van welke schijf je informatie wenst. 0 is de eerste harde schijf, 1 de tweede, enzovoort. (Ter info: dit zijn arrays, zie later)

    Vraag aan de gebruiker het nummer van de harde schijf waar meer informatie over moet getoond worden.

    Opgelet: sta toe dat de gebruiker 1 voor de eerste harde schijf mag gebruiken, 2 voor de tweede, enzovoort. Je zal dus in code nog manueel 1 moeten aftrekken van de invoer van de gebruiken. Bv:

    hashtag
    Testscenario's

    • wat gebeurt er wanneer je het datatype int zou wijzigen in string?

    hashtag
    Ondersteunend materiaal

    Hou het voorlopig op de cursus.

    hashtag
    Oefening: H2-weerstandsberekendaar-deel3

    Deze bouwt voort op H2-weerstandsberekendaar-deel2. Kan je afhankelijk van de ringwaarde het getal in de tabel in de juiste kleur zetten conform de weerstandskleuren? (tip: je zal Write en if moeten leren gebruiken)

    Unicode tonen

    hashtag
    Unicode tonen

    Niets is zo leuk als de vreemdste tekens op het scherm tonen. In oude console-games werden deze tekens vaak gebruikt om complexe tekeningen op het scherm te tonen: om je filmpjes nog cooler te maken leggen we daarom uit hoe je dit kan doen, gebruikmakende van je kennis over converteren.

    Dwarven fortress

    hashtag
    Unicode karakters tonen

    Zonder een uitleg te geven over het verschil tussen ASCII en Unicode is het vooral belangrijk te weten dat je best met Unicode werkt.

    1. Zoek het teken(s) dat je nodig hebt in een Unicode-tabel ()

    2. Plaats bovenaan je Main: Console.OutputEncoding = System.Text.Encoding.UTF8;

    3. Je kan nu op 2 manieren dit teken in console plaatsen

    hashtag
    Manier 1: copy/paste

    Kopieer het karakter zelf en plaats het in je code waar je het nodig hebt, bijvoorbeeld:

    hashtag
    Manier 2: hexadecimale code casten naar char

    Noteer de hexadecimale code van het karakter dat in de tabel staat.

    In dit geval is de code 0x02e7.

    Om dit teken te tonen schrijf je dan:

    In C# schrijf je hexadecimale getallen als volgt als je ze rechstreeks in een string wilt plaatsen: \u02e7

    Wil je dus bovenstaande teken schrijven dan kan dan ook als volgt:

    hashtag
    Ascii-art tonen

    Soms zou je multiline ASCII-art willen tonen in je C# applicatie. Dit kan je eenvoudig oplossen door gebruik te maken van het @ teken voor een string.

    Stel dat je een toffe titel of tekening via een van volgende sites hebt gemaakt:

    Je kan het resultaat eenvoudig naar je klembord kopiΓ«ren en vervolgens in je C#-code integraal copy pasten als literal voor een string op voorwaarde dat je het laat voorafgaan door @" en uiteraard eindigt met ";.

    Bijvoorbeeld:

    Vrije ruimte op jouw c-schijf: 10803744768
    Totale ruimte van jouw c-schijf: 159671906304
    
    ********************************************************************************
    Geef met nummer 1 t/m 2 aan over welke harde schijf van jouw pc je info wenst: 1
    De vrije ruimte van C:\ is 108 Gb
    long cDriveInBytes = DriveInfo.GetDrives()[0].AvailableFreeSpace;  
    long totalSize = DriveInfo.GetDrives()[0].TotalSize;
    int input= Convert.ToInt32(Console.ReadLine()) - 1 ;
    long totalSize = DriveInfo.GetDrives()[input].TotalSize;
    https://www.esdsite.nlarrow-up-right
    deze is handigarrow-up-right
    Asciiflow.Comarrow-up-right
    Ascii title generatorarrow-up-right
    Ascii generatorarrow-up-right
    Uw computer heeft een 64-bit besturingssysteem: True
    De naam van uw pc is: LAPTOP
    Uw pc heeft 4 processorkernen.
    ikke is uw gebruikersnaam.
    Je gebruikt 11 megabytes aan geheugen
    bool is64bit = Environment.Is64BitOperatingSystem;
    string pcName = Environment.MachineName;
    int procCount = Environment.ProcessorCount;
    string userName = Environment.UserName;
    long memory = Environment.WorkingSet; //zal ongeveer 11 MB teruggeven.
    Geef de waarde (uitgedrukt in een getal van 0 tot 9) van de eerste ring: 2
    Geef de waarde (uitgedrukt in een getal van 0 tot 9) van de tweede ring: 2
    Geef de waarde (uitgedrukt in een getal van -2 tot 7) van de derde ring (exponent): 2
    Resultaat is 2200 Ohm, ofwel 22x100.
    ╔═══════════════╦═══════════════╗
    β•‘ 
    β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•«β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
    β•‘ 
    β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•©β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
    System.Diagnostics.Process process = new System.Diagnostics.Process();
    process.StartInfo.FileName = "ipconfig";
    process.StartInfo.Arguments = "/all"; 
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.Start(); //start process
    
    // Read the output (or the error)
    string output = process.StandardOutput.ReadToEnd();
    Console.WriteLine(output);
    string err = process.StandardError.ReadToEnd();
    Console.WriteLine(err);
    //Continue
    Console.WriteLine("Klaar");
    hostname
    arp -a
    getmac (enkel onder Windows)
    nslookup google.com
    Console.WriteLine("Λ§");
    char blokje = (char)0x02e7;
    Console.WriteLine(blokje);
    Console.WriteLine("\u02e7");
    string myname=@"
    ___________________   
    \__    ___/\______ \  
      |    |    |    |  \ 
      |    |    |    `   \
      |____|   /_______  /
                       \/ ";
    
    Console.WriteLine(myname);