|
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 AndAlsoVeronderstel 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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. Terug naar boven 3.5.2. Logische Kortsluitings Operator OrElseBij 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. Terug naar boven
3.5.3. OefeningenOpgave :
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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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 (value > 10 AndAlso value < 20) OrElse _
(value > 100) OrElse (value <= 0)
sum = sum + value
Console.WriteLine("Value ?")
value = Console.ReadLine()
Loop
Console.WriteLine("Sum : " & sum)
Console.ReadLine()
End Sub
End ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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
Berichten
|