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.5. Logische Kortsluitings Operatoren AndAlso en OrElse

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.5.1. Logische Kortsluitings Operator AndAlso

Veronderstel opnieuw dat we de som van twee ingevoerde getallen wensen af te drukken slechts indien ze beide positief zijn. Dan weten we ondertussen dat we hiervoor de operator And kunnen gebruiken :
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 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
Eigenlijk is het beter hiervoor de AndAlso operator te gebruiken.
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 AndAlso 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
Het verschil zit hem in de efficiëntie. We weten dat bij de And operator het resultaat steeds False zal zijn als de eerste operand reeds False is :
condition-1   condition-2     condition-1 And(Also) condition-2
True          True            True
True          False           False
False         True            False
False         False           False
Het heeft dan ook geen nut de tweede operand te evalueren als het resultaat reeds gekend is. En dit is net wat vermeden wordt bij de kortsluitingsoperator AndAlso.

Vergelijkbaar is er ook een OrElse kortsluitingsoperator.

3.5.2. Logische Kortsluitings Operator OrElse

Bij de Or operator kan je stellen dat het resultaat reeds True zal zijn als de eerste operand naar True evalueert, dus is het onnodig de tweede operand nog te evalueren. En dat is net wat de kortsluitingsoperator OrElse vermijdt.
condition-1   condition-2     condition-1 Or(Else) condition-2
True          True            True
True          False           True
False         True            True
False         False           False
Van de Xor operator kon men uiteraard geen kortsluitingsvariant creëren gezien steeds exclusiviteit dient te zijn tussen de operanden, waardoor ze steeds beide geëvalueerd moeten worden.

Het valt dus aan te raden altijd de kortsluitingsoperatoren AndAlso en OrElse te verkiezen boven de gewone And en Or operatoren.
Slechts in uitzonderlijke omstandigheden komen de gewone And en Or operatoren nog van pas, deze omstandigheden worden in een volgend topic behandeld.

3.5.3. Oefeningen

Opgave :

Bouw een selectie structuur ( naar analogie met de Xor operator, maar zonder die te gebruiken ) die slechts indien 1 van de 2 ingelezen getallen verschillend is van 0 de som gaat afdrukken.
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
Visual Basic Output
Value 1 ?
-5
Value 2 ?
-10
Oplossing :
Visual Basic Broncode
Module Exercise1Solution
    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 AndAlso Not value2 <> 0 OrElse _
           Not value1 <> 0 AndAlso value2 <> 0 Then
            Console.WriteLine("Sum : " & (value1 + value2))
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Opgave :
Maak een programma dat de som maakt van ingelezen getallen, zolang een getal wordt ingelezen dat ligt tussen 10 en 20 ( 10 en 20 exclusief ), groter is dan 100 ( exclusief 100 ) of "kleiner of gelijk is" aan 0.

Doe dit zowel met een Do While ... Loop als met een Do Until ... Loop.
Visual Basic Output
Value ?
15
Value ?
150
Value ?
0
Value ?
-5
Value ?
5
Sum : 160
Oplossing :
Visual Basic Broncode
Module Exercise2Solution
    Sub Main()
        Dim value, sum As Integer
        '
        ' 'Do While ... Loop' :
        Do While (value > 10 AndAlso value < 20) OrElse _
                 (value > 100) OrElse (value <= 0)
            sum = sum + value
            Console.WriteLine("Value ?")
            value = Console.ReadLine()
        Loop
        '
        '' 'Do Until ... Loop' : version 1 :
        'Do Until Not ((value > 10 AndAlso value < 20) OrElse _
        '              (value > 100) OrElse (value <= 0))
        '    sum = sum + value
        '    Console.WriteLine("Value ?")
        '    value = Console.ReadLine()
        'Loop
        '
        '' 'Do Until ... Loop' : version 2 :
        'Do Until (value <= 10 OrElse value >= 20) AndAlso _
        '         (value <= 100) AndAlso (value > 0)
        '    sum = sum + value
        '    Console.WriteLine("Value ?")
        '    value = Console.ReadLine()
        'Loop
        '
        Console.WriteLine("Sum : " & sum)
        '
        Console.ReadLine()
    End Sub
End Module

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