Visual Basic 2008 Express Edition – Zajęcia 5, r. ak. 2013/2014

Transkrypt

Visual Basic 2008 Express Edition – Zajęcia 5, r. ak. 2013/2014
Visual Basic 2008 Express Edition – Zajęcia 5, r. ak. 2013/2014
Własne procedury, właściwość Visible, procedura dla kilku zdarzeń
Obliczany jest aktualny punkt toru rzutu ukośnego dla zadanej prędkości początkowej, kąta nachylenia i czasu.
Jeżeli z danych wynika, że współrzędna Y toru byłaby ujemna, zwracany jest we współrzędnej X zasięg rzutu oraz
wyświetlana jest etykieta informująca o zakończeniu ruchu oraz czasie jego trwania.
Public Class Form1
'
'
Visual Basic, Zajęcia 5, r. ak. 2013/2014
'
'
Własne procedury. Obliczenia przy użyciu procedury. Właściwość "Visible".
'
Obsługa kilku zdarzeń przez jedną procedurę.
'
Private Sub Tor(ByVal V0 As Single, ByVal Kat As Single, ByVal T As Single, _
ByRef X As Single, ByRef Y As Single, ByRef TK As Single, _
ByRef Koniec As Boolean)
'
'
Procedura oblicza współrzędne punktu toru rzutu ukośnego dla zadanych:
'
prędkości początkowej, kąta jej nachylenia do poziomu w stopniach oraz
'
czasu ruchu.
'
Jeżeli dla zadanych wartości jest Y < 0, zwracana jest współrzędna X
'
zasięgu rzutu oraz jego czas trwania (TK), a argument "Koniec"
'
przyjmuje wartość "True".
'
Dim sngKatRad, sngG As Single
'
Koniec = False
' inicjalizacja
TK = 0.0
sngG = 9.81
'
sngKatRad = Math.PI * Kat / 180
'
X = V0 * T * Math.Cos(sngKatRad)
Y = V0 * T * Math.Sin(sngKatRad) - sngG * T ^ 2 / 2
'
If Y < 0 Then
X = V0 ^ 2 * Math.Sin(2 * sngKatRad) / sngG
Y = 0
TK = 2 * V0 * Math.Sin(sngKatRad) / sngG
Koniec = True
End If
End Sub
Private Sub Wyczysc()
'
'
Procedura czyści pola tekstowe i ukrywa etykietę "Koniec ruchu"
txtKat.Text = ""
txtV0.Text = ""
txtCzas.Text = ""
txtX.Text = ""
txtY.Text = ""
lblKoniecRuchu.Visible = False
End Sub
Private Sub btnOblicz_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnOblicz.Click
'
'
Obliczenia aktualnego punktu toru ruchu
'
Dim sngPredk, sngKat, sngCzas As Single
Dim sngX, sngY, sngTK As Single
Dim strKom, strTyt As String
Dim booKoniec As Boolean
'
Try
sngCzas = CSng(txtCzas.Text)
sngKat = CSng(txtKat.Text)
sngPredk = CSng(txtV0.Text)
'
'
Sprawdzenie poprawności danych
If sngCzas >= 0 And sngKat >= 0 And sngPredk >= 0 Then
Call Tor(sngPredk, sngKat, sngCzas, sngX, sngY, sngTK, booKoniec)
txtX.Text = sngX.ToString
txtY.Text = sngY.ToString
If booKoniec Then
lblKoniecRuchu.Text = "Koniec ruchu dla t = " & sngTK.ToString
End If
lblKoniecRuchu.Visible = booKoniec
Else
strKom = "Wartości V0, kąta i czasu powinny być nieujemne."
strTyt = "Błędne dane"
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
End If
Catch ex As Exception
strKom = Err.Description
strTyt = "Błąd wykonania nr " & Err.Number.ToString
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnWyczysc_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnWyczysc.Click
'
'
Wyczyszczenie pól formularza przez procedurę
Call Wyczysc()
End Sub
Private Sub txtV0_TextChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles txtV0.TextChanged, _
txtCzas.TextChanged, txtKat.TextChanged
'
'
Wyczyszczenie pól wyników obliczeń i ukrycie etykiety "Koniec ruchu"
txtX.Text = ""
txtY.Text = ""
lblKoniecRuchu.Visible = False
End Sub
End Class
 Witold Marowski, 2013