Visual Basic/Operatoren
Wat is een operator?
[bewerken]Een operator is een symbool in een rekenkundige of logische bewerking. Maar je kent ze wel. Operatoren zijn b.v. +, -, / en *. Maar in programmeertalen komen ook operatoren voor die je bij het rekenen niet gebruikt.
Er zijn drie soorten operatoren:
- rekenkundige operatoren
- operatoren voor tekenreeksen
- logische operatoren
Rekenkundige operatoren
[bewerken]Rekenkundige operatoren worden gebruikt om berekeningen uit te voeren. Net als bij rekenen worden berekeningen uitgevoerd van links naar rechts. Maar sommige operatoren hebben een hogere prioriteit dan anderen, waardoor de volgorde van bewerken wordt aangepast.
Je kunt met haakjes de volgorde van berekenen aanpassen.
Let op het verschil tussen min en negatie. Bij min (aftrekken) staat het "-"teken tussen spaties. Negatie betekent dat een positief getal negatief wordt door er een min voor te zetten, waarbij er geen spatie tussen de min en het getal staat.
Visual Basic kent de volgende rekenkundige operatoren, waarbij de volgorde in de tabel de prioriteit aangeeft (machtsverheffen heeft de hoogste prioriteit en optellen/aftrekken de laagste):
Operator | Betekenis |
---|---|
^ | machtsverheffen |
+ en - zonder spatie |
positief of negatief maken van een variabele of getal |
* en / | vermenigvuldigen en delen |
\ | gehele deling |
Mod | modulo (rest bij een gehele deling) |
+ en - met spatie |
optellen en aftrekken |
Bovenstaande volgorde kan gewijzigd worden door het gebruik van haakjes. Deze hebben de hoogste prioriteit.
Bijzonder hier zijn \ en Mod.
\ is een gehele deling. Dit geeft aan dat een "normale" deling wordt uitgevoerd en dat het resultaat bij de komma wordt afgekapt.
Mod geeft de rest bij een deling. Zie het voorbeeld hieronder.
Enkele voorbeelden van rekenkundige operatoren:
Uitdrukking | Waarde | Verduidelijking |
---|---|---|
8 * 9 / 2 * 3 | 108 | Gelijke prioriteit, dus van links naar rechts: 8 * 9 / 2 * 3 = 72 / 2 * 3 = 36 * 3 = 108 |
-3^2 | -9 | eerst wordt de macht verheven, daarna de negatie toegepast |
3 * 2 + 4 * 5 | 26 | eerst vermenigvuldigen, dan optellen: 3 * 2 + 4 * 5 = 6 + 20 = 26 |
3 * (2 + 4) * 5 | 90 | eerst haakjes, dan vermenigvuldigen: 3 * (2 + 4) * 5 = 3 * 6 * 5 = 18 * 5 = 90 |
34 \ 5 | 6 | 34 gedeeld door 5 is 6,8 en afgekapt wordt dit 6 |
34 Mod 5 | 4 | 34 gedeeld door 5 is 6 met als rest 4 |
Zoals je in het tweede voorbeeld kunt zien, mag je de spaties tussen getallen en operatoren weglaten, maar duidelijker is om spaties te gebruiken.
Operatoren voor tekenreeksen
[bewerken]Er zijn twee operatoren om strings samen te voegen: de ampersand (&) en het plusteken (+). Je kunt ook strings en getallen samenvoegen, maar omdat het plusteken in dat geval tot fouten kan leiden, raadt Microsoft aan om alleen de ampersand te gebruiken.
Hieronder volgen enige voorbeelden. Let op de spaties die voorkomen in de strings.
Uitdrukking | Waarde | Verduidelijking |
---|---|---|
"Jan" & "Klaassen" | "JanKlaassen" | de twee strings worden aan elkaar geplakt |
"Jan" & " " & "Klaassen" | "Jan Klaassen" | de drie strings worden aan elkaar geplakt (de tweede string is één spatie) |
"Mijn pop heet " & naam | "Mijn pop heet Jan Klaassen" | de variabele naam bevat de string "Jan Klaassen" (de eerste string eindigt met een spatie) |
Logische operatoren
[bewerken]Bij het If-statement (dat later uitgebreid wordt behandeld) kunnen logische operatoren voorkomen. Een If-statement kijkt of een bepaalde voorwaarde True of False is. Een voorbeeld van een If-statement:
If 2 > 3 Then
Als de voorwaarde (2 > 3) True is, wordt de opdracht achter Then uitgevoerd.
Zo'n voorwaarde kan ook samengesteld zijn:
If (a > 2) And (b < 5) Then
Deze voorwaarde is True als a groter is dan 2 én b kleiner dan 5.
De afzonderlijke voorwaarden worden tussen haakjes geplaatst. Je krijgt dan eigenlijk de volgende algemene constructie:
If (voorwaarde1) And (voorwaarde2) Then
De logische operatoren worden gebruikt om het uiteindelijke resultaat te "berekenen".
Behalve And wordt ook OR veel gebruikt:
If (a = 5) Or (b > 10) Then
De gehele voorwaarde is True als óf a gelijk is aan 5 óf b groter is dan 10.
Een derde, veel minder voorkomende, logische operator is Xor. Hierbij is het geheel True als precies één van beide voorwaarden True is. Als beide voorwaarden True of False zijn, is het resultaat False.
Het resultaat van And, Or en Xor zie je in onderstaande tabel (waarbij vw staat voor voorwaarde):
Je kunt ook de operator Not gebruiken. Deze keert de waarde om: True wordt False en False wordt True.
vw1 | vw2 | vw1 And vw2 | vw1 Or vw2 | vw1 Xor vw2 | not vw1 |
---|---|---|---|---|---|
True | True | True | True | False | False |
True | False | False | True | True | False |
False | True | False | True | True | True |
False | False | False | False | False | True |
De toekenning
[bewerken]Operatoren zijn er niet voor niets. Je moet er ook iets mee kunnen doen. Dat gebeurt in de toekenningsopdracht. Hiermee wordt een variabele voorzien van een waarde. De algemene vorm luidt:
variabele = expressie
Hierbij is variabele de naam van een variabele en expressie is iets dat een waarde heeft. Dat iets kan een waarde zijn (getal of string), de naam van een variabele of een combinatie van beiden gescheiden door operatoren. Het klinkt ingewikkeld, maar met een paar voorbeelden begrijp je het beter.
Dim naam, naam2 As String Dim getal1, getal2, gemiddelde As Decimal naam = "Jan" naam = naam & " Klaassen" ' naam krijgt de waarde "Jan Klaassen" getal1 = 13 getal2 = 17 gemiddelde = (getal1 + getal2) / 2 ' gemiddelde krijgt als waarde het gemiddelde van getal1 en getal2 naam2 = naam ' naam2 krijgt de waarde "Jan Klaassen"
Zoals je hier boven kunt zien, kunt je meerdere variabelen van hetzelfde type in één keer declareren door de namen te scheiden door een komma.
Voorbeeld console2: operatoren
[bewerken]Nu gaan we een programma schrijven dat een en ander wat uitgelegd is in praktijk brengt.
Start Visual Studio op en kies voor New Project.... Selecteer Console Application en vul onderaan achter Name: in: console02 en klik op OK. Er verschijnt de IDE met onderstaande regels al ingevuld:
Module Module1 Sub Main() End Sub End Module
Vul het programma aan totdat dit als volgt uit ziet:
Module Module1 Sub Main() Dim getal1, getal2, resultaat As Decimal Dim tekst1, tekst2, uitvoer As String Console.WriteLine("Dit is programma console02") Console.WriteLine() Console.Write("Wat is het eerste getal? ") getal1 = CDec(Console.ReadLine()) Console.Write("Wat is het tweede getal? ") getal2 = CDec(Console.ReadLine()) Console.Write("Wat is de eerste tekst? ") tekst1 = Console.ReadLine() Console.Write("Wat is de tweede tekst? ") tekst2 = Console.ReadLine() resultaat = CDec(getal1 ^ getal2) uitvoer = getal1.ToString & " tot de macht " & getal2.ToString & " = " & resultaat.ToString Console.WriteLine(uitvoer) resultaat = getal1 * getal2 uitvoer = getal1.ToString & " maal " & getal2.ToString & " = " & resultaat.ToString Console.WriteLine(uitvoer) resultaat = getal1 / getal2 uitvoer = getal1.ToString & " gedeeld door " & getal2.ToString & " = " & resultaat.ToString Console.WriteLine(uitvoer) resultaat = CDec(CLng(getal1) \ CLng(getal2)) uitvoer = getal1.ToString & " \ " & getal2.ToString & " = " & resultaat.ToString Console.WriteLine(uitvoer) resultaat = getal1 Mod getal2 uitvoer = getal1.ToString & " Mod " & getal2.ToString & " = " & resultaat.ToString Console.WriteLine(uitvoer) uitvoer = tekst1 & tekst2 Console.WriteLine("twee teksten aan elkaar geplakt: " & uitvoer) uitvoer = tekst1 & " " & tekst2 Console.WriteLine("twee teksten gescheiden door spaties: " & uitvoer) Console.ReadLine() End Sub End Module
Zoals je ziet, staat op diverse plaatsten in het programma CDec() en CLng(). Als je dat weglaat, kan het programma niet gecompileerd worden omdat Strict op On staat. dat betekent dat je expliciet moet aangeven welke conversies uitgevoerd moeten worden. Bijzonder is de regel
resultaat = CDec(CLng(getal1) \ CLng(getal2))
Dat komt omdat de gehele deling (\) twee Long-getallen verwacht. Dus de twee Decimal-getallen getal1 en getal2 moeten eerst omgezet worden naar Long met de functie CLng(), terwijl het resultaat (dat Long is) weer omgezet moet worden naar Decimal met CDec(). Het is wat meer typewerk, maar voorkomt fouten en het is meteen duidelijk welke conversies moeten plaatsvinden.
In een volgend hoofdstuk worden deze conversies besproken.
Start het programma met F5. Als er geen fouten worden gevonden, start het programma op. Er wordt nu gevraagd naar twee getallen en twee teksten (strings). Als je b.v. (zonder de aanhalingstekens, die staat hier ter afscheiding) intypt "125", "3", "Jan" en "Jansen", dan krijg je het volgende te zien:
Dit is programma console02 Wat is het eerste getal? 125 Wat is het tweede getal? 3 Wat is de eerste tekst? Jan Wat is de tweede tekst? Janssen 125 tot de macht 3 = 1953125 125 maal 3 = 375 125 gedeeld door 3 = 41,666666666666666666666666667 125 \ 3 = 41 125 Mod 3 = 2 twee teksten aan elkaar geplakt: JanJanssen twee teksten gescheiden door spaties: Jan Janssen
Als je nu Enter drukt, stop het programma.
Als je een fout in je programma hebt, wordt het niet gecompileerd. In plaats daarvan krijg je een venster met de tekst:
There were build errors. Would you like to continue and run the last successful build?
Klik No. Vervolgens zie je onderin het scherm een venster met de naam Error List. Hier staan alle fouten vermeld. Als je dubbelklikt op zo'n foutmelding, dan springt in het programma de cursor naar de regel waar de fout zich bevindt en kun je deze corrigeren. Als alle fouten gecorrigeerd zijn, kun je het programma weer starten met F5.
Zoals je ziet, worden alle punten in de getallen vervangen door komma's. Dat komt door de Nederlandse Windows-versie, die zorgt voor de juiste omzetting van getallen.
Je ziet nu ook waarom je bij het koppelen van twee teksten een spatie tussen moet voegen.