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

8.1. Inleiding in Procedures

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.

In volgend voorbeeld kunnen centimeters naar inches en inches naar centimeters worden omgezet.
Visual Basic 2012 Broncode - Codevoorbeeld 144
Module Example1
    Sub Main()
        Dim menu As Char
        Dim value As Decimal
        '
        Console.Write("1 centimetres -> inches / 2 - inches -> centimetres : ")
        menu = Console.ReadLine()
        Do Until menu = "1"c OrElse menu = "2"c
            Console.WriteLine("An error occurred, please try again.")
            Console.Write("1 centimetres -> inches / 2 - inches -> centimetres : ")
            menu = Console.ReadLine()
        Loop
        '
        Console.Write("Value : ")
        value = Console.ReadLine()
        Do Until value > 0
            Console.WriteLine("An error occurred, please try again.")
            Console.Write("Value : ")
            value = Console.ReadLine()
        Loop
        '
        If menu = "1"c Then
            Console.WriteLine(value & " centimetres is " & value * 0.3937 & " inches")
        Else
            Console.WriteLine(value & " inches is " & value * 2.54 & " centimetres")
        End If
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
1 centimetre -> inches / 2 - inches -> centimetres : 3
An error occurred, please try again.
1 centimetres -> inches / 2 - inches -> centimetres : 4
An error occurred, please try again.
1 centimetres -> inches / 2 - inches -> centimetres : 1
Value : -5
An error occurred, please try again.
Value : -10
An error occurred, please try again.
Value : 10
10 centimetres is 3,937 inches
Indien een foutieve menukeuze wordt gemaakt, of een waarde wordt ingevoerd kleiner of gelijk aan nul zal hetzelfde gebeuren.  In beide situaties zal een foutmelding worden gegeven.

Om te vermijden meerdere keren dezelfde instructies te coderen in een programma, kan men gebruik maken van een "procedure" (ook wel "subroutine" of "function" genoemd).

8.1.1. Wat zijn Procedures ?

Procedures komen goed van pas wanneer bepaalde algoritmes meermaals gebruikt worden in een programma.

Het herhaalde algoritme kan één keer gedefinieerd worden in een subroutine, en meerdere keren aangeroepen worden wanneer nodig.

De Sub Main() ... End Sub die in bovenstaand voorbeeld wordt gebruikt is ook een procedure.  De Main procedure is degene die gestart wordt bij het uitvoeren van een programma.

Zoals de definitie van deze Main procedure verduidelijkt start een routine met het keyword Sub, gevolgd door de identifier van deze procedure, en wordt deze procedure afgesloten aan de hand van de keywords End Sub.

In volgend voorbeeld zal procedure ShowError gebruikt worden om de herhaalde instructies (die verantwoordelijk zijn voor het tonen van de foutmelding) in te definiëren.  Telkens wanneer deze foutmelding er moet komen zal deze routine worden aangeroepen.
Visual Basic 2012 Broncode - Codevoorbeeld 145
Module Example2
    Sub Main()
        Dim menu As Char
        Dim value As Decimal
        '
        Console.Write("1 centimetres -> inches / 2 - inches -> centimetres : ")
        menu = Console.ReadLine()
        Do Until menu = "1"c OrElse menu = "2"c
            ShowError()
            Console.Write("1 centimetres -> inches / 2 - inches -> centimetres : ")
            menu = Console.ReadLine()
        Loop
        '
        Console.Write("Value : ")
        value = Console.ReadLine()
        Do Until value > 0
            ShowError()
            Console.Write("Value : ")
            value = Console.ReadLine()
        Loop
        '
        If menu = "1"c Then
            Console.WriteLine(value & " centimetres is " & value * 0.3937 & " inches")
        Else
            Console.WriteLine(value & " inches is " & value * 2.54 & " centimetres")
        End If
        '
        Console.ReadLine()
    End Sub
    Sub ShowError()
        Console.WriteLine("An error occurred, please try again.")
    End Sub
End Module
Console Application Output
1 centimetres -> inches / 2 - inches -> centimetres : 3
An error occurred, please try again.
1 centimetres -> inches / 2 - inches -> centimetres : 4
An error occurred, please try again.
1 centimetres -> inches / 2 - inches -> centimetres : 1
Value : -5
An error occurred, please try again.
Value : -10
An error occurred, please try again.
Value : 10
10 centimetres is 3,937 inches
De volgorde waarin procedures worden gedefinieerd is willekeurig.  Hier wordt Main gedefinieerd voor ShowError, maar dit kon ook omgekeerd.

Een aanroep (ook "call" genoemd) naar een routine kan door de identifier van deze procedure te gebruiken.  De haakjes na de identifier worden verderop verklaard.

Probeer voor procedures altijd een identifier uit te kiezen die zo duidelijk mogelijk weergeeft wat de procedure zal doen.  ShowError toont een foutmelding.
Onthoud ook dat elke routine een unieke identifier moet hebben binnen de module waarin deze is gedefinieerd.  Er zou in de module Example2 geen tweede procedure met de naam Main of ShowError kunnen worden gedefinieerd.

Op het moment dat een aangeroepen procedure beëindigd is, zal worden verdergegaan met de instructies die na de call zijn opgenomen in de aanroepende procedure.

Indien een programma veel procedures bevat, waarbij vele van deze procedures ander procedures aanroepen, kan het soms onduidelijk zijn hoe je op een bepaald moment tijdens uitvoering in een bepaalde procedure bent terecht gekomen.  Een callstack debug tool kan dan helpen om hierin een overzicht te verkrijgen.
Visual Studio : Het kan interessant zijn om op dit moment eens instructie voor instructie door de code te stappen terwijl je de "callstack" debug tool in het oog houdt.  Deze debug tool zou beschikbaar moeten zijn, indien je gebruik maakt van een geavanceerde IDE (zoals Visual Studio).
Op de callstack staat oorspronkelijk slecht 1 entry (Main), maar deze callstack zal groeien bij het binnengaan van de procedure ShowError.  Op het moment dat ShowError beëindigd is zal ook de gerelateerde call van de stack worden gehaald.

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