Podprogramy_02_Funkcje.doc
Copyright © 2007, Janusz Bonarowski 1
Podprogramy_02_Funkcje
Procedura Function, wykorzystanie własnej procedury, wywołanie funkcji, obsługa wyjątków.
Zadanie
Pewien etap rajdu samochodowego składa się z 3 odcinków specjalnych. Znana jest średnia prędkość i czas przejazdu na każdym odcinku. Napisać program obliczający długość każdego odcinka specjalnego i całkowitą długość etapu rajdu. Długość drogi pojedynczego odcinka obliczać własna procedurą typu Function.
Rys. 1. Postać formularza
Wartości właściwości etykiet lblS1, lblS2, lblS3
Nazwa właściwości
Wartość właściwości AutoSize False
BackColor Custom, biały Size, Height 20
Text skasować BorderStyle Fixed3D
Właściwość StartPosition formularza proszę ustawić na CenterScreen
Kod
Public Class Form1
Private Sub btnOblicz_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnOblicz.Click Dim S As Single
lblS1.Text = Droga(txtV1.Text, txtT1.Text) lblS2.Text = Droga(txtV2.Text, txtT2.Text) lblS3.Text = Droga(txtV3.Text, txtT3.Text)
If IsNumeric(lblS1.Text) = False Or _ IsNumeric(lblS2.Text) = False Or _ IsNumeric(lblS2.Text) = False Then lblS.Text = ""
Exit Sub Else
S = CSng(lblS1.Text) + CSng(lblS2.Text) + CSng(lblS3.Text) lblS.Text = S.ToString
End If End Sub
Podprogramy_02_Funkcje.doc
Copyright © 2007, Janusz Bonarowski 2
Private Function Droga(ByVal prędkość As String, ByVal czas As String) As String ' Deklaracja typu funkcji *********
Dim V, T, S As Single
Try
V = CSng(prędkość) T = CSng(czas)
If V < 0 Or T < 0 Then
MsgBox("Wartości muszą być WIĘKSZE OD 0") ' Wartość zwracana przez Funkcję
Return "Ujemne"
'==============
End If
If V = 0 Or T = 0 Then
MsgBox("Wartości muszą być WIĘKSZE OD 0") ' Wartość zwracana przez Funkcję
Return "Zero"
'==============
End If S = V * T
' Wartość zwracana przez Funkcję Return S.ToString
'================
Catch wyjątek As Exception
MsgBox(wyjątek.Message, MsgBoxStyle.Exclamation, "Błąd danych") ' Wartość zwracana przez Funkcję
Return "Błąd"
'============
End Try End Function
End Class
Z funkcji korzystamy poprzez jej wykonanie, co nazywamy wywołanie funkcji.
Funkcję wywołujemy pisząc jej nazwę z odpowiednimi argumentami oddzielonymi przecinkami i ujętymi w nawiasy. Nie używamy żadnych dodatkowych słów kluczowych.
Funkcja zwraca wartość umieszczoną po słowie Return i przerywa dalsze działanie przekazując sterowanie do procedury, do miejsc w którym została wywołana. Funkcja może posiadać więcej niż jedną instrukcję Return. Zwracanie wartości przez Funkcję można uzyskać nie tylko instrukcją ze słowem kluczowym Return, np.:
Return S.ToString
lub
Return "Błąd"
lecz także przez podstawienie zwracanej wartości pod nazwę funkcji bez słowa kluczowego Return (metoda stosowana w starszej wersji VB 6.0) np.
Droga = S.ToString Exit Function
lub
Droga = "Błąd"
Exit Function
Zaleca się jednak stosowanie tej linii kodu albo jako ostatnią instrukcję w treści funkcji (ponieważ taki sposób przekazania wartości nie przerywa działania funkcji i jeśli znajdują się dalej jakieś linie kodu to także zostaną wykonane) albo przerywać wykonania kodu funkcji poprzez instrukcję Exit Function.
Argumenty funkcji muszą być zgodne co do liczby i typu z argumentami wywołania funkcji.