Visual Basic‎ > ‎

Podprogramy

Podprogram je kratší program, který řeší nějaký úkol. Např. seřadí pole hodnot, převede text na velká písmena, vypočítá matematickou funkci apod. Mohou být dvojího typu: procedury nebo funkce.

Výhody:
  • oddělené ladění
  • snadné změny
  • vyšší srozumitelnost programu
Nevýhody:
  • zpomaluje běh programu

Procedury

Procedura může vracet libovolný počet hodnot: žádnou, jednu nebo více.

Deklarace
Public Sub (parametry) As Typ
    [Příkazy]
    [Exit Sub]
    [Příkazy]
End Function

Pokud je uveden příkaz Exit Sub, bude posloupnost příkazů v tomto místě přerušena a proveden návrat do volající procedury.

Funkce

Funkce vrací vždy jednu hodnotu.

Deklarace
Public Function (parametry) As Typ
    [Příkazy]
    [Exit Function]
    [Příkazy]
End Function

Pokud je uveden příkaz Exit Function, bude posloupnost příkazů v tomto místě přerušena a proveden návrat do volající procedury.

Příklad

Napište proceduru a funkci, která vypočítá absolutní hodnotu:

Public Sub absol_hodnota_hlavni()
Dim K As Integer
Dim V As Integer

K = InputBox("Zadej číslo")
V = absol_f(K)
Debug.Print ("V");
Debug.Print (V)

absol_p K
Debug.Print ("K");
Debug.Print (K)
End Sub

Public Sub absol_p(X As Integer)
    If X < 0 Then X = -X
End Sub

Public Function absol_f(X As Integer) As Integer
    If X >= 0 Then
        absol_f = X
    Else
        absol_f = -X
    End If
End Function

Předávání parametrů odkazem a hodnotou

Parametry se mohou předávat buď odkazem nebo hodnotou. Ukážeme si nejlépe na následujícím příkladu. Proměnná X je předávána odkazem a proměnná Y hodnotou. Obě proměnné mají v příkladu stejné postavení, přesto po ukončení běhu programu budou nabývat rozdílných hodnot. X hodnoty 0 a Y hodnoty 20. Hodnotou se předávají proměnné jen, pokud jsou jako vstupní parametry podprogramu, odkazem jako vstupní i výstupní.

Public Sub hlavni()
Dim x, y As Single
x = 10
y = 20
Soucet x, (y)
Debug.Print x
Debug.Print y
End Sub

Public Sub soucet(c1, c2 As Single)
Debug.Print c1 + c2
c1 = 0
c2 = 0
End Sub
Comments