Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

2.3. Geneste Structuren

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Hier wensen we van een ingevoerd getal op de console te drukken of het getal "Zero.", "More than zero." of "Less than zero." is.

We weten reeds dat we met een selectie structuur op basis van een voorwaarde een situatie in twee deel-situaties kunnen opsplitsen.
Maar hier hebben we drie situaties, een voorwaarde/selectie zal nooit volstaan om het programma te kunnen laten constateren in welk van de drie gevallen het zich nu bevindt.

Maar door een extra selectie structuur in de bovenliggende te gaan nesten, kunnen we bijkomende condities nagaan.  Hier wordt dus eerst gecontroleerd of het getal nul is, is dit niet zo gaan we kijken of het groter is dan nul.
Visual Basic 2012 Broncode - Codevoorbeeld 17
Module Example1
    Sub Main()
        Console.WriteLine("Value ?")
        Dim value As Integer = Console.ReadLine()
        '
        If value = 0 Then
            Console.WriteLine("Zero.")
        Else
            If value > 0 Then
                Console.WriteLine("Above zero.")
            Else
                Console.WriteLine("Below zero.")
            End If
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
Value ?
0
Zero.
Console Application Output
Value ?
5
Above zero.
Console Application Output
Value ?
-5
Below zero.
Bovenstaand voorbeeld toont hoe een selectie geselecteerd kan worden.

Stel dat we de tafels van de getallen 1 tot en met 9 op de console wensen te drukken drukken.
Console Application Output
1 x 1 = 1
1 x 2 = 2
...
1 x 9 = 9
2 x 1 = 1
...
9 x 9 = 81
Al snel zou je moeten merken dat hier zaken herhaald worden, dus dat we een iteratie structuur hiervoor kunnen gebruiken.  Wat wordt hier herhaald?
Er wordt herhaald dat een steeds hoger worden basisgetal (startend bij 1 en stijgend tot 9) wordt vermenigvuldigd met alle factoren van een tot en met negen.

We kunnen beginnen met een lus die alle basisgetallen van 1 tot en met 9 op de console brengt.
Visual Basic 2012 Broncode - Codevoorbeeld 18
Module Example2
    Sub Main()
        Dim baseValue As Integer = 1
        '
        Do While baseValue < 10
            Console.WriteLine(baseValue)
            baseValue = baseValue + 1
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
1
2
3
4
5
6
7
8
9
We zitten nu al een stap verder, maar we zijn er uiteraard nog niet.  In plaats van het gewoon afdrukken van dat basisgetal, zou dat basisgetal nu herhaaldelijk met een steeds verhogende factor moeten vermenigvuldigd worden, zodat we dat resultaat kunnen afdrukken.

Laten we een versie schrijven die een basisgetal met die getallen vermenigvuldigd.
Visual Basic 2012 Broncode - Codevoorbeeld 19
Module Example3
    Sub Main()
        Dim baseValue As Integer = 5
        Dim factor As Integer = 1
        Dim multiplication As Integer
        '
        Do While factor < 10
            multiplication = baseValue * factor
            Console.WriteLine(baseValue & " x " & factor & " = " &
                              multiplication)
            factor = factor + 1
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
Als we deze twee versies nu integreren, dus daar waar in de eerste versie gewoon het basisgetal op de console wordt geschreven vervangen door de herhaling uit de tweede versie, dan krijgen we :
Visual Basic 2012 Broncode - Codevoorbeeld 20
Module Example4
    Sub Main()
        Dim baseValue As Integer = 1
        Dim factor As Integer = 1
        Dim multiplication As Integer
        '
        Do While baseValue < 10
            Do While factor < 10
                multiplication = baseValue * factor
                Console.WriteLine(baseValue & " x " & factor & " = " &
                                  multiplication)
                factor = factor + 1
            Loop
            baseValue = baseValue + 1
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
Dit is bijna volledig, alleen moeten we er nu nog voor zorgen dat de factor geherinitialiseerd wordt (opnieuw op 1 wordt gezet) als er met een nieuw basisgetal wordt begonnen.
Visual Basic 2012 Broncode - Codevoorbeeld 21
Module Example5
    Sub Main()
        Dim baseValue As Integer = 1
        Dim factor As Integer = 1
        Dim multiplication As Integer
        '
        Do While baseValue < 10
            Do While factor < 10
                multiplication = baseValue * factor
                Console.WriteLine(baseValue & " x " & factor & " = " &
                                  multiplication)
                factor = factor + 1
            Loop
            baseValue = baseValue + 1
            factor = 1
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
1 x 1 = 1
1 x 2 = 2
...
1 x 9 = 9
2 x 1 = 1
...
9 x 9 = 81
Wat we uit dit voorbeeld leren is dat een iteratie kunnen itereren.

We weten ondertussen dat we verschillende selecties of iteraties in elkaar kunnen uitschrijven.  Maar uiteraard kunnen ook gewoon selecties in iteraties of iteraties in selecties worden gebruikt.

In onderstaand voorbeeld wensen we van de getallen een tot en met tien op de console te drukken of ze even of oneven getallen zijn, dus iets als :
Console Application Output
1 is odd.
2 is even.
3 is odd.
4 is even.
5 is odd.
6 is even.
7 is odd.
8 is even.
9 is odd.
10 is even.
We zitten hier duidelijk met iets wat herhaald moet worden (we moeten dit doen voor de getallen een tot en met tien) en we zitten ook met een beslissing die moet worden genomen (is het getal even of oneven).  Dus zowel een iteratie- als selectie structuur zal hier noodzakelijk zijn.

We kunnen ons nu de vraag stellen : is het op basis van de beslissing dat we al dan niet gaan itereren, of is het de beslissing die we gaan herhalen ?
Ik denk dat het hier duidelijk over het tweede gaat.  We moeten de beslissing of een getal even is of oneven gaan herhalen voor de getallen een tot en met tien.

We kunnen beginnen met versie die van een getal op de console drukt of het een even of oneven getal is :
Visual Basic 2012 Broncode - Codevoorbeeld 22
Module Example6
    Sub Main()
        Dim value As Integer = 5
        '
        If value Mod 2 = 0 Then
            Console.WriteLine(value & " is even.")
        Else
            Console.WriteLine(value & " is odd.")
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
5 is odd.
Die beslissing en bijhorende consequenties uit bovenstaande versie moet nu dus volledig herhaald worden voor de getallen een tot en met 10, dus we schrijven er een lus rond :
Visual Basic 2012 Broncode - Codevoorbeeld 23
Module Example7
    Sub Main()
        Dim value As Integer
        '
        Do While value < 10
            value = value + 1
            If value Mod 2 = 0 Then
                Console.WriteLine(value & " is an even number")
            Else
                Console.WriteLine(value & " is an odd number")
            End If
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
1 is odd.
2 is even.
3 is odd.
4 is even.
5 is odd.
6 is even.
7 is odd.
8 is even.
9 is odd.
10 is even.
Zoals we bovenstaand voorbeeld zien kan een selectie dus geïtereerd worden, maar natuurlijk kan ook een iteratie selecteren.

Sequenties, selecties en iteraties zijn de drie basisstructuren waarmee men gecombineerd de meest krachtige algoritmes kan opbouwen.

2.3.1. Oefeningen

Opgave :

Maak een programma dat herhaaldelijk vraagt om de invoer van een getal, bij het invoeren van een getal kleiner dan nul wordt het grootst ingevoerde getal op de console gebracht.
Console Application Output
Value ?
3
Value ?
8
Value ?
4
Value ?
-1
Highest Value : 8
Oplossing :
Visual Basic 2012 Broncode - Codevoorbeeld 24
Module Exercise1Solution
    Sub Main()
        Dim value As Integer
        Dim highestValue As Integer
        '
        Do While value >= 0
            Console.WriteLine("Value ?")
            value = Console.ReadLine()
            '
            If value > highestValue Then
                highestValue = value
            End If
        Loop
        '
        Console.WriteLine("Highest Value : " & highestValue)
        '
        Console.ReadLine()
    End Sub
End Module
Opgave :
Maak een programma dat alle getallen (van klein naar groot) tussen 2 door de gebruiker ingevoerde waarden op de console brengt.
Let op : men weet op voorhand niet welk van de 2 door de gebruiker ingevoerde waarden het grootst is.
Console Application Output
Value ?
-4
Value ?
3
Row :
-3
-2
-1
0
1
2
Console Application Output
Value ?
2
Value ?
2
Row :
Console Application Output
Value ?
2
Value ?
-1
Row :
0
1
Console Application Output
Value ?
2
Value ?
3
Row :
Oplossing :
Visual Basic 2012 Broncode - Codevoorbeeld 25
Module Exercise2Solution
    Sub Main()
        Dim value1, value2 As Integer
        Dim smallestValue, highestValue As Integer
        '
        Console.WriteLine("Value ?")
        value1 = Console.ReadLine()
        Console.WriteLine("Value ?")
        value2 = Console.ReadLine()
        '
        If value1 > value2 Then
            highestValue = value1
            smallestValue = value2
        Else
            highestValue = value2
            smallestValue = value1
        End If
        '
        Console.WriteLine("Row :")
        Do While smallestValue + 1 < highestValue
            Console.WriteLine(smallestValue + 1)
            smallestValue = smallestValue + 1
        Loop
        '
        Console.ReadLine()
    End Sub
End Module
Opgave :
Maak een programma dat een - van 0 verschillend - positief getal inleest.
Als het een even getal is : wordt het door 2 gedeeld en afgedrukt.
Als het een oneven getal is : wordt het met 3 vermenigvuldigd en 1 bij opgeteld en afgedrukt.
Zo bekom je dus een nieuw getal.  Herhaal dit totdat je 1 bekomt.
Console Application Output
Value ?
10
Row :
10
5
16
8
4
2
1
Oplossing :
Visual Basic 2012 Broncode - Codevoorbeeld 26
Module Exercise3Solution
    Sub Main()
        Console.WriteLine("Value ?")
        Dim value As Integer = Console.ReadLine()
        '
        Console.WriteLine("Row : ")
        Do While value <> 1
            Console.WriteLine(value)
            '
            If value Mod 2 = 0 Then
                value = value / 2
            Else
                value = value * 3 + 1
            End If
        Loop
        Console.WriteLine(value)
        '
        Console.ReadLine()
    End Sub
End Module

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.