Naar onze bescheiden mening is dit hoofdstuk wel het ingewikkeldste. Als u een goed programmeur wil worden, zal u dit hoofdstuk grondig moeten instuderen. Vooral de uitleg in punt 1 (Informatie opslaan in variabelen en constanten) en punt 2 (Bereik van variabelen).
Om efficiënt te kunnen programmeren, moet u informatie tijdelijk kunnen opslaan. Zoals in elke volwaardige programmeertaal kan dit ook in VB. In VB kan u informatie opslaan in variabelen en constanten.
a. Wat zijn variabelen?
Laten we veronderstellen dat u de auto's op een parkeergarage wil tellen. Terwijl u telt, slaat u uw informatie in een variabele op. De geheugenlocatie kan zich situeren in uw hersenen of op een geheugenchip van uw computer. Het soort informatie dat opgeslagen wordt, is een geheel getal. De feitelijke informatie is het aantal auto's dat u geteld hebt.
Variabele betekent dat de informatie in de loop van de tijd kan veranderen. In het voorbeeld van de autotelling, wordt het getal groter of kleiner. Als er auto's bijkomen wordt het groter en in het tegengesteld geval wordt de variabele kleiner. U kan informatie in een variabele opslaan en de opgeslagen informatie kan u terug oproepen.
b. Variabelen benoemen
Een variabele moeten we een naam geven én er een waarde aan toekennen. Als u ooit eerder programmeercode zag, heeft u zeker het onderstaande ontmoet:
Dim x As Integer
'Dim' (afkorting van dimension) dient om de variabele te declareren. Het declareren van een variabele betekent dat u geheugenruimte reserveert voor wisselende informatie, noem ze "x". De soort informatie wordt bepaald door het laatste woord (Hier: 'Integer').
Wij gebruikten in ons voorbeeld de variabele x. Dit is een korte maar geen duidelijke naam. We zouden ze ook aantal_autos kunnen noemen. Dit is wel meer tikwerk maar het is duidelijk.
Bij het benoemen van de variabele moet u onderstaande regels naleven:
U wordt in VB.net minder vaak verplicht om de variabele binnen het besturingselement te converteren. Bij oudere versies van Visual Basic dienden we dit reeds te doen om een 'Integer' in een 'TekstBox' te gebruiken. Bv. CInt(TextBox1.Text)
Het converteren (veranderen) naar een bepaald gegevenstype komt uitvoerig aan de orde in Deel II.
c. Typen variabelen
Tof, u weet nu wat een variabele is en hoe u ze maakt. Maar wat kunt u in een variabele opslaan? Vrijwel alles. Een variabele kan een getal bevatten, een reeks tekens of een verwijzing naar een object. De belangrijkste variabelen zijn deze die staan voor tekst en getallen.
Elk type variabele is geschikt om een bepaalde soort informatie in op te slaan. De uitroep "Oprotten!!!" kan u niet opslaan in een variabele met als type 'Integer' maar wél in een variabele met als type 'String'.
| Type | Doelgroep | Geheugenruimte | Waardenbereik |
|---|---|---|---|
| Short | Gehele getallen | twee bytes | -32768 tot 32767 |
| Integer | Gehele getallen | vier bytes | ongeveer +/- 2 miljard 147 miljoen |
Long (komt van Long integer) |
Gehele getallen | acht bytes | -9223372036854775808 t.e.m. 9223372036854775807 |
| Single | Decimale getallen | vier bytes | (+/-)1.401298E- 45 tot 3.402823E38 |
| Double | Decimale getallen | acht bytes | (+/-)1.79769313486231E+308 tot 4.940656458424E-324 |
| Currency | Bestaat niet meer in VB.net | ||
| String | Tekstinformatie | één byte per teken | Tot 65400 tekens voor reeksen met een vaste lengte en tot 2 miljard tekens voor dynamische tekenreeksen |
| Byte | ------------------ | een byte (8 bit) | 0 tot 255 |
| Boolean | Logische waarde | twee byte | True of False |
| Date | Datum- en tijdinformatie | acht bytes | 1/1/100 tot en met 12/31/9999 |
| Object | Instanties van klassen: OLE-objecten | vier bytes | n.v.t. |
| Variant | Bestaat niet meer in VB.net | Bestaat niet meer in VB.net | Bestaat niet meer in VB.net |
Het is niet nodig deze tabel van buiten te leren. De meest interessante kolommen zijn de kolommen 1, 2 en 4. Vooral de typen, gebruikt voor getallen, en de 'String' worden vaak gebruikt. Dit geldt in iets mindere mate voor 'Boolean' en 'Date'.
| 'Long' en 'Integer' zijn sterk uitgebreid. Ze bestrijken bijgevolg een groter gebied (Zie Tabel) en nemen ook meer geheugenruimte in beslag. Er is een nieuw type bijgekomen nl. 'Short'. Dit type vervangt 'Integer' uit Visual Basic 6. |
Richtlijnen voor het gebruik van de belangrijkste gegevenstypen:
d. Constanten
In tegenstelling tot de variabele heeft de constante slechts 1 waarde. Deze waarde blijft steeds dezelfde.
Het geheel van formulieren (Forms) en/of module(s) vormen het project. Een eenvoudig programma kan slechts 1 formulier en 1 module bevatten. Een complex project zal meerdere formulieren en/of meerdere modules bevatten.
Binnen elk project hebben de variabelen een bereik. Anders gezegd heeft een variabele een gebied waarbinnen het iets te zeggen heeft. Daarbuiten heeft deze variabele géén invloed meer. Niet elke variabele binnen eenzelfde project bestrijkt hetzelfde gebied. Dit mag maar het komt zelden voor. Schematisch overzicht van een project:
| Formulier (Form) | Module |
|---|
| Declaration | Declaration | |
|
Sub
End Sub Function End Function |
Sub
End Sub Function End Function |
In VB 6 werd de module opgeslagen met de extensie 'bas' (voorbeeld: Module1.bas). Nu krijgt ze de extensie vb (voorbeeld: Module1.vb).
In ons schematisch overzicht van een project (zie hierboven), ziet u een procedure en een functie. Deze gegevens kan u plaatsen in de code van uw formulier of in uw module. De procedure begint altijd met 'Sub' en eindigt steeds met 'End Sub'. De functie daarentegen begint altijd met 'Function' en eindigt steeds met 'End Function'. Functies komen aan bod in deel II van deze cursus.
U vindt zowel bovenaan de formulier (in code) als bovenaan de module (in code) een afzonderlijk gebied. Dit gebied heet 'Declaration'. Probeer dit niet te verwarren met het "declareren" van variabelen. U zal soms een variabele niet in het gebied 'Declaration' (in de code) declareren.
We geven een schematisch overzicht in onderstaande tabel.
Voor de declaraties van variabelen :
| Dim | 'Dim' en 'Private' zijn gelijk in declaratie. |
| Private | Indien 'Private' en 'Public' in 'Declaration' staan dan zijn ze geldig in het gehele formulier. |
| Public | 'Public' gedeclareerd in 'Declaration'-zone van de module is geldig in het gehele project, dus in alle formulieren en alle modules. |
Als u een variabele lokaal wil houden, kan u ze beter op het niveau van de procedure plaatsen. U gebruikt 'Public' dan beter niet!
Opmerking: In tegenstelling tot de variabele heeft de constante slechts één waarde.
'Static' is een buitenbeentje
'Static' onthoudt de waarde ook na het verlaten van de procedure. In de volgende procedure wordt ze echter niet meer herkend ! Hieronder een voorbeeld van een procedure met variabele 'Short' en gedeclareerd als 'Static'. Dit is interessant als u de procedure meer dan 1 maal aanroept en het vorige resultaat wil onthouden.
Private Sub Text ( )
Static x as Short
x = x + 1
End sub
Hoe een module maken ?
Het is belangrijk dat we de berekeningen uitvoeren in een module. Enerzijds is dit noodzakelijk omwille van de overzichtelijkheid en anderzijds kunnen we deze module vroeg of laat nodig hebben in een ander project.
Klik in de menubalk op 'Project' -->'Add New Item' -->'Module' dubbelklikken. Je komt nu in de code van de module terecht. Binnen een project is het mogelijk om meerdere modules te maken.
Bij een array tellen we steeds vanaf het getal 0.
a. Statische array
Dim Naam(1) As String
Naam(0) = "iets"
Naam(1) = "leuk"
Deze 'array' is statisch omdat we niet verder kunnen gaan dan Naam(1) daar we deze beperking oplegden bij de declaratie nl. "Dim Naam(1) As String". Het opleggen van een beperking is inherent aan een statische 'array'. We dienen te onhouden dat we bij een 'array' steeds tellen vanaf het getal 0.
b. Dynamische array
Dim Naam( )As String
Redim Preserve Naam(0)
Naam(0)= "iets" Uitleg : Naam(0) is een 'String' en deze moet
tussen dubbele kwootjes (aanhalingstekens) staan. Dit is de reden waarom het
woordje iets tussen " " staat !
Redim Preserve Naam(1)
Naam(1)= "TEST" Uitleg : Naam(1) is een 'String' en deze moet
tussen dubbele kwootjes (aanhalingstekens) staan. Dit is de reden waarom het
woordje TEST tussen " " staat !
Als je een dynamische array maakt, moet je PRESERVE gebruiken anders onthoudt het geschreven programma de array onvolledig!
In VB 6 was het toevoegen nog ingewikkeld. Nu is het kinderspel geworden.
U start vanaf een leeg formulier.
Klik op Mainmenu in Toolbox. Klik bovenaan in de form. U krijgt nu onderstaand resultaat.
Klik in het vak "TypeHere" bovenaan in het formulier. Dit kleurt blauw. U kan nu de naam van het hoofdmenu ingeven. Als u een ampersand (&) plaatst, wordt de eerstvolgende letter onderlijnd. Als voorbeeld typen wij '&File'. Het resultaat ziet u hieronder.

Als u nu dubbelklikt op een menu-item komt u in de code terecht. Daar kan u dan de bevelen ingeven zoals u dat voor andere besturingselementen doet.
Doel:
In deze oefening zullen we door gebruik te maken van een array 3 getallen telkens in een afzonderlijke label plaatsen. Dit zal gebeuren doordat de gebruiker op de knop 'Array' klikt.
Daar dit pas de tweede oefening is die we maken, kan het ons wat denkwerk kosten. We mogen echter niet vergeten: oefening baart kunst !
Werkwijze:
Klik 'Start -->Programma's/Programs -->Microsoft Visual Studio.NET'
Hier kiest u opnieuw voor 'Microsoft Visual Studio.NET'.
Op uw monitor krijgt u nu - toont eerst eventjes een ander schermpje - afbeelding 2 te zien. U klik vervolgens op 'New Project'.

We krijgen nu afbeelding 3 te zien.

We klikken 1 maal op Windows Application (zie pijl op afbeelding 3) en vervolgens op OK. Als u dubbelklikt op Windows Application geeft dit hetzelfde resultaat.
We krijgen een leeg formulier te zien. Op deze 'Form' zullen we een knop en 3
labels plaatsen. We klikken in onze 'Toolbox' (links op ons scherm) op 'Label'.
Vervolgens klikken we linksboven op het formulier en houden de muisknop ingedrukt
terwijl we de muis naar rechts schuiven. Wanneer het label op de juiste plaats
staat, laat u de muisknop los.
We klikken terug op de het besturingselement 'Label' in de 'Toolbox'. Opnieuw klikken
we linksboven op het formulier maar nu onder 'Label1' en houden de muisknop ingedrukt
terwijl we de muis naar rechts schuiven. Zo krijgen we ons 2de label op het
scherm. We herhalen dit voor het 3de label. Nu we alle labels hebben, voegen
we in een volgende stap de knop toe. Het resultaat met de knop ziet u op Afbeelding
4.
Indien u iets fout deed kan u het besturingselement verwijderen:
We klikken in de 'Toolbox' (links op ons scherm) op 'Button'. Vervolgens klikken we linksonder op het formulier (enkele centimeters van de rand blijven) en houden de muisknop ingedrukt terwijl we de muis naar rechts en een beetje naar beneden schuiven. Nu hebben we 'Button1' op ons formulier. Als we op één van de vierkantjes rond deze klikken en slepen veranderd de knop van vorm. Zo hebben we ook dit besturingselement toegevoegd.
De knop (Button1) geven we de naam --> Array. Dit doen we door in de eigenschappen van de 'Button' naast text het woord --> Array te schrijven, gevolgd door het indrukken van ENTER. De knop krijgt nu de naam 'Array' zoals op afbeelding 4.

Afbeelding 4
We plaatsen de code van codevenster 2 in de procedure 'Button_Click'. Deze procedure maken we aan door dubbel te klikken op de knop 'Array'.

Codevenster 2
Testen
Het is zeer belangrijk dat we steeds testen of onze code werkt zoals het hoort.
Dit doen we door te klikken op de blauwe pijl
(bovenaan op uw scherm). U mag ook kiezen in het menu voor 'Debug' --> 'Start'
(of druk op toets F5).
Nu zien we het formulier zoals het voor de gebruiker verschijnt.
We kruipen in de huid van deze gebruiker en klikken op de knop 'Array'. We moeten nu afbeelding 5 zien.
Afbeelding 5
We hebben ons eerste programma met array geschreven!

Het bovenste tekstvak noemt 'Txt_leeftijd' en het onderste tekstvak 'Txt_resultaat'. Deze aanpassingen voert u door in de eigenschappen (Properties). Zorg dat u in de 'Design'-mode staat. Dit is de mode waarbij je besturingselementen in de 'Form' kan toevoegen. Deze mode is tegengesteld aan de 'Run'-mode.
Plaats onderstaande code in 'Declaration'-zone van de module:
Public leeftijd As Integer
'cat staat hieronder voor categorie
Public cat As String
Plaats onderstaande code in de form:
In de knop bij click gebeurtenis:
leeftijd = CInt(Txt_leeftijd.Text)
Call berekenen
Txt_resultaat.Text = cat
Maak onderstaande procedure aan in een module:
Sub berekenen()
If leeftijd >= 0 And leeftijd <= 2 Then
cat = "baby"
End If
If leeftijd > 2 And leeftijd <= 3 Then
cat = "peuter"
End If
If leeftijd >= 4 And leeftijd <= 6 Then
cat = "kleuter"
End If
If leeftijd >= 7 And leeftijd <= 11 Then
cat = "schoolgaand kind"
End If
If leeftijd >= 12 And leeftijd <= 15 Then
cat = "puberteit"
End If
If leeftijd >= 16 And leeftijd <= 21 Then
cat = "adolescent"
End If
If leeftijd >= 22 And leeftijd <= 58 Then
cat = "volwassen"
End If
If leeftijd >= 58 Then
cat = "bejaarden"
End If
End Sub
We maken een formulier met 2 labels en een knop. Op de knop staat de tekst 'array'. Als de gebruiker op de knop drukt, komen er in elke label 2 namen. We gebruiken een 'Array' waarbij de 1ste naam een voornaam is en de 2de naam een achternaam. De 3de naam is opnieuw een voornaam en de 4de een achternaam. De namen kiest u zelf.
Het resultaat ziet er ongeveer uit zoals bij formulier 3:

De namen komen te voorschijn bij het klikken op de knop 'Array'. Ze zullen in uw oefening niet dezelfde zijn, daar u ze zelf mocht kiezen.
=====================================
© Marc Vandenbussche d.d. 20 december 2002