Visual Basic Language Companion PDF
Visual Basic Language Companion PDF
Introduction 2
Chapter 1 Introduction to Visual Basic 3
Chapter 2 Input, Processing, and Output 9
Chapter 3 Procedures 25
Chapter 4 Decision Structures and Boolean Logic 33
Chapter 5 Repetition Structures 48
Chapter 6 Functions 56
Chapter 7 Input Validation 69
Chapter 8 Arrays 71
Chapter 9 Sorting and Searching Arrays 83
Chapter 10 Files 90
Chapter 11 Menu-Driven Programs 99
Chapter 12 Text Processing 102
Chapter 13 Recursion 108
Chapter 14 Object-Oriented Programming 110
Chapter 15 GUI Applications and Event-Driven Programming 122
Page 1
Introduction
Welcome to the Visual Basic Language Companion for Starting Out with Programming Logic and
Design, 4th Edition, by Tony Gaddis. You can use this guide as a reference for the Visual Basic
Programming Language as you work through the textbook. Each chapter in this guide
corresponds to the same numbered chapter in the textbook. As you work through a chapter in
the textbook, you can refer to the corresponding chapter in this guide to see how the chapter's
topics are implemented in the Visual Basic programming language. In this book you will also
find Visual Basic versions of many of the pseudocode programs that are presented in the
textbook.
Page 2
Chapter 1 Introduction to Visual Basic
To program in Visual Basic, you will need Microsoft Visual Studio installed on your computer.
There's a good chance that Microsoft Visual Studio has been installed in your school's computer
lab. This is a powerful programming environment that allows you to create applications, not
only in Visual Basic, but other languages such C# and C++.
If you don't have Visual Studio installed on your personal computer, you can download and
install the Visual Studio Community Edition for free from this Web site:
www.visualstudio.com
The installation is very simple. Just click the link to download and install, and follow the
instructions. The time required for the installation to complete will depend on the speed of
your Internet connection.
Each time you want to begin writing a new program, you have to start a new project. In the
following tutorial you will start a new Visual Basic project, write a line of code, save the project,
and then run it.
Step 1: Start Visual Studio. Figure 1-1 shows Visual Studio 2013 Community Edition
running. (At the time this booklet was written, Visual Studio 2013 was the
current version, but Visual Studio 2015 was soon to be released. If you are using
Visual Studio 2015, the screens will be similar.)
The screen shown in the figure is known as the Start Page. To start a new
project, click File on the menu, then click New, and then click Project… This will
display the New Project window, shown in Figure 1-4.
Page 3
Step 2: In this book, most of the programs that we demonstrate are Visual Basic console
applications. (The only exception is in Chapter 15, where we use Windows Forms
applications.) As shown in Figure 1-2 make sure Visual Basic is selected on the
left side of the window, and Console Application is selected in the center section
of the window.
At the bottom of the New Project window you see a Name text box. This is
where you enter the name of your project. This will be automatically filled in
with a default name. In Figure 1-2 the default name is ConsoleApplication1. It is
recommended that you change the project name to something more
meaningful. Once you have changed the project name, click the OK button.
Note: If you create a lot of Visual Basic projects, you will find that default names such
as ConsoleApplication1 do not help you remember what each project does.
Therefore, you should always change the name of a new project to something
that describes the project’s purpose.
Page 4
Figure 1-2 The New Project window
Step 3: It might take a moment for the project to be created. Once it is, the Visual Studio
environment should appear similar to Figure 1-5. The large window that occupies
most of the screen is the code editor. This is where you write Visual Basic
programming statements.
Let's try the code editor. Notice that some code has already been provided in the
window. Between the lines that reads Sub Main()and End Sub, type the
following statement:
Console.WriteLine("Hello world!")
After typing this statement, the code editor should appear as shown in Figure 1-
4. Congratulations! You've written your first Visual Basic program!
Page 5
Figure 1-3 The Visual Studio Environment
Step 4: Before going any further, you should save the project. Click File on the menu bar,
then click Save All.
Step 5: Now let's run the program. Press Ctrl+F5 on the keyboard. If you typed the
statement correctly back in Step 3, the window shown in Figure 1-5 should
appear. This is the output of the program. Press any key on the keyboard to close
the window.
Page 6
If the window shown in Figure 1-5 does not appear, make sure the contents of
the code editor appears exactly as shown in Figure 1-4. Correct any mistakes,
and press Ctrl+F5 on the keyboard to run the program.
Step 6: When you are finished, click File on the menu bar, and then click Exit to exit
Visual Studio.
Page 7
Chapter 2 Input, Processing, and Output
Before we look at any Visual Basic code, there are two simple concepts that you must learn:
In Visual Basic, a module is a container that holds code. In almost all of the examples in
this book, a module holds all of a program's code.
A sub procedure (which is also known simply as a procedure) is another type of
container that holds code. Almost all of the programs that you will see in this book have
a sub procedure named Main. When a Visual Basic console program executes, it
automatically begins running the code that is inside the Main sub procedure.
When you start a new Visual Basic Console project, the following code automatically appears in
the code editor:
Module Module1
Sub Main()
End Sub
End Module
This code is required for your program, so don't erase it or modify it. In a nutshell, this code sets
up a module for the program, and inside the module it creates a Main sub procedure. Let's
look at the details.
The first line, which reads Module Module1, is the beginning of a module declaration. The
last line, which reads End Module, is the end of the module. Between these two lines the
Main sub procedure appears. The line that reads Sub Main()is the beginning of the Main
sub procedure, and the line that reads End Sub is the end of the Main sub procedure. This is
illustrated here:
Module Module1
This is the This is the beginning
Sub Main()
beginning and and end of the
end of the End Sub Main procedure.
module.
End Module
Page 8
In this chapter, when you write a program, all of the code that you will write will appear inside
the Main sub procedure, as illustrated here:
Module Module1
Sub Main()
The code that you write will
End Sub go here.
End Module
To display text on the screen in a Visual Basic console program you use the following
statements:
Console.WriteLine()
Console.Write()
First, a note about the line numbers that you see in the program. These are NOT part of the
program! They are helpful, though, when we need to discuss parts of the code. We can simply
refer to specific line numbers and explain what's happening in those lines. For that reason we
will show line numbers in all of our program listings. When you are writing a program, however,
do not type line numbers in your code. Doing so will cause a mountain of errors when you
compile the program!
Page 9
Program 2-1
This program is the VB version of
Program 2-1 in your textbook.
The Console.Write()statement displays output, but it does not advance the output cursor
to the next line. Program 2-2 shows an example. The program's output is also shown.
Oops! It appears from the program output that something went wrong. All of the words are
jammed together into one long series of characters. If we want spaces to appear between the
words, we have to explicitly display them. Program 2-3 shows how we have to insert spaces
into the strings that we are displaying, if we want the words to be separated on the screen.
Notice that in line 4 we have inserted a space in the string, after the letter g, in line 5 we have
inserted a space in the string after the letter s, and in line 6 we have inserted a space in the
string after the period.
Page 10
Program 2-2
Page 11
Variables
In Visual Basic, variables must be declared before they can be used in a program. A variable
declaration statement is written in the following general format:
Variable declarations begin with the word Dim. (The word Dim is short for dimension, and has
historically been used to start variable declarations in many different versions of the BASIC
programming language.) In the general format, VariableName is the name of the variable
that you are declaring and DataType is the name of a Visual Basic data type. For example, the
key word Integer is the name of the integer data type in Visual Basic, so the following
statement declares an Integer variable named number.
Table 2-1 lists the Visual Basic data types that we will use in this book, gives their memory size
in bytes, and describes the type of data that each can hold. Note that there are many more data
types available in Visual Basic. These, however, are the ones we will be using.
Page 12
Here are some other examples of variable declarations:
Several variables of the same data type can be declared with the same declaration statement.
For example, the following statement declares three Integer variables named width,
height, and length.
You can also initialize variables with starting values when you declare them. The following
statement declares an Integer variable named hours, initialized with the starting value 40:
Variable Names
You may choose your own variable names in Visual Basic, as long as you follow these rules:
The first character must be a letter or an underscore character. (We do not recommend
that you start a variable name with an underscore, but if you do, the name must also
contain at least one letter or numeric digit.)
After the first character, you may use letters, numeric digits, and underscore characters.
(You cannot use spaces, periods, or other punctuation characters in a variable name.)
Variable names cannot be longer than 1023 characters.
Variable names cannot be Visual Basic key words. Key words have reserved meanings in
Visual Basic, and their use as variable names would confuse the compiler.
Program 2-4 shows an example with three variable declarations. Line 4 declares a String
variable named name, initialized with the string "Jeremy Smith". Line 5 declares an Integer
variable named hours initialized with the value 40. Line 6 declares a Double variable named
pay, initialized with the value 852.99. Notice that in lines 8 through 10 we use
Console.WriteLine to display the contents of each variable.
Page 13
Program 2-4
Assignment Statements
You assign a value to an existing variable with an assignment statement, which is written in the
following general format:
variable = value
In the general format, variable is the name of the variable that is receiving the assignment, and
value is the value that is being assigned. (This is like the assignment statements in your
Programming Logic textbook, but without the word Set.)
When writing an assignment statement, make sure the variable that is receiving the value
appears on the left side of the = operator. Also, make sure that the value appearing on the right
side of the = operator is of a data type that is compatible with the variable on the left side. For
Page 14
example, you shouldn't try to assign a floating-point value to an Integer variable, or a string
to a Double.
First, let's talk about reading string input. In a Visual Basic console program, you use
Console.ReadLine() to read a string that has been typed on the keyboard, and you
usually assign that input to a String variable. Here is the general format:
variable = Console.ReadLine()
In the general format, variable is a String variable. When the statement executes, the
program will pause for the user to type input on the keyboard. After the user presses the Enter
key, the input that was typed on the keyboard will be assigned to the variable. Here is an
example of actual code:
The first line declares a String variable named name. The second statement displays the
message "What is your name? ". The third statement waits for the user to enter something on
the keyboard. When the user presses Enter, the input that was typed on the keyboard is
assigned to the name variable. For example, if the user types Jesse and then presses Enter, the
string "Jesse" will be assigned to the name variable.
Page 15
Program 2-5
Console.ReadLine() always reads keyboard input as a string, even if the user enters a
number. For example, suppose we are using Console.ReadLine() to read input, and the
user enters the number 72. The input will be returned from Console.ReadLine() as the
string "72". This can be a problem if you want to use the user’s input in a math operation
because you cannot perform math on strings. In such a case, you must use a data type
conversion function to convert the input to a numeric value. To convert a string to an
Integer, we will use the CInt function, and to convert a string to a Double we will use the
CDbl function. Here is an example that demonstrates the CInt function:
Page 16
The first line declares an Integer variable named number. The second statement displays
the message "Enter an integer number: ". The third statement does the following:
For example, if the user enters 72 and then presses Enter, the Integer value 72 will be
assigned to the number variable.
Let's look at a complete program that uses the CInt function. Program 2-6 is the Visual Basic
version of pseudocode Program 2-2 in your textbook.
Program 2-6
This program is the VB version of
Program 2-2 in your textbook.
Page 17
Let's take a closer look at the code:
Here's an example that demonstrates the CDbl function, which converts a string to a Double:
The first line declares a Double variable named number. The second statement displays the
message "Enter a floating-point number: ". The third statement does the following:
For example, if the user enters 3.5 and then presses Enter, the Double value 3.5 will be
assigned to the number variable.
Program 2-7 demonstrates how to read Strings, Doubles, and Integers from the
keyboard:
Line 4 declares a String variable named name, line 5 declares a Double variable
named payRate, and line 6 declares an Integer variable named hours.
Line 9 uses Console.ReadLine() to read a string from the keyboard, and assigns
the string to the name variable.
Page 18
Line 12 uses Console.ReadLine() to read a string from the keyboard, then uses
CDbl to convert that input to a Double, and assigns the resulting Double to the
payRate variable.
Line 15 uses Console.ReadLine() to read a string from the keyboard, then uses
CInt to convert that input to an Integer, and assigns the resulting Integer to the
hours variable.
Program 2-7
Page 19
Displaying Multiple Items with the & Operator
The & operator is known as the string concatenation operator. To concatenate means to
append, so the string concatenation operator appends one string to another. For example, look
at the following statement:
The & operator produces a string that is the combination of the two strings used as its
operands. You can also use the & operator to concatenate the contents of a variable to a string.
The following code shows an example:
The second line uses the & operator to concatenate the contents of the number variable with
the string "The value is ". Although number is not a string, the & operator converts its
value to a string and then concatenates that value with the first string. The output that will be
displayed is:
The value is 5
Program 2-8 shows an example. (This is the Visual Basic version of the pseudocode Program 2-4
in your textbook.)
Page 20
Program 2-8
This program is the VB version of
Program 2-4 in your textbook.
Page 21
Performing Calculations
Table 2-3 shows the Visual Basic arithmetic operators, which are nearly the same as those
presented in Table 2-1 in your textbook.
Here are some examples of statements that use an arithmetic operator to calculate a value, and
assign that value to a variable:
Program 2-9 shows an example program that performs mathematical calculations (This
program is the Visual Basic version of pseudocode Program 2-9 in your textbook.)
Page 22
Program 2-9
This program is the VB version of
Program 2-9 in your textbook.
Named Constants
You create named constants in Visual Basic by using the Const key word in a variable
declaration. The word Const is written instead of the word Dim. Here is an example:
This statement looks just like a regular variable declaration except that the word Const is used
instead of Dim, and the variable name is written in all uppercase letters. It is not required that
the variable name appear in all uppercase letters, but many programmers prefer to write them
this way so they are easily distinguishable from regular variable names.
An initialization value must be given when declaring a variable with the Const key word, or an
error will result when the program is compiled. A compiler error will also result if there are any
statements in the program that attempt to change the value of a Const variable.
Page 23
Documenting a Program with Comments
To write a line comment in Visual Basic you simply place an apostrophe (') where you want the
comment to begin. The compiler ignores everything from that point to the end of the line. Here
is an example:
And sometimes programmers write a comment at the end of a line, to document what that line
of code does. Here is an example:
Line Continuation
Some programming statements are so long that you have to scroll the code editor horizontally
to read the entire line. This can make the code difficult to read on the screen. When this is the
case, you can break the statement into several lines of code to make it easier to read.
When you are typing a statement and you reach the point where you want to continue it on the
next line, simply press Enter. Here is an example:
Page 24
Chapter 3 Procedures
Chapter 3 in your textbook discusses modules as named groups of statements that perform
specific tasks in a program. In Visual Basic, we use sub procedures for that purpose. Sub
procedures are commonly referred to simply as procedures, and from this point forward, we
will use that term.
In this chapter we will discuss how to define and call Visual Basic procedures, declare local
variables in a procedure, and pass arguments to a procedure. We will also discuss the
declaration of global variables and global constants.
Note: In Visual Basic, the term module is used differently, than it used in your textbook. A
Visual Basic module is a container that holds procedures and other pieces of code. Try
not to get confused about this point. When you are reading the textbook and you see
the term module, think procedure in Visual Basic.
To create a procedure you must write its definition. Here is an example of a procedure
definition:
Sub ShowMessage()
Console.WriteLine("Hello world")
End Sub
The first line of a procedure definition starts with the word Sub, followed by the procedure's
name, followed by a set of parentheses. We refer to this line as the procedure header. In this
example, the name of the procedure is ShowMessage.
Beginning at the line after the procedure header, one or more statements will appear. These
statements are the procedure body, and they are performed when the procedure is executed.
In this example, there is one statement in the body of the ShowMessage procedure. It uses
Console.WriteLine to display the string Hello World on the screen. The last line of the
definition, after the body, reads End Sub. This marks the end of the procedure definition.
Page 25
Calling a Procedure
A procedure executes when it is called. The Main procedure is automatically called when a
Visual Basic console program starts, but other procedures are executed by procedure call
statements. When a procedure is called, the program branches to that procedure and executes
the statements in its body. Here is an example of a procedure call statement that calls the
ShowMessage procedure we previously examined:
ShowMessage()
The statement is simply the name of the procedure followed by a set of parentheses. Program
3-1 shows a Visual Basic program that demonstrates the ShowMessage procedure. This is the
Visual Basic version of pseudocode Program 3-1 in your textbook.
Program 3-1
This program is the VB version of
Program 3-1 in your textbook.
The module that contains this program's code has two procedures: Main and ShowMessage.
The Main procedure appears in lines 3 through 7, and the ShowMessage procedure appears
in lines 9 through 11. When the program runs, the Main procedure executes. The statement in
Page 26
line 4 displays "I have a message for you." Then the statement in line 5 calls the
ShowMessage procedure. This causes the program to branch to the ShowMessage
procedure and execute the statement that appears in line 10. This displays "Hello world". The
program then branches back to the Main procedure and resumes execution at line 6. This
displays "That's all, folks!"
Local Variables
Variables that are declared inside a procedure are known as local variables. They are called
local because they are local to the procedure in which they are declared. Statements outside a
procedure cannot access that procedure’s local variables. Because a procedure’s local variables
are hidden from other procedures, the other procedures may have their own local variables
with the same name.
If you want to be able to pass an argument into a procedure, you must declare a parameter
variable in that procedure's header. The parameter variable will receive the argument that is
passed when the procedure is called. Here is the definition of a procedure that uses a
parameter:
Notice in the procedure header, inside the parentheses, these words appear:
This is the declaration of an Integer parameter named num. The ByVal key word is used
instead of the word Dim. ByVal indicates that any argument passed into the parameter will
be passed by value. This means that the parameter variable num will hold only a copy of the
argument that is passed into it. Any changes that are made to the parameter variable will not
affect the original argument that was passed into it.
DisplayValue(5)
Page 27
This statement executes the DisplayValue procedure. The argument that is listed inside the
parentheses is copied into the procedure’s parameter variable, num.
Program 3-2 shows the Visual Basic version of pseudocode Program 3-5 in your textbook.
When the program runs, line 4 calls the DoubleNumber procedure, passing 4 as an argument.
The DoubleNumber procedure is defined in lines 7 through 16. The procedure has an
Integer parameter variable named value. A local Integer variable named result is
declared in line 9, and in line 12 the value parameter is multiplied by 2 and the result is
assigned to the result variable. In line 15 the value of the result variable is displayed.
Program 3-2
This program is the VB version of
Program 3-5 in your textbook.
Page 28
Program 3-3 shows the Visual Basic version of pseudocode Program 3-6 in your textbook.
When the program runs, it prompts the user to enter a number. Line 12 reads an integer from
the keyboard and assigns it to the number variable. Line 16 calls the DoubleNumber
procedure, passing the number variable as an argument.
The DoubleNumber procedure is defined in lines 19 through 28. The procedure has an
Intgeger parameter variable named value. A local Intgeger variable named result is
declared in line 21, and in line 24 the value parameter is multiplied by 2 and the result is
assigned to the result variable. In line 27 the value of the result variable is displayed.
Program 3-3
This program is the VB version of
Program 3-6 in your textbook.
Page 29
This is the program's
output.
Often it is useful to pass more than one argument to a procedure. When you define a
procedure, you must declare a parameter variable for each argument that you want passed into
the procedure. Program 3-4 shows an example. This is the Visual Basic version of pseudocode
Program 3-7 in your textbook.
This program is the VB version of
Program 3-7 in your textbook.
Program 3-4
Page 30
Passing Arguments by Reference
When an argument is passed by reference, it means that the procedure has access to the
argument and make changes to it. If you use the word ByRef in a parameter variable
declaration (instead of the word ByVal), then any argument passed into the parameter will be
passed by reference.
Program 3-5 shows an example. In the program, an Integer argument is passed by reference
to the SetToZero procedure. The SetToZero procedures sets its parameter variable to 0,
which also sets the original variable that was passed as an argument to 0.
Program 3-5
To declare a global variable or constant in a Visual Basic Console program, you write the
declaration inside the program module, but outside of all procedures. As a result, all of the
procedures in the module have access to the variable or constant.
Page 31
Chapter 3 in your textbook warns against the use of global variables because they make
programs difficult to debug. Global constants are permissible, however, because statements in
the program cannot change their value. Program 3-6 demonstrates how to declare such a
constant. Notice that in line 3 we have declared a constant named INTEREST_RATE . The
declaration is inside the program module, but it is not inside any of the procedures. As a result,
the constant is available to all of the procedures in the program module.
Program 3-6
Page 32
Chapter 4 Decision Structures and Boolean Logic
Visual Basic's relational operators, shown in Table 4-1, are similar to those discussed in your
textbook. Notice that the equal to operator is only one = sign, and that the not equal to
operator is <>.
The relational operators are used to create Boolean expressions, and are commonly used with
If-Then statements. Here is the general format of the If-Then statement in Visual Basic:
If BooleanExpression Then
statement
statement
etc
End If
The general format of the statement is exactly like the general format used for pseudocode in
your textbook. Program 4-1 demonstrates the If-Then statement. This is the Visual Basic
version of pseudocode Program 4-1 in your textbook.
Page 33
Program 4-1
This program is the VB version of
Program 4-1 in your textbook.
Page 34
Dual Alternative Decision Structures
You use the If-Then-Else statement in Visual Basic to create a dual alternative decision
structure. This is the format of the If-Then-Else statement:
If BooleanExpression Then
statement
statement
etc
Else
statement
statement
etc
End If
The general format of the statement is exactly like the general format used for pseudocode in
your textbook. Program 4-2 demonstrates the If-Then-Else statement. This is the Visual
Basic version of pseudocode Program 4-2 in your textbook.
Program 4-2
Page 35
Program continued on next page…
Page 36
This is the program's output.
Comparing Strings
String comparisons in Visual Basic work as described in your textbook, Program 4-3 shows an
example. This is the Visual Basic version of pseudocode Program 4-3 in your textbook.
Page 37
Program 4-3
Page 38
Nested Decision Structures
Program 4-4
Page 39
The If-Then-ElseIf Statement
As discussed in your textbook, nested decision logic can sometimes be written with the If-
Then-ElseIf statement. Note that in Visual Basic, the word ElseIf is written with no space
separating the words Else and If.
Program 4-5 shows an example. This is a modified version of Program 4-4, and its output is the
same as Program 4-4.
Page 40
Program 4-5
Page 41
The Case Structure (Select Case Statement)
In Visual Basic, case structures are written as Select Case statements. Here is the general format of
the Select Case statement:
Case value_1
statement
These statements are executed if the
statement
testExpression is equal to value_1.
etc.
Case value_2
statement
These statements are executed if the
statement
testExpression is equal to value_2.
etc.
Case value_N
statement
These statements are executed if the
statement
testExpression is equal to value_N.
etc.
Case Else
statement These statements are executed if the
statement testExpression is not equal to any
etc. of the values listed after the Case
statements.
End Select This is the end of the statement.
Note that in your textbook, the pseudocode Case statements end with a colon, but in Visual
Basic they do not. Also note that Visual Basic uses a Case Else statement at the end of the
structure instead of a Default section.
For example, the following code performs the same operation as the flowchart in Figure 4-18:
Page 42
Select Case month
Case 1
Console.WriteLine("January")
Case 2
Console.WriteLine("February")
Case 3
Console.WriteLine("March")
Case Else
Console.WriteLine("Error: Invalid month")
End Select
In this example the testExpression is the month variable. If the value in the month variable is
1, the program will branch to the Case 1 section and execute the
Console.WriteLine("January") statement that immediately follows it. If the value in
the month variable is 2, the program will branch to the Case 2 section and execute the
Console.WriteLine("February") statement that immediately follows it. If the value in
the month variable is 3, the program will branch to the Case 3 section and execute the
Console.WriteLine("March") statement that immediately follows it. If the value in the
month variable is not 1, 2, or 3, the program will branch to the Case Else section and
execute the Console.WriteLine("Error: Invalid month") statement that
immediately follows it.
Note: The Case Else section is optional, but in most situations you should have one. The
Case Else section is executed when the testExpression does not match any of the
Case values.
Program 4-7 shows a complete example. This is the Visual Basic version of pseudocode Program
4-8 in your textbook.
Page 43
Program 4-7
This program is the VB version of
Program 4-8 in your textbook.
Visual Basic provides a more comprehensive set of logical operators than many languages.
Table 4-2 shows the Visual Basic logical operators.
For example, the following If-Then statement checks the value in x to determine if it is in the
range of 20 through 40:
The Boolean expression in the If-Then statement will be true only when x is greater than or
equal to 20 AND less than or equal to 40. The value in x must be within the range of 20 through
40 for this expression to be true. The following statement determines whether x is outside the
range of 20 through 40:
Page 45
Here is an If-Then statement using the Not operator:
First, the expression (temperature > 100) is tested and a value of either true or false is
the result. Then the Not operator is applied to that value. If the expression (temperature
> 100) is true, the Not operator returns false. If the expression (temperature > 100)
is false, the Not operator returns true. The previous code is equivalent to asking: “Is the
temperature not greater than 100?”
Not The Not operator is a unary operator, meaning it works with only one
operand. The operand must be a Boolean expression. The Not operator
reverses the truth of its operand. If it is applied to an expression that is
true, the operator returns false. If it is applied to an expression that is
false, the operator returns true.
Xor This operator performs an exclusive OR operation. It combines two
Boolean expressions into one compound expression. One of the
subexpressions, but not both, must be true for the compound expression
to be true. If both subexpressions are true, or both subexpressions are
false, the overall expression is false.
AndAlso This is a logical AND operator that performs short-circuit evaluation. (See
the discussion of short-circuit evaluation in your textbook for details.)
OrElse This is a logical OR operator that performs short-circuit evaluation. (See
the discussion of short-circuit evaluation in your textbook for details.)
Page 46
Boolean Variables
In Visual Basic you use the Boolean data type to create Boolean variables. A Boolean
variable can hold one of two possible values: True or False. Here is an example of a
Boolean variable declaration:
Boolean variables are commonly used as flags that signal when some condition exists in the
program. When the flag variable is set to False, it indicates the condition does not yet exist.
When the flag variable is set to True, it means the condition does exist.
For example, suppose a test grading program has a Boolean variable named highScore.
The variable might be used to signal that a high score has been achieved by the following code:
Later, the same program might use code similar to the following to test the highScore
variable, in order to determine whether a high score has been achieved:
If highScore Then
Console.WriteLine("That's a high score!")
End If
Page 47
Chapter 5 Repetition Structures
In Visual Basic, both the While loop and the Do-While loop are written as variations of the
Do-While loop. In other words, the Do-While loop in Visual Basic can be written as either a
pretest or a posttest loop. Here is the general format of how you write a pretest Do-While
loop:
Do While BooleanExpression
statement
statement
etc
Loop
The line that begins Do While is the beginning of the loop and the line that reads Loop is the
end of the loop. The statements that appear between these lines are known as the body of the
loop.
We say that the statements in the body of the loop are conditionally executed because they are
executed only under the condition that the BooleanExpression is true.
Program 5-1 shows an example of the Do-While loop. This is the Visual Basic version of
pseudocode Program 5-2 in your textbook.
Page 48
Program 5-1
This program is the VB version of
Program 5-2 in your textbook.
Page 49
The Posttest Do-While Loop
Do
statement
statement
etc
Loop While BooleanExpression
This loop works like the Do-While loop that is described in your textbook.
As described in your textbook, the Do-Until loop is a posttest loop that iterates until a
Boolean expression is true. Here is the general format of the Do-Until loop in Visual Basic:
Do
statement
statement
etc
Loop Until BooleanExpression
This loop works like the Do-Until loop that is described in your textbook.
The For...Next in Visual Basic works like the For loop described in your textbook. It is ideal
for situations that require a counter because it initializes, tests, and increments a counter
variable. Here is a simplified version of the format of the For...Next loop:
Page 50
CounterVariable is the variable to be used as a counter. It must be a numeric
variable.
StartValue is the value the counter variable will be initially set to. This value must be
numeric.
EndValue is the value the counter variable is tested against just prior to each iteration
of the loop. This value must be numeric.
Here is an example of a simple For…Next loop that prints “Hello” five times (assuming the
variable count has already been declared as an Integer):
For count = 1 To 5
Console.WriteLine("Hello")
Next
Program 5-2 shows an example. This is the Visual Basic version of pseudocode Program 5-8 in
your textbook.
Program 5-2
This program is the VB version of
Program 5-8 in your textbook.
Page 51
This is the program's output.
Program 5-3 shows another example. The For…Next loop in this program uses the value of
the counter variable in a calculation in the body of the loop. This is the Visual Basic version of
pseudocode Program 5-9 in your textbook.
I should point out that vbTab, which appears in lines 11 and 18 works similarly to the word
Tab that is used in pseudocode in your textbook. As you can see in the program output,
vbTab causes the output cursor to "tab over." It is useful for aligning output in columns on the
screen.
Program 5-3
This program is the VB version of
Program 5-9 in your textbook.
Page 52
This is the program's output.
In Visual Basic you can use a Step clause in a For…Next loop to specify the loop's step
amount. It works like the pseudocode Step clause that is described in your textbook. Program
5-4 demonstrates how a Step clause can be used to increment the counter variable by 2. This
causes the statement in line 11 to display only the odd numbers in the range of 1 through 11.
This program is the Visual Basic version of pseudocode Program 5-10 in your textbook.
Program 5-4
Page 53
This is the program's output.
Your textbook discusses the common programming task of calculating the sum of a series of
values, also known as calculating a running total. Program 5-5 demonstrates how this is done in
Visual Basic. The total variable that is declared in line 10 is the accumulator variable. Notice
that it is initialized with the value 0. During each loop iteration the user enters a number, and in
line 23 this number is added to the value already stored in total. The total variable
accumulates the sum of all the numbers entered by the user. This program is the Visual Basic
version of pseudocode Program 5-18 in your textbook.
Page 54
Program 5-4
This program is the VB version of
Program 5-18 in your textbook.
Page 55
Chapter 6 Functions
To generate random numbers in Visual Basic, you have to create a special type of object known
as a Random object in memory. Random objects have methods and properties that make
generating random numbers fairly easy. Here is an example of a statement that creates a
Random object:
This statement declares a variable named rand. The expression New Random creates a
Random object in memory. After this statement executes, the rand variable will refer to the
Random object. As a result, you will be able to use the rand variable to call the object's
methods for generating random numbers. (There is nothing special about the variable name
rand used in this example. You can use any legal variable name.)
Once you have created a Random object, you can call its Next method to get a random
integer number. The following code shows an example:
After this code executes, the number variable will contain a random number. If you call the
Next method with no arguments, as shown in this example, the returned integer is
somewhere between 0 and 2,147,483,647. Alternatively, you can pass an argument that
specifies an upper limit to the generated number’s range. In the following statement, the value
assigned to number is somewhere between 0 and 99:
number = rand.Next(100)
Page 56
The random integer’s range does not have to begin at zero. You can add or subtract a value to
shift the numeric range upward or downward. In the following statement, we call the Next
method to get a random number in the range of 0 through 9, and then we add 1 to it. So, the
number assigned to the number variable will be somewhere in the range of 1 through 10:
number = rand.Next(10) + 1
The following statement shows another example. It assigns a random integer between –50 and
+49 to number:
number = rand.Next(100) - 50
You can call a Random object's NextDouble method to get a random floating-point number
between 0.0 and 1.0 (not including 1.0). The following code shows an example:
After this code executes, the number variable will contain a random floating-point number in
the range of 0.0 up to (but not including) 1.0. If you want the random number to fall within a
larger range, multiply it by a scaling factor. The following statement assigns a random number
between 0.0 and 500.0 to number:
The following statement generates a random number between 100.0 and 600.0:
Page 57
Program 6-1 shows a complete demonstration. This is the Visual Basic version of pseudocode
Program 6-2 in your textbook.
Program 6-1
This program is the VB version of
Program 6-2 in your textbook.
The statement in Line 6 creates a Random object in memory and gives it the name
rand.
Line 9 declares two Integer variables: counter and number. The counter
variable will be used in a For…Next loop, and the number variable will be used to
hold random numbers.
Page 58
The For…Next loop that begins in line 13 iterates 5 times.
Inside the loop, the statement in line 16 generates a random number in the range of 0
through 100 and assigns it to the number variable.
The statement in line 19 displays the value of the number variable.
The first line, known as the function header, begins with the word Function and is followed
by these items:
This general format is nearly identical to the pseudocode format used in Chapter 6 of your
textbook. The only difference is where the data type is specified.
Program 6-2 shows a complete Java program that demonstrates this method. The program is
the Visual Basic version of pseudocode Program 6-6 in your textbook.
Page 59
Program 6-1
This program is the VB version of
Program 6-6 in your textbook.
Returning Strings
The following code shows an example of how a function can return string. Notice that the
function header specifies String as the return type. This function accepts two string
arguments (a person's first name and last name). It combines those two strings into a string
that contains the person's full name. The full name is then returned.
Page 60
Function FullName(ByVal firstName As String, ByVal lastName As String) As String
Dim name As String
The following code snippet shows how we might call the function:
After this code executes, the value of the customerName variable will be "John Martin".
Functions can also return Boolean values. The following function accepts an argument and
returns True if the argument is within the range of 1 through 100, or False otherwise:
Return status
End Function
The following code shows an If-Then statement that uses a call to the function:
If IsValid(value) Then
Console.WriteLine("The value is within range.")
Else
Console.WriteLine("The value is out of range.")
End If
When this code executes, the message “The value is within range.” will be displayed.
Page 61
Math Functions
Visual Basic provides several functions that are useful for performing mathematical operations.
Table 6-2 lists many of the math functions. These functions typically accept one or more values
as arguments, perform a mathematical operation using the arguments, and return the result.
For example, one of the functions is named Math.Sqrt. The Math.Sqrt function accepts an
argument and returns the square root of the argument. Here is an example of how it is used:
result = Math.Sqrt(16)
Visual Basic also defines two constants, Math.PI and Math.E, which are assigned
mathematical values for pi and e. You can use these constants in equations that require their
values. For example, the following statement, which calculates the area of a circle, uses
Math.PI.
Page 62
Formatting Numbers with the ToString method
All numeric data types in Visual Basic have a method named ToString that returns the
contents of a variable converted to a string. You call the method using the following general
format:
variableName.ToString()
The first statement declares an Integer variable named number (initialized with the value
123) and the second statement declares a String variable named str. The third statement
does the following:
The expression number.ToString() returns the value of the number variable as the
string "123".
The string "123" is assigned to the str varable.
By passing an appropriate argument to the ToString method, you can indicate how you want
the number to be formatted when it is returned as a string. The following statements create a
string containing the number 1234.5 in Currency format:
When the last statement executes, the value assigned to resultString is "$1,234.50".
Notice that an extra zero was added at the end because currency values usually have two digits
to the right of the decimal point. The argument "c" is called a format string. Table 6-3 shows
various format strings that can be passed to the ToString method. The format strings are not
case sensitive, so you can code them as uppercase or lowercase letters.
Page 63
Table 6-3 Numeric format strings
Format String Description
N or n Number format
F or f Fixed-point scientific format
E or e Exponential scientific format
C or c Currency format
P or p Percent format
Number Format
Number format (n or N) displays numeric values with thousands separators and a decimal
point. By default, two digits display to the right of the decimal point. Negative values are
displayed with a leading minus (–) sign. Example:
-2,345.67
Fixed-Point Format
Fixed-point format (f or F) displays numeric values with no thousands separator and a decimal
point. By default, two digits display to the right of the decimal point. Negative values are
displayed with a leading minus (–) sign. Example:
-2345.67
Exponential Format
-2.345670e+003
Page 64
Currency Format
Currency format (c or C) displays a leading currency symbol (such as $), digits, thousands
separators, and a decimal point. By default, two digits display to the right of the decimal point.
Negative values are surrounded by parentheses. Example:
($2,345.67)
Percent Format
Percent format (p or P) causes the number to be multiplied by 100 and displayed with a trailing
space and % sign. By default, two digits display to the right of the decimal point. Negative
values are displayed with a leading minus (–) sign. The following example uses –.2345:
-23.45 %
Each numeric format string can optionally be followed by an integer that indicates the number
of digits to display after the decimal point. For example, the format n3 displays three digits
after the decimal point. Table 6-4 shows a variety of numeric formatting examples.
Rounding
Rounding can occur when the number of digits you have specified after the decimal point in the
format string is smaller than the precision of the numeric value. Suppose, for example, that the
value 1.235 were displayed with a format string of n2. Then the displayed value would be 1.24.
If the next digit after the last displayed digit is 5 or higher, the last displayed digit is rounded
away from zero. Table 6-5 shows examples of rounding using a format string of n2.
Page 65
Table 6-5 Rounding examples using n2 as the format string
Number Value Formatted As
1.234 1.23
1.235 1.24
1.238 1.24
–1.234 –1.23
–1.235 –1.24
–1.238 –1.24
String Methods
In Visual Basic, strings have a Length property that gives the length of the string. The following
code snippet shows an example of how you use it:
This code declares a String variable named name, and initializes it with the string
"Charlemagne". Then, it declares an Integer variable named strlen. The strlen
variable is initialized with the value of the name.Length property, which is 11.
Appending a string to another string is called concatenation. In Visual Basic you can perform
string concatenation in two ways: using the & operator, and using the String.Concat
function. Here is an example of how the & operator works:
After this code executes the properName variable will contain the string "Mr. Conway".
Here is an example of how you perform the same operation using the Concat method:
Page 66
Dim lastName As String = "Conway"
Dim salutation As String = "Mr. "
Dim properName As String
properName = String.Concat(salutation, lastName)
The last statement in this code snippet calls the String.Concat function, passing
salutation and lastName as arguments. The function will return a copy of the string in
the salutation variable, with the contents of the lastName variable concatenated to it.
After this code executes the properName variable will contain the string "Mr. Conway".
The ToUpper method returns a copy of a string with all of its letters converted to uppercase.
Here is an example:
The ToLower method returns a copy of a string with all of its letters converted to lowercase.
Here is an example:
The Substring method returns part of another string. (A string that is part of another string
is commonly referred to as a "substring.") The method takes two arguments:
The first argument is the substring’s starting position (position numbers start at 0).
The second argument is the substring’s length.
Page 67
The IndexOf Method
In Visual Basic you can use the IndexOf method to perform a task similar to that of the
contains function discussed in your textbook. The IndexOf methods searches for
substrings within a string. Here is the general format:
string1.IndexOf(string2)
In the general format string1 and string2 are strings. If string2 is found in string1,
its beginning position is returned. Otherwise, –1 is returned. The following code shows an
example. It determines whether the word "and" appears in the string "four score and seven
years ago".
Page 68
Chapter 7 Input Validation
Chapter 7 in your textbook discusses the process of input validation in detail. There are no new
language features introduced in the chapter, so here we will simply show you a Visual Basic
version of the pseudocode Program 7-2. This program uses an input validation loop in lines 42
through 47 to validate that the value entered by the user is not negative.
Program 7-1
Page 69
This is the program's output.
Page 70
Chapter 8 Arrays
Here is an example of an array declaration in Visual Basic:
This statement declares numbers as an Integer array. The number inside the parentheses is
the subscript of the last element in the array. The subscript of the first element is 0, so this
array has a total of seven elements. Note that the number inside the parentheses is not a size
declarator, as in the pseudocode array declarations shown in your textbook.
Note: With Visual Basic arrays, parentheses are used instead of the square brackets that are
shown in your textbook's pseudocode.
Here is an example where we have used a named constant for the upper subscript:
This code snippet declares temperatures as an array of 200 Doubles. The subscript of the
last element is 199. Here is one more:
You access each element of an array with a subscript. As discussed in your textbook, the first
element's subscript is 0, the second element's subscript is 1, and so forth. Program 8-1 shows
an example of an array being used to hold values entered by the user. This is the Visual Basic
version of pseudocode Program 8-1 in your textbook.
Page 71
Program 8-1
This program is the VB version of
Program 8-1 in your textbook.
Page 72
The Length Property
Each array in Visual Basic has a property named Length. The value of the Length property is
the number of elements in the array. For example, consider the array created by the following
statement:
Because the temperatures array has 25 elements, the following statement would assign 25
to the variable size:
size = temperatures.Length
The Length property can be useful when processing the entire contents of an array. For
example, the following loop steps through an array and displays the contents of each element.
The array’s Length property is used in the test expression as the upper limit for the loop
control variable:
Be careful not to cause an off-by-one error when using the Length property as the upper limit
of a subscript. The Length property contains the number of elements in an array. The largest
subscript in an array is Length – 1.
It is usually much more efficient to use a loop to access an array's elements, rather than writing
separate statements to access each element. Program 8-2 demonstrates how to use a loop to
step through an array's elements. This is the Visual Basic version of pseudocode Program 8-3 in
your textbook.
Page 73
Program 8-2
This program is the VB version of
Program 8-3 in your textbook.
Page 74
Initializing an Array
You can initialize an array with values when you declare it. Here is an example:
This statement declares days as an array of Integers, and stores initial values in the array.
The series of values inside the braces and separated with commas is called an initialization list.
These values are stored in the array elements in the order they appear in the list. (The first
value, 31, is stored in days(0), the second value, 28, is stored in days(1), and so forth.)
Note that you do not specify the last subscript when you use an initialization list. Visual Basic
automatically creates the array and stores the values in the initialization list in it.
The Visual Basic compiler determines the size of the array by the number of items in the
initialization list. Because there are 12 items in the example statement’s initialization list, the
array will have 12 elements.
Section 8.2 in your textbook discusses the sequential search algorithm, in which a program
steps through each of an array's elements searching for a specific value. Program 8-3 shows an
example of the sequential search algorithm. This is the Visual Basic version of pseudocode
Program 8-6 in the textbook.
Program 8-4 demonstrates how to find a string in a string array. This is the Visual Basic version
of pseudocode Program 8-7 in the textbook.
Page 75
Program 8-3
This program is the VB version of
Program 8-6 in your textbook.
Page 76
Program 8-4
This program is the VB version of
Program 8-7 in your textbook.
Page 77
This is the program's output.
Notice that the parameter variable, array, is declared with an empty set of parentheses. This
indicates that the parameter receives an array as an argument. When we call this procedure we
must pass an Integer array as an argument. Assuming that numbers is the name of an
Integer array, here is an example of a procedure call that passes the numbers array as an
argument to the ShowArray procedure:
ShowArray(numbers)
Program 8-5 gives a complete demonstration of passing an array to a procedure. This is the
Visual Basic version of pseudocode Program 8-13 in your textbook.
Page 78
Program 8-5
This program is the VB version of
Program 8-13 in your textbook.
Page 79
Two-Dimensional Arrays
Here is an example declaration of a two-dimensional array with three rows and four columns:
The numbers 2 and 3 inside the parentheses are the upper subscripts. The number 2 is the
subscript of the last row, and the number 3 is the subscript of the last column. So, the row
subscripts for this array are 0, 1, and 2. The column subscripts are 0, 1, 2, and 3.
When processing the data in a two-dimensional array, each element has two subscripts: one for
its row and another for its column. In the scores array, the elements in row 0 are referenced
as follows:
To access one of the elements in a two-dimensional array, you must use both subscripts. For
example, the following statement stores the number 95 in scores(2, 1):
scores(2, 1) = 95
Programs that process two-dimensional arrays can do so with nested loops. For example, the
following code prompts the user to enter a score, once for each element in the array:
Page 80
Const MAX_ROW As Integer = 3
Const MAX_COL As Integer = 4
Dim row, col As Integer
Dim scores(MAX_ROW, MAX_COL) As Double
And the following code displays all the elements in the scores array:
Program 8-6 shows a complete example. It declares an array with three rows and four columns,
prompts the user for values to store in each element, and then displays the values in each
element. This is the Visual Basic example of pseudocode Program 8-16 in your textbook.
The last subscripts in the array's dimensions are 2, 4, and 7. This array can be thought of as three sets of
five rows, with each row containing eight elements. The array might be used to store the prices of seats
in an auditorium, where there are eight seats in a row, five rows in a section, and a total of three
sections.
Page 81
Program 8-6
This program is the VB version of
Program 8-16 in your textbook.
Page 82
Chapter 9 Sorting and Searching Arrays
Bubble Sort
Selection Sort
Insertion Sort
The Binary Search algorithm is also discussed. The textbook chapter examines these algorithms
in detail, and no new language features are introduced. For these reasons we will simply
present the Visual Basic code for the algorithms in this chapter. For more in-depth coverage of
the logic involved, consult the textbook.
Bubble Sort
Program 9-1 is only a partial program. It shows the Visual Basic version of pseudocode Program
9-1, which is the Bubble Sort algorithm. The code listing also shows the Visual Basic version of
the Swap procedure.
Selection Sort
Program 9-2 is a complete program. It shows the Visual Basic version of the selectionSort
pseudocode module that is shown in Program 9-5 in your textbook.
Insertion Sort
Program 9-3 is a complete program. It shows the Visual Basic version of the insertionSort
pseudocode module that is shown in Program 9-6 in your textbook.
Binary Search
Program 9-4 is a partial program. It shows the Visual Basic version of the binarySearch
pseudocode module that is shown in Program 9-7 in your textbook.
Page 83
This program is the VB version of
Program 9-1 Program 9-1 in your textbook.
Page 84
Program 9-2
This program is the VB version of
Program 9-5 in your textbook.
Page 85
This is the program's output.
Page 86
Program 9-3
This program is the VB version of
Program 9-6 in your textbook.
Page 87
This is the program's output.
Page 88
This program is the VB version of
Program 9-4 Program 9-7 in your textbook.
Page 89
Chapter 10 Files
To work with files in a Visual Basic program you first write the following statement at the top of
your program:
Imports System.IO
This statement must be written before the beginning of the Module definition.
In the procedure or function where you wish to open a file and write data to it you declare a
StreamWriter variable. Here is an example:
This statement declares a SreamWriter variable named outputFile. After this statement
has executed, we will be able to use the outputFile variable to open a file and write data to
it. What we do next depends on whether we want to create a new file, or open an existing file
and append data to it.
If we want to create a new file, we call the File.CreateText function. Here is an example:
The first statement declares a StreamWriter variable named outputFile. The second
statement calls the File.CreateText function, passing the name of the file that we want
to create as an argument. The value that is returned from the function is assigned to the
outputFile variable. After this code executes, an empty file named StudentData.txt will be
created on the disk, and the outputFile variable will be associated with that file. The
program will be able to use the outputFile variable to write data to the file. (If the file that
you are opening with File.CreateText already exists, its contents will be erased.)
If a file already exists, you may want to add more data to the end of the file. This is called
appending to the file. First, you declare a StreamWriter variable:
Page 90
Dim outputFile As StreamWriter
Then you call the File.AppendText method, passing it the name of an existing file. For
example:
outputFile = File.AppendText("StudentData.txt")
This statement opens the existing file StudentData.txt, preserving its current contents. Any data
written to the file will be written to the end of the file’s existing contents. (If the file does not
exist, it will be created.)
Closing a File
When the program is finished working with a file, it must close the file. Assuming that
outputFile is the name of a StreamWriter variable, here is an example of how to call
the Close method to close the file:
outputFile.Close()
Once a file is closed, the connection between it and the StreamWriter variable is removed.
In order to perform further operations on the file, it must be opened again.
Once you have created a StreamWriter variable and opened a file, you can use the
WriteLine method to write data to the file. The StreamWriter's WriteLine method
works like the Console.WriteLine method. The output goes to a file instead of the screen.
The following code snippet demonstrates:
Page 91
' Close the file.
outputFile.Close()
You can visualize the data being written to the file in the following manner:
Jim<newline>95<newline>Karen<newline>98<newline>Bob<newline>82<newline>
The newline characters are represented here as <newline>. You do not actually see the newline
characters, but when the file is opened in a text editor such as Notepad, its contents appear as
shown in Figure 10-1. As you can see from the figure, each newline character causes the data
that follows it to be displayed on a new line.
Program 10-1 demonstrates how to open a file for output, write some data to the file, and close
the file. This is the Visual Basic version of pseudocode Program 10-1 in your textbook. When
this program executes, line 9 creates a file named philosophers.txt on the disk, and lines 12
through 14 write the strings "John Locke", "David Hume", and "Edmund Burke" to the file. Line
17 closes the file.
Page 92
Program 10-1
In the procedure or function where you wish to open an existing file to read data from it, you
first declare a StreamReader variable. Here is an example:
Next you call the File.OpenText function to open the file. Here is an example:
The first statement declares a StreamReader variable named inputFile. The second
statement calls the File.OpenText function, passing the name of the file that we want to
open as an argument. The value that is returned from the function is assigned to the
inputFile variable. After this code executes, the specified file will be opened and the
inputFile variable will be associated with the file. The program will be able to use the
inputFile variable to read data from the file. (If the file that you are opening with
File.CreateText does not exist, an error will occur.)
Page 93
Closing a File
When the program is finished working with a file, it must close the file. Assuming that
inputFile is the name of a StreamReader variable, here is an example of how to call the
Close method to close the file:
inputFile.Close()
Once a file is closed, the connection between it and the StreamReader variable is removed.
In order to perform further operations on the file, it must be opened again.
Once you have created a StreamReader variable and opened a file, you can use the
ReadLine method to read a line of data from the file. (The line of data that is read from the
file is returned as a string.) The StreamReader's ReadLine method works like the
Console.ReadLine method, except that the input comes from a file instead of the
keyboard. The following code snippet demonstrates:
Program 10-2 shows an example that reads strings from a file. This program opens the
philosophers.txt file that was created by Program 10-1. This is the Visual Basic version of
pseudocode Program 10-2 in your textbook.
Page 94
This program is the VB version of
Program 10-2 Program 10-2 in your textbook.
Page 95
Here are some specific points about the program:
Program 10-3 demonstrates how a loop can be used to collect items of data to be stored in a
file. This is the Visual Basic version of pseudocode Program 10-3 in your textbook.
Page 96
This is the program's output.
Sometimes you need to read a file's contents, and you do not know the number of items that
are stored in the file. When this is the case, you can use a StreamReader method named
Peek to determine whether the file contains another item before you attempt to read an item
from it. This method looks ahead in the file, without moving the current read position, and
returns the next character that will be read. If the current read position is at the end of the file
(where there are no more characters to read), the method returns –1.
Program 10-4 demonstrates how to use the Peek method. This is the Visual Basic version of
pseudocode Program 10-4 in your textbook. The program opens the sales.txt file that was
created by Program 10-3. It reads and displays each item of data in the file.
Page 97
This program is the VB version of
Program 10-4 Program 10-4 in your textbook.
Page 98
Chapter 11 Menu-Driven Programs
Chapter 11 in your textbook discusses menu-driven programs. A menu-driven program presents
a list of operations that the user may select from (the menu), and then performs the operation
that the user selected. There are no new language features introduced in the chapter, so here
we will simply show you a Visual Basic program that is menu-driven. Program 11-1 is the Visual
Basic version of the pseudocode Program 11-3.
Page 99
This is the program's output.
Page 100
Page 101
Chapter 12 Text Processing
Chapter 12 in your textbook discusses programming techniques for working with the individual
characters in a string. Visual Basic allows you to retrieve the individual characters in a string
using subscript notation, as described in the book. (Parentheses are used instead of square
brackets, however.) For example, the following code creates the string "Hello", and then uses
subscript notation to print the first character in the string:
Although you can use subscript notation to retrieve the individual characters in a string, you
cannot use it to change the value of a character within a string in Visual Basic. As a result, you
cannot use an expression in the form string(index) on the left side of an assignment
operator. For example, the following code will cause an error:
The last statement in this code will cause an error because it attempts to change the value of
the first character in the string variable friendName.
In this chapter we will show you how to do the following in Visual Basic:
However, because we can't use subscript notation to change the characters in a string, we will
not be able to show a simple Visual Basic version of pseudocode Program 12-3.
Page 102
Character‐By‐Character Text Processing
Program 12-1 shows the Visual Basic version of pseudocode Program 12-1 in the textbook.
Program 12-1
This program is the VB version of
Program 12-1 in your textbook.
Program 12-2 is the Visual Basic version of pseudocode Program 12-1 in your textbook. This
program uses a For-Next loop to step through all of the characters in a string.
Page 103
Program 12-2 This program is the VB version of
Program 12-2 in your textbook.
Visual Basic provides functions that are similar to the character testing library functions shown
in Table 12-2 in your textbook. The Visual Basic functions that are similar to those functions are
shown here, in Table 12-1.
Page 104
Program 12-3 demonstrates how the Char.IsUpper function is used. This program is the
Visual Basic version of Program 12-4 in your textbook.
Program 12-3
This program is the VB version of
Program 12-4 in your textbook.
Page 105
Inserting and Deleting Characters
Visual Basic strings have methods for inserting and removing (deleting) characters. These
methods are similar to the library modules that are shown in Table 12-3 in your textbook. The
String methods that are similar to those functions are shown here, in Table 12-2.
The first statement declares the String variable str, initialized with "New City". The second
statement declares a String variable named strCopy. In the third statement, the
str.Insert method returns a copy of str with the string "York " inserted, beginning at
position 4. The copy that is returned is assigned to the strCopy variable. If these statements
were a complete program and we ran it, we would see New York City displayed on the screen.
Page 106
Here is an example of how we might use the Remove method:
The first statement declares the String variable str, initialized with "I ate 1000
blueberries!". The second statement declares a String variable named strCopy. In the third
statement, the str.Remove method returns a copy of str with 2 characters removed,
beginning at position 8. If these statements were a complete program and we ran it, we would
see I ate 10 blueberries! displayed on the screen.
Page 107
Chapter 13 Recursion
A Visual Basic procedure or function can call itself recursively, allowing you to design algorithms
that recursively solve a problem. Chapter 13 in your textbook describes recursion in detail,
discusses problem solving with recursion, and provides several pseudocode examples. Other
than the technique of a method recursively calling itself, no new language features are
introduced. In this chapter we will present Visual Basic versions of two of the pseudocode
programs that are shown in the textbook. Both of these programs work exactly as the
algorithms are described in the textbook. Program 13-1 is the Visual Basic version of
pseudocode Program 13-2.
Next, Program 13-2 is the Visual Basic version of pseudocode Program 13-3. This program
recursively calculates the factorial of a number.
Page 108
Program 13-2
This program is the VB version of
Program 13-3 in your textbook.
Page 109
Chapter 14 Object-Oriented Programming
Visual Basic is a powerful object-oriented language. An object is an entity that exists in the
computer's memory while the program is running. An object contains data and has the ability
to perform operations on its data. An object's data is commonly referred to as the object's
fields, and the operations that the object performs are the object's methods.
In addition to the many objects that are provided by Visual Basic, you can create objects of your
own design. The first step is to write a class. A class is like a blueprint. It is a declaration that
specifies the methods for a particular type of object. When the program needs an object of that
type, it creates an instance of the class. (An object is an instance of a class.)
In Visual Basic, a class declaration is stored in its own file, and the file is part of the project in
which you want to use it. To create a class in an existing Visual Basic project, click Project on the
Visual Basic menu bar, and then click Add Class… This is shown in Figure 14-1. You will then see
the Add New Item window, as shown in Figure 14-2.
Page 110
Figure 14-2 The Add New Item window
Notice the Name box at the bottom of the Add New Item window. This is where you type the
name of the file that will contain the class declaration. The filename should be the same as the
name of the class, followed by the .vb extension. For example, if you want to create a class
named Customer, you would use the filename Customer.vb. When you click the Add button, a
file will appear in the code editor, with the first and last line of the class declaration already
written for you.
Chapter 14 in your textbook steps through the design of a CellPhone class. Class Listing 14-1
on the next page is the Visual Basic version of the CellPhone class shown in Class Listing 14-3
in your textbook. Notice that each of the field declarations (lines 3 through 5) begin with the
key word Private. This is an access specifier that makes the fields private to the class. No
code outside the class can directly access private class fields. Also notice that each of the
method headers begin with the Public access specifier. This makes the methods public,
which means that code outside the class can call the methods.
Program 14-1 shows how to create an instance of the CellPhone class. This is the Visual Basic
version of pseudocode Program 14-1.
Page 111
Class Listing 14-1
Page 112
This is the VB version of Program
Program 14-1
14-1 in your textbook.
The statement in line 5 declares a CellPhone variable name myPhone. As described in your
textbook, this is a special type of variable that can be used to reference a CellPhone object.
This statement does not, however, create a CellPhone object in memory. That is done in line
10. The expression on the right side of the = operator creates a new CellPhone object in
memory, and the = operator assigns the object's memory address to the myPhone variable.
As a result, we say that the myPhone variable references a CellPhone object.
We can then use the myPhone variable to perform operations with the object that it
references. This is demonstrated in line 13, where we use the myPhone variable to call the
setManufacturer method. The "Motorola" string that we pass as an argument is
Page 113
assigned to the object's manufacturer field. Likewise, line 14 uses the myPhone variable to
call the setModelNumber method. That causes the string "M1000" to be assigned to the
object's modelNumber field. And, line 15 uses the myPhone variable to call the
setRetailPrice method. This causes the value 199.99 to be stored in the object's
retailPrice field. The statements that appear in lines 18 through 23 get the values that are
stored in the object's fields and displays them on the screen.
Constructors
A class constructor in Visual Basic is a method named New. (The New method is written in the
class as a Public Sub procedure.) When an instance of a class is created in memory, the New
method (the constructor) is automatically executed. Class Listing 14-2 is a version of the
CellPhone class that has a constructor. This is the Visual Basic version of Class Listing 14-4 in
your textbook. The constructor appears in lines 8 through 13.
Page 114
Program 14-2 demonstrates how to create an instance of the class, passing arguments to the
constructor. This is the Visual Basic version of pseudocode Program 14-2. In line 10, an instance
of the CellPhone class is created and the arguments "Motorola", "M1000", and
199.99 are passed to the constructor.
Page 115
Inheritance
The inheritance example discussed in your textbook starts with the GradedActivity class
(see Class Listing 14-8), which is used as a superclass. The Visual Basic version of the class is
shown here in Class Listing 14-3.
Page 116
A subclass of the GradedActivity class named FinalExam is shown in your textbook in
Class Listing 14-9. The Visual Basic version of the FinalExam class is shown here in Class
Listing 14-4:
Page 117
Notice that in line 2 the Inherits GradedActivity clause specifies that the
FinalExam class inherits from a superclass, GradedActivity. Program 14-3 demonstrates
the class. This is the Visual Basic version of pseudocode Program 14-5 in your textbook.
Program 14-3
Page 118
Polymorphism
Your textbook presents a polymorphism demonstration that uses the Animal class shown in
Class Listing 14-10 as a superclass. The Visual Basic version of that class is shown here in Class
Listing 14-5:
Notice that the key word Overridable appears in the method headers for the
ShowSpecies and MakeSound methods (lines 3 and 8). In Visual Basic, you cannot override
a method in a subclass unless it is marked in the Overridable superclass.
The Dog class, which extends the Animal class, is shown in Class Listing 14-11 in your
textbook. The Visual Basic version of the Dog class is shown here in Class Listing 14-6:
Notice that the key word Overrides appears in the method headers for the ShowSpecies
and MakeSound methods (lines 5 and 10). The Overrides key word specifies that the
method overrides a method in the superclass.
Page 119
The Cat class, which also extends the Animal class, is shown in Class Listing 14-12 in your
textbook. The Visual Basic version of the Cat class is shown here in Class Listing 14-7:
Program 14-4, shown here, demonstrates the polymorphic behavior of these classes, as
discussed in your textbook. This is the Visual Basic version of pseudocode Program 14-6.
Program 14-4
Page 120
This is the program's output.
Page 121
Chapter 15 GUI Applications and Event-Driven
Programming
The programs shown in the previous chapters of this booklet were created as Visual Basic
console applications. Console applications display screen output in a console window that can
display only text. In this chapter we will discuss how you can use Visual Basic to create GUI
applications.
In Visual Basic, a GUI application is known as a Windows Forms Application. This is because the
windows in an application's user interface are referred to as forms. To teach you the process of
creating a Windows Forms application in Visual Basic, we will use a simple, step by step tutorial
to create the test averaging application that is discussed in Chapter 15's In the Spotlight
sections, appearing on pages 557 through 559 and 562 through 564. Make sure you've read
that material before continuing.
Step 2: Click the File menu, then click New, then click Project... You should see the New
Project window shown in Figure 15-1. As shown in the figure, make sure Visual
Basic is selected on the left side of the screen, and Windows Forms Application is
selected in the center part of the screen. For the project name, Type Test
Average. Click the OK button.
Step 3: The Visual Studio environment should appear similar to Figure 15-2. Look at the
figure carefully and locate the Toolbox, the Solution Explorer window, the
Properties window, and the Designer window. If you do not see all of these
windows displayed on your screen, go to Step 4. If you see all of these windows,
then go to Step 5.
Page 122
Figure 15-1 New Project window
Page 123
Step 4: In this step you will make sure your Visual Basic environment appears as that
shown in Figure 15-2.
If you do not see the Toolbox window displayed as shown in Figure 15-2,
perform the following:
Click View on the menu bar, and then click Toolbox. This should cause the
Toolbox window to appear.
In the Toolbox window, locate the Autohide button, which appears as a
pushpin icon (circled in Figure 15-2). Make sure the pushpin is pointing
down, as shown in the figure. If it is not pointing down, click it. This will
make the Toolbox window remain on the screen.
If you do not see the Solution Explorer window displayed as shown in Figure 15-
2, perform the following:
Click View on the menu bar, and then click Solution Explorer. This should
cause the Solution Explorer window to appear.
In the Solution Explorer window, locate the Autohide button, which
appears as a pushpin icon (circled in Figure 15-2). Make sure the
pushpin is pointing down, as shown in the figure. If it is not pointing
down, click it. This will make the Toolbox window remain on the screen.
If you do not see the Properties window displayed as shown in Figure 15-2,
perform the following:
Click View on the menu bar, and then click Properties Window. This
should cause the Properties window to appear.
In the Properties window, locate the Autohide button, which appears as a
pushpin icon (circled in Figure 15-2). Make sure the pushpin is pointing
down, as shown in the figure. If it is not pointing down, click it. This will
make the Toolbox window remain on the screen.
If you do not see the Designer window displayed with the blank form, as shown
in Figure 15-2, perform the following:
Inside the Solution Explorer double-click Form1.vb. This should cause the
Designer Explorer window to appear.
Page 124
Step 5: In Chapter 15 you learned that a GUI component has properties that determines
its appearance. In Visual Basic you can use the Properties window to change a
component's property.
For example, a form (same thing as a window) has a Text property that
determines the text displayed in the form's title bar. If you look at the Designer
window right now, you should see that the form's title bar displays the text
"Form1". If we want to display something else in the form's title bar, we need to
change the form's Text property. Let's try it. Perform the following:
Page 125
Figure 15-4 New text displayed in the form's title bar
Step 6: GUI components are commonly referred to as controls in Visual Basic. The
Toolbox window shows all of the controls that you can place on a form. The
controls are grouped into categories. Locate the Common Controls group, as
shown in Figure 15-5. (You might have to scroll in the Toolbox.)
Notice that one of the items shown in this group is the Label. Double-click the
Label control in the Toolbox window. This creates a new Label control on the
form, as shown in Figure 16-6.
Page 126
Figure 15-5 The Common Controls group
Page 127
Step 7: Notice that a thin, dotted border appears around the Label control. This
indicates that the Label control is selected. If you click anywhere in the Designer
window outside the Label that you just placed, you will deselect the Label and
the border will disappear. To select the Label again, just click it with the mouse
and the border will reappear around it.
Now you will change the text displayed by the Label control that you just placed
on the form. Make sure the Label control is selected, and then do the following:
Now you will change the Label control's Name property. Recall from your
textbook that a control's name identifies the control in your program's code. If
you refer to Figure 15-11 on page 577 in your textbook, you will see that the
Label control you just created should have the name test1Label. Make sure the
Label control is selected, and then do the following:
Page 128
Figure 15-7 Label control's Text property changed
Page 129
Step 8: When a control is selected on a form, you can click and drag the control to
reposition it. Make sure the Label control that you just placed on the form is
selected. Use the mouse to drag the control just a bit to the right, and just a bit
below its current location. The form should appear similar to Figure 15-9.
Step 9: Create another Label control on the form. Change its Text property to Enter the
score for test 2: and change its Name property to test2Label.
Then, create another Label control on the form. Change its Text property to
Enter the score for test 3: and change its Name property to test3Label.
Position the Label controls so the form appears similar to Figure 15-10.
Step 10: Now you will create a TextBox control on the form. Locate the TextBox control in
the Toolbox window (in the Common Controls group) and double-click it. This
creates a TextBox control on the form. Use the mouse to move the control to the
approximate location shown in Figure 15-11.
With the TextBox control that you just placed still selected, use the Properties
window to changes the control's Name property to test1TextBox.
Page 130
Figure 15-10 Label controls created and positioned
Page 131
Step 11: Create another TextBox control on the form, and change its Name property to
test2TextBox.
Then, create another TextBox control on the form, and change its Name
property to test3TextBox.
Position the TextBox controls so the form appears similar to Figure 15-12.
Step 12: Create another Label control on the form. Change its Text property to Average
and change its Name property to resultLabel. Position the control so the form
appears similar to Figure 15-13.
Step 13: Create another Label control on the form and make the following property
settings:
Page 132
Position the control so the form appears similar to Figure 15-14.
Page 133
Step 14: Double-click the Button control in the Toolbox. (You will find it in the Common Controls
group.) This creates a Button control on the form. With the Button control that you just
created selected, make the following property settings:
With the Button control that you just created selected, you can click and drag
the small squares that appear along its border to resize the control. Enlarge the
button so you can see all of the text displayed on its face. Then, move the button
so it is in the approximate location shown in Figure 15-15.
Step 15: Create another Button control on the form and make the following property settings:
Page 134
Figure 15-16 Exit button created, resized, and positioned
Step 16: Now we will write an event handler for the calcButton control. The event handler
will execute any time the button is clicked. Program 15-1 in your textbook (on
page 563) shows the algorithm in pseudocode.
Double-click the Calculate Average button in the Designer window. This opens
the code editor and creates the event handler code template shown in Figure 15-
17. Complete the event handler by writing the code shown Figure 15-18.
Step 17: Now we will write an event handler for the exitButton control. The event
handler, which will execute any time the button is clicked, will end the program.
First, switch back to the Designer window by clicking the tab that reads Form1.vb
[Design] at the top of the code editor. The tab is shown in Figure 15-19. Then,
double-click the Exit button in the Designer window. This creates a code
template for the exitButton_Click event handler. Figure 15-20 shows how
you are to complete the event handler. Inside the code template, simply write
this statement:
Me.Close()
Step 17: Press F5 on the keyboard to run the program. If you've typed the code correctly,
the application's form should appear as shown in Figure 15-21. Enter some valid
numeric test scores into the TextBox controls and then press the Calculate
Page 135
Average button to see the average displayed. When you are finished, click the
Exit button to end the program.
Page 136
Figure 15-18 Completed code for the calcButton_Click event handler
Figure 15-19 Using the Form1.vb [Design] tab to switch to the Designer window
Page 137
Figure 15-20 Completed code for the calcButton_Click event handler
Page 138