Copyright © 2009, Janusz Bonarowski
1
KolVB4
Dane są 3 kule o promieniach R1, R2 i R3. Znaleźć promień kuli zastępczej R0, której objętość V0 jest równa sumie objętości tych kul. Wykonać aplikację Windows Forms
Application wykonująca te obliczenia.
W celu obliczenia objętości kuli napisać własną procedurę Objetosc i wywołać ją 3 razy.
Do sprawdzania poprawności wpisanych wartości promieni napisać własną procedurę Sprawdzanie i wywołać ją 3 razy. Jeśli wprowadzono błędną wartość promienia procedura zwraca wartość promienia = 0 (zero).
Objętość V kuli o promieniu R:
33
4 R
V = ⋅ π ⋅
Aplikacja powinna być zabezpieczona przed wprowadzeniem danych, które mogłyby
spowodować awarię aplikacji: ciąg pusty, ciąg znaków nienumerycznych lub wartość zerowa.
Rozwiązanie
Rys. 1. Propozycja formularza
Kod aplikacji
Private Sub btnOblicz_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnOblicz.Click
Dim R1, R2, R3, R0 As Single Dim V1, V2, V3, V0 As Single
'___Sprawdzanie poprawności danych Call Sprawdzanie(txtR1.Text, R1)
If R1 = 0 Then
MsgBox("Błędna wartość R1", MsgBoxStyle.Critical, "Błąd R1") Exit Sub
End If
Copyright © 2009, Janusz Bonarowski
2
Call Sprawdzanie(txtR2.Text, R2)
If R2 = 0 Then
MsgBox("Błędna wartość R2", MsgBoxStyle.Critical, "Błąd R2") Exit Sub
End If
Call Sprawdzanie(txtR3.Text, R3)
If R3 = 0 Then
MsgBox("Błędna wartość R3", MsgBoxStyle.Critical, "Błąd R3") Exit Sub
End If
'___Obliczanie objętości kolejnych walców '--- Call Objetosc(R1, V1)
Call Objetosc(R2, V2) Call Objetosc(R3, V3)
'---
'___Wydruki kontrolne objętości kul.
lblV1.Text = V1.ToString lblV2.Text = V2.ToString lblV3.Text = V3.ToString
'___Suma objętości V0 = V1 + V2 + V3
lblV0.Text = V0.ToString
'___Promień kuli gdy znana jest jej objętość V0 R0 = ((3 * V0) / (4 * Math.PI)) ^ (1 / 3)
lblR0.Text = R0.ToString End Sub
Private Sub Sprawdzanie(ByVal strPromien As String, _ ByRef sngPromien As Single) 'Procedura sprawdza łańcuch tekstowy strPromien
' czy da się przekonwertować na liczbę i czy liczba ta 'jest większa od zera.
'Jeśli TAK:
' w zmiennej sngPromien zwraca wartość liczbową promienia.
'Jeśli NIE:
' w zmiennej sngPromien zwraca zero.
'--- 'WEJŚCIE:
' strPromien - wartość tekstowa promienia.
'WYJŚCIE:
' sngPromien - wartość liczbowa promienia lub (przy błędzie) zero.
'--- '___Sprawdzanie, czy strPromien zawiera pusty ciąg znaków
'___a jeśli nie, to czy ten ciąg znaków da się zamienić na liczbę.
If strPromien = "" Then
MsgBox("Prosze wpisać poprawną wartość dla promienia", _ MsgBoxStyle.Information, "Brak danych")
sngPromien = 0 Exit Sub
ElseIf Not IsNumeric(strPromien) Then
MsgBox("Dla promienia wpisano NIE liczbę", _ MsgBoxStyle.Critical, "Błąd danych") sngPromien = 0
Exit Sub End If
Copyright © 2009, Janusz Bonarowski
3
'___konwersja wartości tekstowej na liczbę typu Single sngPromien = CSng(strPromien)
'___Sprawdzenie, czy w sngPromien jest wartość zerowa lub ujemna If sngPromien <= 0 Then
MsgBox("Dla promienia proszę wpisać wartość WIĘKSZĄ od zera", _ MsgBoxStyle.Critical, "Błąd danych")
sngPromien = 0 Exit Sub
End If End Sub
Private Sub Objetosc(ByVal R, ByRef V)
'Włąściwa procedura obliczająca objetość kuli przy danym promieniu.
V = Math.PI * R ^ 3 * 4 / 3 End Sub