Code that uses comments
'* ======
'* Date: 11/30/01
'* Author: Anne Prince
'* Purpose: Calculate invoice total
'* ======
'*declaration statements
Dim decOrderTotal As Decimal
Dim decDiscountPct As Decimal
Dim decDiscountAmount As Decimal
Dim decInvoiceTotal As Decimal
‘*get input Order Total
decOrderTotal = txtOrderTotal.Text
'*calculate the proper discount
If decOrderTotal >= 100 Then
decDiscountPct = 0.25
Else
decDiscountPct = 0
End If
Typical variable declarations
Dim strErrorMessage As String
Dim intIndex As Integer = 1
Dim lngMonth As Long, decRate As Decimal
Dim intStatus, intRunningValue As Integer
Dim blnAddMode As Boolean = True
Typical assignment statements
iMonth = 1
iMonth = iMonth + 1
dDiscountAmount = dOrderTotal * .2
dInvoicetotal = dOrderTotal + dDiscountAmount
dChangePercent = (dThisYTDSales – dLastYTDSales) / dLastYTDSales * 100
dArea = (dRadius ^ 2) * 3.1416
Examples of arithmetic expressions
iVarX = 14 'assume for all examples
iVarY = 8 'assume for all examples
dVarA = 8.5 'assume for all examples
dVarB = 3.4 'assume for all examples
iResult = iVarX \ iVarY 'result = 1
iResult = iVarX mod iVarY 'result = 6
dResult = dVarA / dVarB 'result = 2.5
dResult = dVarA mod dVarB 'result = 1.7
iResult = -iVarY 'result = -8
iResult = -iVarY + iVarX 'result = 6
Conditional expressions
sSwitch > "Yes"
bNewCustomer = True
bNewCustomer
dThisYTD > dLastYTD
iValue = 1
iValue Not > 99
dMonthlyInvestment > 0 And fInterestRate > 0 And iMonths > 0
(dThisYTD > dLastYTD) Or (dLastYTD <= 0 And dThisYTD >= 1000)
Statements that assign True/False values
bDiscountRate1 = dOrderTotal >= 200
bSalesIncrease = dThisYTD > dLastYTD
How to concatenate character strings
sFirstName = "Bob"
sLastName = "Smith"
sFullName = sFirstName & " " & sLastName
How to append one string to another string
sFirstName = "Bob"
sLastName = "Smith"
sName = sFirstName & " "
sName = sName & sLastName
How to append with the &= operator
sFirstName = "Bob"
sLastName = "Smith"
sName = sFirstName & " "
sName &= sLastName
Sample code using a Sub Procedure (no argument/parameter)
Private Sub btnGo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnGo.Click
' This procedure calls the DisplayMessage procedure.
lstOutput.Items.Add("Hello from btnGo_Click procedure.")
lstOutput.Items.Add("Calling the DisplayMessage " & "procedure.")
DisplayMessage() ‘calls Display Message
lstOutput.Items.Add("Now I am back in the btnGo_Click procedure.")
End Sub
Sub DisplayMessage()
'A Sub procedure that displays a message.
lstOutput.Items.Add("")
lstOutput.Items.Add("Hello from DisplayMessage.")
lstOutput.Items.Add("")
End Sub
Sub Procedure Call and Sub Procedure Code (1 argument/parameter)
DisplayValue(5) ‘calls DisplayValue procedure
Sub DisplayValue(ByVal number As Integer)
' This procedure displays a value in a message box.
MessageBox.Show(number.ToString)
End Sub
Sub Procedure Call and Sub Procedure Code (multi argument/parameter)
ShowSum(5, 10) ‘calls ShowSum procedure
Sub ShowSum(ByVal num1 As Integer, ByVal num2 As Integer)
' This procedure accepts two arguments, and prints their sum on the form.
Dim sum As Integer
sum = num1 + num2
MessageBox.Show("The sum is " & sum.ToString)
End Sub
Numeric Funtion Call and Function Code
total = Sum(value1, value2)
Function Sum(ByVal num1 As Single, ByVal num2 As Single) As Single
Dim result As Single
result = num1 + num2
Return result
End Function
String Funtion Call and Function Code
MsgBox(“Hello “ & FullName(strFName, strLName)
Function FullName(ByVal first As String, ByVal last As String) As String
Dim name As String
name = last & ", " & first
Return name
End Function
Boolean Funtion Call and Function Code
If IsValid(intInput) = False Then
MsgBox(“Invalid Input”)
EndIf
Function IsValid(num As Integer) As Boolean
Dim status As Boolean
If num >= 0 And num <= 100 Then
status = True
Else
status = False
End If
Return status
End Function
An Event procedure that calls Sub and Function procedures
Private Sub btnCalculate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCalculate.Click
Dim iMonths As Integer
Dim dInterestRate, dMonthlyInvestment As Decimal
Dim bValidNumericEntries As Boolean
Me.ValidateNumericEntries(txtMonthlyInvestment.Text, txtYears.Text, _
txtInterestRate.Text, bValidNumericEntries)
If bValidNumericEntries Then
iMonths = txtYears.Text * 12
dInterestRate = txtInterestRate.Text / 12 / 100
dMonthlyInvestment = txtMonthlyInvestment.Text
lblFutureValue.Text = FormatCurrency(FutureValue(iMonths, _
dInterestRate, dMonthlyInvestment))
txtMonthlyInvestment.Focus()
Else
MessageBox.Show("Invalid data. Please check all entries.", "Error")
txtMonthlyInvestment.Focus()
End If
End Sub
Private Sub ValidateNumericEntries(ByVal Value1 As String, _
ByVal Value2 As String, ByVal Value3 As String, _
ByRef ValidEntries As Boolean)
If IsNumeric(Value1) And IsNumeric(Value2) And IsNumeric(Value3) Then
If Value1 > 0 And Value2 > 0 And Value3 > 0 Then
ValidEntries = True
End If
End If
End Sub
Private Function FutureValue(ByVal Months As Integer, _
ByVal InterestRate As Decimal, _
ByVal MonthlyInvestment As Decimal) As Decimal
Dim iIndex As Integer, dFutureValue As Decimal
For iIndex = 1 To Months
dFutureValue = (dFutureValue + MonthlyInvestment) _
* (1 + InterestRate)
Next iIndex
Return dFutureValue
End Function
Statements that use intrinsic functions
dValue = Val(sValue)
Msgbox(“Your number is: “ & Int(10 * Rnd) + 1 )
iNameLength = Len(sFirstName) + Len(sLastName)
A statement that uses the IsNumeric function
If IsNumeric(txtOrderTotal.Text) Then
dOrderTotal = txtOrderTotal.Text
Else
MessageBox.Show("You must enter a numeric value.", "Entry error")
End If
Statements that use the formatting functions
lblDiscountAmount.Text = FormatNumber(dDiscountAmount, 2)
lblInvoiceTotal.Text = FormatNumber(dInvoiceTotal)
lblInvoiceTotal.Text = FormatCurrency(dInvoiceTotal)
lblDiscountPct.Text = FormatPercent(dDiscountPct)
An If…Then statement without an Else clause
If txtMonthlyInvestment.Text <= 0 Then
bValidData = False
End If
A simple If…Then…Else statement
If dOrderTotal >= 100 Then
dDiscountPct = 0.2
Else
dDiscountPct = 0
End If
An If statement with ElseIf clauses
If iQuantity = 1 Or iQuantity = 2 Then
dDiscount = 0
ElseIf iQuantity >= 3 And iQuantity <= 9 Then
dDiscount = 0.1
ElseIf iQuantity >= 10 And iQuantity <=24 Then
dDiscount = 0.2
ElseIf iQuantity >= 25 Then
dDiscount = 0.3
Else
dDiscount = 0
End If
Nested If statements
If sType = "Retail" Then
If iQuantity <= 2 Then
dDiscount = 0
ElseIf iQuantity <= 9 Then
dDiscount = .1
ElseIf iQuantity <= 24 Then
dDiscount = .2
ElseIf iQuantity >= 25 Then
dDDiscount = .3
End If
Else '*(sType > "Retail")
dDiscount = .4
End If
A Select Case statement
Select Case iQuantity
Case 1, 2
dDiscount = 0
Case 3 To 9
dDiscount = 0.1
Case 10 To 24
dDiscount = 0.2
Case Is >= 25
dDiscount = 0.3
Case Else '(< 1)
dDiscount = 0
End Select
Invoice Total Application
Form: Control Names:
Object type Name
TextBox txtOrderTotal
Label lblDiscountAmount
Label lblInvoiceTotal
The code for the Click event of the Calculate button:
Private Sub btnCalculate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCalculate.Click
Dim dOrderTotal As Decimal
Dim dDiscountPct As Decimal
Dim dDiscountAmount As Decimal
Dim dInvoiceTotal As Decimal
dOrderTotal = txtOrderTotal.Text
If dOrderTotal >= 100 Then
dDiscountPct = .2
Else
dDiscountPct = 0
End If
dDiscountAmount = dOrderTotal * dDiscountPct
dInvoiceTotal = dOrderTotal - dDiscountAmount
lblDiscountAmount.Text = dDiscountAmount
lblInvoiceTotal.Text = dInvoiceTotal
txtOrderTotal.Focus
End Sub
Enhanced code for the Invoice Total application
Private Sub btnCalculate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs)Handles btnCalculate.Click
Const dMinOrderTotal As Decimal = 10
Const dMaxOrderTotal As Decimal = 10000
Dim dOrderTotal As Decimal
Dim dDiscountPct As Decimal
Dim dDiscountAmount As Decimal
Dim dInvoiceTotal As Decimal
If IsNumeric(txtOrderTotal.Text) Then
If txtOrderTotal.Text > dMinOrderTotal And _
txtOrderTotal.Text < dMaxOrderTotal Then
dOrderTotal = txtOrderTotal.Text
dOrderTotal = Math.Round(dOrderTotal, 2)
If dOrderTotal >= 500 Then
dDiscountPct = 0.2
ElseIf dOrderTotal >= 250 Then
dDiscountPct = 0.15
ElseIf dOrderTotal >= 100 Then
dDiscountPct = 0.1
Else ' < 100
dDiscountPct = 0
End If
dDiscountAmount = dOrderTotal * dDiscountPct
dInvoiceTotal = dOrderTotal - dDiscountAmount
lblDiscountAmount.Text = FormatNumber(dDiscountAmount)
lblInvoiceTotal.Text = FormatNumber(dInvoiceTotal)
Else ' Out of range
MessageBox.Show("Order total must be between " & _
dMinOrderTotal & " and " & _
dMaxOrderTotal & ".", "Entry error")
End If
Else ' Not IsNumeric
MessageBox.Show("You must enter a numeric value.", "Entry error")
End If
txtOrderTotal.Focus()
End Sub
A loop that displays the numbers 0 through 4
Dim iIndex As Integer
For iIndex = 0 To 4
MessageBox.Show(iIndex)
Next
A loop that adds the numbers 2, 4, 6, 8, 10, and 12
Dim iSum As Integer
Dim iIndex As Integer
For iIndex = 2 To 12 Step 2
iSum += iIndex
Next iIndex
A loop that adds the squares of 25, 15, 5, -5, -15
Dim iSquared As Integer
Dim iSumofSquares As Integer
Dim iIndex As Integer
For iIndex = 25 To -15 Step –10
iSquared = iIndex ^ 2
iSumofSquares += iSquared
Next iIndex
A loop that calculates a future value
Dim dMonthlyInvestment As Decimal
Dim dMonthlyInterestRate As Decimal
Dim iMonths As Integer
Dim dFutureValue As Decimal
Dim iIndex As Integer
For iIndex = 1 To iMonths
dFutureValue = (dFutureValue + dMonthlyInvestment)_
* (1 + dMonthlyInterestRate)
Next iIndex
A Do While loop (pretest form)
Dim dMonthlyInvestment As Decimal
Dim dMonthlyInterestRate As Decimal
Dim iMonths As Integer
Dim dFutureValue As Decimal
Dim iIndex As Integer = 1
Do While iIndex <= iMonths
dFutureValue = (dFutureValue + dMonthlyInvestment) _
* (1 + dMonthlyInterestRate)
iIndex += 1
Loop
A Do Until loop (posttest form)
Dim dMonthlyInvestment As Decimal
Dim dMonthlyInterestRate As Decimal
Dim iMonths As Integer
Dim dFutureValue As Decimal
Dim iIndex As Integer = 1
Do
dFutureValue = (dFutureValue + dMonthlyInvestment) _
* (1 + dMonthlyInterestRate)
iIndex += 1
Loop Untl iIndex > iMonths
The Future Value application
Form: Control Names:
Object type Name
Label 5 Name lblFutureValue
Text1 txtMonthlyInvestment
Text2 txtInterestRate
Text3 txtYears
Button1 btnCalculate
Button2 btnExit
TextBox txtOrderTotal
Label lblDiscountAmount
Label lblInvoiceTotal
Code for the Future Value application:
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub btnCalculate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs)Handles btnCalculate.Click
Dim iMonths As Integer
Dim dInterestRate As Decimal
Dim dFutureValue As Decimal
Dim iIndex As Integer
iMonths = txtYears.Text * 12
dInterestRate = txtInterestRate.Text / 12 / 100
For iIndex = 1 To iMonths
dFutureValue = _
(dFutureValue + txtMonthlyInvestment.Text) _
* (1 + dInterestRate)
Next iIndex
lblFutureValue.Text = FormatCurrency(dFutureValue)
txtMonthlyInvestment.Focus()
End Sub
Private Sub btnExit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnExit.Click
End
End Sub
End Class