Een rekenmachine maken met Visual Basic

Open Visual Basic 6 en selecteer "Standaard EXE" in het nieuwe projectmenu. U ziet een leeg formulier op het scherm verschijnen.

Hernoem uw project en uw formulier door te klikken op "Project1" aan de rechterkant van het scherm, in de projectlijst, en het invoeren van een nieuwe naam in de "Naam"-regel van het vak Eigenschappen, die onder de projectlijst zou moeten verschijnen door standaard. Druk op "Enter" om de nieuwe naam te accepteren. Doe hetzelfde voor uw formulier (een voorgestelde formuliernaam is "CalculatorUI"), en zorg ervoor dat u ook een vergelijkbare naam invoert in de "Caption"-eigenschap, waardoor de tekst in de bovenste balk van het formulier wordt gewijzigd. Sla het project op in een nieuwe map op uw computer.

Voeg knoppen en een tekstvak toe aan het formulier. Voeg eerst een tekstvak toe, waarin de getallen die in de rekenmachine zijn ingevoerd, verschijnen, evenals de resultaten van berekeningen. Doe dit door de TextBox-knop in de werkbalk aan de linkerkant van het scherm te selecteren en vervolgens met uw muis de gewenste grootte en locatie voor de TextBox te slepen. Nadat u het tekstvak hebt geplaatst, kunt u de grootte en locatie wijzigen door het naar een andere locatie van het formulier te slepen of door de handvatten (de kleine vierkantjes) langs de rand van het tekstvak te slepen. Zorg ervoor dat u de volgende regels in het venster Eigenschappen wijzigt, met het Tekstvak geselecteerd: "(Naam)" = tbResult, "Alignment" = 1- Rechts uitvullen, "Data Format" = (klik op de "..."-knop om te selecteren) Number, "Locked" = True, en "Tekst" = 0.

Selecteer het CommandButton-pictogram op de werkbalk en maak de eerste knop op dezelfde manier waarop u de TextBox hebt gemaakt om knoppen toe te voegen. Gebruik ter referentie de Windows-rekenmachine in de standaardweergave (Programma's > Accessoires > Rekenmachine) als basis voor uw rekenmachinelay-out, waarbij u de knoppen "MC", "MR", "MS" en "M+" weglaat. Wijzig op elke knop de volgende eigenschappen (gebruik de knop "+" als voorbeeld): "(Naam)" = btnPlus, "Caption" = +. Doe hetzelfde voor de rest van de rekenmachineknoppen en sla vervolgens uw werk op. Uw formulier zou nu moeten lijken op het hier getoonde voorbeeld.

Voeg de code toe. Merk op dat als je knoppen en tekstvak niet dezelfde naam hebben als de code die hier wordt verwacht, je nodig hebt: om de namen te veranderen zodat ze overeenkomen met je knoppen en tekstvak, of verander je knoppen en tekstvak om hiermee overeen te komen code. Eerst moeten we een paar variabelen maken voor het verwerken van rekenmachineinvoer:

Dim links als string, rechts als string, sOperator als string Dim iLeft als dubbel, iRight als dubbel, iResult als dubbel Dim als boolean

Elke berekening bestaat uit vier delen: een getal links van de operator (sLeft, iLeft), een operator (sOperator), een getal rechts van de operator (sRight, iRight) en een resultaat (iResult). Om bij te houden of de gebruiker het linker- of rechternummer invoert, moeten we een booleaanse variabele maken, bLeft. Als bLeft waar is, wordt de linkerkant van de berekening ingevoerd; als bLeft onwaar is, wordt de rechterkant ingevoerd.

Initialiseer de bLeft-variabele. We doen dat door een Form_Load-subroutine te maken, die u kunt typen zoals hier vermeld of automatisch kunt maken door te dubbelklikken op een deel van het formulier dat niet wordt gedekt door een knop of tekstvak. Binnen de functie moeten we bLeft instellen op True, omdat het eerste ingevoerde getal het linkergedeelte is:

Maak een subroutine die het klikken op een van de cijferknoppen afhandelt. We maken dit als een subroutine omdat we identieke code gebruiken voor elke knop, en het gebruik van een subroutine betekent dat we dezelfde code niet tien keer hoeven te herhalen. Voer het volgende in onder de regel End Sub van de subroutine Form_Load:

Zoals u kunt zien, heeft deze functie een stringparameter nodig, sNumber, die het nummer zal bevatten waarop de gebruiker heeft geklikt. Als bLeft waar is, wordt dit nummer toegevoegd aan de tekenreeks die het nummer vertegenwoordigt dat wordt ingevoerd, sLeft, en wordt het tekstvak tbResult bijgewerkt om het nieuwe nummer weer te geven. Als bLeft onwaar is, wordt dezelfde bewerking uitgevoerd met in plaats daarvan sRight.

Maak ten slotte een Click-gebeurtenisfunctie voor elk nummer dat onze AddNumber-subroutine aanroept. U kunt dit eenvoudig doen door op elke cijferknop te dubbelklikken, waardoor de subroutinestructuur voor u wordt gemaakt. Voeg vervolgens de oproep toe aan AddNumber en vervang het nummer tussen aanhalingstekens door het nummer dat aan de knop is gekoppeld. Voor de nulknop ziet uw code er als volgt uit:

Evenzo ziet uw code er voor de ene knop als volgt uit:

Behandel de operatoren: plus, min, tijden en delen. We zullen dit doen zoals de laatste stap, door een subroutine te maken die wordt aangeroepen in de Click-gebeurtenissen voor de operatorknoppen. De subroutine ziet er als volgt uit:

Als bLeft waar is, wat betekent dat de gebruiker zojuist het linkerdeel van de berekening heeft ingevoerd, stelt deze subroutine de sOperator-variabele die we in stap 5 hebben gemaakt om gelijk te zijn aan de ingevoerde operator, die wordt doorgegeven aan AddOperator als de tekenreeks sNieuweOperator. De tweede stap is om bLeft in te stellen op False, omdat de invoer van een operator betekent dat de gebruiker klaar is met het invoeren van de linkerkant van de vergelijking. Om items te verwerken die meerdere operators aan elkaar rijgen, zoals 9 * 3 * 2 * 6, moeten we: controleer ook of bLeft onwaar is, wat betekent dat de gebruiker een operator heeft ingevoerd waar we een verwachtten gelijk aan. Eerst noemen we de Click-event voor de equals-knop (beschreven in de volgende stap), die de berekening doet en tbResult instelt op het resultaat van wat al is ingevoerd. Dan wissen we sRight zodat de gebruiker het volgende getal kan invoeren, en stellen bLeft in op False zodat het programma weet dat we de volgende keer aan de rechterkant van de berekening gaan.

Voeg ten slotte een AddOperator-aanroep toe aan de Click-gebeurtenis van elke operatorknop, met dezelfde methode als die we in stap 7 hebben gebruikt om de Click-gebeurtenissen voor de cijferknoppen te maken. Uw code voor de plusknop ziet er als volgt uit:

Maak de Click-gebeurtenis voor de equals-knop, de meest complexe code in dit programma. Creëer de subroutinestructuur zoals je deed voor de andere knoppen, door te dubbelklikken op de is gelijk aan knop op je formulier. Je subroutine ziet er als volgt uit als je de code hebt ingevoerd:

De eerste drie regels code controleren of beide kanten van de berekening zijn ingevoerd, samen met een operator. Als alleen de linkerkant en een operator worden ingevoerd, wordt de waarde van de linkerkant naar rechts gekopieerd, zodat we kunnen nabootsen het standaardgedrag van de rekenmachine voor het verwerken van een invoer zoals 9 * =, die 9 met zichzelf vermenigvuldigt om een ​​resultaat van 81 te krijgen. De rest van de code wordt alleen uitgevoerd als links, rechts en operator zijn ingevoerd, en begint met kopiëren de reeksen getallen in onze iLeft en iRight Double-getypte variabelen, die de werkelijke. kunnen doen berekeningen. Het Select Case-statement stelt ons in staat om verschillende code uit te voeren, afhankelijk van welke operator is ingevoerd, en voert de eigenlijke berekening uit, waarbij het resultaat in iResult wordt geplaatst. Ten slotte werken we het tekstvak bij met het resultaat, kopiëren we het resultaat naar sLeft, resetten we sRight en stellen we bLeft = True in. Met deze laatste regels kunnen we het resultaat van de berekening nemen en gebruiken om een ​​andere berekening uit te voeren.

Behandel de laatste drie bedieningsknoppen: sqrt, % en 1/x. Voor de Click-gebeurtenis van de vierkantswortelknop ziet uw code er als volgt uit:

De eerste 11 regels code zorgen ervoor dat als we geen waarde hebben ingevoerd voor beide zijden van de vergelijking, we vervangen nul in plaats van te proberen een lege string naar iLeft of iRight te kopiëren, wat een. zal genereren fout. De middelste lijnen voeren de vierkantswortelfunctie uit op het huidige deel van de berekening, links of rechts. Ten slotte keren we de controles om die we in het begin hebben gedaan, zodat een nul wordt gekopieerd als een lege string terug naar sLeft en sRight.

Voor de procentknop is de code vergelijkbaar, met één uitzondering: de procentbewerking kan alleen worden uitgevoerd als zowel de linker- als de rechterkant zijn ingevoerd.

Ten slotte, de 1/x, of fractie, Click-gebeurtenis, die erg lijkt op de bovenstaande code:

Voeg code toe om de C- en CE-knoppen te bedienen. C wist alle invoer naar de rekenmachine, terwijl CE alleen het nummer wist dat momenteel wordt ingevoerd.

Voer uw rekenprogramma uit en voer elke gewenste berekening uit. Deze rekenmachine kan eenvoudig worden uitgebreid voor meer bewerkingen, complexere berekeningen of zelfs een wetenschappelijke rekenmachine met wat extra werk.

Tip

Als u fouten tegenkomt, controleert u uw code regel voor regel, waarbij u zich concentreert op de regels die VB heeft genoemd als fouten, en vergelijk deze met de bovenstaande code. De code in dit artikel is volledig getest om foutloos te zijn, dus het getrouw kopiëren ervan zal resulteren in een functioneel programma. Als u een eerdere versie van Visual Basic gebruikt, kunt u problemen tegenkomen waarbij er wijzigingen zijn aangebracht in de taal in verschillende versies. Eerdere versies van VB gebruikten bijvoorbeeld Math. Sqrt() in plaats van Math. Sqr() om een ​​vierkantswortelbewerking uit te voeren. Controleer de referenties voor uw specifieke versie om te zien of er wijzigingen nodig zijn.