|
Dit artikel is gepubliceerd op woensdag 28 april 2010 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 Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic Output Value ?
0
Zero. Visual Basic Output Value ?
5
Above zero. Visual Basic 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. Visual Basic 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 Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic 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 Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic 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 Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic 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 Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic 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 : Visual Basic 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 Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic 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 Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic 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. OefeningenOpgave :
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. Visual Basic Output Value ?
3
Value ?
8
Value ?
4
Value ?
-1
Highest Value : 8 Oplossing : Visual Basic Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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. Visual Basic Output Value ?
-4
Value ?
3
Row :
-3
-2
-1
0
1
2 Visual Basic Output Value ?
2
Value ?
2
Row : Visual Basic Output Value ?
2
Value ?
-1
Row :
0
1 Visual Basic Output Value ?
2
Value ?
3
Row : Oplossing : Visual Basic Broncode 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 ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
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. Visual Basic Output Value ?
10
Row :
10
5
16
8
4
2
1 Oplossing : Visual Basic Broncode 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 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
|