standard grade computing studiescomputing.homedns.org/downloads/s grade topics... · standard grade...

97
Programming Standard Grade Computing Studies C Wilson, 2007 [VISUAL BASIC 2005 EXPRESS EDITION]

Upload: duongduong

Post on 30-Aug-2018

225 views

Category:

Documents


1 download

TRANSCRIPT

Programming

Standard Grade Computing Studies C Wilson, 2007

[VISUAL BASIC 2005 EXPRESS EDITION]

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 - 8 -

FOUNDATION LEVEL

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 - 27 -

Sample Runs

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 - 32 -

GENERAL LEVEL

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 - 38 -

Sample Runs

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 - 49 -

Sample Runs

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 - 59 -

Sample Run(1)

Programming in Visual Basic Express

C Wilson, 2007 - 60 -

Sample Run(2)

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 - 64 -

CREDIT LEVEL

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 - 84 -

Sample Runs

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 - 94 -

Sample Runs

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.