login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > VB.NET


Gegevens:
Geschreven door:
kickasgamer
Moeilijkheidsgraad:
Moeilijk
Hits:
17275
Punten:
Aantal punten:
 (4.4)
Aantal stemmen:
10
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (9)
 

Tutorial:

Rekenmachine

1. Inleiding
2. Een form opstellen
3. Invoer regelen
4. Afhandeling van het 2de getal
5 . De uitkomst
6. De andere tekens en verder rekenen
7. De afwerking


1. Inleiding
Naar aanleiding van de tutorial van Titjes (inleiding op windows forms), waar al een begin wordt gemaakt van een mini-rekenmachine, wilde ik iets verder gaan en een echt rekenmachine maken. Dit is iets moeilijker, maar blijft nog steeds binnen het begin van Visual Basic. Ik zal alles stap voor stap en zo gedetailleerd mogelijk uitleggen.

pijl top
2. Een form opstellen

We starten eerst met een design te maken van ons form. Wat hebben we nodig ?
- 9 buttons voor de nummers
- 1 button voor de komma
- 1 button voor de "Clear" knop
- 4 buttons voor de bewerkingen
- 1 button voor de "=" knop
- 1 text box voor de getallen te tonen

Als je alles hebt geschikt dan ziet het er bijvoorbeeld zo uit:

Ik heb alle nummer buttons de naam gegeven nr(en dat het nummertje wat op de button staat)

pijl top


3. Invoer regelen
Eerst moeten we een stukje code maken zodat als je op een button klikt dat het bijbehorende nummer ook in het invoer vlak verschijnt. Dit kan gedaan worden met dit stukje code

Private Sub nr0_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles btnZero.Click

display.Text = nr0.Text

End Sub

Dit stukje code zorgt ervoor dat de text property van de button wordt overgezet naar de text property van de textbox. Maar het enige probleem dat dit stukje code oplevert is dat als je 2 cijfers wilt ingeven dat het eerste cijfer weg gaat en enkel het 2de cijfer blijft staan, dat kunnen we oplossen met een kleine verandering

Private Sub nr0_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles btnZero.Click

display.Text = display.Text & nr0.Text

End Sub

Het onderlijnde stukje code zorgt er voor dat bij de waarde die al wordt getoond op het scherm de nieuwe waarde wordt toegevoegd. Bovenstaande code kan je bij elke button gebruiken, juist dat je "nr0" moet vervangen door de naam van de button.

pijl top


4. Afhandeling van het 2de getal

Dit is hoe we willen dat het script gaat werken (Als voorbeeld nemen we 5 +9):

Klik eerst op 5
Een 5 verschijnt in de textbox
Klik op het + knopje
De 5 verdwijnt uit de textbox
Klik op 9
Een 9 verschijnt in de textbox
Klik op het = knopje
De 9 verdwijnt uit de textbox
Het antwoord verschijnt
Klik op de Clear knop om de textbox terug leeg te maken

De eerste 2 stappen hebben we al gedaan nu gaan we de volgende 2 stappen uitvoeren.
We gaan ook alvast dan de 2 waardes die we nodig hebben bovenaan aanmaken.

Dim totaal1 As Double
Dim totaal2 As Double

Nu gaan we aan totaal1 vullen met de eerste waarde:

totaal1 = totaal1 + Convert.ToDouble(display.Text)

Nu hebben we het getal vanuit de textbox in totaal1 gebracht, dan gaan we de display leeg maken

display.Clear()

Dan hebben we deze code:

Private Sub plus_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) _Handles plus.Click

totaal1 = totaal1 + Convert.ToDouble(display.Text)
display.Clear()

End Sub

Waarom gebruiken we hier Convert.ToDouble() en niet gewoon Val()?
Omdat we met ons rekenmachine ook getallen met komma's willen gebruiken. De functie Val() zet een string die in de textbox staat om naar een integer, dit datatype ondersteund enkel getallen zonder komma. Dus daarom gaan we voor een Double datatype, daardoor moeten we onze functie ook aanpassen van Val() naar Convert.ToDouble() zodat de komma getallen helemaal bewaard worden in onze variable.

pijl top


5. De uitkomst

Nu willen we als we op de = knop klikken dat het 2de getal wordt opgeslagen in totaal 2 en direct de bewerking uitgevoerd wordt.

Dat doen we zo voor de som:

totaal2 = totaal1 + Convert.ToDouble(display.Text)

Het enige wat we dan nog moeten doen is totaal2 tonen in de display en dat kunnen we zo doen:

display.Text = totaal2

Dat levert dan deze code op:

Private Sub uitkomst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles uitkomst.Click

totaal2 = totaal1 + Convert.ToDouble(display.Text)
display.Text = totaal2

End Sub


6. De andere tekens en verder rekenen

We willen nu ook dat de andere tekens werken daarvoor hoeven we enkel dezelfde code te gebruiken dan die van de + knop. We gaan ook een Boolean waarde aanmaken bij iedere bewerking zo dat we bij de = knop onderscheidt kunnen maken tussen iedere bewerking. Dit is dan de code:

   Private Sub plus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles plus.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_plus = True

       display.Clear()
   End Sub
   Private Sub min_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles min.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_min = True

       display.Clear()
   End Sub
   Private Sub maal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles maal.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_maal = True

       display.Clear()
   End Sub
   Private Sub delen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delen.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_delen = True

       display.Clear()
End Sub

Dan verandert er ook iets bij de = knop, omdat we nu werken met die boolean waarde kunnen we de bewerkingen correct uitvoeren. Deze code wordt ervoor gebruikt:

Private Sub uitkomst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles uitkomst.Click
       If bol_plus = True Then
           totaal2 = totaal1 + Convert.ToDouble(display.Text)
       ElseIf bol_min = True Then
           totaal2 = totaal1 - Convert.ToDouble(display.Text)
       ElseIf bol_maal = True Then
           totaal2 = totaal1 * Convert.ToDouble(display.Text)
       ElseIf bol_delen = True Then
           totaal2 = totaal1 / Convert.ToDouble(display.Text)
       End If
       display.Text = totaal2
       totaal1 = 0
       totaal2 = 0
       bol_plus = False
       bol_min = False
       bol_maal = False
       bol_delen = False
       verder_nieuw = True
 End Sub

Hier zien we een aantal nieuwe dingen staan:
- We gaan de boolean waardes van de bewerkingen terug op false zetten zodat we correct verder kunnen rekenen
- De boolean waarde verder_nieuw gebruiken we om verder te rekenen, standaard staat deze op true. Het programma controleert of deze op true staat zo ja dan maken we de display leeg en kunnen we verder rekenen met de uitkomst.

Waarom speciaal een boolean aanmaken voor verder te rekenen?
Omdat als we gewoon verder zouden rekenen zonder die boolean dan zou alles in de display blijven staan en als je dan wilt verder rekenen en bijvoorbeeld nummer 2 wordt ingedrukt dan wordt de 2 achteraan de uitkomst toegevoegd in plaatst van erbij opgeteld.


7. De afwerking

Hier gaan we nu de 2 laatste knopjes afwerken, namelijk de ","-knop en de "clear"-knop. De ","-knop is simpel en werkt zoals we alle cijfer knoppen hebben gemaakt, zo:

Private Sub komma_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles komma.Click
       display.Text = display.Text & komma.Text
End Sub

De Clear-knop is ook gemakkelijk, want met deze knop gaan we de display leeg maken en de 2 waardes gelijk stellen aan 0.

Private Sub clear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles clear.Click
       display.Clear()
       totaal1 = 0
       totaal2 = 0
End Sub

Voila nu is ons volledig script af en is dit onze code:

Public Class rekenblad
   'vaste waardes
   Dim totaal1 As Double
   Dim totaal2 As Double
   Dim verder_nieuw As Boolean
   Dim bol_plus As Boolean
   Dim bol_min As Boolean
   Dim bol_maal As Boolean
   Dim bol_delen As Boolean

   Private Sub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr0.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr0.Text
       verder_nieuw = False
   End Sub

   Private Sub nr1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr1.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr1.Text
       verder_nieuw = False
   End Sub

   Private Sub nr2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr2.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr2.Text()
       verder_nieuw = False
   End Sub

   Private Sub nr3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr3.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr3.Text
       verder_nieuw = False
   End Sub

   Private Sub nr4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr4.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr4.Text
       verder_nieuw = False
   End Sub

   Private Sub nr5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr5.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr5.Text
       verder_nieuw = False
   End Sub

   Private Sub nr6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr6.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr6.Text
       verder_nieuw = False
   End Sub

   Private Sub nr7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr7.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr7.Text
       verder_nieuw = False
   End Sub

   Private Sub nr8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr8.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr8.Text
       verder_nieuw = False
   End Sub

   Private Sub nr9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr9.Click
       If verder_nieuw = True Then
           display.Clear()
       End If
       display.Text = display.Text & nr9.Text
       verder_nieuw = False
   End Sub
   Private Sub clear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles clear.Click
       display.Clear()
       totaal1 = 0
       totaal2 = 0
   End Sub
   Private Sub komma_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles komma.Click
       display.Text = display.Text & komma.Text
   End Sub
   Private Sub plus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles plus.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_plus = True

       display.Clear()
   End Sub
   Private Sub min_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles min.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_min = True

       display.Clear()
   End Sub
   Private Sub maal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles maal.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_maal = True

       display.Clear()
   End Sub
   Private Sub delen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delen.Click
       totaal1 = totaal1 + Convert.ToDouble(display.Text)
       bol_delen = True

       display.Clear()
   End Sub
   Private Sub uitkomst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles uitkomst.Click
       If bol_plus = True Then
           totaal2 = totaal1 + Convert.ToDouble(display.Text)
       ElseIf bol_min = True Then
           totaal2 = totaal1 - Convert.ToDouble(display.Text)
       ElseIf bol_maal = True Then
           totaal2 = totaal1 * Convert.ToDouble(display.Text)
       ElseIf bol_delen = True Then
           totaal2 = totaal1 / Convert.ToDouble(display.Text)
       End If
       display.Text = totaal2
       totaal1 = 0
       totaal2 = 0
       bol_plus = False
       bol_min = False
       bol_maal = False
       bol_delen = False
       verder_nieuw = True
  End Sub
End Class

Dat was het dan nu heb je je eigen rekenmachine gemaakt, ik hoop dat jullie er iets van geleerd hebben. Vergeet niet te stemmen op deze tutorial en eventuele fouten te melden





« Vorige tutorial : Threading in vb.net Volgende tutorial : Simpele Webbrowser maken (VB.NET) »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.013s