Standard Grade Computing Studiescomputing.homedns.org/Downloads/S Grade Topics... · Standard Grade...
-
Upload
duongduong -
Category
Documents
-
view
225 -
download
1
Transcript of Standard Grade Computing Studiescomputing.homedns.org/Downloads/S Grade Topics... · Standard Grade...
Programming in Visual Basic Express
C Wilson, 2007 - 2 -
CONTENTS
Page
GETTING STARTED
Creating a Visual Basic Project ……………………………………………………….…. 3 Storing your Visual Basic Projects ………………………………………………………… 6
FOUNDATION
Displaying information (TextBox) …………………………………………………………. 9 Displaying Several Lines of Information (ListBox) ……………………………..………. 10 Simple Calculations ………………………………..…………………….………….…… 12 Variables & Data Types ……………….………………………………...……………….. 13 Worked Example – Area ……………………………………………………………….… 14 Installing the PrintForm Component ……………….………………….……………….. 18 Using the PrintForm Component ………………..……………………………………….. 19 SQA Task – Food Mixers ……………………….……………………………………….. 23 Loops (FOR Loop) ………………………………..……………………………………….. 25 Worked Example – Punishment Exercise! …………………………………………...... 26 SQA Task – Car Stickers ………………………………………………………………… 29
GENERAL
Modules & Sub-routines (design & code) …………………………….………………... 33 IF … THEN (Selection) ………………………….………………….….………………... 35 Worked Example – Car Sales ………………………….….…………………………….. 36 SQA Task – School Heating ………………………..….……………….……………….. 39 User Interface – MessageBox …..………………..….……………….………………… 41 User Interface – InputBox ……………………………………….……………………….. 44 Worked Example – Currency Converter …………….…………….….………………... 46 SQA Task – Car Hire …………………………………………………………..…………. 51 Running Totals & Counters ………………………..……………………………………… 53 Loops & Control Variables …………………………….…….…….……………….….….. 54 Worked Example – Rainfall Program ………………………….….…………………….. 56 SQA Task – Over Forty …………………………………..……..……….……………….. 61
CREDIT
Complex Conditions – AND / OR ………………..…………….……………….……….. 65 Loops (WHILE Loop) ……………………………………………………………………… 65 Input Validation – MessageBoxes / Pre-defined & user-defined functions ………….. 66 Program Testing ………………………………………………………………………….. 72 Worked Example – Can You Drive? ……………………………………………………. 73 SQA Task – Language Course ………………………………………….…….………... 77 Random Numbers ………………………………………………………………………….. 79 Boolean Variables ………………………………………………………………………… 80 Worked Example – Dice Game ………………………………………………………… 81 SQA Task – Guess Number ……………………………………………………………... 85 Arrays ………………………………………………………………………………………. 87 Worked Example – Golden Ticket ……………………………………………………… 91 SQA Task – Charity Lottery ……………………….……………………………………... 95
Programming in Visual Basic Express
C Wilson, 2007 - 3 -
Creating a new Visual Basic Project
When you launch Visual Basic Express your screen should look like the one below.
Click as shown to create a new programming project.
Before we can start programming, we provide Visual Basic with a name for our project.
Make sure „Windows Application‟ is selected as below
Enter „First Program‟ for our project name and click „OK‟.
Programming in Visual Basic Express
C Wilson, 2007 - 4 -
You will arrive at the „form design‟ screen like the one below.
We will use this screen to create the user interface for our programs. To create our user interface we will use the „toolbox‟ located on the left hand side of our screen.
Hover your mouse over the toolbox icon and click the little „pin‟ icon to keep the toolbox on
your screen as shown below.
Programming in Visual Basic Express
C Wilson, 2007 - 5 -
Your screen should now appear like the one below.
We will use the toolbox to create objects on our blank form by dragging them.
Users of our program use these objects to enter inputs and view outputs while our programs are
running.
The toolbox looks very complicated at first but don‟t worry! We‟re only going to use a few of the
items in it to create our programs.
Programming in Visual Basic Express
C Wilson, 2007 - 6 -
Storing your Visual Basic programming projects.
As with all your previous practical work in Computing, your programming work should be stored in
your „home directory‟ on the school‟s file server.
The Visual Basic default setting is to save your programming work on your local computer‟s hard
disk (it‟s C: drive), and we need to change this.
From the „Tools‟ menu select „Options‟ as shown.
In the Options window, select „Projects and Solutions‟ then click the button shown to select
a new location.
Navigate to your programming folder. This should be located inside the Computing folder
inside your home directory. Ask your teacher for help if necessary.
If you move to another machine in your class, you must repeat these steps again.
Programming in Visual Basic Express
C Wilson, 2007 - 7 -
Now we‟re ready to start programming…
Hooray!
Programming in Visual Basic Express
C Wilson, 2007 - 9 -
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'My First Program 'Visual Basic Express 'Your name 'Today's date TextBox1.Text = "Hello World!" End Sub End Class
Start typing here
Finish typing here
Displaying Information (TextBox) In our first program we shall get Visual Basic to display a message in what is called a „textbox‟.
Create a „command button‟ and a „textbox‟ as shown below.
Double click the command button to enter program code below…
Run your program and correct any mistakes if necessary. „Save All‟ when done.
Exercise:
Write a program to make the name of your favourite band / singer appear on screen
Programming in Visual Basic Express
C Wilson, 2007 - 10 -
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Listbox Program 'Visual Basic Express 'Your name 'Today's date ListBox1.Items.Add("Hello World!") ListBox1.Items.Add("Computing is fun!") ListBox1.Items.Add("") ListBox1.Items.Add("And, Programming is easy!") End Sub End Class
Start typing here
Finish typing here
Displaying Several Lines of Information (ListBox) So far we have looked at getting Visual Basic to display a single line of text in a text box. In this program we shall get Visual Basic to display a message several lines long in what is called a „listbox‟.
Create a new project called „ListBox‟, then add a „command button‟ and a „listbox‟ as shown below.
Double click the command button to enter program code as follows…
Run your program and correct any mistakes if necessary. „Save All‟ when done.
Programming in Visual Basic Express
C Wilson, 2007 - 11 -
SUMMARY Copy the following into your jotter.
Command Button Allows the user to run program code when pressed.
Textbox
Allows the program to display a single line of text.
E.g.
textbox1.text=”Hello”
Listbox
Allows the program to display multiple lines of text.
E.g.
listbox1.items.add(“Hello”)
listbox1.items.add(“My name is Elvis”)
To clear a listbox of text, enter
listbox1.items.clear()
To display a blank line, enter
listbox1.items.add(“”)
Comments
Any text starting with „ will be ignored by the computer.
These lines are known as comments and are used by
programmers to include short notes about the program.
Every program you write should contain some comments.
Programming in Visual Basic Express
C Wilson, 2007 - 12 -
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click 'Simple Calculations Program
'Visual Basic Express 'Your name 'Today's date TextBox1.Text = ("") 'clear the contents of textbox1 if any TextBox2.Text = ("") 'clear the contents of textbox2 if any ListBox1.Items.Clear() 'clear the content of listbox1 if any ListBox1.Items.Add("4 + 5") ListBox1.Items.Add(4 + 5) TextBox1.Text = 4 + 5 TextBox2.Text = "4+5" End Sub End Class
Using speech marks makes the program display the
exact text inside the speech marks.
Without speech marks the computer can display the
answer to a calculation.
Run your program to see what happens.
Do you understand it?
Simple Calculations
Create a new project called „Calculate‟.
Add a „command button‟, a „listbox‟ and two „textboxes‟ as shown below.
Double click the command button to enter program code as follows…
Run your program and correct any mistakes if necessary. „Save All‟ when done.
Textbox1
Textbox2
Programming in Visual Basic Express
C Wilson, 2007 - 13 -
Variables
Variables provide temporary storage for information that will be needed while a program is running.
A programmer can imagine a variable as being a box into which information can be placed. When
a programmer wants to store something, she or he gives a storage location a name and tells the
computer what to put there. Using that name later (the name of the variable), you can get out
(recall) the stored information at any time.
For example, a program to calculate the area of a rectangle might use the following variables.
When the program is running the data can be entered by the user and then stored, or it can be
automatically calculated by the computer and then stored. The stored data may change every time
the program is run, but the variable names remain the same.
A programmer may have as many variables in a program as she or he
needs. All that matters is that the variables have different names.
Data Types
Variables can store different types of data. The above example stores integer numbers, but there
are others. Before a variable can be used in a program it must be „declared‟.
Data Type Examples Visual Basic declaration
Integer 3, 7, -2, -99, 54 Dim length as integer
Decimal 1.5, 3.14, -6.758 Dim length as decimal
String Mary, joe, dog, Dim name as string
Sounds confusing? Don‟t worry, look at the following example…
Programming in Visual Basic Express
C Wilson, 2007 - 14 -
Worked Example - Area
We are going to write a program to allow the user to enter the length and breadth of a rectangle.
The program will then calculate and display the area.
Create a new Visual Basic project and call it „‟Area‟.
Create a „command button‟, three „labels‟ and three „textboxes‟ as shown below.
Method:
I will take user input from two textboxes and store them in
variables called ‘length’ and ‘breadth’. I’ll then get the
computer to perform a calculation to find the area and store it
in a variable called ‘area’. Finally, I’ll display the area in a
third textbox.
To avoid confusion I’ll label all the objects on the screen.
Textbox1 Textbox2 Textbox3
Programming in Visual Basic Express
C Wilson, 2007 - 15 -
Changing „button‟ and „label‟ text To change the text for our command button and labels do the following:
Click once on the command button to highlight it.
In the „Properties‟ window at the bottom right of the screen change the „Text‟ value from „Button1‟ to „Calculate Area‟ as shown below.
Your command button should now look like this (you may need to re-size it a little to see all the text).
Repeat the above steps to change the text on the labels to „length‟, „breadth‟, and area. Remember to highlight them first!
Programming in Visual Basic Express
C Wilson, 2007 - 16 -
Your final layout should look like the one below.
Now double click the command button to enter program code as follows… (Notice some of the code has already been entered for you – you will get used to this)
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click 'Area Program 'Visual Basic Express 'Your name 'Today‟s Date Dim length As Decimal 'Create variables Dim breadth As Decimal Dim area As Decimal length = TextBox1.Text 'Get inputs and store them breadth = TextBox2.Text area = length * breadth 'Calculate Area and store it TextBox3.Text = area 'Display Area End Sub End Class
Start typing here
Finish typing here
Programming in Visual Basic Express
C Wilson, 2007 - 17 -
Run your program to test it works as expected.
First, enter values for length and breadth.
Now click the „Calculate Area‟ command button.
Using a calculator if needed, check that the expected result is the same as the actual result.
„Save All‟ when done.
Programming in Visual Basic Express
C Wilson, 2007 - 18 -
Finishing Touches – Printing Output The PrintForm component for Visual Basic 2005 must be added to the Toolbox before you can
use it for the first time1.
Ask your teacher if you should carry out the steps below to add the
PrintForm component to your Visual Basic toolbox. This should be a
„one-off‟ task for you to complete at the machine you use for your
programming.
Installing the PrintForm Component
The following procedure describes how to add the component to the Toolbox.
To add the PrintForm component to the Toolbox
1. Click the „Common Controls‟ heading in the toolbox to highlight it.
2. From the Tools menu, select Choose Toolbox Items.
3. In the Choose Toolbox Items dialog box, select PrintForm from the .NET
Framework Components list and click the checkbox next to it.
4. Click OK to add it to the Toolbox.
1 The PrintForm Component is available as an additional download from Microsoft.com. If necessary, search for
‘PrintForm Component’. Once installed on a computer, each individual user wishing to use it must add it to their own
Visual Basic toolbox.
Programming in Visual Basic Express
C Wilson, 2007 - 19 -
Using the PrintForm Component Once the PrintForm Component is installed, you can create an extra command button on your program forms to allow the user to print at any time when the program is running.
Drag the PrintForm tool onto your form.
Notice that it does not actually appear on the form itself. It is displayed at the bottom of the window as shown.
Click once on the PrintForm icon and change the „PrintAction‟ from „PrintToPrinter‟, to
„PrintToPreview as shown. This will allow you to check your printout on screen before
sending it to the printer.
Programming in Visual Basic Express
C Wilson, 2007 - 20 -
Now we need a command button to press in order to print our program while it is running…
Drag another command button onto your layout and label it „Print‟.
Double-click on this new button and add the following one line of code.
Finish off by adding a label and entering your name on the form and by changing the text
title of the form to Area problem.
Your final screen should look like the one below.
Run your program and make sure it all works. „Save All‟ when you are happy with it.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintForm1.Print() 'allows the user to print form End Sub
Programming in Visual Basic Express
C Wilson, 2007 - 21 -
SUMMARY Your finished code should look like the code below. Note that it actually contains two „subroutines‟,
one for each command button.
Exercise For each of the following tasks, make sure that all objects are labelled and that the final output can be printed by the user. Let your teacher see each program running when finished.
1. Write a program to enter three numbers and calculate the total.
2. Modify your program above to calculate the average of the numbers.
3. Write a program to calculate the area of a circle.
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click 'Area Program 'Visual Basic Express 'Your name 'Today‟s Date Dim length As Decimal 'Create variables Dim breadth As Decimal Dim area As Decimal length = TextBox1.Text 'Get inputs breadth = TextBox2.Text area = length * breadth 'Calculate Area TextBox3.Text = area 'Display Area End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintForm1.Print() 'allows the user to print form End Sub End Class
Programming in Visual Basic Express
C Wilson, 2007 - 22 -
SQA Assessment Task
Practical Abilities
Foundation Level
Your mark for this task will be used by the Scottish Qualifications Authority in deciding your overall award.
Programming in Visual Basic Express
C Wilson, 2007 - 23 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK FOOD MIXERS
a programming task assessing grades 5, 6 and 7
Name ________________________________________ Class _______________
Centre ________________________________________ Date _______________
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all instructions carefully, use hardware and software properly and write your report neatly.
Instead of being paid an hourly rate, some workers are paid for the number of items they make each
week. Ann Hay assembles 86 food mixers and is paid £3.50 for each one. You are required to write a
program to calculate and display her earnings. The user should be asked to enter the number of
mixers and payment for each mixer. You should use meaningful variable names such as mixers.
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
2 LIST STEPS - Design 2 marks
The main steps are Calculate Wage, Get Inputs, and Show Wage.
Write the steps in the correct order below.
1 __________________________________________________________________________
2 __________________________________________________________________________
3 __________________________________________________________________________
Programming in Visual Basic Express
C Wilson, 2007 - 24 -
3 ENTER PROGRAM - Implementation 5 marks
Create the program. Include internal commentary. Correct any mistakes that you make. Save your
program.
4 TEST PROGRAM - Testing 4 marks
Work out Ann’s wage for assembling 86 mixers at £3.50 each. You may use a calculator.
What was your answer? £___________
Run the program to find its answer for 86 mixers at £3.50 each.
What was the program’s answer? £___________
Work out Ann’s wage for assembling 90 mixers at £4.10 each. You may use a calculator.
What was your answer? £___________
Run the program to find its answer for 90 mixers at £4.10 each.
What was the program’s answer? £___________
Compare your answers with the program’s answer and write a comment.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name on them. One should show your code and the other a run using one set
of test data given above.
6 SUGGEST IMPROVEMENT - Evaluation 2 marks
Write down one way in which your program could be better.
____________________________________________________________________________
____________________________________________________________________________
7 JUDGE PERFORMANCE - Evaluation 2 marks
Read this task sheet again. Describe how well you think you have done the task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Programming in Visual Basic Express
C Wilson, 2007 - 25 -
Loops (FOR loop) In computer programming, a loop is an instruction or sequence of instructions that is continually
repeated over and over. Instead of typing out the code 10 times we can tell the computer to repeat
a single line of code until it has done it 10 times.
Example
In a new Visual Basic project, create a „command button‟ and a listbox as shown below.
Double click the command button to enter program code as follows…
Run your program. The message „Hello‟ should be displayed ten times.
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click Dim NumberOfTimes As Integer 'create a variable for our loop For NumberOfTimes = 1 To 10 'loop ten times ListBox1.Items.Add("Hello") Next End Sub End Class
Start typing here
Finish typing here
Programming in Visual Basic Express
C Wilson, 2007 - 26 -
Worked Example: Punishment Exercise Program Task Design and write a program to write 100 punishment exercise „lines‟ for a naughty pupil. The line
to be repeated will be entered by the pupil using the keyboard (screen design on next page).
Design
1. Get user to input „line‟ in textbox
2. Do 100 times
3. Display „line‟ in listbox
4. Display a blank line in listbox
5. Next
Code
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)Handles Button1.Click 'Punishment Exercise Program 'Visual Basic Express 'by Me 'June 07 'declare variables Dim line As String Dim no_of_lines As Integer line = TextBox1.Text ' get user input 'loop 100 times to complete lines For no_of_lines = 1 To 100 ListBox1.Items.Add(line) 'display punishment exercise line ListBox1.Items.Add("") 'display a blank line Next End Sub End Class
Method:
I have to write a program to write punishment exercises
lines. The program will take user input in a textbox and
then repeat it 100 times in a listbox when a command
button is pressed. I will use a FOR loop to repeat the lines.
To avoid confusion I’ll label all the objects on the screen.
Programming in Visual Basic Express
C Wilson, 2007 - 28 -
SQA Assessment Task
Practical Abilities
Foundation Level
Your mark for this task will be used by the Scottish Qualifications Authority in deciding your overall award.
Programming in Visual Basic Express
C Wilson, 2007 - 29 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK CAR STICKERS
a programming task assessing grades 5, 6 and 7
Name ________________________________________ Class _______________
Centre ________________________________________ Date _______________
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all instructions carefully, use hardware and software properly and write your report neatly.
You are required to write a program for a firm that
makes stickers for car windows. The user should input the
sticker text at the keyboard. The program will display
that text four times as shown right. There should be a
blank line after each line of text. A FOR … NEXT loop
should be used.
YOU ARE DRIVING TOO CLOSE!
YOU ARE DRIVING TOO CLOSE!
YOU ARE DRIVING TOO CLOSE!
YOU ARE DRIVING TOO CLOSE!
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
2 LIST STEPS - Design 2 marks
Write down the main steps in the program.
Programming in Visual Basic Express
C Wilson, 2007 - 30 -
3 ENTER PROGRAM - Implementation 5 marks
Create the program. Include internal commentary. Correct any mistakes that you make. Save it.
4 TEST PROGRAM - Testing 3 marks
Describe how you tested that your program worked.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name on them. One should show your code and the other a run.
6 WRITE INSTRUCTIONS - Documentation 3 marks
Write a short explanation on how to run and use your program after it has been loaded.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
7 SUGGEST IMPROVEMENT - Evaluation 2 marks
Write down one way in which your program could be better.
____________________________________________________________________________
____________________________________________________________________________
8 JUDGE PERFORMANCE - Evaluation 2 marks
Read this task sheet again. Describe how well you think you have done the task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Programming in Visual Basic Express
C Wilson, 2007 - 31 -
Checklist Before moving on to the next section, make sure you are fully happy
with the following essential skills…
User Interface
Creating a TextBox
Creating a ListBox
Creating Command Buttons
Creating Labels
Program Code
Using a TextBox to obtain input
Using a TextBox to display output
Using a ListBox to display output
Creating variables (and data types)
Performing calculations
FOR loop
Program comments
You MUST let your teacher know if you are unsure about anything before continuing.
Programming in Visual Basic Express
C Wilson, 2007 - 33 -
MODULES AND SUBROUTINES
When programmers have to write big long
programs, they divide the program into
sections and just write a small section
(module) at a time.
You are not going to write a big long program, but you are going to learn how to divide a program
into sections (modules).
In Visual Basic these sections are called subroutines. Each subroutine starts with Sub and ends
with End Sub.
Here is a program you have done before. However, this time we shall use subroutines to write it.
Tip: One of the best ways to break a problem up into smaller ones is to split it into three main
sections to start with – input, process and output.
Example
Design and write a program to calculate the area of a rectangle. The
length and breadth are to be entered from the keyboard.
DESIGN
Top Level 1. Get inputs
2. Calculate area
3. Display area
Refinements 1.1 Prompt for and input length
1.2 Prompt for and input breadth
2.1 Set area to length * breadth
3.1 Display message and area
The „top level‟ of our
design is a list of what our
program will need to do.
The „refinements‟ allow
us to specify exactly how
these main steps will be
carried out.
Note the numbering
system used for each of
the refinements.
Area Problem
Get inputs
Calculate Area
Display Area
Programming in Visual Basic Express
C Wilson, 2007 - 34 -
Program Code
Note that this program also makes good use of internal comments throughout. You should do the
same in all of your own programs.
Open your earlier project called „Area‟ and change the code so it matches that above.
„Save All‟ when you have it working.
Public Class Form1 'Area Program with Subroutines 'Visual Basic Express 'C Wilson 'June 2007 'All variables must be declared before use Dim length As Decimal Dim breadth As Decimal Dim area As Decimal
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Main Program / Top Level 'Steps here are used to call subroutines get_inputs() calculate_area() display_area() End Sub Sub get_inputs() 'Prompt for, and store length and breadth length = TextBox1.Text breadth = TextBox2.Text End Sub Sub calculate_area() 'store the value for area in a variable area = length * breadth End Sub Sub display_area() 'display the stored value for area TextBox3.Text = area End Sub End Class
DESIGN
Top Level
1. Get inputs
2. Calculate area
3. Display area
Refinements
1.1 Prompt for and input length
1.2 Prompt for and input breadth
2.1 Set area to length * breadth
3.1 Display message and area
Using subroutines, shared
variables (variables used by
more than one subroutine),
are declared at the very start
of the program code. THIS IS
IMPORTANT!!!
Programming in Visual Basic Express
C Wilson, 2007 - 35 -
IF … THEN (Selection)
So far our programs have done everything we have asked them to –
all the instructions we have entered have been carried out by the
computer.
Sometimes we might want the computer to choose whether or not to
run some of our code. This is known as „selection‟ and can be very
useful when programming.
Examples
If age is 19 then you can vote appears on the screen. If age is 12 then nothing happens.
Rather than do nothing in some situations, you can have have alternative code by using the
„else‟ command.
Let‟s look at a worked example…
If age > 17 Then TextBox1.Text = "You can vote" End If
If test_score < 50 Then TextBox1.Text = "Sorry, you failed." Else TextBox1.Text = "Well done, you passed!" End If
Programming in Visual Basic Express
C Wilson, 2007 - 36 -
Worked Example – Car Sales Joe Quimby owns a second-hand car showroom. He is a very
tough boss and sets sales targets of £50,000 per day for each
of his staff!
At the end of each day he gathers in sales figures from his
staff for the day. No employees are allowed to sell less than
five cars per day or they‟re fired! Also, the total sales for the
day for each employee must be greater than £50,000 or they
will also be fired!
Write a program to calculate the total sales of five cars for an employee. The program should then
display an appropriate message saying whether the employee is fired or not. Call your Visual
Basic project „Car Sales‟.
Screen Design
Two command buttons – Calculate Total and Print
Seven textboxes – 5 for car sales, 1 for total, 1 for message
Labels as appropriate
Method:
The program will take 5 user inputs (car1, car2, car3, car4 and car5)
from TextBoxes when a command button is pressed.
I’ll then calculate the total sales for the employee.
Finally, I’ll display the total sales and then, using an IF condition, I’ll
display an appropriate message about the employee.
Programming in Visual Basic Express
C Wilson, 2007 - 37 -
Program Code & Design
Public Class Form1 'Car Sales Program 'Visual Basic Express 'by Me 'June 07 'declare variables Dim car1 As Decimal Dim car2 As Decimal Dim car3 As Decimal Dim car4 As Decimal Dim car5 As Decimal Dim total As Decimal Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click 'Main Program / Top Level get_sales() calculate_total() display_message() End Sub Sub get_sales() 'input sales data car1 = TextBox1.Text car2 = TextBox2.Text car3 = TextBox3.Text car4 = TextBox4.Text car5 = TextBox5.Text End Sub Sub calculate_total() 'calculate total sales total = car1 + car2 + car3 + car4 + car5 End Sub Sub display_message() 'display program outputs TextBox6.Text = total If total > 50000 Then TextBox7.Text = "Well done!" Else TextBox7.Text = "You're fired!" End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click PrintForm1.Print() End Sub End Class
Top Level
1. Get sales
2. Calculate total sales
3. Display outputs
Refinements
1.1 Prompt for and input car1 price
1.2 Prompt for and input car2 price
1.2 Prompt for and input car3 price
1.2 Prompt for and input car4 price
1.2 Prompt for and input car5 price
2.1 Set total = car1+car2+car3+car4+car5
3.1 Display total in textbox 6 3.2 if total >£50,000 then 3.3 Display “Well done!” in textbox 7 3.4 else 3.5 Display “You‟re fired!” in textbox 7 3.6 end if
Programming in Visual Basic Express
C Wilson, 2007 - 39 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK SCHOOL HEATING
a programming task assessing grades 3, 4, 5 and 7
Name ________________________________________ Class _______________
Centre ________________________________________ Date _______________
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all instructions carefully, use hardware and software properly and write your report neatly.
The heating system in a school should be switched on if the average temperature is less than 17
degrees Celsius (˚C). The average temperature is found from the temperatures in the Art, English and
Music Departments. You are required to write a program that allows the user to input the three
temperatures. The program calculates and displays the average temperature then displays ‘Heating
should be on.’ or ‘Heating should be off.’ as appropriate.
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
2 LIST STEPS - Design 6 marks
On a separate sheet of paper, show the main steps and refinements.
3 ENTER PROGRAM - Implementation 5 marks
Create the program. Include internal commentary. Correct any mistakes that you make. Save it.
Programming in Visual Basic Express
C Wilson, 2007 - 40 -
4 TEST PROGRAM - Testing 5 marks
Complete the table below, by entering test data. You should enter sets of three temperatures then
calculate the average and indicate whether heating should be on or off. The first set should have an
average below 17˚C, the second set an average of exactly 17˚C and the third average should be above
17˚C. Complete the last two columns by recording the program’s output with your chosen test data.
Art
temperature
English
temperature
Music
temperature
calculated
average
temperature
calculated
on or off
program’s
average
temperature
program’s
on or off
Compare your calculations with the program’s output and write an appropriate comment.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name on them. One should show your code and the other a run using one of
your sets of test data.
6 SUGGEST IMPROVEMENT - Evaluation 2 marks
Write down one way in which your program could be better.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
7 JUDGE PERFORMANCE - Evaluation 2 marks
Read this task sheet again. Describe how well you think you have done the task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Your mark for this task will be used by the Scottish Qualifications Authority in deciding your overall award.
Programming in Visual Basic Express
C Wilson, 2007 - 41 -
Some new interface tools…
So far, all of our user interface objects have been created using the toolbox to drag objects onto
our forms. This is fine, but our screen might become „cluttered‟ with
textboxes and buttons etc. that we have no further use for after the user
has entered their information.
Visual Basic allows the programmer to use other techniques to show
some special objects on the screen only while the program is running
and at a time chosen by the programmer.
Two common examples are the „MessageBox‟ and the „InputBox‟.
The MessageBox A „MessageBox‟ displays a message in a „dialogue box‟ and then waits for the user to click a button
before going on with the program.
Look at the following examples and the program code required to produce them on screen.
[The word „Demo‟ is taken from the project title.]
[Rather than use the project title, the programmer can code their own title for each MessageBox. Notice that this code requires two commas side-by-side.]
MsgBox("Bye bye!")
MsgBox("Bye bye!", , "Finish Program")
Programming in Visual Basic Express
C Wilson, 2007 - 42 -
[See the „critical‟ graphic!]
The examples above are all very easy to add to your programs. The window displays a message
and waits for the user to click OK. The user has no choice but to click OK.
Now look at the following example,
This a little more interesting – the user has a choice of
buttons to click!
This might seem all too easy, but the code required to make this choice actually work is a little
more complicated.
We have already learned that to write code to deal with selection or choice we use the IF
command. With this in mind here‟s what the design for the above MessageBox should look like…
Design
1. Prompt user to make choice
2. If choice = “yes” then
3. Exit Program
4. End if
Now let‟s look at actually creating some MessageBoxes…
MsgBox("Bye bye!", MsgBoxStyle.Critical, "Finish Program")
MsgBox("Are you sure you want to exit?", MsgBoxStyle.YesNo, "Finish Program")
Notice that we don‟t actually need to use an
„else‟ in this case. If the user clicks „No‟ then
the program will not finish.
Programming in Visual Basic Express
C Wilson, 2007 - 43 -
To create an „Exit‟ command button with choice…
To create a „Print‟ command button with choice…
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click 'Code for Exit command button with message box Dim response As Integer response = MsgBox("Are you sure you want to exit?", MsgBoxStyle.YesNo, "Finish Program") If response = vbYes Then End 'Exit program End If End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button3.Click 'Code for printing button with message box Dim response As Integer response = MsgBox("Are you sure you want to print?", MsgBoxStyle.YesNo, "Print") If response = vbYes Then PrintForm1.Print() 'Print End If End Sub
Exercise
For your earlier programs, „Total‟, „Average‟ and „Area‟, do the following…
Add „Exit‟ and „Print‟ command buttons to them that will present the user with a choice as
shown above. Be sure to „Save All‟ your work when done.
Programming in Visual Basic Express
C Wilson, 2007 - 44 -
The InputBox
An InputBox is a small window which only appears on the screen while the program is running and
input is needed from the user. The user‟s input can then be stored in a variable so that the rest of
the program can use it.
The InputBox can be especially useful when lots of inputs are
required from the user and creating lots of TextBoxes with labels
would be too time consuming and take up lots of screen space.
The code for an input box looks like this:
Variable_Name = InputBox(“Prompt”, “Title for box”)
The things in italics will be changed to suit your program.
E.g.
The above example will produce this on the screen when the line of code runs:
In this example the variable called „Name‟ would now be storing the data „Darth‟ when the user
clicks OK.
i) T
i
t
l
e
Title
Prompt
Space for input
Dim Name As String Name = InputBox("Please enter your name", "Enter Name")
Programming in Visual Basic Express
C Wilson, 2007 - 45 -
Try this,
Create a new project called „Message‟.
Design a form like the one below.
Enter the code below for your command button.
„Save All‟ when you have it working.
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles
Button1.Click 'InputBox Demo 'Visual Basic Express 'by Me 'June 07 Dim Name As String Name = InputBox("Please enter your name", "Enter Name") 'Display message TextBox1.Text = "Hello " & Name End Sub End Class
Exercise
Modify your program above so that it also asks your age. The program should then display, in
another textbox, a sentence like, „You are 14 years old‟.
Programming in Visual Basic Express
C Wilson, 2007 - 46 -
Worked Example – Currency Converter Write a program to calculate and display a table showing the amount of currency available for each
pound. The program needs the name of the country, the currency and the exchange rate of the
currency. These will be entered from the keyboard by the user. If France is the destination, then a
message should be displayed informing the user of a special offer.
Screen Design
Two command buttons – convert and print.
Three textboxes for output - country, currency and exchange rate.
One listbox – output conversion table.
Labels as appropriate.
Inputboxes for user input.
Method:
The program will take all user inputs (country, currency and exchange
rate) from inputboxes when a command button is pressed. As each is
entered I will display it in a textbox on the screen.
I will display table headings in a listbox and then use a FOR loop to
display the actual conversion table in the listbox.
I’ll use an IF condition to display a special message if the country is
France.
Since the program may be run more than once, I’ll make sure that the
listbox and all the textboxes are cleared at the start of the program.
Programming in Visual Basic Express
C Wilson, 2007 - 47 -
Program Design Top Level
1. Clear previous data
2. Get data
3. Display table
4. Special Offer
Refinements
1.1 Clear Textbox1
1.2 Clear Textbox2
1.3 ClearTextbox3
1.4 Clear Listbox1
2.1 Prompt for and input country
2.2 Display country in textbox1
2.3 Prompt for and input currency
2.4 Display currency in textbox2
2.5 Prompt for and input exchange rate
2.6 Display exchange rate in textbox 3
3.1 Display table headings in listbox columns – pounds and currency
3.2 Display blank line
3.3 Do 20 times
3.4 Display pounds in column 1, pounds*exchange rate in column 2
3.5 Next
4.1 If country is France then
4.2 Display message in listbox – We‟ll convert your currency back for free
4.3 Display message in listbox – We like France!
4.4 End if
Note that only the steps for solving the problem need to be shown in your designs. If you wish to include other buttons such as „Exit‟ and „Print‟, you do not need to add them to your design.
Programming in Visual Basic Express
C Wilson, 2007 - 48 -
Program Code
Public Class Form1 'Currency Converter Program 'Visual Basic Express 'Joe Bloggs 'June 07 Dim country As String Dim currency As String Dim exchange_rate As Decimal Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Main Program clear_data() get_data() display_table() special_offer() End Sub Sub clear_data() 'clear textboxes and listboxes if program has already been run TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" ListBox1.Items.Clear() End Sub Sub get_data() 'Allow user to supply input via inputboxes and display in textboxes country = InputBox("Please enter country...") TextBox1.Text = country currency = InputBox("Please enter currency...") TextBox2.Text = currency exchange_rate = InputBox("Please enter exchange rate...") TextBox3.Text = exchange_rate End Sub Sub display_table() 'Output Table headings ListBox1.Items.Add("Pounds" & VbTab & currency) ListBox1.Items.Add("") 'prints a blank line 'loop to output conversion from 1 to 20 pounds Dim pounds As Integer For pounds = 1 To 20 ListBox1.Items.Add(pounds & VbTab & pounds * exchange_rate) Next End Sub Sub special_offer() 'Display special offer if appropriate If country = "france" Then ListBox1.Items.Add("") ListBox1.Items.Add("We'll convert your currency back for free!") ListBox1.Items.Add("We like France!") End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PrintForm1.Print() End Sub End Class
Top Level
1. Clear previous data
2. Get data
3. Display table
4. Special Offer
Refinements
1.1 Clear Textbox1
1.2 Clear Textbox2
1.3 ClearTextbox3
1.4 Clear Listbox1
2.1 Prompt for and input country
2.2 Display country in textbox1
2.3 Prompt for and input currency
2.4 Display currency in textbox2
2.5 Prompt for and input exchange rate
2.6 Display exchange rate in textbox 3
3.1 Display table headings
3.2 Display blank line
3.3 Do 20 times
3.4 Display table row
3.5 Next
4.1 If country is France then
4.2 Display message in listbox …
4.3 Display message in listbox …
4.4 End if
Programming in Visual Basic Express
C Wilson, 2007 - 50 -
SQA Assessment Task
Practical Abilities
General Level
Your mark for this task will be used by the Scottish Qualifications Authority in deciding your overall award.
Programming in Visual Basic Express
C Wilson, 2007 - 51 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK CAR HIRE
a programming task assessing grades 3, 4, 5 and 7
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all
instructions carefully, use hardware and software properly and write your report neatly.
Cherair Car Hire Company has a range of cars for rent. Charges start at £20 a day for the cheapest
to £70 a day for the most expensive. Cherair requires a program that gives customers printed details
of charges. The program asks the user for a car make, model and daily rate then displays a table of
daily charges for between one and fourteen days. If the make is Ford, a message indicating a gift of
a free road atlas is displayed.
An example of output is shown below. The output from your program may look different but must
meet the specification.
Programming in Visual Basic Express
C Wilson, 2007 - 52 -
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
2 LIST STEPS - Design 6 marks
On a separate sheet of paper, show the main steps and refinements.
3 ENTER PROGRAM - Implementation 5 marks
Enter the program listing. Include internal commentary. Correct any mistakes that you make. Save the
listing.
4 TEST PROGRAM - Testing 5 marks
On a separate sheet of paper, show how you tested that your program worked properly. Use two sets of
test data, one involving a Ford car and one not. Compare your expected output with the program’s output
and write an appropriate comment.
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name in the footer. One should show your listing and the other a run using
one of your sets of test data.
6 SUGGEST IMPROVEMENT - Evaluation 2 marks
Write down one way in which your program could be better.
____________________________________________________________________________
____________________________________________________________________________
7 JUDGE PERFORMANCE - Evaluation 2 marks
Read this task sheet again. Describe how well you think you have done the task.
____________________________________________________________________________
____________________________________________________________________________
Programming in Visual Basic Express
C Wilson, 2007 - 53 -
RUNNING TOTALS & COUNTERS
Often a program will require the user to enter a list of data that includes numbers. The program
may be required to output the total of this numeric data or output a count of the number of times a
specific item of data was entered.
Keeping a „running total‟ is easy – simply add each number
entered onto the value of a variable that might be called „total‟.
Keeping a „count „ might require a little more care – if a certain condition is
met, then add one to the value of our counter.
In either case, it is very important to set the value of the running total and counter to zero
before the user starts to enter their data.
Examples
In a quiz program, if the user‟s answer is correct, one is
added to the count, if not, nothing happens, so „count‟ stays
the same.
In a program adding a sequence of
numbers, each numbered entered is
added to a running total.
count = 0 … If answer = correct Then count = count + 1 End If
running_total = 0 … For loop_counter = 1 To 3 number = InputBox("Enter a number...") running_total = running_total + number Next TextBox1.Text = running_total
Programming in Visual Basic Express
C Wilson, 2007 - 54 -
LOOPS & CONTROL VARIABLES
Examples of loops used so far have always been „fixed loops‟ – they have always been carried out
a number of times decided by the programmer.
Sometimes, the number of loops should be decided by the user‟s actions when the program is
actually running. This requires an additional input by the user to specify the number of times some
code should be looped.
Example
The following design and code could be for a program to help a teacher enter class lists.
The program would start by asking how many pupils are in the class and then use a loop to allow
the teacher to enter the names of the required number of pupils.
Design
1. prompt for and input class size
2. loop for 1 to class size times
3. enter name
4. add name to list
5. end loop
Code
Dim class_size As Integer Dim name As String class_size = InputBox("Enter class size", "Class Lists") Dim loops As Integer For loops = 1 To class_size name = InputBox("Enter name", "Class Lists") ListBox1.Items.Add(name) Next
Programming in Visual Basic Express
C Wilson, 2007 - 55 -
Totals & Counters – an everyday example…
You empty out your pockets and find the following coins…
You want to know two things:
1. How much money you have found in total,
2. Being a little greedy, how many of them were pound coins?
Sounds easy? Of course it is. Your years of experience just allow you to work it out. But what if
you had to tell a computer how to do it? It actually takes quite a bit of thought to work out just how
you managed to do this simple thing, but here goes…
Study the following table and design very carefully before moving on.
Coin Total Count of £1 coins
£1 £1 1
50p £1.50
10p £1.60
£1 £2.60 2
50p £3.10
5p £3.15
2p £3.17
2p £3.19
5p £3.24
1p £3.25
20p £3.45
£1 £4.45 3
5p £4.50
It‟s not until you actually look at the design that you realise how well programmed your own brain
already is!
Design
set total to 0
set pound_counter to 0
prompt for and enter no_of_coins
For each coin
Examine coin
Set total = total + coin_value
If coin_value is £1 Then
Set pound_counter = pound_counter + 1
End If
Next coin
display total
display pound_counter
Programming in Visual Basic Express
C Wilson, 2007 - 56 -
Worked Example – Rainfall Program
Meteorologists are involved in the study of weather from information
obtained from the land, sea and air. One area of study is rainfall
patterns.
In order to speed things up, a meteorologist would like to
computerise the recording and analysis of this work and has asked
you to write a computer program to deal with this.
Design and write a program to allow the user to input daily rainfall figures for an entire month. The
program should then display the total rainfall amount for the month and the number of days on
which there was no rain at all.
Method:
The program will take all user inputs (month, number of
days and daily rainfall in mm) from InputBoxes when a
command button is pressed. As each is entered I will
display it on the screen.
Since the number of days in a month can vary I will use a
FOR loop to allow the user to enter daily rainfall figures
until the number of days in the month has been reached.
As the data is entered by the user, I’ll keep a
running total for the rainfall and a counter to
keep a track of the number of ‘dry days’
entered. I’ll use an IF condition to update the
dry days counter.
When all the rainfall figures for the month have
been entered, I’ll display the final values for the
total rainfall and the dry days counter.
Since the program may be run more than once,
I’ll make sure that the listbox and all the
textboxes are cleared at the start of the program.
TextBox1
TextBox2
TextBox3
ListBox1
Screen Design
[Notice that this screen design also uses the „GroupBox‟ tool to group together some of the objects on the screen. Try it!]
Programming in Visual Basic Express
C Wilson, 2007 - 57 -
Program Design
Top Level
1. setup
2. enter rainfall data
3. display summary
Refinments
1.1 Clear TextBox1
1.2 Clear TextBox2
1.3 Clear TextBox3
1.4 Clear ListBox1
1.5 set total to zero
1.6 set dry days counter to zero
2.1 Prompt for and enter month
2.2 Display month in TextBox
2.3 Prompt for and input no. of days
2.4 Loop for no. of days
2.5 prompt for and input rainfall for day
2.6 Display rainfall in listbox
2.7 set total = total + rainfall
2.8 If rainfall = 0 Then
2.9 set dry_days = dry_days + 1
2.10 End If
2.11 End loop
2.12 Display message “Thank you”
3.1 Display total
3.2 Display no. of dry days
Programming in Visual Basic Express
C Wilson, 2007 - 58 -
Program Code
Public Class Form1 'Rainfall Survey Program 'Visual Basic Express 'by Me 'June 07 Dim month As String Dim no_of_days As Integer Dim rainfall As Decimal Dim total As Decimal Dim dry_days As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click 'Main Program / Top Level clear_screen() enter_data() display_summary() End Sub Sub clear_screen() „clear previously entered data and zero counters TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" ListBox1.Items.Clear() total = 0 dry_days = 0 End Sub Sub enter_data() 'Allow user to enter all data and update running totals and counts month = InputBox("Enter month...", "Month") TextBox1.Text = month no_of_days = InputBox("Enter no. of days in month...", "Days") Dim day As Integer For day = 1 To no_of_days rainfall = InputBox("Enter rainfall in (mm) for day " & day, "Rainfall Data") ListBox1.Items.Add("Day " & day & VbTab & rainfall) total = total + rainfall If rainfall = 0 Then dry_days = dry_days + 1 End If Next MsgBox("Thank you") End Sub Sub display_summary() 'display summary of entered data TextBox2.Text = total TextBox3.Text = dry_days End Sub
Top Level
1. setup 2. enter rainfall data 3. display summary Refinments
1.1 Clear Textbox1 1.2 Clear Textbox2 1.3 Clear Textbox3 1.4 Clear Listbox1 1.5 Set total to zero 1.6 Set dry days counter to zero 2.1 Prompt for and enter month 2.2 Display month in TextBox 2.3 Prompt for and input no. of days 2.4 Loop for no. of days 2.5 prompt for and input rainfall for day 2.6 Display rainfall in listbox 2.7 set total = total + rainfall 2.8 If rainfall = 0 Then 2.9 set dry_days = dry_days + 1 2.10 End If 2.11 End loop 2.12 Display message “Thank you” 3.1 Display Total 3.2 Display no. of dray days
Programming in Visual Basic Express
C Wilson, 2007 - 61 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK OVER FORTY
a programming task assessing grades 3, 4, 5 and 7
Name ________________________________________ Class _______________
Centre ________________________________________ Date _______________
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all instructions carefully, use hardware and software properly and write your report neatly.
You are required to write a program to count the number of pupils in a class of twelve who score over
40 in a test out of 60. The pupils’ marks are to be entered at the keyboard. The output is a message
that indicates the number of pupils who score more than 40.
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
2 LIST STEPS - Design 6 marks
On a separate sheet of paper, show the main steps and refinements.
3 ENTER PROGRAM - Implementation 5 marks
Create the program. Include internal commentary. Correct any mistakes that you make. Save it.
Programming in Visual Basic Express
C Wilson, 2007 - 62 -
4 TEST PROGRAM - Testing 5 marks
Complete the table below, firstly by writing three more sets of test data under the twelve marks listed.
The given marks are all above 40. The next set should all be below 40. The next set should have marks
above, below and including 40. The last set should only have marks 39, 40 and 41. Complete the second
column by counting and writing down how many marks in each set are over 40. Complete the last column
by recording the program’s output with your test data.
pupils’ marks my count
over 40
program’s count
over 40
46, 54, 51, 41, 49, 58, 45, 44, 53, 50, 57, 43
Compare your count of marks over 40 with the program’s output and write an appropriate comment.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name on them. One should show your code and the other a run using one of
the sets of test data above.
6 SUGGEST IMPROVEMENT - Evaluation 2 marks
Write down one way in which your program could be better.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
7 JUDGE PERFORMANCE - Evaluation 2 marks
Read this task sheet again. Describe how well you think you have done the task.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Programming in Visual Basic Express
C Wilson, 2007 - 63 -
Checklist Before moving on to the next section, make sure you are fully happy
with the following essential skills…
User Interface
Displaying a MessageBox
Using an InputBox for user input
Program Design
Top Level & Refinements
Program Code
Running Totals & Counters
FOR loops with control variables
You MUST let your teacher know if you are unsure about anything before continuing.
Programming in Visual Basic Express
C Wilson, 2007 - 65 -
Complex conditions – AND, OR A "complex condition" contains two or more simple conditions linked by „logic operators‟ (AND and
OR). They are frequently used in IF statements and some types of programming loops.
Examples
When might I wear shorts and a T-shirt?
IF it is summer AND it is hot THEN
I‟ll wear shorts and a T-shirt
END IF
Any other times?
IF (it is summer AND it is hot) OR (it is winter AND I‟ve gone completely mad!) THEN
I‟ll wear shorts and a T-shirt
END IF
Some example code dealing with test marks might require a complex condition like this…
Loops (WHILE loop)
A complex condition can also be used to test whether or not a section of program code should run.
This can be done using a special type of loop known as a WHILE loop.
In a WHILE loop, the condition is first evaluated. If the condition is true, the code within the loop is then executed. Example Design
1. Prompt for and get user to enter age
2. WHILE age < 0 OR age > 120 DO
3. Prompt for and get user to enter age
4. ENDWHILE
A WHILE loop differs to a FOR loop because:
A FOR loop will always run code within the loop a pre-determined number of times.
A WHILE loop will run code within the loop an unknown number of times – it often depends
on the user.
A WHILE loop may not run the code in the loop at all in some cases!
If score1 > 50 And score2 > 50 Then
TextBox1.Text = "You passed both the tests."
End If
Programming in Visual Basic Express
C Wilson, 2007 - 66 -
Input Validation
Users are constantly inputting data to running programs. They also make mistakes – particularly
when called upon to enter data via the keyboard.
„Input validation‟ means to check that data entered by the user while the
program is running is „valid‟ or „allowable‟. Any attempt by the user to
enter „illegal data‟ will be rejected by the program.
It is perfectly possible that invalid data entered by a user might cause a
program to crash and data to be lost.
A good programmer will take every step possible to prevent their
programming crashing or producing inaccurate results due to invalid
data being entered by the user.
Whilst it is impossible to predict every possible mistake a user might make in using a program
there are some basic methods of validating input and preventing problems from occurring.
Some basic approaches to validation we will look at are:
1. MessageBoxes
2. Pre-defined functions
3. User defined functions
1. MessageBoxes
We have already met messageboxes. Message boxes are useful methods of input validation
because they restrict input by the user. A typical example of such restriction would be a
messagebox presenting the user with a „Yes‟ or „No‟ button choice as below.
The only input possible here by the user is to click on „Yes‟ or „No‟.
There are no other inputs possible and the user cannot type any
input at this point.
By programming code to deal with this messagebox, the
programmer can be sure that user input will always be valid.
Simple!
Programming in Visual Basic Express
C Wilson, 2007 - 67 -
2. Pre-defined functions.
Earlier testing of your programs may have thrown up some small problems when run that the use
of some pre-defined functions might be able to prevent.
A pre-defined function is a piece of pre-written code that is actually part of the programming
language. Many programming languages will actually have a library of these pre-defined functions,
each of which is designed to perform a frequently needed task for the programmer.
Here are a few useful Visual Basic pre-defined functions:
Function Example Code Description
Val
number = Val("2457") 'sets number to 2457. number = Val(" 2 45 7") 'sets number to 2457 number = Val("24 and 57") 'sets number to 24. number = Val(TextBox1.Text)
„converts an empty toxtebox value to 0.
The Val function actually returns
the numbers contained in the data.
Val stops converting at the first
character that cannot be
interpreted as a numeric digit or
white space.
It is particularly useful for
converting empty textboxes to the
value 0 in order to avoid program
crashes.
Int
MyNumber = Int(99.8) ' Returns 99.
MyNumber = Int(-99.8) ' Returns -100.
MyNumber = Int(-99.2) ' Returns -100.
The Int function returns integer
portions of numbers. In the case of
a negative number, the Int function
returns the first negative integer
less than or equal to the number
CInt
mynumber = CInt(99.8) ' Returns 100. mynumber = CInt(-99.8) ' Returns -100. mynumber = CInt(-99.2) ' Returns -99.
CInt rounds to the nearest integer
instead of „truncating‟ the fractional
part of numbers as the Int function
does.
UCase
City = InputBox("Enter capital city of France...")
If UCase(City) = "PARIS" Then
Correct = Correct + 1
Else
MsgBox("Wrong!")
End If
UCase converts lowercase letters
to uppercase.
Very useful for text comparisons
(e.g. quiz programs) where a
match is required but, the
programmer cannot anticipate the
exact use of capital letters made
by the user.
These may seem a little confusing at the moment but these pre-defined functions may be useful to
refer back to in later problems.
Programming in Visual Basic Express
C Wilson, 2007 - 68 -
3. User-defined functions – Input Validation
Programming languages like Visual Basic can have a pre-defined function library containing
hundreds of useful operations like the ones described earlier. Even so, during the course of
developing a programming project the need for a specific function may arise that is not part of the
built-in function library. That‟s why many languages, such as Visual Basic, give programmers the
ability to create their own functions.
One typical example of the need for this is the ability to validate numeric input by the user.
E.g. When entering a value for age it would be silly (invalid) to enter an age like -16 or 200.
Using what‟s called a „range check‟ it is possible for a programmer to write a very flexible function
that can validate numeric input made by the user in a variety of different situations.
Example:
A program might ask the user to enter the following information about pupil test scores:
Name
English (out of 20)
Maths (out of 25)
French (out of 30)
Computing (out of 30)
Geography (out of 40)
Physics (out of 25)
Art (out of 30)
It is impossible to validate a name (there‟s just too many possibilities), but the program can validate
the scores entered as between a minimum and maximum score.
Design – Validate number
1. Prompt user to enter a number
2. WHILE number is <= min OR number >= max
3. Prompt user to re-enter number
4. ENDWHILE
The above design could be applied to the entry of each of the subject test scores. There are two
ways of doing this:
1. Just repeatedly enter the similar code over and over for each score – lots of code!
2. Use a function – write a function that tells the computer how to apply this idea to each
score entered and then call it appropriately each time required – less lines of code.
Compare the following example solutions…
Programming in Visual Basic Express
C Wilson, 2007 - 69 -
Repeatedly entering the similar code…
Using a function…
Obviously, using a function requires less lines of code. In fact if more test scores were included,
the function method would only add one more line of code per test score. Without the function,
each additional test score would require an additional five lines of code per test. Each of these
lines would require some customisation to suit the particular test.
pupil_name = InputBox("Enter name...")
english = InputBox("Enter English test score...")
While english < 0 Or english > 20
MsgBox("Please enter a whole number between 0 and 20", , "Error!")
english = InputBox("Enter English test score...")
End While
maths = InputBox("Enter Maths test score...")
While maths < 0 Or maths > 25
MsgBox("Please enter a whole number between 0 and 25", , "Error!")
maths = InputBox("Enter Maths test score...")
End While
french = InputBox("Enter French test score...")
While french < 0 Or french > 30
MsgBox("Please enter a whole number between 0 and 25", , "Error!")
french = InputBox("Enter french test score...")
End While
computing = InputBox("Enter computing test score...")
While computing < 0 Or computing > 30
MsgBox("Please enter a whole number between 0 and 30", , "Error!")
computing = InputBox("Enter computing test score...")
End While
geography = InputBox("Enter geography test score...")
While geography < 0 Or geography > 40
MsgBox("Please enter a whole number between 0 and 40", , "Error!")
geography = InputBox("Enter geography test score...")
End While
physics = InputBox("Enter physics test score...")
While physics < 0 Or physics > 25
MsgBox("Please enter a whole number between 0 and 25", , "Error!")
physics = InputBox("Enter physics test score...")
End While
art = InputBox("Enter art test score...")
While art < 0 Or art > 30
MsgBox("Please enter a whole number between 0 and 30", , "Error!")
art = InputBox("Enter art test score...")
End While
pupil_name = InputBox("Enter name...")
english = validate_number(0, 20, "Enter English test score...")
maths = validate_number(0, 25, "Enter Maths test score...")
french = validate_number(0, 30, "Enter French test score...")
computing = validate_number(0, 30, "Enter Computing test score...")
geography = validate_number(0, 40, "Enter Geography test score...")
physics = validate_number(0, 25, "Enter Physics test score...")
art = validate_number(0, 30, "Enter Art test score...")
Function validate_number(ByVal min, ByVal max, ByVal message)
Dim number As Decimal
number = InputBox("Please enter a whole number between " & min & " and " & max, message)
While number < min Or number > max
MsgBox("Please enter a number between " & min & " and " & max, , "Error!")
number = InputBox("Please enter a number between " & min & " and " & max, message)
End While
Return number
End Function
Extension:
Reduce program
crashes by using
Val (inputbox…
Extension:
Reduce program
crashes by using
Val (inputbox…
Programming in Visual Basic Express
C Wilson, 2007 - 70 -
SUMMARY
Using functions to validate the input of numeric variables is very efficient in terms of time to
develop code and also the number of lines of code required to program.
Functions actually work by coding a procedure or set of rules, and then supplying data to that
particular set of rules.
The following example of validation supplies three items of data (or „parameters‟) to validate input:
min
max
message
The parameters within the function are substituted with data supplied by the code which „calls‟ the function. In the example above the parameter values are entered as follows:
All occurrences of the parameter min become the value „1‟
All occurrences of the parameter max become the value „7‟
All occurrences of the parameter „message‟ become „Enter your computing grade…”
The function above named „validate_number‟ can be used to validate whole numbers in your own programs without a single line being changed. Only the „function call‟ line of code should be tailored to suit the problem you are solving. .
…
grade = validate_number(1, 7, "Enter your computing grade...") „function call
…
Function validate_number(ByVal min, ByVal max, ByVal message)
Dim number As Decimal
number = InputBox("Please enter a number between " & min & " and " & max, message)
While number < min Or number > max
MsgBox("Please enter a number between " & min & " and " & max, , "Error!")
number = InputBox("Please enter a number between " & min & " and " & max, message)
End While
Return number
End Function
Exercise You should now enter and save this function code (and only the function code) using a text editor such as „WordPad‟. This will allow you to easily „copy & paste‟ this code into your future Visual Basic programs when required. Save the code with the filename „validate‟.
Extension:
Reduce program
crashes by using
Val (inputbox…
Programming in Visual Basic Express
C Wilson, 2007 - 71 -
Extension – Functions for validating integers & validating decimals So now we know how to use a function to validate numeric input within a minimum and maximum.
This is very useful, but one problem still remains.
Consider a program to accept football scores. In this case data entered should lie within an
acceptable range, but should also only be accepted if it is a whole number or integer such as 0, 1,
2, 3, 4 etc. but nothing in between. It is impossible to score 2.5 goals!
Validating decimals (e.g. 3.14) This is the same code as earlier – only the name has been changed in order to clarify its purpose.
Validating integers (e.g. 3) It only takes a couple of changes to our earlier function, but now we can ensure that the program
will only accept integers within our range.
Keeping both of these functions in a „code
library‟ helps programmers to quickly write
programs with correctly validated input when
possible.
Function validate_decimal(ByVal min, ByVal max, ByVal message)
Dim number As Decimal
number = Val(InputBox("Please enter a whole number between " & min & " and " & max, message))
While number < min Or number > max
MsgBox("Please enter a number between " & min & " and " & max, , "Error!")
number = Val(InputBox("Please enter a number between " & min & " and " & max, message))
End While
Return number
End Function
Function validate_integer(ByVal min, ByVal max, ByVal message)
Dim number As Decimal
number = Val(InputBox("Please enter a whole number between " & min & " and " & max, message))
While number < min Or number > max Or (Int(number) <> number)
MsgBox("Please enter a number between " & min & " and " & max, , "Error!")
number = Val(InputBox("Please enter a WHOLE number between " & min & " and " & max, message))
End While
Return number
End Function
Note that both these user-defined functions also make use
of the pre-defined function ‘Val’ as discussed earlier.
Programming in Visual Basic Express
C Wilson, 2007 - 72 -
Program Testing
Once a program has been written, there then follows the testing stage. The most crucial aspect is
to test that the program does what it is supposed to do and does not crash.
Test Data
A programmer should create sets of test data to feed the software to find out how it behaves. Here
are some of the important points about making up such sets:
The expected results from a test data set must be known in advance, so that they can be
checked against the actual results.
One set should test “normal” operation of the software, to
make sure that there are no unexpected results in ordinary
use.
One set should test the operation “limits” of the software,
to make sure that the boundary conditions are handled
properly.
One set should test “exceptions” to the normal operating
conditions. This set will show whether or not the software
can react to unexpected inputs in an effective way, without
crashing.
Testing must be systematic and comprehensive.
It is systematic when you plan a table of test data with expected outcomes and then test the
program with that data. It is comprehensive when you test as many eventualities as possible.
For example if you were testing a program that took in marks out of 100 in a test you must test:
Normal Data
Test Data Expected Result Actual Result Comment
45 Data accepted As expected. Program appears OK
78 Data accepted As expected. Program appears OK
26 Data accepted As expected. Program appears OK
Limits
Test Data Expected Result Actual Result Comment
0 Data accepted As expected Program appears OK
100 Data accepted As expected Program appears OK
Exceptions
Test Data Expected Result Actual Result Comment
-5 Not Accepted Not Accepted Prompt to re-enter
109 Not Accepted Accepted Prompt to re-enter
34.75 Not Accepted Not Accepted Program continues!!!
Five Not accepted Not Accepted Program crash!!!
x Not accepted Not accepted Program crash!!!
Programming in Visual Basic Express
C Wilson, 2007 - 73 -
Worked Example – Can you drive?
A program is required to ask the user to enter their age and then
what type of driving license (if any) that person holds.
You may drive a car if you are in possession of a full driving
license or if you are at least 17 years old in possession of a
provisional driving license (you must have an experienced full
license holder with you though).
Design and write a program to allow the user to enter their age and license type. The program
should then display a summary of the user inputs together with a statement indicating their
entitlement to drive a car..
Method:
The program will take all user inputs (age and license type) from
InputBoxes when a command button is pressed. All inputs will later be
summarised in a ListBox.
The license type will be a number entered by the user as follows:
1. no license of any type
2. provisional license
3. full license
Since all input is numeric, it will be validated.
I will use an ‘IF’ statement with a ‘complex condition’ to work out if a
person is allowed to drive.
Finally, I will display a summary on the screen.
TextBox1
ListBox1
Programming in Visual Basic Express
C Wilson, 2007 - 74 -
Program Design
Top Level
1. Clear the screen and initialise variables
2. Get inputs
3. Calculate entitlement to drive
4. Display entitlement to drive
Refinements
2.1 Prompt for, and validate, age
2.2 Prompt for, and validate, current license type from menu
2.1.1 Obtain user input
2.1.2 WHILE number is < min allowed OR number > max allowed DO
2.1.3 Display error message
2.1.4 Obtain user input
2.1.5 ENDWHILE
Refine step 2.2
As 2.1 above (but without a function in this case)
3.1 Set „can drive‟ entitlement to "no"
3.2 IF license type = 3 OR (age >= 17 AND license type = 2) THEN
3.3 set „can drive‟ to "yes"
3.3 END IF
4.1 Display 2 blank lines
4.2 IF „can drive‟ = "yes" THEN
4.3 Display "You can drive a car."
4.4 ELSE
4.5 Display "You are not allowed to drive a car."
4.6 ENDIF
Programming in Visual Basic Express
C Wilson, 2007 - 75 -
Program Code
Public Class Form1 'Can you drive? 'Visual Basic Express 'by Me 'June 07 Dim age As Integer Dim license_type As Integer Dim can_drive As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Top Level / Main Program setup() get_inputs() calculate_output() display_output() End Sub Sub setup() can_drive = "no" ListBox1.Items.Clear() TextBox1.Clear() End Sub Sub get_inputs() 'validate age using a function age = validate_number(0, 100, "Enter your age") ListBox1.Items.Add("Age:" & vbTab & vbTab & age) 'validate license type (a number) using hand-typed code 'note: vbCR stands for 'carriage return' and means 'take a new line' license_type = InputBox("Enter a license type (1-3)" & vbCr & "1. None" & vbCr & "2. Provisional" & vbCr & "3. Full") While license_type < 1 Or license_type > 3 license_type = InputBox("Error! Enter a license type (1-3)" & vbCr & "1. None" & vbCr & "2. Provisional" & vbCr & "3. Full") End While ListBox1.Items.Add("License type:" & vbTab & license_type) End Sub Function validate_number(ByVal min, ByVal max, ByVal message) 'from code library Dim number As Decimal number = InputBox("Please enter a number between " & min & " and " & max, message) While number < min Or number > max MsgBox("Please enter a number between " & min & " and " & max, , "Error!") number = InputBox("Please enter a number between " & min & " and " & max, message) End While Return number End Function Sub calculate_output() 'if you have a full license you can drive... 'OR, if you are at least 17 AND have a provisional license you can drive If license_type = 3 Or (age >= 17 And license_type = 2) Then can_drive = "yes" End If End Sub Sub display_output() 'display program output in textbox If can_drive = "yes" Then TextBox1.Text = "You can drive a car." Else TextBox1.Text = "You are not allowed to drive a car." End If End Sub End Class
Top Level
1. Clear the screen and initialise variables
2. Get inputs
3. Calculate entitlement to drive
4. Display entitlement to drive
Refinements
2.1 Prompt for, and validate, age
2.2 Prompt for, and validate, current license type from menu
2.1.1 Obtain user input
2.1.2 WHILE number is not in range DO
2.1.3 Display error message
2.1.4 Obtain user input
2.1.5 ENDWHILE
3.1 IF license type …
3.2 set „can drive‟ to "yes"
3.3 END IF
4.1 IF „can drive‟ = "yes" THEN
4.2 Display "You can drive a car."
4.3 ELSE
4.4 Display "You are not allowed to drive a car."
4.5 ENDIF
Programming in Visual Basic Express
C Wilson, 2007 - 76 -
Sample Runs Program Testing Normal Data
Test Data Expected Result Actual Result Comment
Age = 17, license type =1 Can‟t drive. As expected. Program appears OK
Age = 17, license type = 2 Can drive. As expected. Program appears OK
Age = 40, license type = 3 Can drive As expected. Program appears OK
Limits
Test Data Expected Result Actual Result Comment
Age = 0, license type =1 Can‟t drive. As expected Program appears OK
Age = 100, license type =3 Can drive As expected Program appears OK
Exceptions
Test Data Expected Result Actual Result Comment
Age = -99 Not Accepted Not Accepted Program appears OK
Age = 17.5 Not Accepted Accepted Program continues OK.
Age = Five Not Accepted Not Accepted Program crash
License type = to kill Not accepted Not Accepted Program crash
License type = -99 Not accepted Not accepted Program continues OK.
Programming in Visual Basic Express
C Wilson, 2007 - 77 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK LANGUAGE COURSE
a programming task assessing grades 1, 2, 3 and 7
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all instructions carefully, use hardware and software properly and write your report neatly using the headings given below.
Students taking a language course must pass examinations in French and German or French and
Spanish to pass. A pass is half marks or more. A program is required to take in the three marks
which are validated as being whole numbers between 0 and 30. The output indicates if the student has
passed or failed and gives the percentage mark to the nearest whole number.
Examples of output are shown. The outputs from your program may look different but must meet the
specification.
Programming in Visual Basic Express
C Wilson, 2007 - 78 -
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
2 LIST STEPS - Design 6 marks
Show the main steps and refinements.
3 ENTER PROGRAM - Implementation 5 marks
Enter the program listing. Include internal commentary. Correct any mistakes that you make. Save the
listing.
4 TEST PROGRAM - Testing 6 marks
Describe in detail how you tested fully that your program – including input validation - worked as
specified.
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name in the footer. One should show your listing. The other printout should
show a run using one of your sets of test data. It should demonstrate input validation and show accurate
output.
6 CHANGE PROGRAM - Maintenance 2 marks
Describe how you would change the program to make a pass in Italian an additional requirement to pass
the course.
7 SUGGEST IMPROVEMENT - Evaluation 2 marks
Suggest one way in which your program could be better apart from the maintenance given above.
Programming in Visual Basic Express
C Wilson, 2007 - 79 -
Random numbers
Many programs require the use of random data. For example, a game should be different every time you play it, otherwise it would become very boring.
Generating random events or data is performed by programming the computer to calculate random numbers and then using these numbers to decide what happens next.
In order to generate random numbers the programmer uses a pre-defined function to initialize a random number generator and then writes a line of code to produce a random number within an appropriate range.
Example – throwing a dice
In the real world, when we throw a dice we do not know what the outcome will be. All we do know is that the result will be a number between 1 and 6.
The code on the left could be used to simulate throwing a dice and will generate a random number between 1 and 6. The number generated will then be assigned to the variable named „dice‟. All that‟s missing is the code to display the number (variable name is dice
How does it work? It is important to understand the above code in order to generate our own random numbers. Visual Basic programmers use the formula below:
Examples
Range required Code
1 to 6 Number = Int(6 * Rnd() + 1)
0 to 6 Number = Int(7 * Rnd() + 1)
4 to 18 Number = Int(15 * Rnd() + 4)
50 to 100 Number = Int(51 * Rnd() + 50)
[Don‟t forget to use the Randomize() function before entering your code!]
Randomize()
dice = Int(6 * Rnd() + 1)
randomnum = int(highestno - lowestno+1) *rnd() + lowestno)
Programming in Visual Basic Express
C Wilson, 2007 - 80 -
Boolean variables So far we have covered the data types: Integer, Decimal and String. Another
important data type is Boolean.
Boolean variables hold only two possible values, True or False. They should
have names that make it obvious what is meant when they are True or False.
For example, ValidMark should be true if the mark is valid otherwise false, if
the mark is invalid.
Boolean variables are sometimes called Flags or Switches as they are either On (True) or Off
(False).
Example – “Are we there yet?” (The Simpsons)
During a long car journey,…You know the one.
This rather silly example illustrates the idea of testing for a condition
and, when the condition is met, the boolean variable is allowed to
change its value.
In this case, a loop is allowed to terminate as a result of the change to
the value of the Boolean variable.
Design
Set destination to false
While destination is false do
Ask “Are we there yet?”
If answer is “yes”
Set destination to true
End if
End while
Display “Coooool!”
Program Code
Code it and see – you only require a single command button on your form!
Dim destination As Boolean = False
Dim answer As Integer
While destination = False 'loop while boolean variable has value 'false'
answer = MsgBox("Are we there yet?", MsgBoxStyle.YesNo, "Message from Bart...")
If answer = vbYes Then
destination = True 'set boolean variable to 'true' - can now exit loop
End If
End While
MsgBox("Coooool!", , "Message from Bart")
Programming in Visual Basic Express
C Wilson, 2007 - 81 -
Worked Example – Dice Game
You have been asked to write a computer program to simulate a
game of dice. To spice things up a little, the game will involve
simulated money at stake.
Players will start off with £100 to gamble. Once they have lost all
their money they can no longer play.
Players will throw two dice. Each time a player throws a double, they win £20, and this should be
added to their „bank balance‟.
If a player throws a double-six, they win £50!
Screen Design
Method:
The program will simulate throwing dice by repeatedly generating two random
numbers between 1 and 6 inclusive.
The two random numbers will be compared using an IF condition. If they are the
same the player wins, and £20 pounds is added to their balance.
Using a complex IF condition, the program will also test for a double six and add
£50 pounds to the players balance if appropriate.
The program will display meaningful messages at all times and update the players
balance after every throw.
The program must stop when the player’s balance reaches zero.
Programming in Visual Basic Express
C Wilson, 2007 - 82 -
Program Design Top Level
1. Display balance
2. If player has money left (balance >0) , let them roll dice
3. Set win to false
4. Roll dice
5. Check result
6. Display result
7. Else
8. Display “You‟re out of money!”
9. End if
Refinements
4.1 Generate random number for dice 1
4.2 Generate random number for dice 2
4.3 Display dice 1 and dice 2
5.1 If a double is rolled (dice 1 = dice 2)
5.2 Set win to true
5.3 If double is „double 6‟
5.4 Set balance = balance + £50
5.5 Else
5.6 Set balance = balance + £20
5.7 End if
5.8 Else
5.9 Not a double, set balance = balance -10
5.10 End if
6.1 If win is true
6.2 Display message “You win!”
6.3 Else
6.4 Display message “You lose.”
6.5 End if
6.6 Display updated balance in textbox1
Note: only steps 4,5 and 6
need to be refined.
Programming in Visual Basic Express
C Wilson, 2007 - 83 -
Program Code
Public Class Form1 'Dice Game 'Visual Basic Express 'by Me 'June 07 Dim dice1 As Integer Dim dice2 As Integer Dim win As Boolean = False Dim balance As Decimal = 100 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load 'subroutine attached to loading form - will display balance when program starts TextBox1.Text = balance End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click 'Top Level / Main Program If balance > 0 Then 'if player still has money, let them play win = False 'set winning throw to false roll_dice() check_result() display_result() Else 'no money left to gamble MsgBox("You're out of money!", MsgBoxStyle.Critical, “Dice Game”) End If End Sub Sub roll_dice() ' code for generating random num is... ' ...randomnum = int(highestno - lowestno+1) *rnd() + lowestno) Randomize() dice1 = Int(6 * Rnd() + 1) 'random number for dice 1 dice2 = Int(6 * Rnd() + 1) 'random number for dice 2 ListBox1.Items.Add(dice1 & " , " & dice2) 'display dice throw End Sub Sub check_result() If dice1 = dice2 Then 'a winning throw win = True 'set winning throw to true If dice1 And dice2 = 6 Then 'with a double six! balance = balance + 50 'wins £50 Else balance = balance + 20 'just any other double, wins £20 End If Else win = False 'a losing throw balance = balance – 10 'lose £10 End If End Sub Sub display_result() If win = True Then ListBox1.Items.Add("You win!") Else ListBox1.Items.Add("You lose.") End If TextBox1.Text = balance 'update balance on screen End Sub End Class
Programming in Visual Basic Express
C Wilson, 2007 - 85 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK GUESS NUMBER
a programming task assessing grades 1, 2, 3 and 7
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all instructions carefully, use hardware and software properly and write your report neatly using the headings given below.
A program is required to prompt the user to guess a randomly-chosen whole number between 1 and
20. The input should be validated. If the guess is incorrect, the user should be told if the target
number is bigger or smaller. This process should continue until the target number is guessed correctly.
The user should then be told how many valid guesses were made.
An example of output is shown below. The output from your program may look different but must
meet the specification.
Programming in Visual Basic Express
C Wilson, 2007 - 86 -
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
2 LIST STEPS - Design 6 marks
Show the main steps and refinements.
3 ENTER PROGRAM - Implementation 5 marks
Enter the program listing. Include internal commentary. Correct any mistakes that you make. Save the
listing.
4 TEST PROGRAM - Testing 6 marks
Describe in detail how you tested fully that your program – including input validation - worked as
specified.
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name in the footer. One should show your listing. The other printout should
show a run using one of your sets of test data. It should demonstrate input validation and show accurate
output.
6 WRITE TECHNICAL GUIDE - Documentation 3 marks
Write a short technical guide that describes how to install the programming language that you used and
the system requirements.
7 CHANGE PROGRAM - Maintenance 3 marks
Describe how you would change the program to make it count the total number of guesses and not just
the valid ones.
8 SUGGEST IMPROVEMENT - Evaluation 2 marks
Suggest one way in which your program could be better apart from the maintenance given above.
Your mark for this task will be used by the Scottish Qualifications Authority in deciding your overall award.
Programming in Visual Basic Express
C Wilson, 2007 - 87 -
Arrays
Imagine you have been asked to write a
program that will allow the user to enter a list of
the names of five people and then display these
names on the screen. Here is the sort of
program you might write.
DO NOT TYPE THIS IN!!!
Imagine changing this program to deal with 250 names, or even over a million names!
There is an easier way to write this kind of program involving the use of „arrays‟ rather than simple
„variables‟.
Public Class Form1 '5 Names without an array 'Visual Basic Express 'by Me 'June 07 Dim name1 As String Dim name2 As String Dim name3 As String Dim name4 As String Dim name5 As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click 'Top Level / Main Program get_names() display_names() End Sub Sub get_names() name1 = InputBox("Type in name 1 ") name2 = InputBox("Type in name 2 ") name3 = InputBox("Type in name 3 ") name4 = InputBox("Type in name 4 ") name5 = InputBox("Type in name 5 ") End Sub Sub display_names() ListBox1.Items.Add(name1) ListBox1.Items.Add(name2) ListBox1.Items.Add(name3) ListBox1.Items.Add(name4) ListBox1.Items.Add(name5) End Sub End Class
Programming in Visual Basic Express
C Wilson, 2007 - 88 -
Remember we said earlier, that variables were just boxes in the computers memory. Inside these
boxes we can store a single item of data or information.
Image if we could store more than one item of data inside a variable…
To make things a little clearer…
In the previous example we know we are storing names.
We know we are storing five names.
These five items of data are very similar in nature, so it‟s like storing a list of data.
Why on earth then, should we waste time creating 5 very similar variables (or 250, or over a
million similar items of data)?
The idea of storing a „list‟ of data, rather than using several individual variables, is what is known
as an „array‟.
Using an array, we can still access each individual item of data on the list if we need to.
Each individual item in the array has its own position, or location on the list.
Comparison of separate variables with an array…
Using individual variables…
Dim name1 As String
Using an array…
Name1 Homer
Dim name2 As String
Name2 Marge
Dim name3 As String
Name3 Bart
Dim name4 As String
Name4 Lisa
Dim name5 As String
Name5 Maggie
Dim firstname(5) As String
1 Homer
2 Marge
3 Bart
4 Lisa
5 Maggie
In order to use special array variables like this we have to learn some new commands…
This is the name of the
array in memory.
This is the element number
or location for each item of
data in the name array.
This is the data stored in
location firstname(4)
Programming in Visual Basic Express
C Wilson, 2007 - 89 -
Arrays – Typical examples of code used
Create an array. The code
required to create the array could
be something like this2.
Store a single item of data. The code required to store „Bart‟ in element number 3 is
Display a single item of data. The code required to
display the contents of element number 4 could be
Get the idea? Now look at this…
Display the entire array. The code required
to display the entire list of all names can be
easily written using a FOR loop as follows.
Store a list of user data. Rather than have all the names entered by the programmer
when writing the code, we can also use a FOR loop to allow the user to enter their own
names into the array.
Prompt for, and display a single item of data. We can even retrieve individual items of
information.
2 VB Express uses ‘zero-indexing’ and so will actually create 6 elements – the extra being firstname(0). We will ignore this element
at this level.
1 Homer
2 Marge
3 Bart
4 Lisa
5 Maggie
Dim element As Integer
element = InputBox("Enter a number between 1 and 5", "Address Book")
MsgBox("You picked " & firstname(element))
Dim firstname(5) As String
firstname(3) = "bart"
ListBox1.Items.Add(Firstname(4))
Dim row As Integer
For row = 1 To 5
ListBox1.Items.Add(firstname(row))
Next
This code would be just as simple
with a list of a million names!
Dim person As Integer
For person = 1 To 5
firstname(person) = InputBox("Enter a name", "Address Book")
Next
Note: we specify the name of the
array, its size, and its data type.
Programming in Visual Basic Express
C Wilson, 2007 - 90 -
Task
Design the form shown and then enter the
program code below.
NOTE: Be careful when entering your
code. Each command button calls only
one subroutine.
i.e. There are four command buttons –
each one calls its own subroutine code
below.
Experiment by running the program several
times and make sure you fully understand
its workings before moving on.
Public Class Form1 'Address Book using arrays 'Visual Basic Express 'by Me 'June 07 Dim firstname(5) As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Code to automatically enter 5 items of data defined by the programmer into the firstname array ListBox1.Items.Clear() firstname(1) = "homer" firstname(2) = "marge" firstname(3) = "bart" firstname(4) = "lisa" firstname(5) = "maggie" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'Code to allow the program user to enter ANY 5 items of data for storage in the firstname array ListBox1.Items.Clear() Dim person As Integer For person = 1 To 5 firstname(person) = InputBox("Enter a firstname", "Address Book") Next End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'It doesn't matter how the data was stored in the array. 'This code will display whatever data has been most recently stored in the five elements. Dim row As Integer For row = 1 To 5 ListBox1.Items.Add(firstname(row)) Next End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 'Allow the user to query the array Dim element As Integer element = InputBox("Enter a number between 1 and 5", "Address Book") MsgBox("You picked " & firstname(element)) End Sub End Class
Programming in Visual Basic Express
C Wilson, 2007 - 91 -
Worked Example - Golden Ticket
Willy Wonka and his chocolate factory have fallen on hard times.
His chocolate is just not as popular as it used to be.
Remembering the success of his earlier promotional event
involving an international hunt for five „golden tickets‟, he is now
hoping to repeat this success. This time he is desperate enough to
offer many more golden tickets than before. In fact, he is
considering hiding one in every fifty Wonka Bars produced, each at
a reduced sale price of 49 pence.
Out of curiosity, he has asked you to write a program that will
simulate the purchase of Wonka Bars where one in every fifty bars
could be a winner with a golden ticket inside.
Method:
The program will prompt the user to continue to buy as many Wonka Bars as
he/she wishes, so a while loop will be required.
We will keep a running total/count of three things:
The amount of money spent on Wonka Bars (at 49p each)
The number of bars bought in our search for a golden ticket
The number of golden tickets found
Since, on average, one in every fifty bars will be a winner, we will use an array
(with fifty elements) to simulate each batch of fifty Wonka Bars produced. We
will set each element of this array to be ‘no win’. Following this, we will select
one element of this array at random, and change its element from ‘no win’ to
‘golden ticket’.
Next, we allow the user to buy a Wonka Bar. Every time the user buys a Wonka
Bar another random number will be generated (between one and fifty). If this
number is the same as the Wonka Bar golden ticket number, the user is a winner.
Each time the user purchases a Wonka Bar the running totals/counts must be
updated. The user should also be informed whether or not they are a winner each
time they buy a Wonka Bar.
Programming in Visual Basic Express
C Wilson, 2007 - 92 -
Program Design
1. Initialise counters and total variables
2. While user wishes to buy more chocolate
3. Hide Golden Ticket
4. Buy Chocolate
5. Update Summary
6. As if user would like to buy more chocolate
7. End While
Hide Golden Ticket
3.1 For chocolate_bar = 1 To 50
3.2 Set all elements of ticket array to “no win”
3.3 Next
3.4 Select random number between 1 and 50 inclusive as winner
3.5 Set ticket array (winner) as "Golden Ticket!"
Buy Chocolate
4.1 Select random number between 1 and 50 inclusive as purchased bar of chocolate
4.2 Set amount_spent to amount_spent + price
4.3 Set bars_bought to bars_bought + 1
Update Summary
5.1 If random bar purchased equals random winner
5.2 Set golden_tickets to golden_tickets + 1
5.3 Display „congratulations‟ message and summary of bars bought and amount spent.
5.4 Else
5.5 Display „sorry‟ message and summary of bars bought and amount spent.
5.6 End If
5.7 Display amount spent in textbox
5.8 Display no. of bars bought in textbox
5.9 Display no. of golden tickets in textbox
Programming in Visual Basic Express
C Wilson, 2007 - 93 -
Program Code
Public Class Form1 Dim ticket(50) As String Dim winner As Integer Dim bar_purchased As Integer Dim amount_spent As Decimal Dim bars_bought As Integer Dim golden_tickets As Integer Public Const price As Decimal = 0.49 Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Top Level / Main Program setup() Dim response As Integer While response <> vbNo hide_golden_ticket() buy_chocolate() update_summary() response = MsgBox("Would you like to buy more?", MsgBoxStyle.YesNo, "Buy Chocloate?") End While End Sub Sub setup() amount_spent = 0 bars_bought = 0 golden_tickets = 0 End Sub Sub hide_golden_ticket() 'there should be no guarantee that buying 50 bars will get a golden ticket 'so every time a bar is purchased, the winning ticket moves position in array 'Nasty! 'Set all bars to no win... Dim chocolate_bar As Integer For chocolate_bar = 1 To 50 ticket(chocolate_bar) = "No win." Next 'then set a random ticket element to golden ticket! Randomize() winner = Int(50 * Rnd()) + 1 ticket(winner) = "Golden Ticket!" End Sub Sub buy_chocolate() 'pick a bar of chocolate at random (from the sweety shop counter) Randomize() bar_purchased = Int(50 * Rnd()) + 1 amount_spent = amount_spent + price bars_bought = bars_bought + 1 End Sub Sub update_summary() 'open the bar of chocolate...Is there a golden ticket? 'if the random number for the golden ticket = random number for the chocolate bar purchased... If bar_purchased = winner Then golden_tickets = golden_tickets + 1 RichTextBox1.Text = "Congratulations. You have won a golden ticket!!! Willie Wonka looks forward to seeing you (and one family member), at the Chocolate Factory soon. You have purchased " & bars_bought & " bars of chocolate, spending £ " & amount_spent & ". We hope you enjoy your visit!" Else 'if the random number for the golden ticket is different to the current random number for golden ticket... RichTextBox1.Text = "Sorry. No golden ticket this time!!! Willie Wonka looks forward to seeing you, if only you would buy more chocolate and find a golden ticket. You have purchased " & bars_bought & " bars of chocolate, spending £ " & amount_spent & ". We hope you're enjoying your chocolate!" End If 'update summary details TextBox1.Text = "£ " & amount_spent TextBox2.Text = bars_bought TextBox3.Text = golden_tickets End Sub End Class
1. Set up counters and total variables
2. While user wishes to buy more chocolate
3. Hide Golden Ticket
4. Buy Chocolate
5. Update Summary
6. As if user would like to buy more chocolate
7. End While
Hide Golden Ticket
3.1 For chocolate_bar = 1 To 50
3.2 Set all elements of ticket array to “no win”
3.3 Next
3.4 Select random number between 1 and 50 inclusive as
winner
3.5 Set ticket array (winner) as "Golden Ticket!"
Buy Chocolate
4.1 Select random number between 1 and 50 inclusive as
purchased bar of chocolate
4.2 Set amount_spent to amount_spent + price
4.3 Set bars_bought to bars_bought + 1
Update Summary
5.1 If random bar purchased equals random winner
5.2 Set golden_tickets to golden_tickets + 1
5.3 Display „congratulations‟ message and
summary of bars bought and amount spent.
5.4 Else
5.5 Display „sorry‟ message and summary of bars
bought and amount spent.
5.6 End If
5.7 Display amount spent in textbox
5.8 Display no. of bars bought in textbox
5.9 Display no. of golden tickets in textbox
Programming in Visual Basic Express
C Wilson, 2007 - 95 -
COMPUTING STANDARD GRADE
PRACTICAL ABILITIES TASK CHARITY LOTTERY
a programming task assessing grades 1, 2, 3 and 7
Your teacher will outline how you should do this task and give you opportunities for discussion. Read and follow all instructions carefully, use hardware and software properly and write your report neatly using the headings given below.
A group of twelve office workers decides to have a weekly charity lottery. Each worker is asked to
contribute £1 and a draw is made. The winner gets half of the contributions with the other half going
to charity. If the person selected has not paid that week, all contributions go to charity. You are
required to write a program that selects a winner from a set of workers’ names read from data
statements and held in an array. The user is asked if the selected person has paid that week. The
input should be validated. An appropriate message is given.
Examples of output are shown. The outputs from your program may look different but must meet the
specification.
Programming in Visual Basic Express
C Wilson, 2007 - 96 -
1 DESCRIBE METHOD - Analysis 3 marks
Show that you understand what is required by describing how you will do this task.
2 LIST STEPS - Design 6 marks
Show the main steps and refinements.
3 ENTER PROGRAM - Implementation 5 marks
Enter the program listing. Include internal commentary. Correct any mistakes that you make. Save the
listing.
4 TEST PROGRAM - Testing 6 marks
Describe in detail how you tested fully that your program – including input validation - worked as
specified.
5 GET PRINTOUTS - Implementation 2 marks
Get two printouts with your name in the footer. One should show your listing. The other printout should
show a run using one of your sets of test data. It should demonstrate input validation and show accurate
output.
6 CHANGE PROGRAM - Maintenance 3 marks
Describe how you would change the program to make it ask if each worker had contributed before the
draw was made.
7 SUGGEST IMPROVEMENT - Evaluation 2 marks
Suggest one way in which your program could be better apart from the maintenance given above.
Your mark for this task will be used by the Scottish Qualifications Authority in deciding your overall award.
Programming in Visual Basic Express
C Wilson, 2007 - 97 -
Checklist Well, we‟re just about done. Here‟s your final checklist…
User Interface
No new skills
Program Code
Complex conditions – AND/OR
WHILE loop
Input validation
Pre-defined functions
User defined functions
Generating random numbers
Boolean variables
Arrays – create, store single item, display single item, display entire array, store list in array
Evaluation
Program testing – normal data, limits, exceptions
Now, just for fun… some maths!
Design and write a program which will be useful for a Primary
school to assist young children in learning arithmetic. The
program should allow pupils to enter answers to 10 different
addition sums. Only two numbers will require to be added in
each sum, the two numbers being chosen at random and not
being greater than 10.
The program should indicate whether the pupil‟s answers are correct or not and on completion a
summary of the number of correct answers should be given.