homeboekenlinksledenabonneer je :Blijf op de hoogte door je te abonneren op de vbvoorbeelden RSS Niews Feed!Blijf op de hoogte door vbvoorbeelden te volgen op Twitter!Blijf op de hoogte door fan te worden van vbvoorbeelden op Facebook!
Visual Basic 2008 en 2010 Voorbeelden en Boeken Microsoft Visual Studio 2010Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

visual basic 2008 voorbeelden en boeken / visual basic 2010 voorbeelden en boeken

3.2. Logische Operatoren And, Or en Not

Print Email Deel op FacebookDeel op TwitterDeel op DiggBookmark op Google BookmarksDeel op del.icio.usOverige Sociale Netwerksites...

Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

3.2.1. Conjunction Operator And

Veronderstel dat we de som van twee ingevoerde getallen willen afdrukken indien beide getallen positief zijn.
Visual Basic Broncode
Module Example1
    Sub Main()
        Console.WriteLine("Value 1 ?")
        Dim value1 As Integer = Console.ReadLine()
        '
        Console.WriteLine("Value 2 ?")
        Dim value2 As Integer = Console.ReadLine()
        '
        If value1 > 0 Then
            If value2 > 0 Then
                Console.WriteLine("Sum : " & (value1 + value2))
            End If
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
Value 1 ?
5
Value 2 ?
10
Sum : 15
Visual Basic Output
Value 1 ?
-5
Value 2 ?
10
Visual Basic Output
Value 1 ?
5
Value 2 ?
-10
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Als we dus twee If statements rechtstreeks in elkaar nesten, waarbij de ene vereist dat het eerste getal positief is en waarbij de ander vereist dat het andere getal positief is, dan zal hier dus slechts de som worden afgedrukt indien beide positief zijn.

Een alternatief hiervoor zou de logische binaire operator And zijn. Deze combineert twee condities ( twee voorwaarden/logische expressies/booleaanse expressies ) en resulteert in één booleaanse expressie :
Visual Basic Broncode
Module Example2
    Sub Main()
        Console.WriteLine("Value 1 ?")
        Dim value1 As Integer = Console.ReadLine()
        '
        Console.WriteLine("Value 2 ?")
        Dim value2 As Integer = Console.ReadLine()
        '
        If value1 > 0 And value2 > 0 Then
            Console.WriteLine("Sum : " & (value1 + value2))
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
Value 1 ?
5
Value 2 ?
10
Sum : 15
Visual Basic Output
Value 1 ?
-5
Value 2 ?
10
Visual Basic Output
Value 1 ?
5
Value 2 ?
-10
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Slechts indien beide Boolean Expressions correct ( True ) zijn, zal ook de totale gecombineerde booleaanse expressie correct ( True ) zijn.

Je zou volgende tabel kunnen opstellen :
condition-1      condition-2         condition-1 And condition-2
True             True                True
True             False               False
False            True                False
False            False               False
Beide oplossingen zullen hier ( bij dezelfde input ) hetzelfde resultaat geven. Een belangrijk verschil blijft echter dat men bij de eerste versie nog steeds de mogelijkheid heeft instructies op te geven die moeten worden uitgevoerd indien slechts het eerste getal positief is. Bij de tweede versie heeft men die mogelijkheid niet.
Bijkomend laat de eerste versie je ook toe bij het niet correct evalueren van beide voorwaarden voor beide alternatieve instructies te definiëren. Dit zou duidelijk worden wanneer we bij wijze van foutmelding zouden vermelden dat de som niet wordt gemaakt omdat één van de getallen of beide getallen niet positief zijn :
Visual Basic Broncode
Module Example3
    Sub Main()
        Console.WriteLine("Value 1 ?")
        Dim value1 As Integer = Console.ReadLine()
        '
        Console.WriteLine("Value 2 ?")
        Dim value2 As Integer = Console.ReadLine()
        '
        If value1 > 0 Then
            If value2 > 0 Then
                Console.WriteLine("Sum : " & _
                                  (value1 + value2))
            Else
                Console.WriteLine("Value 2 not positive.")
            End If
        Else
            Console.WriteLine("Value 1 not positive.")
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
Value 1 ?
5
Value 2 ?
10
Sum : 15
Visual Basic Output
Value 1 ?
-5
Value 2 ?
10
Value 1 not positive.
Visual Basic Output
Value 1 ?
5
Value 2 ?
-10
Value 2 not positive.
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Value 1 not positive.
Bij gebruik van de And operator zou hier nu slechts 1 gezamenlijke foutmelding kunnen worden gegeven :
Visual Basic Broncode
Module Example4
    Sub Main()
        Console.WriteLine("Value 1 ?")
        Dim value1 As Integer = Console.ReadLine()
        '
        Console.WriteLine("Value 2 ?")
        Dim value2 As Integer = Console.ReadLine()
        '
        If value1 > 0 And value2 > 0 Then
            Console.WriteLine("Sum : " & _
                              (value1 + value2))
        Else
            Console.WriteLine("Value 1 and/or 2 not positive.")
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
Value 1 ?
5
Value 2 ?
10
Sum : 15
Visual Basic Output
Value 1 ?
-5
Value 2 ?
10
Value 1 and/or 2 not positive.
Visual Basic Output
Value 1 ?
5
Value 2 ?
-10
Value 1 and/or 2 not positive.
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Value 1 and/or 2 not positive.
Het moet ook gezegd worden dat de versie met de And operator iets minder efficiënt is dan die met de geneste Ifs.

Enkel in de slechts mogelijke situatie ( indien value1 positief is ) moeten twee voorwaarden worden geëvalueerd, indien value1 niet positief is wordt slechts één voorwaarde geëvalueerd.

Bij gebruik van de And operator, worden de voorwaarden ( die gecombineerd worden ) altijd beide geëvalueerd.

Verderop zullen we zien hoe de AndAlso operator gebruikt kan worden om te vermijden dat onnodige controles gebeuren.

3.2.2. Disjunction Operator Or

Veronderstel dat we deze keer slechts de som van beide ingevoerde getallen wensen te geven indien minstens één van beide ingevoerde getallen positief is.
Visual Basic Broncode
Module Example5
    Sub Main()
        Console.WriteLine("Value 1 ?")
        Dim value1 As Integer = Console.ReadLine()
        '
        Console.WriteLine("Value 2 ?")
        Dim value2 As Integer = Console.ReadLine()
        '
        If value1 > 0 Then
            Console.WriteLine("Sum : " & (value1 + value2))
        Else
            If value2 > 0 Then
                Console.WriteLine("Sum : " & (value1 + value2))
            End If
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
Value 1 ?
5
Value 2 ?
10
Sum : 15
Visual Basic Output
Value 1 ?
-5
Value 2 ?
10
Sum : 5
Visual Basic Output
Value 1 ?
5
Value 2 ?
-10
Sum : -5
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Een variant met ElseIf had natuurlijk evengoed geweest.
Visual Basic Broncode
Module Example6
    Sub Main()
        Console.WriteLine("Value 1 ?")
        Dim value1 As Integer = Console.ReadLine()
        '
        Console.WriteLine("Value 2 ?")
        Dim value2 As Integer = Console.ReadLine()
        '
        If value1 > 0 Then
            Console.WriteLine("Sum : " & (value1 + value2))
        ElseIf value2 > 0 Then
            Console.WriteLine("Sum : " & (value1 + value2))
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
Value 1 ?
5
Value 2 ?
10
Sum : 15
Visual Basic Output
Value 1 ?
-5
Value 2 ?
10
Sum : 5
Visual Basic Output
Value 1 ?
5
Value 2 ?
-10
Sum : -5
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Een alternatief hiervoor zou de logische binaire operator Or zijn. Deze combineert twee condities ( twee voorwaarden/logische expressies/booleaanse expressies ) en resulteert in één booleaanse expressie.
Visual Basic Broncode
Module Example7
    Sub Main()
        Console.WriteLine("Value 1 ?")
        Dim value1 As Integer = Console.ReadLine()
        '
        Console.WriteLine("Value 2 ?")
        Dim value2 As Integer = Console.ReadLine()
        '
        If value1 > 0 Or value2 > 0 Then
            Console.WriteLine("Sum : " & (value1 + value2))
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
Value 1 ?
5
Value 2 ?
10
Sum : 15
Visual Basic Output
Value 1 ?
-5
Value 2 ?
10
Sum : 5
Visual Basic Output
Value 1 ?
5
Value 2 ?
-10
Sum : -5
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Vanaf dat één van beide aparte Boolean expressies correct ( True ) zijn, zal ook de gecombineerde booleaanse expressie correct ( True ) zijn.

Je zou volgende tabel kunnen opstellen :
condition-1      condition-2         condition-1 Or condition-2
True             True                True
True             False               True
False            True                True
False            False               False

3.2.3. Negation Operator Not

Volgend voorbeeld brengt alle getallen van 1 tot en met 10 op de console.
Visual Basic Broncode
Module Example8
    Sub Main()
        Dim value As Integer
        '
        Do While value < 10
            value = value + 1
            Console.WriteLine(value)
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
1
2
3
4
5
6
7
8
9
10
We weten reeds dat als we een While variant naar een Until-variant willen omzetten, we de voorwaarde/conditie moeten kantelen. Kantelen dus of omkeren of ook wel inverteren genoemd.

Het omgekeerde van "getal kleiner dan 10" is "getal groter of gelijk aan 10" ( value >= 10 ). Een getal is immers niet kleiner dan 10 enkel wanneer het groter is dan of gelijk aan 10 .
Visual Basic Broncode
Module Example9
    Sub Main()
        Dim value As Integer
        '
        Do Until value >= 10
            value = value + 1
            Console.WriteLine(value)
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
1
2
3
4
5
6
7
8
9
10
Een alternatieve wijze om een booleaanse expressie te inverteren is het gebruik van de unaire logische/booleaanse operator Not. Deze werkt op 1 booleaanse operand, en zal steeds het omgekeerde opleveren. Je zou volgende tabel kunnen opstellen :
condition-1       Not condition-1
True              False
False             True
Dus om opnieuw de getallen 1 tot en met 10 te bekomen, kunnen we de voorwaarde getal < 10 gewoon inverteren door te stellen Not getal < 10 :
Visual Basic Broncode
Module Example10
    Sub Main()
        Dim value As Integer
        '
        Do Until Not value < 10
            value = value + 1
            Console.WriteLine(value)
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
1
2
3
4
5
6
7
8
9
10

Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Visual Basic 2008 & 2010 Boeken

Het Groene Visual Basic 2008 & 2010 Voorbeelden Boek Het Blauwe Visual Basic 2008 & 2010 Voorbeelden Boek Het Rode Visual Basic 2008 & 2010 Voorbeelden Boek

Bevalt een artikel je, dan kan je de inhoud van vbvoorbeelden ook reclamevrij in boekvorm verkrijgen.

De inhoud is verdeeld over 3 boeken, Het Groene, Het Blauwe en Het Rode Visual Basic 2008 & 2010 Voorbeelden Boek.

Klik hier voor meer informatie.

Berichten

Fast UML Sequence Diagram Editor