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