|
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 AndVeronderstel 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 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 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 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 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 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
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 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
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. Terug naar boven 3.2.2. Disjunction Operator OrVeronderstel 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 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
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 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
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 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
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 Terug naar boven
3.2.3. Negation Operator NotVolgend 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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
Berichten
|