Interactive implementation with VB6 and VB.NET code examples
This scientific calculator resembles a typical scientific calculator, albeit a simpler version. We've included trigonometric functions (Sin, Cos, Tan) and logarithmic functions (Log, Ln) to demonstrate essential mathematical operations in programming.
The reason for creating a simpler version of the calculator is to help users learn programming concepts gradually without overwhelming complexity. This approach is especially valuable for those learning to program in Visual Basic.
Log computes the base-10 logarithm, while Ln computes the natural logarithm (base e).
Below you'll find the implementation code for the scientific calculator in both VB6 and VB.NET.
Here's how to implement the scientific calculator in Visual Basic 6:
Private displayValue As Double ' Convert degrees to radians Private Function ToRadians(degrees As Double) As Double ToRadians = degrees * (4 * Atn(1)) / 180 End Function ' Sine function Private Sub CmdSin_Click() Dim sinValue As Double sinValue = Round(Sin(ToRadians(displayValue)), 4) panel.Caption = sinValue End Sub ' Cosine function Private Sub CmdCos_Click() Dim cosValue As Double cosValue = Round(Cos(ToRadians(displayValue)), 4) panel.Caption = cosValue End Sub ' Tangent function Private Sub CmdTan_Click() Dim tanValue As Double tanValue = Round(Tan(ToRadians(displayValue)), 4) panel.Caption = tanValue End Sub ' Natural logarithm Private Sub CmdLn_Click() panel.Caption = Log(displayValue) End Sub ' Base-10 logarithm Private Sub CmdLog_Click() panel.Caption = Log(displayValue) / Log(10) End Sub ' Clear display Private Sub CmdClear_Click() displayValue = 0 panel.Caption = "0" End Sub ' Append digit to display Private Sub AppendDigit(digit As String) If panel.Caption = "0" Then panel.Caption = digit Else panel.Caption = panel.Caption & digit End If displayValue = Val(panel.Caption) End Sub
Here's the modern implementation in VB.NET with enhanced features:
Public Class ScientificCalculator Private currentValue As Double = 0 Private currentInput As String = "0" Private lastOperation As String = "" Private memory As Double = 0 ' Convert degrees to radians Private Function ToRadians(degrees As Double) As Double Return degrees * (Math.PI / 180) End Function ' Update display Private Sub UpdateDisplay() txtDisplay.Text = currentInput End Sub ' Digit button click handler Private Sub Digit_Click(sender As Object, e As EventArgs) Handles _ btn0.Click, btn1.Click, btn2.Click, btn3.Click, btn4.Click, _ btn5.Click, btn6.Click, btn7.Click, btn8.Click, btn9.Click Dim btn = DirectCast(sender, Button) If currentInput = "0" Then currentInput = btn.Text Else currentInput &= btn.Text End If UpdateDisplay() End Sub ' Scientific functions Private Sub ScientificFunction(sender As Object, e As EventArgs) Handles _ btnSin.Click, btnCos.Click, btnTan.Click, btnLog.Click, btnLn.Click, btnPi.Click Dim btn = DirectCast(sender, Button) Dim value As Double = If(currentInput = "", 0, Double.Parse(currentInput)) Dim result As Double = 0 Try Select Case btn.Name Case "btnSin" result = Math.Sin(ToRadians(value)) Case "btnCos" result = Math.Cos(ToRadians(value)) Case "btnTan" result = Math.Tan(ToRadians(value)) Case "btnLog" result = Math.Log10(value) Case "btnLn" result = Math.Log(value) Case "btnPi" result = Math.PI End Select currentInput = result.ToString() UpdateDisplay() Catch ex As Exception currentInput = "Error" UpdateDisplay() End Try End Sub ' Clear button Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click currentInput = "0" currentValue = 0 lastOperation = "" UpdateDisplay() End Sub ' Equals button Private Sub btnEquals_Click(sender As Object, e As EventArgs) Handles btnEquals.Click If Not String.IsNullOrEmpty(lastOperation) Then Dim secondValue As Double = Double.Parse(currentInput) Try Select Case lastOperation Case "+" currentValue += secondValue Case "-" currentValue -= secondValue Case "×" currentValue *= secondValue Case "÷" If secondValue <> 0 Then currentValue /= secondValue Else Throw New DivideByZeroException() End If End Select currentInput = currentValue.ToString() UpdateDisplay() Catch ex As Exception currentInput = "Error" UpdateDisplay() Finally lastOperation = "" End Try End If End Sub
Unlock the power of Visual Basic with this comprehensive, hands-on guide that bridges the gap between classic VB6 and modern VB.NET programming. Whether you're maintaining legacy systems or developing cutting-edge Windows applications, this book gives you the knowledge, tools, and inspiration to succeed.
Visual Basic Programming with Code Examples offers a unique dual-format approach, showcasing sample codes in both Visual Basic 6 (VB6) and VB.NET. This side-by-side presentation helps you understand the evolution of Visual Basic and empowers you to work confidently across both environments.