VB_3.1_Kalkulator
Wykonajmy aplikację pozwalająca dokonywać obliczeń z wykorzystaniem wartości
wprowadzonych w okna tekstowe, patrz propozycja formularza na rys. 1.
Rys. 1. Propozycja formularza
Aplikację zabezpieczymy przed brakiem danych lub przed próbą wykonania działań gdy dane
są błędne – np. wpisano litery zamiast cyfr.
Przed próbą wykonania działań, gdy nie wpisano żadnych danych zabezpieczymy się
konstrukcją:
If txtA.Text = "" Then
Label2.Text = "Proszę wprowadzić pierwszą liczbę"
Exit Sub
End If
Konstrukcja ta spowoduje opuszczenie procedury (Exit Sub)jeśli w oknie tekstowym
znajduje się pusty łańcuch tekstowy.
Aby stwierdzić czy wprowadzony ciąg znaków jest liczbą stosujemy funcję IsNumeric.
Funkcja ta ma jeden argument (właśnie łańcuch znaków), a zwraca prawdę lub fałsz w
zależności od tego, czy łańcuch znaków jest czy nie jest liczbą:
If Not IsNumeric(txtA.Text) Then
Label2.Text = "A nie jest liczbą!"
Exit Sub
End If
Przed wykonaniem działań algebraicznych ciągi znaków znajdujące się w oknach tekstowych
trzeba zamienić na ich reprezentację liczbową. Dokonujemy tego stosując funkcje konwersji.
Przykładowe funkcje:
CSng – konwersja do typu Single
CDbl – konwersja do typu Double
CInt – konwersja do typu Integer
CStr – konwersja do typu String
lub funkcje
Single.Parse – konwersja do typu Single
Double.Parse – konwersja do typy Double
Integer.Parse – konwersja do typu Integer
NazwaZmiennej.ToString – konwersja do typu String
Copyright © 2009 Janusz Bonarowski
1
Private Sub btnPlus_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnPlus.Click
Dim A, B, W As Single
If txtA.Text = "" Then
Label2.Text = "Proszę wprowadzić pierwszą liczbę"
Exit Sub
End If
If Not IsNumeric(txtA.Text) Then
Label2.Text = "A nie jest liczbą!"
Exit Sub
End If
If txtB.Text = "" Then
Label2.Text = "Proszę wprowadzić drugą liczbę"
Exit Sub
End If
If Not IsNumeric(txtB.Text) Then
Label2.Text = "B nie jest liczbą!"
Exit Sub
End If
A = CSng(txtA.Text)
B = CSng(txtB.Text)
W = A + B
lblW.Text = W.ToString
End Sub
Private Sub btnMinus_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnMinus.Click
Dim A, B, W As Single
If txtA.Text = "" Then
Label2.Text = "Proszę wprowadzić pierwszą liczbę"
Exit Sub
End If
If Not IsNumeric(txtA.Text) Then
Label2.Text = "A nie jest liczbą!"
Exit Sub
End If
If txtB.Text = "" Then
Label2.Text = "Proszę wprowadzić drugą liczbę"
Exit Sub
End If
If Not IsNumeric(txtB.Text) Then
Label2.Text = "B nie jest liczbą!"
Exit Sub
End If
A = CSng(txtA.Text)
B = CSng(txtB.Text)
W = A - B
lblW.Text = W.ToString
End Sub
Copyright © 2009 Janusz Bonarowski
2
Private Sub btnMnozenie_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnMnozenie.Click
Dim A, B, W As Single
If txtA.Text = "" Then
Label2.Text = "Proszę wprowadzić pierwszą liczbę"
Exit Sub
End If
If Not IsNumeric(txtA.Text) Then
Label2.Text = "A nie jest liczbą!"
Exit Sub
End If
If txtB.Text = "" Then
Label2.Text = "Proszę wprowadzić drugą liczbę"
Exit Sub
End If
If Not IsNumeric(txtB.Text) Then
Label2.Text = "B nie jest liczbą!"
Exit Sub
End If
A = CSng(txtA.Text)
B = CSng(txtB.Text)
W = A * B
lblW.Text = W.ToString
End Sub
Private Sub btnDzielenie_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDzielenie.Click
Dim A, B, W As Single
If txtA.Text = "" Then
Label2.Text = "Proszę wprowadzić pierwszą liczbę"
Exit Sub
End If
If Not IsNumeric(txtA.Text) Then
Label2.Text = "A nie jest liczbą!"
Exit Sub
End If
If txtB.Text = "" Then
Label2.Text = "Proszę wprowadzić drugą liczbę"
Exit Sub
End If
If Not IsNumeric(txtB.Text) Then
Label2.Text = "B nie jest liczbą!"
Exit Sub
End If
A = CSng(txtA.Text)
B = CSng(txtB.Text)
If B = 0 Then
Label2.Text = "dzielenie przez zero!"
Exit Sub
End If
W = A / B
lblW.Text = W.ToString
End Sub
Copyright © 2009 Janusz Bonarowski
3
Private Sub btnPotega_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnPotega.Click
Dim A, B, W As Single
If txtA.Text = "" Then
Label2.Text = "Proszę wprowadzić pierwszą liczbę"
Exit Sub
End If
If Not IsNumeric(txtA.Text) Then
Label2.Text = "A nie jest liczbą!"
Exit Sub
End If
If txtB.Text = "" Then
Label2.Text = "Proszę wprowadzić drugą liczbę"
Exit Sub
End If
If Not IsNumeric(txtB.Text) Then
Label2.Text = "B nie jest liczbą!"
Exit Sub
End If
A = CSng(txtA.Text)
B = CSng(txtB.Text)
W = A ^ B
lblW.Text = W.ToString
End Sub
Private Sub btnSin_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSin.Click
Dim A As Single
Dim rad, W As Double
If txtA.Text = "" Then
Label2.Text = "Proszę wprowadzić kąt w stopniach"
Exit Sub
End If
If Not IsNumeric(txtA.Text) Then
Label2.Text = "A nie jest liczbą!"
Exit Sub
End If
A = CSng(txtA.Text)
rad = A * Math.PI / 180
W = Math.Sin(rad)
lblW.Text = W.ToString
End Sub
Copyright © 2009 Janusz Bonarowski
4