Visual Basic/Operatoren

Uit Wikibooks

Visual Basic

Inhoudsopgave
  1. Inleiding taalelementen
  2. Variabelen
  3. Operatoren
  4. Typeconversie
  5. Keuze-instructies
  6. Herhalingsinstructies
  7. Random getallen
  8. Opmaak getallen
  9. De klasse Math
  10. Arrays
  11. De structuur van een programma

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:

  1. rekenkundige operatoren
  2. operatoren voor tekenreeksen
  3. 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.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.