VB 2008 Express edition – Zajęcia 4
Copyright © 2012, Janusz Bonarowski
Własne procedury i funkcje
(Poniższe zadanie jest bardzo uproszczoną wersją zadania opracowanego przez dr hab. inż. Witolda Marowskiego).
patrz także inne przykłady: http://www.simr.pw.edu.pl/~jbo/vb/vb_express2008/vb4.0_podprogram_sub_opis.pdf
Zadanie. Wykonać aplikację, która dla podanego promienia koła oblicza jego obwód i pole. Niech obliczenia zostaną wykonane (własną) procedurą i/lub dwoma (własnymi) funkcjami.
Rys. 1. Propozycja formularza
' =========== Wersja BEZ ZABEZPIECZEŃ ===============
' =========== Obliczenia za pomocą procedury Sub ===============' '
Private Sub btnObliczSub_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnObliczSub.Click Dim PoleKola, ObwodKola As Single
Call Kolo(txtPromien.Text, PoleKola, ObwodKola) txtPole.Text = PoleKola.ToString
txtObwod.Text = ObwodKola.ToString End Sub
Private Sub Kolo(ByVal strR As String, ByRef Pole As Single, ByRef Obwod As Single) ' --- ++++++++++++++++++++ +++++++++++++++++++++
Dim R As Single R = CSng(strR)
Pole = Math.PI * R ^ 2 Obwod = 2 * Math.PI * R End Sub
Private Sub txtPromien_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles txtPromien.TextChanged txtPole.Clear()
txtObwod.Clear() End Sub
'
' ======== Obliczenia za pomocą procedury Function ================
'
Private Sub btnObliczFun_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnObliczFun.Click Dim R As Single
R = CSng(txtPromien.Text)
txtPole.Text = PoleKola(R).ToString txtObwod.Text = ObwodKola(R).ToString End Sub
Private Function PoleKola(ByVal R As Single) As Single PoleKola = Math.PI * R ^ 2
' lub Return Math.PI * R^2 End Function
Private Function ObwodKola(ByVal R As Single) As Single ObwodKola = 2 * Math.PI * R
' lub Return 2 * Math.PI * R End Function
VB 2008 Express edition – Zajęcia 4
Copyright © 2012, Janusz Bonarowski '
' =========== Wersja Z ZABEZPIECZENIEM ===============
' ============ Obliczenia za pomocą procedury Sub ===============
'
Private Sub btnObliczSub_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnObliczSub.Click Dim PoleKola, ObwodKola As Single
Try
Call Kolo(txtPromien.Text, PoleKola, ObwodKola) If PoleKola < 0 Or ObwodKola < 0 Then
Err.Raise(9998, "ujemne", "Błąd danych") ' Error Number, Source, Description End If
txtPole.Text = PoleKola.ToString txtObwod.Text = ObwodKola.ToString
Catch ex As Exception
MsgBox("Błąd nr: " & Err.Number & vbCrLf & _
"Wpisano: " & Err.Source, MsgBoxStyle.Exclamation, _ Err.Description)
End Try End Sub
Private Sub Kolo(ByVal strR As String, ByRef Pole As Single, ByRef Obwod As Single) ' --- ++++++++++++++++++++ +++++++++++++++++++++
Dim R As Single Try
R = CSng(strR)
Pole = Math.PI * R ^ 2 Obwod = 2 * Math.PI * R Catch ex As Exception
Err.Raise(9999, strR, "Błąd konwersji") ' Error Number, Source, Description End Try
End Sub
Private Sub txtPromien_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles txtPromien.TextChanged txtPole.Clear()
txtObwod.Clear() End Sub
'
' ======== Obliczenia za pomocą procedury Function ================
'
Private Sub btnObliczFun_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnObliczFun.Click Dim R As Single
Try
R = CSng(txtPromien.Text)
txtPole.Text = PoleKola(R).ToString txtObwod.Text = ObwodKola(R).ToString Catch ex As Exception
MsgBox(ex.Message) End Try
End Sub
Private Function PoleKola(ByVal R As Single) As Single PoleKola = Math.PI * R ^ 2
End Function
Private Function ObwodKola(ByVal R As Single) As Single ObwodKola = 2 * Math.PI * R
End Function