|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
Veronderstel dat we de som van twee ingevoerde getallen willen afdrukken indien beide getallen positief zijn. Visual Basic 2010 Broncode Module NestedIfExample1 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 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 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 2010 Broncode Module LogicalConjunctionOperatorAndExample1 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 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 2010 Broncode Module NestedIfExample2 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 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
Value 1 not positive. Console Application Output Value 1 ?
5
Value 2 ?
-10
Value 2 not positive. Console Application 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 2010 Broncode Module LogicalConjunctionOperatorAndExample2 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 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
Value 1 and/or 2 not positive. Console Application Output Value 1 ?
5
Value 2 ?
-10
Value 1 and/or 2 not positive. Console Application 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.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|