|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
3.7.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 2010 Broncode Module AndExample 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output Value 1 ?
5
Value 2 ?
10
Sum : 15 Console Application Output Value 1 ?
-5
Value 2 ?
10 Console Application Output Value 1 ?
5
Value 2 ?
-10 Console Application Output Value 1 ?
-5
Value 2 ?
-10 Eigenlijk is het beter hiervoor de AndAlso operator te gebruiken. Visual Basic 2010 Broncode Module AndAlsoExample 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output Value 1 ?
5
Value 2 ?
10
Sum : 15 Console Application Output Value 1 ?
-5
Value 2 ?
10 Console Application Output Value 1 ?
5
Value 2 ?
-10 Console Application 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. boven
3.7.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. boven
3.7.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. Console Application Output Value 1 ?
5
Value 2 ?
-10
Sum : -5 Console Application Output Value 1 ?
-5
Value 2 ?
10
Sum : 5 Console Application Output Value 1 ?
5
Value 2 ?
10 Console Application Output Value 1 ?
-5
Value 2 ?
-10 Oplossing : Visual Basic 2010 Broncode Module XorExercise 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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. Console Application Output Value ?
15
Value ?
150
Value ?
0
Value ?
-5
Value ?
5
Sum : 160 Oplossing : Visual Basic 2010 Broncode Module DoLoopExercise 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|