Leren programmeren: rekenmachine


We gaan ook hier geen invoer vragen via een InputBox. We zouden een lijst kunnen gebruiken of opties (zie Planeet) maar we kiezen er voor om verschillende knoppen op een formulier te plaatsen.

Omdat bij alle bewerkingen eerst de getallen moeten ingelezen worden, nemen we dat op in een aparte procedure. We kunnen daar waarschuwen als een invoer geen getal is.

'Algemene variabele, gedeclareerd boven het formulier
Dim getal1 As Single
Dim getal2 As Single
Dim resultaat As Double

Sub leesin()
If IsNumeric(txtGetal1.Text) Then
  getal1 = CSng(txtGetal1.Text)
Else
  MsgBox "Het eerste vak bevat geen getal"
End If
If IsNumeric(txtGetal2.Text) Then
  getal2 = CSng(txtGetal2.Text)
Else
  MsgBox "Het tweede vak bevat geen getal"
End If
End Sub

Op te merken valt dat het een stuk handiger zou zijn te werken met genummerde controls (een array van controls), omdat we dan de code niet hadden hoeven te kopiëren.

Voor de bewerkingen zelf letten we erop dat we niet delen door nul. De code ziet er zo uit:

Private Sub cmdGedeeld_Click()
leesin
If getal2 = 0 Then
MsgBox ("Deling door nul")
Exit Sub
End If
resultaat = getal1 / getal2
MsgBox resultaat
End Sub

Private Sub cmdMaal_Click()
leesin
resultaat = getal1 * getal2
MsgBox resultaat
End Sub


Private Sub cmdMin_Click()
leesin
resultaat = getal1 - getal2
MsgBox resultaat
End Sub

Private Sub cmdPlus_Click()
leesin
resultaat = getal1 + getal2
MsgBox resultaat
End Sub

 

En toch: het kan nog een stuk eenvoudiger. De scripting talen (Javascript maar ook VB Script) hebben een ingebouwde functie eval() waarmee je zonder meer het resultaat van een formule kan berekenen in een webpagina. De code is heel eenvoudig:

Sub Button1_onclick
msgbox(eval(text1.value))
End Sub

Even proberen?


[VB Web] - [Leren programmeren] - [hlrnet] - [copyright]