Kako napraviti kalkulator s Visual Basicom
Microsoft Visual Basic je programski jezik temeljen na jeziku BASIC, izvorno razvijen kako bi programiranje učinio lakšim za učenje. Visual Basic preuzima poznate naredbe BASIC-a i dodaje objektno orijentirane alate i sučelja za dizajniranje WYSIWYG Windows aplikacija i web kontrola, među mnogim drugim poboljšanjima. Jedan relativno jednostavan projekt učenja za Visual Basic je stvaranje Windows kalkulatora.
1. korak
Otvorite Visual Basic 6 i odaberite "Standard EXE" iz izbornika novog projekta. Na ekranu ćete vidjeti prazan obrazac.
2. korak
Preimenujte svoj projekt i obrazac klikom na "Projekt1" na desnoj strani ekrana, u popisu projekata i unosom novog naziva u redak "Naziv" okvira Svojstva, koji bi se trebao pojaviti ispod popisa projekata do zadano. Pritisnite "Enter" za prihvaćanje novog naziva. Učinite isto za svoj obrazac (predloženi naziv obrasca je "CalculatorUI"), pazeći da unesete sličan naziv i u svojstvo "Caption", što će promijeniti tekst na gornjoj traci obrasca. Spremite projekt u novu mapu na svom računalu.
3. korak
Dodajte gumbe i tekstni okvir u obrazac. Najprije dodajte tekstualni okvir u kojem će se pojavljivati brojevi uneseni u kalkulator, kao i rezultati izračuna. Učinite to odabirom gumba TextBox na alatnoj traci na lijevoj strani zaslona, a zatim mišem povucite veličinu i mjesto koje želite za TextBox. Nakon što postavite TextBox, možete promijeniti veličinu i lokaciju povlačenjem na drugu lokaciju obrasca ili povlačenjem ručica (kvadratića) duž ruba TextBoxa. Obavezno promijenite sljedeće retke u prozoru Svojstva, s odabranim TextBoxom:"(Naziv)" =tbRezultat, "Poravnanje" =1- desno poravnanje, "Format podataka" =(kliknite na gumb "..." za odaberite) Broj, "Zaključano" =Istina i "Tekst" =0.
4. korak
Odaberite ikonu CommandButton na alatnoj traci i stvorite prvi gumb na isti način na koji ste stvorili TextBox za dodavanje gumba. Za referencu, koristite Windows kalkulator u standardnom prikazu (Programi> Pribor> Kalkulator) kao osnovu za izgled vašeg kalkulatora, izostavljajući gumbe "MC", "MR", "MS" i "M+". Na svakom gumbu promijenite sljedeća svojstva (koristeći gumb "+" kao primjer):"(Naziv)" =btnPlus, "Natpis" =+. Učinite isto za ostale gumbe kalkulatora, a zatim spremite svoj rad. Vaš bi obrazac sada trebao sličiti ovdje prikazanom primjeru.
Korak 5
Dodajte kôd. Imajte na umu da ako vaši gumbi i tekstni okvir nisu nazvani kao što očekuje ovdje naveden kod, morat ćete promijeniti nazive da odgovaraju vašim gumbima i tekstnom okviru ili promijeniti svoje gumbe i tekstni okvir da odgovaraju ovom kodu. Prvo moramo stvoriti nekoliko varijabli za obradu unosa kalkulatora:
Dim sLeft kao niz, sRight kao niz, sOperator kao niz Dim iLeft kao Double, iRight kao Double, iResult kao Double Dim bLeft kao Boolean
Svaki izračun sastoji se od četiri dijela:broja lijevo od operatora (sLeft, iLeft), operatora (sOperator), broja desno od operatora (sRight, iRight) i rezultata (iResult). Kako bismo pratili upisuje li korisnik lijevi ili desni broj, moramo stvoriti Booleovu varijablu, bLeft. Ako je bLeft istinito, upisuje se lijeva strana izračuna; ako je bLeft false, unosi se desna strana.
Korak 6
Inicijalizirajte varijablu bLeft. To činimo stvaranjem potprograma Form_Load, koji možete upisati kao što je ovdje navedeno ili ga automatski stvoriti dvostrukim klikom na bilo koji dio obrasca koji nije pokriven gumbom ili tekstualnim okvirom. Unutar funkcije moramo postaviti bLeft na True jer će prvi uneseni broj biti lijevi dio:
Private Sub Form_Load() bLeft =True End Sub
7. korak
Napravite potprogram koji će upravljati klikom na bilo koji od brojčanih gumba. Ovo stvaramo kao potprogram jer koristimo identičan kod za svaki gumb, a korištenje potprograma znači da ne moramo ponavljati isti kod deset puta. Unesite sljedeće ispod retka End Sub potprograma Form_Load:
Private Sub AddNumber(sNumber As String) If bLeft Then sLeft =sLeft + sNumber tbResult.Text =sLeft Else sRight =sRight + sNumber tbResult.Text =sRight End If End Sub
Kao što vidite, ova funkcija uzima parametar niza, sBroj, koji će sadržavati broj na koji je korisnik kliknuo. Ako je bLeft istinito, ovaj se broj dodaje nizu koji predstavlja broj koji se unosi, sLeft, a tekstualni okvir, tbResult, ažurira se za prikaz novog broja. Ako je bLeft false, ista se operacija izvodi korištenjem sRight umjesto toga.
Na kraju, stvorite funkciju događaja Click za svaki broj koji poziva našu potprogram AddNumber. To možete jednostavno učiniti dvostrukim pritiskom na svaki gumb s brojem, što će za vas stvoriti strukturu potprograma. Zatim dodajte poziv u AddNumber, zamjenjujući broj u navodnicima s brojem povezanim s gumbom. Za gumb nula vaš će kôd izgledati ovako:
Private Sub btn0_Click() AddNumber ("0") End Sub
Isto tako, za jedan gumb, vaš će kôd izgledati ovako:
Private Sub btn1_Click() AddNumber ("1") End Sub
Korak 8
Rukujte operatorima:plus, minus, puta i dijeljenje. Učinit ćemo ovo kao zadnji korak, stvarajući potprogram koji se poziva u događajima Click za gumbe operatora. Potprogram će izgledati ovako:
Private Sub AddOperator(sNewOperator As String) If bLeft Then sOperator =sNewOperator bLeft =False Else btnEquals_Click sOperator =sNewOperator sRight ="" bLeft =False End If End Sub
Ako je bLeft true, što znači da je korisnik upravo unio lijevi dio izračuna, ovaj potprogram postavlja varijablu sOperator koju smo stvorili u koraku 5 da bude jednaka unesenom operatoru, koji se prosljeđuje AddOperatoru kao niz sNewOperator. Drugi korak je postaviti bLeft na False, jer unos operatora znači da je korisnik završio s unosom lijeve strane jednadžbe. Kako bismo obradili unose koji spajaju više operatora zajedno, kao što je 9 * 3 * 2 * 6, također moramo provjeriti je li bLeft lažan, što znači da je korisnik unio operator gdje smo očekivali jednako. Prvo pozivamo događaj Click za gumb jednako (opisano u sljedećem koraku), koji izvodi izračun i postavlja tbResult na rezultat onoga što je već uneseno. Zatim brišemo sRight tako da korisnik može unijeti sljedeći broj, a bLeft postavljamo na False tako da program zna da sljedeću unosimo desnu stranu izračuna.
Na kraju dodajte poziv AddOperator događaju Click svakog gumba operatora, koristeći istu metodu koju smo koristili u koraku 7 za stvaranje događaja Click za brojčane gumbe. Vaš kod za gumb plus izgledat će ovako:
Private Sub btnPlus_Click() AddOperator ("+") End Sub
Isto tako, kôd za gumb minus izgledat će ovako:
Private Sub btnMinus_Click() AddOperator ("-") End Sub
Korak 9
Napravite događaj Click za gumb jednako, koji je najsloženiji kod u ovom programu. Stvorite strukturu potprograma kao što ste to učinili za druge gumbe, dvostrukim pritiskom na gumb jednako na vašem obrascu. Vaša podrutina će izgledati ovako kada unesete kod:
Private Sub btnEquals_Click() If sLeft <> "" And sRight ="" And sOperator <> "" Then sRight =sLeft End If
If sLeft &amp;lt;&amp;gt; "" And sRight &amp;lt;&amp;gt; "" And sOperator &amp;lt;&amp;gt; "" Then iLeft = sLeft iRight = sRight Select Case sOperator Case "+" iResult = iLeft + iRight Case "-" iResult = iLeft - iRight Case "/" iResult = iLeft / iRight Case "*" iResult = iLeft * iRight End Select tbResult.Text = iResult sLeft = iResult sRight = "" bLeft = True End If
Kraj pod
Prva tri retka koda provjeravaju jesu li obje strane izračuna unesene zajedno s operatorom. Ako su uneseni samo lijeva strana i operator, vrijednost lijeve strane kopira se na desnu, tako da možemo oponašati standardno ponašanje kalkulatora za rukovanje unosom kao što je 9 * =, koji množi 9 sam sa sobom kako bi dobio rezultat 81. Ostatak koda pokrenut će se samo ako se unesu lijevo, desno i operator, a počinje kopiranjem nizova brojeva u naše dvostruko tipizirane varijable iLeft i iRight, koje mogu izvršiti stvarne izračune. Naredba Select Case omogućuje nam pokretanje različitog koda ovisno o tome koji je operator unesen i izvodi stvarni izračun, stavljajući rezultat u iResult. Na kraju ažuriramo tekstni okvir s rezultatom, kopiramo rezultat u sLeft, poništavamo sRight i postavljamo bLeft =True. Ovi posljednji redovi omogućuju nam da uzmemo rezultat izračuna i upotrijebimo ga za izvođenje drugog izračuna.
Korak 10
Upravljajte posljednja tri radna gumba:sqrt, % i 1/x. Za događaj Click gumba kvadratnog korijena, vaš će kôd izgledati ovako:
Private Sub btnSqrt_Click() If sLeft <> "" Then iLeft =sLeft Else iLeft =0 End If
If sRight &amp;lt;&amp;gt; "" Then iRight = sRight Else iRight = 0 End If If bLeft Then iLeft = Math.Sqr(iLeft) tbResult.Text = iLeft Else iRight = Math.Sqr(iLeft) tbResult.Text = iRight End If If iLeft &amp;lt;&amp;gt; 0 Then sLeft = iLeft Else sLeft = "" End If If iRight &amp;lt;&amp;gt; 0 Then sRight = iRight Else sRight = "" End If
Kraj pod
Prvih 11 redaka koda osigurava da, ako nemamo unesenu vrijednost ni za jednu stranu jednadžbe, zamijenimo nulu umjesto da pokušavamo kopirati prazan niz u iLeft ili iRight, što će generirati pogrešku. Srednje linije izvode funkciju kvadratnog korijena na trenutnom dijelu izračuna, bilo lijevo ili desno. Na kraju, poništavamo provjere koje smo napravili na početku tako da se nula kopira kao prazan niz natrag u sLeft i sRight.
Za gumb za postotak kod je sličan, s jednom iznimkom:operacija postotka može se izvesti samo ako su unesene i lijeva i desna strana.
Private Sub btnPercent_Click() If Not bLeft Then If sRight <> "" Then iRight =sRight Else iRight =0 End If
iRight = iRight * (iLeft / 100) tbResult.Text = iRight If iRight &amp;lt;&amp;gt; 0 Then sRight = iRight Else sRight = "" End If End If
Kraj pod
Na kraju, događaj klika 1/x ili razlomak, koji je vrlo sličan gornjem kodu:
Private Sub btnFraction_Click() If sLeft <> "" Then iLeft =sLeft Else iLeft =0 End If
If sRight &amp;lt;&amp;gt; "" Then iRight = sRight Else iRight = 0 End If If bLeft Then iLeft = 1 / iLeft tbResult.Text = iLeft Else iRight = 1 / iRight tbResult.Text = iRight End If If iLeft &amp;lt;&amp;gt; 0 Then sLeft = iLeft Else sLeft = "" End If If iRight &amp;lt;&amp;gt; 0 Then sRight = iRight Else sRight = "" End If
Kraj pod
Korak 11
Dodajte kod za upravljanje tipkama C i CE. C briše sav unos u kalkulator, dok CE briše samo broj koji se trenutno unosi.
Private Sub btnC_Click() sLeft ="" sRight ="" sOperator ="" tbResult.Text ="0" bLeft =True End Sub
Private Sub btnCE_Click() If bLeft Then sLeft ="" Else sRight ="" End If tbResult.Text ="0" End Sub
Korak 12
Pokrenite svoj program kalkulatora i napravite bilo koji izračun koji želite. Ovaj se kalkulator može jednostavno proširiti kako bi mogao raditi s više operacija, složenijim izračunima ili čak postati znanstveni kalkulator uz malo dodatnog rada.
Savjet
Ako naiđete na pogreške, provjerite svoj kod red po red, fokusirajući se na retke za koje je VB prozvao da sadrže pogreške, i usporedite ga s kodom iznad. Kôd sadržan u ovom članku u potpunosti je testiran da ne sadrži pogreške, tako da će njegovo vjerno kopiranje rezultirati funkcionalnim programom. Ako koristite prethodnu verziju Visual Basica, možete naići na neke probleme u kojima su napravljene promjene u jeziku u različitim verzijama. Prethodne verzije VB-a, na primjer, koristile su Math.Sqrt() umjesto Math.Sqr() za izvođenje operacije vađenja kvadratnog korijena. Provjerite Reference za svoju specifičnu verziju da vidite jesu li potrebne promjene.