A good way to explore the arithmetic operators is to write a simple program that lets you enter values for the operands and operators and see what the result is. To create this program, you need to start a new project and call it MathOperators . Then, add controls to the form as shown in Figure 9.1. Figure 9.1. Placement of controls for the arithmetic operators program.
The layout of the objects on the form is similar to that of a Visual Basic .NET assignment statement. As you learned earlier, a simple assignment statement in Visual Basic .NET has this form: ArithmeticResult = Operand1 Operator Operand2 In Figure 9.1, the objects are arranged such that the statement looks like this: txtResult = txtOperand1 Operator txtOperand2 The user supplies the two operands by typing them into the appropriate text boxes and clicking the operator he or she wants to use. The user then clicks the Calculate button, and the operation is performed. The complete code for this program is presented in Listing 9.1. Listing 9.1 The Arithmetic Operators ProgramPublic Class frmArithmeticOperators Inherits System.Windows.Forms.Form Dim WhichOne As Integer Windows Form Designer generated code Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load RadioButton1.Checked = True End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged WhichOne = 1 End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged WhichOne = 2 End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged WhichOne = 3 End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged WhichOne = 4 End Sub Private Sub RadioButton5_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton5.CheckedChanged WhichOne = 5 End Sub Private Sub RadioButton6_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton6.CheckedChanged WhichOne = 6 End Sub Private Sub RadioButton7_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton7.CheckedChanged WhichOne = 7 End Sub Private Sub RadioButton8_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton8.CheckedChanged txtOperand2.Text = "" WhichOne = 8 End Sub Private Sub RadioButton9_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton9.CheckedChanged txtOperand2.Text = "" WhichOne = 9 End Sub Private Sub btnCalc_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles btnCalc.Click Select Case WhichOne Case 1 txtResult.Text = CStr(CDbl(txtOperand1.Text) + _ CDbl(txtOperand2.Text)) Case 2 txtResult.Text = CStr(CDbl(txtOperand1.Text) - _ CDbl(txtOperand2.Text)) Case 3 txtResult.Text = CStr(CDbl(txtOperand1.Text) * _ CDbl(txtOperand2.Text)) Case 4 txtResult.Text = CStr(CDbl(txtOperand1.Text) / _ CDbl(txtOperand2.Text)) Case 5 txtResult.Text = CStr(CInt(txtOperand1.Text) \ _ CInt(txtOperand2.Text)) Case 6 txtResult.Text = CStr(CDbl(txtOperand1.Text) ^ _ CDbl(txtOperand2.Text)) Case 7 txtResult.Text = CStr(CInt(txtOperand1.Text) Mod _ CInt(txtOperand2.Text)) Case 8 txtResult.Text = CStr(+(CDbl(txtOperand1.Text))) Case 9 txtResult.Text = CStr(-(CDbl(txtOperand1.Text))) End Select WhichOne = 1 End Sub Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles btnExit.Click Me.Dispose() End Sub End Class There appears to be a lot of code in Listing 9.1, but much of it is duplicate code. Note at the top of the program the integer variable WhichOne . Because it is defined outside any procedure, WhichOne has module scope and is available to every procedure. Each of the operators is associated with a radio button. Because all the operator radio buttons are grouped within a group box, clicking on one radio button automatically deselects whatever button was previously clicked. There are nine radio buttons , and their code is contextually identical. Consider the code for the first radio button: Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged WhichOne = 1 End Sub In this code, you can see that when RadioButton1 is clicked, WhichOne is assigned the value 1 . If you look at the code for all the other eight buttons, you see that the only change in most of them is the value that is assigned to WhichOne . Note that radio buttons 8 and 9 set the text box for the second operand to be empty. You have them do this because these two operators are unary operators and do not require a second operand. All the work is done in the Select Case statement in the btnCalc object's Click() event. You will not learn about the Select Case statement until Chapter 11, "Making Decisions," but you should get an idea of what it does from the code in Listing 9.1. Given a value for WhichOne , the Select Case statement executes the code for the case that corresponds to WhichOne . You can also see in Listing 9.1 that the first radio button is selected by default when the program starts. If there is code that you want to have executed the moment the program begins execution, you can place it in the Form1_Load() event. This statement: RadioButton1.Checked = True simply sets the first radio button in the operator list (that is, the addition operator) to True . That's all there is to it. A sample run of the program is shown in Figure 9.2. Figure 9.2. A sample run of the arithmetic operators program, showing the result of a modulus operation.
The sample run shows that 23 Mod 7 is 2 . Recall that the modulus operator returns the remainder of division; you can see the result is correct. You should experiment with the program, especially the modulus and integer division operators, to make sure you understand how they work. |