studiegebied Handelswetenschappen en bedrijfskunde
graduaat in het programmeren campus Kortrijk
Legende van de gebruikte iconen

studiegebied Handelswetenschappen en bedrijfskunde
graduaat in het programmeren campus Kortrijk
Legende van de gebruikte iconen
Operatoren..........................................................Fout! Bladwijzer niet gedefinieerd.
1.1 Soorten operatoren Fout! Bladwijzer niet gedefinieerd.
1.1.1 Naargelang de functie Fout! Bladwijzer niet gedefinieerd.
1.1.2 Naargelang het aantal operanden Fout! Bladwijzer niet gedefinieerd.
1.2 Aritmische (rekenkundige) operatoren = binaire operatoren................. Fout! Bladwijzer niet gedefinieerd.
1.2.1 Optellen, aftrekken, delen, vermenigvuldigen Fout! Bladwijzer niet gedefinieerd.
1.2.2 Rest operator of modulus ..................................................Fout! Bladwijzer niet gedefinieerd.
1.2.3 Delen door 0.......................................................................Fout! Bladwijzer niet gedefinieerd.
1.3 Assignment en compound assignment operator (toekenningsoperatoren)...Fout! Bladwijzer niet gedefinieerd.
1.4 increment en decrement operator (unaire operator)...... Fout! Bladwijzer niet gedefinieerd.
1.5 Relationele en boolean operatoren (binaire operatoren) Fout! Bladwijzer niet gedefinieerd.
1.6 Relationele en boolean operatoren (ternaire operatoren)..................... Fout! Bladwijzer niet gedefinieerd.
1.7 De volgorde van de operatoren (voorrangsregels) .......... Fout! Bladwijzer niet gedefinieerd.
1.7.1 Algemene voorrangsregels ................................................Fout! Bladwijzer niet gedefinieerd.
1.7.2 De ‘+’ operator in combinatie met String variabele en een primitieve variabele ..............Fout! Bladwijzer niet gedefinieerd.
1.8 de Math class Fout! Bladwijzer niet gedefinieerd.
1.9 de Random class Fout! Bladwijzer niet gedefinieerd. TekstType ............................................................Fout! Bladwijzer niet gedefinieerd.
1.1 Inleiding Fout! Bladwijzer niet gedefinieerd.
1.2 Char Fout! Bladwijzer niet gedefinieerd.
1.3 String Fout! Bladwijzer niet gedefinieerd.
1.4 Stringfuncties Fout! Bladwijzer niet gedefinieerd.
1.4.1 Substring() Fout! Bladwijzer niet gedefinieerd.
1.4.2 length.................................................................................Fout! Bladwijzer niet gedefinieerd.
1.4.3 ToUpper() en ToLower().....................................................Fout! Bladwijzer niet gedefinieerd.
1.4.4 PadLeft() en PadRight()......................................................Fout! Bladwijzer niet gedefinieerd.
1.4.5 Contains()...........................................................................Fout! Bladwijzer niet gedefinieerd.
1.4.6 IndexOf(), LastIndexOf() Fout! Bladwijzer niet gedefinieerd.
1.4.7 Trim() Fout! Bladwijzer niet gedefinieerd.
1.4.8 Remove() Fout! Bladwijzer niet gedefinieerd.
1.4.9 Insert() Fout! Bladwijzer niet gedefinieerd.
1.4.10 Replace() ............................................................................Fout! Bladwijzer niet gedefinieerd.
1.4.11 Compare() ..........................................................................Fout! Bladwijzer niet gedefinieerd.
1.4.12 new String()........................................................................Fout! Bladwijzer niet gedefinieerd.
1.4.13 IsNullOrEmpty() en IsNullOrWhiteSpace() .........................Fout! Bladwijzer niet gedefinieerd.
1.4.14 Strings zijn immutable .......................................................Fout! Bladwijzer niet gedefinieerd.
1.5 Vergelijken van Strings ..................................................... Fout! Bladwijzer niet gedefinieerd.
1.5.1 equals() ..............................................................................Fout! Bladwijzer niet gedefinieerd.
1.5.2 compareTo() Fout! Bladwijzer niet gedefinieerd.
1.5.3 Andere String methoden Fout! Bladwijzer niet gedefinieerd.
1.6 Parsing Fout! Bladwijzer niet gedefinieerd.
Foutafhandeling ..................................................Fout! Bladwijzer niet gedefinieerd.
1.1 Wat is foutafhandeling? Fout! Bladwijzer niet gedefinieerd.
1.2 Exceptions Fout! Bladwijzer niet gedefinieerd.
1.3 Try-catch Fout! Bladwijzer niet gedefinieerd.
1.4 Het exception-object gebruiken Fout! Bladwijzer niet gedefinieerd.
1.5 Exceptions classificeren Fout! Bladwijzer niet gedefinieerd.
1.6 Combinatie van catch-blokken ......................................... Fout! Bladwijzer niet gedefinieerd.
1.7 Finally-blok........................................................................ Fout! Bladwijzer niet gedefinieerd.
Control Flow.......................................................Fout! Bladwijzer niet gedefinieerd.
1.1 De scope............................................................................ Fout! Bladwijzer niet gedefinieerd.
1.2 Selectie (keuze)................................................................. Fout! Bladwijzer niet gedefinieerd.
1.2.1 Selectie met if-then-else.....................................................Fout! Bladwijzer niet gedefinieerd.
1.2.2 De meervoudige selectie....................................................Fout! Bladwijzer niet gedefinieerd.
1.2.3 De geneste if-constructie Fout! Bladwijzer niet gedefinieerd.
1.3 Switch Fout! Bladwijzer niet gedefinieerd.
Iteratie ..............................................................Fout! Bladwijzer niet gedefinieerd.
1.1 Inleiding Fout! Bladwijzer niet gedefinieerd.
1.2 For-loop (begrensde herhaling – voor … tem …) Fout! Bladwijzer niet gedefinieerd.
1.2.1 For-loop zonder declaratie Fout! Bladwijzer niet gedefinieerd.
1.2.2 For-loop met samengestelde conditie Fout! Bladwijzer niet gedefinieerd.
1.2.3 For-loop met initialisatie van meerdere variabelen...........Fout! Bladwijzer niet gedefinieerd.
1.2.4 Een oneindige loop.............................................................Fout! Bladwijzer niet gedefinieerd.
1.2.5 For-loop met weglating van de conditie............................Fout! Bladwijzer niet gedefinieerd.
1.2.6 Het break-statement..........................................................Fout! Bladwijzer niet gedefinieerd.
1.2.7 Het continue-statement.....................................................Fout! Bladwijzer niet gedefinieerd.
1.2.8 Lege for-lus ........................................................................Fout! Bladwijzer niet gedefinieerd.
1.2.9 De geneste for-loop............................................................Fout! Bladwijzer niet gedefinieerd.
1.3 While (voorwaardelijke herhaling met aanvangsvoorwaarde Zolang) Fout! Bladwijzer niet gedefinieerd.
1.4 Do…while (voorwaardelijke herhaling met afbreekvoorwaarde – todat)Fout! Bladwijzer niet gedefinieerd.
1.5 Vergelijking tussen de verschillende soorten iteraties..... Fout! Bladwijzer niet gedefinieerd. Arrays en collections............................................Fout! Bladwijzer niet gedefinieerd.
1.1 Inleiding Fout! Bladwijzer niet gedefinieerd.
1.2 Arrays Fout! Bladwijzer niet gedefinieerd.
1.2.1 Declaratie van een array Fout! Bladwijzer niet gedefinieerd.
1.2.2 Reservatie van geheugen voor een array Fout! Bladwijzer niet gedefinieerd.
1.2.3 Gebruik van een array Fout! Bladwijzer niet gedefinieerd.
1.2.4 Uitlezen van een array Fout! Bladwijzer niet gedefinieerd.
1.2.5 Initialisatie van een array Fout! Bladwijzer niet gedefinieerd.
1.2.6 De lengte van een array.....................................................Fout! Bladwijzer niet gedefinieerd.
1.2.7 For…each............................................................................Fout! Bladwijzer niet gedefinieerd.
1.3 Collections......................................................................... Fout! Bladwijzer niet gedefinieerd.
1.3.1 Situering.............................................................................Fout! Bladwijzer niet gedefinieerd.
1.3.2 List<T>................................................................................Fout! Bladwijzer niet gedefinieerd.
1.3.3 Linkedlist ............................................................................Fout! Bladwijzer niet gedefinieerd.
1.3.4 Hashtable Fout! Bladwijzer niet gedefinieerd.
1.3.5 Dictionary Fout! Bladwijzer niet gedefinieerd.
1.3.6 Queue Fout! Bladwijzer niet gedefinieerd.
1.3.7 Stack Fout! Bladwijzer niet gedefinieerd.
Functies ...............................................................Fout! Bladwijzer niet gedefinieerd.
1 Benaming.......................................................................... Fout! Bladwijzer niet gedefinieerd.
1.1 Procedure...........................................................................Fout! Bladwijzer niet gedefinieerd.
1.2 Functie................................................................................Fout! Bladwijzer niet gedefinieerd.
1.3 Operatie .............................................................................Fout! Bladwijzer niet gedefinieerd.
1.4 Methode.............................................................................Fout! Bladwijzer niet gedefinieerd.
2 Naamgeving ...................................................................... Fout! Bladwijzer niet gedefinieerd.
3 Voorbeeld van een functieprocedure Fout! Bladwijzer niet gedefinieerd.
3.1 Het programma Fout! Bladwijzer niet gedefinieerd.
3.2 De functie WillekeurigGetal Fout! Bladwijzer niet gedefinieerd.
4 Functie zonder returnwaarde en parameters Fout! Bladwijzer niet gedefinieerd.
4.1 Het programma Fout! Bladwijzer niet gedefinieerd.
4.2 De functie ToonFoutmelding Fout! Bladwijzer niet gedefinieerd.
5 Functie zonder parameters Fout! Bladwijzer niet gedefinieerd.
5.1 De functie GetInt_v1 Fout! Bladwijzer niet gedefinieerd.
6 Functie met parameters Fout! Bladwijzer niet gedefinieerd.
Sorteren (collections)...........................................Fout! Bladwijzer niet gedefinieerd.
1 Bubble Sort ....................................................................... Fout! Bladwijzer niet gedefinieerd.
2 QuickSort .......................................................................... Fout! Bladwijzer niet gedefinieerd. Klassen, objecten en constructoren .....................Fout! Bladwijzer niet gedefinieerd.
1 Wat is een klasse?............................................................. Fout! Bladwijzer niet gedefinieerd.
2 Wat is een object? ............................................................ Fout! Bladwijzer niet gedefinieerd.
3 Objecten maken van een klasse ....................................... Fout! Bladwijzer niet gedefinieerd.
4 Objectreferenties Fout! Bladwijzer niet gedefinieerd.
5 Wat is een constructor? Fout! Bladwijzer niet gedefinieerd.
6 Het definiëren van een constructor Fout! Bladwijzer niet gedefinieerd.
Property en Methoden bij klassen......................Fout! Bladwijzer niet gedefinieerd.
1 Property Fout! Bladwijzer niet gedefinieerd.
2 ReadOnly, WriteOnly Fout! Bladwijzer niet gedefinieerd.
3 Methoden Fout! Bladwijzer niet gedefinieerd.
3.1 Methode zonder parameter...............................................Fout! Bladwijzer niet gedefinieerd.
3.2 Methode met parameter ...................................................Fout! Bladwijzer niet gedefinieerd.
3.3 Methode met returnwaarde ..............................................Fout! Bladwijzer niet gedefinieerd.
Overloading.......................................................Fout! Bladwijzer niet gedefinieerd.
1 Overloading van methoden in een klasse van het framework................ Fout! Bladwijzer niet gedefinieerd.
1.1 Methode overloading bij een eigen klasse.........................Fout! Bladwijzer niet gedefinieerd.
2 Code om het programma te testen. ................................. Fout! Bladwijzer niet gedefinieerd.
2.1 GUI .....................................................................................Fout! Bladwijzer niet gedefinieerd.
2.2 MainWindow.xaml.cs Fout! Bladwijzer niet gedefinieerd.
2.3 User.cs................................................................................Fout! Bladwijzer niet gedefinieerd.
Statische leden (methoden en variabelen)...........Fout! Bladwijzer niet gedefinieerd.
1 Klassenvariabelen Fout! Bladwijzer niet gedefinieerd.
2 Statische methoden Fout! Bladwijzer niet gedefinieerd.
Voorbeeld oefening met meerdere klassen ........Fout! Bladwijzer niet gedefinieerd.
Bijlagen Fout! Bladwijzer niet gedefinieerd.
Bijlage 1: Naming convention Fout! Bladwijzer niet gedefinieerd.
Naamgeving controls ....................................................................... Fout! Bladwijzer niet gedefinieerd.
Naamgeving van de variabelen Fout! Bladwijzer niet gedefinieerd.
Bijlage 2: Eigen code template in Visual Studio (code snippets).....Fout! Bladwijzer niet gedefinieerd.
Aanmaken Snippet ........................................................................... Fout! Bladwijzer niet gedefinieerd.
Gebruik van Snippet......................................................................... Fout! Bladwijzer niet gedefinieerd.
Beheer van snippet .......................................................................... Fout! Bladwijzer niet gedefinieerd.
Hoogstwaarschijnlijk hebben jullie al sterke verhalen gehoord over hoe het er vroeger aan toe ging bij het programmeren. De wereld van de ponskaarten, de machines die een volledige ruimte in beslag namen.
Een goed artikel met een helicopterview over dit thema kan je terugvinden op: http://thequickword.wordpress.com/2014/02/16/james-irys-history-of-programming-languagesillustrated-with-pictures-and-large-fonts/
We spreken ook over de “generaties in de programmeertalen”. Globaal gezien kunnen we spreken van een “low-level” programmeertaal. Deze voorziet in geringe (of soms) geen abstractie voor een processor. Een “high-level” programmeertaal voorziet in meer abstractie, is gemakkelijker te gebruiken en biedt ook meer portabiliteit tussen de verschillende platformen.
De eerste generatie (1GL) is machine taal. Machine taal is een reeks van instructies en data die een CPU (Central Processing Unit) onmiddellijk kan uitvoeren.
Machine taal is geschreven in binaire code en elk statement correspondeert met een actie die door de computer wordt uitgevoerd.
1 Bron: http://ergopalkrishnawithc.blogspot.be/2012/07/generations-of-computers.html
De tweede generatie programmeertaal (2GL) is een assembly taal. Assembly is een menselijk-leesbare notatie van de machine taal om specifieke computer operaties uit te voeren. Een assembler is een programma dat assembly talen vertaalt naar een machine taal. De assembler moet eerst deze vertaalslag uitvoeren vooraleer de computer de instructies kan lezen en begrijpen.
De derde generatie talen (3GL) of procedurele talen gebruiken een reeks van Engels-achtige woorden die nauwer aanleunen bij de menselijke taal om instructies te schrijven.
Vanaf hier spreken we van hogere programmeertalen. Deze maken het schrijven van complexere programma’s eenvoudiger én gemakkelijker om te lezen en te onderhouden. Programma’s die in een hogere programmeertaal worden geschreven mmoeten vertaald worden in machine code door een compiler of interpreter.
Voorbeelden van 3GL talen zijn Pascal, Fortran,Basic, Cobol, C en C++ en JAVA
De vierde generatie (4GL) zijn niet procedurele talen die als dienst hebben om toegang te verkijgen tot data in databases. Deze generatie is meestal een ‘doel’ gerichte programmeertaal omdat het ook gelimiteerd is tot een specifieke applicatie. De syntax wordt bijna nooit in een andere programmeertaal gebruikt.
Voorbeelden hiervan zijn SQL, NOMAD, FOCUS
De vijfde generatie taal (5GL) zijn gebasseerd op het oplossen van problemen. De andere generatie talen krijgen een algoritme aangeboden die ze uitvoeren. Een 5GL taal krijgt regels opgegeven waarbinnen een computer een oplossing moet zoeken voor een bepaald probleem. De ontwikkelaar moet zich focussen op de problemen die moeten opgelost worden én de voorwaarden waarin het zoeken van een oplossing moet gebeuren zonder zich te moeten bekommeren om het algoritme die hiervoor moet worden gebruikt. Deze 5GL talen worden meestal gebruikt in onderzoek waarbij artificiële intelligentie aan bod komt. De meest bekende zijn Prolog2, Mercury3
Zie handleiding op Toledo.
2 http://www.swi-prolog.org/
3 https://mercurylang.org/
We vertrekken van onderstaande code.
Hoewel we nog niets kennen van programmeren, kunnen we bovenstaande code wel begrijpen wat er gedaan wordt. We begrijpen wat er gedaan wordt, omdat er commentaar in het programma opgenomen is.
Commentaar is heel belangrijk bij developers. Developers werken meestal in team verband en er zullen zich ook situaties voordoen dat je uitbreidingen of updates moet voorzien aan bestaande code.
Code die niet voorzien is in commentaar is een nachtmerrie voor ontwikkelaars. Bekijk eens onze beperkte code van hierboven. We hebben een variabele dOmtrek. Over welke omtrek hebben we het hier? Is dat een variabele die de omtrek representeert van een cirkel of van een persoon? Voor ons is dat duidelijk maar dat zal wellicht verwarring brengen voor een persoon die voor de eerste maal deze code ziet.
De beste documentatie van een programma is dan ook de commentaar die bij de code staat.
Commentaar wordt in een programma opgenomen om de code beter leesbaar en verstaanbaar te maken voor ontwikkelaars. Iedere programmeertaal heeft zijn eigen regels om commentaar op te nemen in zijn programma. Commentaar wordt genegeerd door de compiler gedurende de compileertijd.
1.2.1
Dit type van commentaar gebruiken we voor het geven van commentaar op één of twee regels (bijvoorbeeld voor de declaratie van een variabele)
Voor elke commentaar plaatsen we 2 slaches //
1.2.2
Dit type van commentaar wordt gebruikt wanneer de commentaar over meerdere lijnen wordt gegeven.
/*
Dit is een voorbeeld om commentaar over verschillende lijnen in onze code te plaatsen. Hier kunnen we bv extra uitleg geven over methodes (zie later) */
Deze commentaar start met een /* en eindigt met een */. Tussen deze tekens schrijven we commentaar. Er mag geen spatie tussen de / en * zitten.
1.2.3
Deze commentaar wordt gebruikt om omschrijvingen op class niveau te genereren zoals de API’s4 van de class, omschrijving van de auteur,…
De IDE voorziet hiervoor een *.xml document Wanneer we dit *.xml document aanbieden aan deze applicatie zal het de commentaar van de broncode genereren als een xml document pagina die je dan beschikbaar kan stellen voor derden.
Hiervoor kunnen verschillende xml tags worden gebruikt. De meest gebruikt vind je hieronder terug:
• <summary>
• <remarks>
• <returns>
4 http://nl.wikipedia.org/wiki/Application_programming_interface
• <value>
• <example>
•
De volledige lijst en info hierover kan je terugvnden op de volgende website: https://docs.microsoft.com/en-us/dotnet/csharp/codedoc
Deze tags kunnen opgeroepen en aangepast worden door 3 slaches (///) na elkaar te typen boven een methode/functie en dan wordt dit automatisch gedaan voor jou.
Een variabele is een geheugenruimte die we reserveren om een bepaalde waarde te bewaren gedurende de loop van het programma. Stel dat we een programma hebben waarbij we de punten willen bijhouden van een speler in een wedstrijd. Om een bepaald moment zal deze speler 5 punten hebben. Na een nieuwe score gaan we deze punten willen verhogen maar daarvoor moet het programma uiteraard eerst de oude score weten. Deze waarde stoppen we in een variabele. Zoals de naam variabele aangeeft kan deze waarde gedurende het programma wijzigen.
C# is een programmeertaal die streng is bij het declareren van variabelen. ‘strongly typed programming language’. We moeten aangeven welke data we in deze variabelen zullen bewaren en moeten de variabele dan ook benoemen – declareren – met het juiste datatype. Dat is het type dat aan de compiler duidelijk zal maken welke data we kunnen stockeren. De ene soort data zal meer bits in beslag nemen dan een ander datatype. Bijvoorbeeld het getal 3 zal minder bits nodig hebben dan het getal 34.5.
We hebben primitieve datatypes en referentie datatypes (classes)
Een primitief datatype begint steeds met een kleine letter, terwijl een referentie datatype steeds begint met een hoofdletter.
Voorlopig gaan we ons focussen op de primitieve datatypes.
C# kent verschillende primitieve types. De meest gekende zijn: int, object, short, char, float, double, bool, …
Type
byte Positieve gehele getallen 1 byte 0 tem 255 sbyte Negatieve en positieve gehele getallen 1 byte -128 tem 127 short Negatieve en positieve gehele getallen 2 bytes 32 768 tem 32 767 ushort Positieve gehele getallen
bytes 0 tem 65 535 int Negatieve en positieve gehele getallen
483 647 long Negatieve en positieve gehele getallen
gehele getallen
decimal Financiële getallen
char Unicode karakters
String
bool True/False
16 bytes +- 7,9 x 1028 tem +- 7,9 x 1028
2 bytes
Deze worden gebruikt voor getallen zonder een fractie, dus integere (gehele) getallen en geen decimale getallen. Dat kunnen ook negatieve getallen zijn. Naargelang het geheugen dat ze innemen kennen we 4 soorten integere types:
• Byte
• Short
• Int
• Long
In de meeste gevallen is het int type het meest praktische. Indien je echter het getal wil bijhouden van het aantal inwoners op onze planeet zal een integer hiervoor niet volstaan en zullen we een long type moeten gebruiken.
De floating-point types voorzien in getallen met een fractie (decimale of reële getallen) We kennen drie soorten:
• Float
• Double
• Decimal
Het char type wordt gebruikt voor het representeren van individuele karakters. Dat zullen meestal karakter constanten zijn. Bijvoorbeeld ‘A’ is een karakter constante met een waarde van 65. Dat is niet hetzelfde als “A” wat een String is die één karakter constante bevat namelijk A. Strings komen later aan bod. Unicode kan uitgedrukt worden in hexadecimale waarden die gaan van \u0000 tot \uFFFF. De code \u00AE is het copyright symbool ©.
Voor het werken met char types is een kennis van unicode vereist.5
Een boolean type heeft twee mogelijke waarden, false (0) en true (1). Het wordt gebruikt voor het testen op logische condities. Is het getal 5 groter dan 4 zal resulteren in een waarde true omdat het getal 5 inderdaad groter is dan 4.
Nu we de diverse primitieve datatypes kennen in C# kunnen we een variabele aanmaken. We noemen dit declareren van een variabele. Voor het declareren van een variabele plaatsen we eerst het type en dan een naam van de variabele die we dan gedurende het programma kunnen gebruiken. Dat laatste is maar gedeeltelijk waar. We kunnen de variabele maar gebruiken als deze zichtbaar is voor andere programmaonderdelen. We gaan daar later op terugkomen.
5 In de module basiskennis komt de encodering uitgebreid aan bod. Voor de interpretatie van de codering verwijs ik naar http://en.wikipedia.org/wiki/List_of_Unicode_characters#Basic_Latin voor de betekenis van de diverse encoderingen.
Meer uitleg over coderingen: http://docs.oracle.com/cd/E38689_01/pt853pbr0/eng/pt/tgbl/concept_UnderstandingCharacterSets0769d6.html
Een voorbeeld van een declaratie:
Dus de algemene syntax is: datatype naamvariabele;
Bemerk dat een punt-komma (;) vereist is na iedere declaratie want een declaratie is een statement waarmee je aan de compiler eigenlijk wil zeggen ‘einde zin’.
Wanneer we een aantal variabelen willen declareren van hetzelfde datatype kunnen we dat als volgt uitvoeren:
Bovenstaande syntax is mogelijk maar is soms moeilijk om te lezen. Mijn voorkeur gaat naar het individueel declareren van de variabelen.
Een variabele naam moet beginnen met een letter en moet een opeenvolging vormen van letters of cijfers. Een letter wordt gedefinieerd als ‘A’-‘Z’, ‘a’-‘z’,’_’. Elk Unicode karakter dat een letter voorstelt in een taal kan hiervoor worden gebruikt. Een digit wordt gedefinieerd als ‘0’-‘9’ en iedere Unicode karakter dat een getal voorstelt in een taal.
Bij overeenkomst begint men de naam van een variabele steeds met een kleine letter. Afzonderlijke woorden binnen de variabele kunnen dan met een hoofdletter worden geschreven (camelcase). Een uitzondering hierop zijn de “final” variabelen, die volledig met hoofdletters worden geschreven (zie verder).
Bij overeenkomst laat men de naam van een booleanvariabele voorafgaan door “is”.
De lengte van een variabele naam is onbeperkt. Geef de variabelen een betekenisvolle naam.
Als je bijvoorbeeld het middelpunt van een cirkel wil bijhouden noem je best je variabele niet x maar wel middelpunt. Je zal deze variabele dan in je programma beter weten te plaatsen.
Je kan slechts éénmalig dezelfde naam gebruiken in dezelfde scope van je programma. We gaan later het begrip scope uitgevoerd bespreken. In ons programma hanteren we voorlopig slechts één scope namelijk de code die in de main functie staat.
Begin niveau 1
Begin niveau 2
Begin niveau 3
Einde niveau 3
Einde niveau 2
Einde niveau 1
Binnen dezelfe scope kan een variabele naam slechts één keer voorkomen.
De compiler zal een foutmelding geven zoals hierboven. Om deze foutmelding weer te geven, plaats je de cursor op de locatie waar de foutmelding zich voordoet en dan krijg je de informatie van de fout. In ons voorbeeld is de boodschap dat de variabele dSalary reedt is gedefinieerd in de scope.
Als je op “Show potential fixes” klikt, kan je de tips bekijken die de IDE voorstelt.
Voor het naamgeven kan je ook geen gebruik maken van woorden die bestemd zijn voor de C# syntax. We noemen dat gereserveerde woorden.6
Het woord while heeft een betekenis binnen de C# taal. Deze kunnen we dan ook niet gebruiken voor de naam van een variabele.
1.6.2 Hoofdletters – Kleine letters
De C# taal is hoofdlettergevoelig (case sensitive).
We hebben de letter S van de variabele veranderd in een kleine letter s. De compiler toont een foutmelding dat het symbool variabele dsurface niet kan worden gevonden en dat klopt omdat we een variabele met de naam dSurface hebben gedeclareerd maar geen variabele met de naam dsurface
Als je terug op “Show potential fixes” klikt, kan je een oplossing worden geboden.
Wanneer we een variabele hebben gedeclareerd is het good practice dat we deze ook onmiddellijk een waarde geven. We noemen dat initialiseren van een variabele
Als we geen initialisatie waarde toekennen aan een variabele, zal deze de initiële waarde instellen. Voor cijfers is dit 0 of 0.0.
In bovenstaand voorbeeld krijgt de variabele dRadius de waarde 0, en krijgt de variabel dPi de waarde 3.14.
Eens een variabele gedeclareerd is, kan deze een bepaalde waarde krijgen in het programma.
In bovenstaand voorbeeld, wordt de waarde van de variabel dRadius aangepast van 0 naar 16 en krijgt de variabele dRadius de waarde 16 waar er mee verder kan gewerkt worden.
Om te voorkomen dat gedurende je programma een waarde van een variabele verandert (per vergissing), gaan we van deze variabele een constante maken. Dit betekent dat wanneer deze variabele een waarde heeft, deze dan ook niet meer kan veranderen gedurende het programma. Dit doen we door het sleutelwoord ‘const voor de variabele te plaatsen.
Laten we toch proberen de variabele aan te passen is het programma ….
We krijgen een meding dat we de linkerkant van de toekenning, een variabele moet zijn. In ons geval is dit een constante, dus kan de toekenning niet gebeuren aan de constante dPi.
De algemene afspraak is dat we naam van constante variabelen volledig in hoofdletters plaatsen.
Enumeraties (afgekort enum) is een speciale “klasse” die een groep van constanten voorstelt. Enums zijn constanten. Dit wil zeggen dat deze niet veranderbaar zijn en enkel leesbaar zijn.
Zo kunnen we bijvoorbeeld in een kaartspel zowel een kaart van het type ruiten, type harten, type klaveren en type schoppen hebben. Dan zijn deze typen heel eenvoudig in een enum te plaatsen.
We geven een naam aan onze enum nl SuitType en geven in onze enum alle mogelijkheden op.
Eens de enum gedeclareerd is, kunnen we deze ook gaan gebruiken on ons programma.
Zo kunnen we een toekenning doen aan een nieuwe variabele ‘suit’ van het type van onze enum SuitType.
In de variabele suit, zal dus Clubs opgeslagen worden en kan deze verder gebruikt worden.
1.10.1 Enum values
Het eerste item van onze enum zal standaard de waarde 0 hebben. Het volgende item waarde 1,
Om de integer waarde van het item van de enum te bekomen, moeten we deze expliciet converteren naar het datatype van een integer.
Dan komt in de variabele suit, de waarde 0 te staan.
Daarnaast is het ook mogelijk om je eigen waardes toe te kennen aan een enum. Pas wel op als je dit doet, dan zal het volgende item updatet worden met de volgende numerieke waarde.
Als we nu de waarde van de enum Diamonds opvragen, dan zal het resultaat 6 zijn. Dit komt doordat we de enum Spades op 5 hebben geplaatst en de volgende items chronologisch oplopen.
Het is ook meestal de gewoonte om constante variabelen op een hoger niveau te plaatsen in het programma zodat ze door meerdere methodes kunnen gebruikt worden. In ons voorbeeld hebben we nog drie niveaus:
• Niveau van de namespace Variabelen (niveau 1)
• Niveau van partial class MainWindow (niveau 2)
• Niveau van de functie MainWindow en van de functie btnSubmit_Click (niveau 3)
Begin niveau 1
Begin niveau 2
Begin niveau 3
Einde niveau 3
Begin niveau 3
Einde niveau 3
Einde niveau 2
Einde niveau 1
Het niveau van de namespave VoorbeeldenCursus2021 start vanaf het eerste ‘{‘ teken en eindigt met jet laatste ‘}’ teken. In dat niveau zien we een tweede niveau zitten van de partial class MainWindow. Deze start vanaf het tweede ‘{‘ teken en eindigt met het voorlaatste ‘}’ teken.
Deze niveau’s worden vanaf nu de scope of het bereik genoemd.
Onze constante variabele PI hebben we in het niveau 2 of de scope van de partial class geplaatst. Op deze manier is de constante dPI in alle inderliggende niveau’s bereikbaar.
Zoals aangegeven is het een goede gewoonte om deze constante variabelen in het hoogste niveau te plaatsen. We plaatsen dat op het niveau van de class
TypeConversie betekent het omzetten van het ene datatype naar het andere datatype. Zo kunnen we een geheel getal (integer) omzetten naar een kommagetal (double) dit voor een berekening te doen, maar het geheel getal zal een geheel getal blijven.
Indien we twee gehele getallen hebben (integer) en we willen daarop een bewerking (quotient) uitvoeren en willen dit in een kommagetal opslaan, kan zouden we met de kennis dat we nu hebben
Als resultaat krijgen we echter onderstaande
Als we 1/2 zou dit normaal 0.5 moeten uitkomen. Hoe komt het nu dat we 0 uitkomen???
C# houdt rekening met de datatypes waarop de bewerking wordt uitgevoerd. In ons geval delen we een geheel getal (integer) door een geheel getal (integer). Dus zegt C#, het resultaat zal ook een geheel getal zijn. C# kijkt dus enkel naar wat voor de komma staat, in ons geval is dit 0 en hij maakt van 0 een double variabele aangezien we dQuotient als dubbel definiëren.
Hoe krijgen we dan als resultaat 0.5?
Eenvoudig kunnen we dit doen door één van de variabelen van het datatype Integer te parsen naar het datatype double. Dit kunnen we op onderstaande manier doen.
Bij de bewerking om het quotient te berekenen zetten we iNumber1 om naar een double datatype. Dit doen we door enkel (double) voor de variabele te plaatsen. Om deze manier ziet ons programma dat iNumber1 geen Integer meer is, maar een double datatype is. De bewerking wordt uitgevoerd en als resultaat krijgen we:
Wat een correct resultaat is.
We kunnen op dezelfde manier naar een float, integer, short, long, … de omzetting doen.