Visual C# 2010

Doel
Deze basis cursus is bedoeld voor mensen zonder enig programmeerervaring, maar wel vlot met een computer
kunnen werken. Stapje voor stapje leren we de cursist via praktische oefeningen een aantal basiszaken uit de
objectgeörienteerde programmeerwereld aan (klassen, variabelen, lussen, voorwaarden, arrays, GUI, ...).

Les 1

- Het .NET Framework
Het .NET Framework is een door Microsoft ontwikkeld platform waarop verschillende soorten toepassingen
uitgevoerd kunnen worden. 
Op http://msdn.microsoft.com/nl-be/netframework kunt u het .NET Framework gratis downloaden.
Via de Registry Key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework kunt de versie controleren (regedit).
- Wat is een programma?
Een programma bestaat uit instructies met als doel het verwerken van informatie.
- De Visual C# ontwikkelomgeving
Visual C# 2010 Express Edition kunt u downloaden
via http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express
- Orde in .NET
.NET is een objectgeörienteerde omgeving waarbij de functies zijn ondergebracht in klassen. Een klasse bestaat uit
functies en eigenschappen. De functies bepalen het gedrag van de klasse. Om orde te scheppen in de vele klassen
gebruikt men namespaces. Met namespaces kunnen we de klassen logisch groeperen. Een namespace beperkt het
ook bereik van een bepaalde (klasse)naam. Op deze manier kunnen we klassen dezelfde naam geven.
- Kennismaking met de ontwikkelomgeving
We maken klassikaal een Console Application (Hallo wereld) en een Windows Application aan.
- Oefening 1
Creëer een nieuw Windows Application-project en plaats er enkele controls op. Bekijk de eigenschappen van de
controls.
- Oefening 2
Maak een Windows Application-project met een WebBrowser-control, een TextBox en een Button. Zorg ervoor dat
als u een webadres in de tekstbox plaatst en op de button klikt, de betreffende webpagina wordt getoond.
Hint: gebruik de methode Navigate van de WebBrowser.

Les 2 
 
- Oefening 3
Maak een Windows Application-project met drie TextBoxen en een Button. Als er op de button wordt geklikt verschijnt
de inhoud van de twee eerste TextBoxen in de derde TextBox.
- Instructies
Een instructie is een commando (opdracht) waarmee een bepaalde actie wordt uitgevoerd.
Instructies moeten voldoen aan een bepaald syntax (schrijfwijze). Alle instructies moeten
eindigen met een puntkomma. Het .NET Framework bestaat uit duizenden instructies.
- Variabelen
Een variabele is te beschouwen als een opslagplaats voor waarden. De waarde kan in de loop
van een programma veranderen. In een toepassing heeft elke variabele een unieke naam.
De naam van de variabele moet voldoen aan bepaalde regels.
- Het declareren van variabelen
Er kunnen verschillende soorten gegevens (gegevenstypen) worden opgeslagen in een variabele.
U moet vooraf opgeven wat voor soort gegevens in de variabele wordt vastgehouden.
Het type en de naam van een variabele legt u vast in een declaratie. Bijvoorbeeld: int punten;
Variabelen reserveren ruimte in het computergeheugen om gegevens tijdelijk te bewaren.
- Primitieve typen
Primitieve typen worden kant-en-klaar geleverd als onderdeel van de taal C#. Ze worden in een
verkorte vorm direct door de compiler begrepen. C# voorziet 15 primitieve typen (int, double, boole,...).
- Geheugenbeheer
Het geheugen dat een toepassing gebruik is te verdelen in een stack en in een heap. De stack bevat
informatie over welke code wordt uitgevoerd. De heap bevat vooral de gegevens waarop het programma
bewerkingen uitvoert. De stack onderhoudt zichzelf. De heap heeft hulp nodig van de Garbage Collector.
De geheugenruimte die de stack gebruikt wordt bepaald tijdens het compileren.
- Waardetypen
Er bestaan typen waarvan de omvang vooraf bekend is. Deze worden opgeslagen op de stack.
Bij een waardetype bewaart de variabele de feitelijke waarde. De meeste primitieve typen zijn waardetypen.
Alle andere typen zijn referentietypen.
- Referentietypen
In een toepassing weten we niet altijd van elk object hoeveel geheugen we nodig zullen hebben. Hiervoor gebruikt
men de heap. Een referentietype bewaart het geheugenadres waar de feitelijke waarde is opgeslagen.
Referentietypen worden gebruikt voor objecten.
- Oefeningen: Oefeningen variabelen en berekeningen 

Les 3

- Oefening 8 van Oefeningen variabelen en berekeningen
- Oefeningen: Strings en bewerkingen

Les 4

Les 5

- Het maken van een rekenmachine (oplossing)
- Boxing en unboxing (omzetten van waardetypen naar referentietypen en omgekeerd)
- Nullable typen (kan de waarde Null bevatten)
- Enumeraties
- Controlerstructuren (if, else en switch)
- Bepaal de huidige datum (recept 2.1, opwarmer voor een oefening op if)

Les 6

- Toon enkel de datum in een tekstveld (http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.71).aspx)
       DateTime vandaag = System.DateTime.Today;
       textBox1.Text = vandaag.ToString("d");

- Bepaal de leeftijd (recept 2.11, voorbeeld if-instructie)
- Bepaal het verschil tussen twee datums (recept 2.2)
- Broncode recept 2.2
- Klassikale oefening: Body Mass Index
- Individuele oefening: Bioscooptarief
- De while-instructie
- Klassikaal en individueel oefening op de while-instructie

Les 7

- De do {} while() -instructie
- Recept 1.5: Bepaal hoe vaak een woord voorkomt
- Recept 2.9: Bepaal het verschil tussen twee datums in werkdagen
- De for-constructie
- Oefening op de for-instructie
- Oplossing opgave 3 oefening for-instructie
- Recept 1.13: Bepaal of een string een geldig bankrekeningnummer is

Les 8
- Recept 2.7: Bepaal de dag- en maandnamen in een andere taal
- Recept 8.9: Ping een aantal IP-adressen (codeBijRecept8_9.txt)
- De break en continue instructie (codeBreakContinueVoorbeeld.txt)

Les 9 (14 nov. 2011)
- Methoden en parameters
- Oefeningen op methoden zonder return-waarde
- Gebruik recept 3.12 en 3.13 om een toepassing te maken die controleert of een
opgegeven bestand bestaat en deze kan verwijderen. De GUI bestaat uit een tekstveld
en twee buttons. Maak gebruik van methoden zonder return-waarde.
- Gebruik recept 11.3 om een toepassing te maken die geluid afspeelt. De GUI bestaat uit
  twee buttons. Maak gebruik van methoden zonder return-waarde.
- Probleemanalyse

Les 10 (21 nov. 2011)
- Oefeningen op methoden met return-waarde
- Recept 8.1: Bepaal of de computer verbonden is met het netwerk
- Recept 8.4: Bepaal de hostname van de huidige computer
- Recept 8.5: Bepaal het IP-adres van de huidige computer

Les 11 (28 nov. 2011)
- Afwerken recept 8.5 (alle informatie tonen in een uitvoervenster)
- Scope: het bereik van variabelen (lokaal, instantie)
- Overloading: meerdere versies van methoden
- Recept 4.2

- Eigenschappen van objecten (instanties)
- Automatische eigenschappen
- Een klasse maken
- De constructormethode van een klasse
- Objecten initialiseren (maken)

- Oefening op het schrijven van klassen

Les 12 (5 dec. 2011)

- Oefening Parkeerterrein
- De constructormethode: we maken een aantal constructors voor de klasse lamp
  OefeningCsharpConstructorKlasseLamp.pdf
- Toegangsbeperking (public, private, protected, internal, protected internal)
- Statische methoden en klassen
- Relaties en hiërarchie

Les 13 en 14 (12 dec 2011 - 19 dec 2011)
- Een taal voor klassen: UML
- Overerving: UMLet
- Oefening overerving
- Arrays
- Recept 5.1: vul een array bij declaratie
- Recept 5.2: sorteer een array
- Recept 5.5: keer de inhoud van een array om
- Recept 5.13: voeg items toe of verwijder items uit een ArrayList
- Klassikale oefening: we maken een boodschappenlijst om items toe te voegen, verwijderen en zoeken.

Les 15 (9 jan. 2012)
- Verder afwerken van de boodschappenlijst
- Examen