Displaying Information by linxiaoqin

VIEWS: 7 PAGES: 97

									Programming
Standard Grade Computing Studies

C Wilson, 2007




[VISUAL BASIC 2005 EXPRESS EDITION]
Programming in Visual Basic Express


                                             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




C Wilson, 2007                                                                              -2-
Programming in Visual Basic Express

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‟.




C Wilson, 2007                                                                              -3-
Programming in Visual Basic Express

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.




C Wilson, 2007                                                                                        -4-
Programming in Visual Basic Express

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.




C Wilson, 2007                                                                                      -5-
Programming in Visual Basic Express

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.


C Wilson, 2007                                                                                   -6-
Programming in Visual Basic Express



Now we‟re ready to start programming…




                                        Hooray!




C Wilson, 2007                                    -7-
Programming in Visual Basic Express




                                      FOUNDATION LEVEL




C Wilson, 2007                                           -8-
Programming in Visual Basic Express

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…

 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                                                         Start typing here

        TextBox1.Text = "Hello World!"
                                                                                Finish typing here
    End Sub

 End Class

       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



C Wilson, 2007                                                                                       -9-
Programming in Visual Basic Express

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…



 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
                                                                               Start typing here
        ListBox1.Items.Add("Hello World!")
        ListBox1.Items.Add("Computing is fun!")
        ListBox1.Items.Add("")                                                  Finish typing here
        ListBox1.Items.Add("And, Programming is easy!")

   End Sub
 End Class


       Run your program and correct any mistakes if necessary. „Save All‟ when done.


C Wilson, 2007                                                                                       - 10 -
Programming in Visual Basic Express

SUMMARY

Copy the following into your jotter.

Command Button                         Allows the user to run program code when pressed.


                                       Allows the program to display a single line of text.
Textbox
                                       E.g.
                                       textbox1.text=”Hello”


                                       Allows the program to display multiple lines of text.
                                       E.g.
                                       listbox1.items.add(“Hello”)
                                       listbox1.items.add(“My name is Elvis”)
Listbox
                                       To clear a listbox of text, enter
                                       listbox1.items.clear()


                                       To display a blank line, enter
                                       listbox1.items.add(“”)


                                       Any text starting with „ will be ignored by the computer.
                                       These lines are known as comments and are used by
Comments                               programmers to include short notes about the program.


                                       Every program you write should contain some comments.




C Wilson, 2007                                                                                     - 11 -
Programming in Visual Basic Express

Simple Calculations

        Create a new project called „Calculate‟.

        Add a „command button‟, a „listbox‟ and two „textboxes‟ as shown below.




                                                                                         Textbox1


                                                                                         Textbox2




        Double click the command button to enter program code as follows…


  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")                          Using speech marks makes the program display the
        ListBox1.Items.Add(4 + 5)                            exact text inside the speech marks.

      TextBox1.Text = 4 + 5                                  Without speech marks the computer can display the
      TextBox2.Text = "4+5"                                  answer to a calculation.
    End Sub
  End Class                                                Run your program to see what happens.
                                                           Do you understand it?



        Run your program and correct any mistakes if necessary. „Save All‟ when done.

C Wilson, 2007                                                                                                   - 12 -
Programming in Visual Basic Express



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…


C Wilson, 2007                                                                                   - 13 -
Programming in Visual Basic Express



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.




              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.




       Create a new Visual Basic project and call it „‟Area‟.


       Create a „command button‟, three „labels‟ and three „textboxes‟ as shown below.




                               Textbox1                 Textbox2                 Textbox3




C Wilson, 2007                                                                                 - 14 -
Programming in Visual Basic Express

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!




C Wilson, 2007                                                                                      - 15 -
Programming in Visual Basic Express


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                                                    Start typing here

        length = TextBox1.Text         'Get inputs and store them
        breadth = TextBox2.Text                                                  Finish typing here

        area = length * breadth        'Calculate Area and store it

        TextBox3.Text = area           'Display Area

   End Sub
 End Class



C Wilson, 2007                                                                                     - 16 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                   - 17 -
Programming in Visual Basic Express

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.

C Wilson, 2007                                                                                                  - 18 -
Programming in Visual Basic Express

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.




C Wilson, 2007                                                                                      - 19 -
Programming in Visual Basic Express


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.




        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


        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.




C Wilson, 2007                                                                                 - 20 -
Programming in Visual Basic Express


SUMMARY

Your finished code should look like the code below. Note that it actually contains two „subroutines‟,
one for each command button.


 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



 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.




C Wilson, 2007                                                                                  - 21 -
Programming in Visual Basic Express




                                          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.




C Wilson, 2007                                                                                                         - 22 -
Programming in Visual Basic Express


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 __________________________________________________________________________




C Wilson, 2007                                                                                              - 23 -
Programming in Visual Basic Express


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.

    ____________________________________________________________________________

    ____________________________________________________________________________

    ____________________________________________________________________________


C Wilson, 2007                                                                                       - 24 -
Programming in Visual Basic Express

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…


   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                                                                       Start typing here
     End Sub
   End Class                                                                           Finish typing here




        Run your program. The message „Hello‟ should be displayed ten times.


C Wilson, 2007                                                                                       - 25 -
Programming in Visual Basic Express

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).



            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.




                                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


C Wilson, 2007                                                                                - 26 -
Programming in Visual Basic Express

Sample Runs




C Wilson, 2007                        - 27 -
Programming in Visual Basic Express




                                          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.




C Wilson, 2007                                                                                                         - 28 -
Programming in Visual Basic Express


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              YOU ARE DRIVING TOO CLOSE!
makes stickers for car windows. The user should input the
sticker text at the keyboard. The program will display           YOU ARE DRIVING TOO CLOSE!
that text four times as shown right. There should be a
blank line after each line of text. A FOR … NEXT loop            YOU ARE DRIVING TOO CLOSE!
should be used.
                                                                 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.




C Wilson, 2007                                                                                              - 29 -
Programming in Visual Basic Express


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.

    ____________________________________________________________________________

    ____________________________________________________________________________

    ____________________________________________________________________________

C Wilson, 2007                                                                                      - 30 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                               - 31 -
Programming in Visual Basic Express




                                      GENERAL LEVEL




C Wilson, 2007                                        - 32 -
Programming in Visual Basic Express


MODULES AND SUBROUTINES

When programmers have to write big long
                                                                    Area Problem
programs, they divide the program into
sections and just write a small section
(module) at a time.                                   Get inputs    Calculate Area      Display Area



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                                         The „top level‟ of our

                        2. Calculate area                                     design is a list of what our
                                                                              program will need to do.
                        3. Display area



Refinements             1.1 Prompt for and input length                       The „refinements‟ allow
                                                                              us to specify exactly how
                        1.2 Prompt for and input breadth
                                                                              these main steps will be
                                                                              carried out.
                        2.1 Set area to length * breadth
                                                                              Note the numbering
                                                                              system used for each of
                        3.1 Display message and area
                                                                              the refinements.



C Wilson, 2007                                                                                     - 33 -
Programming in Visual Basic Express

Program Code


 Public Class Form1                                                 Using subroutines, shared
                                                                    variables (variables used by
    'Area Program with Subroutines
    'Visual Basic Express                                           more than one subroutine),
    'C Wilson                                                       are declared at the very start
    'June 2007
                                                                    of the program code. THIS IS
    'All variables must be declared before use                      IMPORTANT!!!
    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                 DESIGN

      get_inputs()
      calculate_area()                                              Top Level
      display_area()                                                1. Get inputs
    End Sub
                                                                    2. Calculate area
                                                                    3. Display area
    Sub get_inputs()
      'Prompt for, and store length and breadth
      length = TextBox1.Text
      breadth = TextBox2.Text
    End Sub                                                         Refinements
                                                                    1.1 Prompt for and input length
                                                                    1.2 Prompt for and input breadth
    Sub calculate_area()
      'store the value for area in a variable
      area = length * breadth
    End Sub
                                                                    2.1 Set area to length * breadth

    Sub display_area()
      'display the stored value for area
                                                                    3.1 Display message and area
      TextBox3.Text = area
    End Sub


 End Class


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.


C Wilson, 2007                                                                                  - 34 -
Programming in Visual Basic Express

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
     If age > 17 Then                         screen.
          TextBox1.Text = "You can vote"
       End If                                 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.




       If test_score < 50 Then
           TextBox1.Text = "Sorry, you failed."
       Else
           TextBox1.Text = "Well done, you passed!"
       End If




Let‟s look at a worked example…




C Wilson, 2007                                                                                - 35 -
Programming in Visual Basic Express

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‟.




            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.




Screen Design
    Two command buttons – Calculate Total and Print
    Seven textboxes – 5 for car sales, 1 for total, 1 for message
    Labels as appropriate




C Wilson, 2007                                                                                 - 36 -
Programming in Visual Basic Express

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
                                                            Top Level
    get_sales()
    calculate_total()                                       1.    Get sales
    display_message()
                                                            2.    Calculate total sales
  End Sub                                                   3.    Display outputs
  Sub get_sales()
    'input sales data                                       Refinements
    car1 = TextBox1.Text
    car2 = TextBox2.Text                                    1.1 Prompt for and input car1 price
    car3 = TextBox3.Text
    car4 = TextBox4.Text                                    1.2 Prompt for and input car2 price
    car5 = TextBox5.Text                                    1.2 Prompt for and input car3 price
  End Sub                                                   1.2 Prompt for and input car4 price
                                                            1.2 Prompt for and input car5 price
  Sub calculate_total()
    'calculate total sales
    total = car1 + car2 + car3 + car4 + car5
  End Sub                                                   2.1 Set total = car1+car2+car3+car4+car5

  Sub display_message()
    'display program outputs
    TextBox6.Text = total
                                                            3.1   Display total in textbox 6
                                                            3.2   if total >£50,000 then
    If total > 50000 Then                                   3.3         Display “Well done!” in textbox 7
        TextBox7.Text = "Well done!"                        3.4   else
    Else                                                    3.5         Display “You‟re fired!” in textbox 7
        TextBox7.Text = "You're fired!"                     3.6   end if
    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




C Wilson, 2007                                                                                      - 37 -
Programming in Visual Basic Express

Sample Runs




C Wilson, 2007                        - 38 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                              - 39 -
Programming in Visual Basic Express

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             English          Music          calculated      calculated     program’s       program’s
     temperature     temperature      temperature    average         on or off      average         on or off
                                                     temperature                    temperature




    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.




C Wilson, 2007                                                                                                  - 40 -
Programming in Visual Basic Express

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.




                               MsgBox("Bye bye!")


                             [The word „Demo‟ is taken from the project title.]




                               MsgBox("Bye bye!", , "Finish Program")


                             [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.]




C Wilson, 2007                                                                                  - 41 -
Programming in Visual Basic Express



                             MsgBox("Bye bye!", MsgBoxStyle.Critical, "Finish Program")


                           [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,


                    MsgBox("Are you sure you want to exit?", MsgBoxStyle.YesNo, "Finish Program")




                                             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
                                                           Notice that we don‟t actually need to use an
    2. If choice = “yes” then                              „else‟ in this case. If the user clicks „No‟ then
    3.       Exit Program                                  the program will not finish.
    4. End if




Now let‟s look at actually creating some MessageBoxes…

C Wilson, 2007                                                                                                 - 42 -
Programming in Visual Basic Express

To create an „Exit‟ 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




To create a „Print‟ command button with choice…




    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.




C Wilson, 2007                                                                                  - 43 -
  Programming in Visual Basic Express

  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.


            Dim Name As String
            Name = InputBox("Please enter your name", "Enter Name")




  The above example will produce this on the screen when the line of code runs:



                    i) Title
                          T
                   Prompt i
                          t
                          l
                          e

           Space for input


  In this example the variable called „Name‟ would now be storing the data „Darth‟ when the user
  clicks OK.




  C Wilson, 2007                                                                                      - 44 -
Programming in Visual Basic Express

Try this,


        Create a new project called „Message‟.
        Design a form like the one below.




        Enter the code below for your command button.




 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




        „Save All‟ when you have it working.




 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‟.




C Wilson, 2007                                                                                  - 45 -
Programming in Visual Basic Express

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.




           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.




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.




C Wilson, 2007                                                                                - 46 -
Programming in Visual Basic Express

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.



C Wilson, 2007                                                                                  - 47 -
Programming in Visual Basic Express

    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                                                          Top Level

       clear_data()                                                           1.    Clear previous data
       get_data()
                                                                              2.    Get data
       display_table()
       special_offer()                                                        3.    Display table
                                                                              4.    Special Offer
     End Sub
                                                                              Refinements
     Sub clear_data()
       'clear textboxes and listboxes if program has already been run         1.1   Clear Textbox1
                                                                              1.2   Clear Textbox2
       TextBox1.Text = ""
       TextBox2.Text = ""                                                     1.3   ClearTextbox3
       TextBox3.Text = ""                                                     1.4   Clear Listbox1
       ListBox1.Items.Clear()
     End Sub

     Sub get_data()                                                           2.1   Prompt for and input country
       'Allow user to supply input via inputboxes and display in textboxes
                                                                              2.2   Display country in textbox1
       country = InputBox("Please enter country...")
       TextBox1.Text = country                                                2.3   Prompt for and input currency
       currency = InputBox("Please enter currency...")                        2.4   Display currency in textbox2
       TextBox2.Text = currency                                               2.5   Prompt for and input exchange rate
       exchange_rate = InputBox("Please enter exchange rate...")              2.6   Display exchange rate in textbox 3
       TextBox3.Text = exchange_rate
     End Sub


     Sub display_table()
       'Output Table headings
       ListBox1.Items.Add("Pounds" & VbTab & currency)                        3.1 Display table headings
       ListBox1.Items.Add("") 'prints a blank line                            3.2 Display blank line

       'loop to output conversion from 1 to 20 pounds
       Dim pounds As Integer
       For pounds = 1 To 20                                                   3.3 Do 20 times
          ListBox1.Items.Add(pounds & VbTab & pounds * exchange_rate)         3.4      Display table row
       Next                                                                   3.5 Next
     End Sub

     Sub special_offer()
       'Display special offer if appropriate
                                                                              4.1 If country is France then
       If country = "france" Then
           ListBox1.Items.Add("")                                             4.2        Display message in listbox …
           ListBox1.Items.Add("We'll convert your currency back for free!")   4.3        Display message in listbox …
           ListBox1.Items.Add("We like France!")                              4.4 End if
       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


C Wilson, 2007                                                                                                  - 48 -
Programming in Visual Basic Express


Sample Runs




C Wilson, 2007                        - 49 -
Programming in Visual Basic Express




                                          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.




C Wilson, 2007                                                                                                         - 50 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                                    - 51 -
Programming in Visual Basic Express

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.

    ____________________________________________________________________________

    ____________________________________________________________________________




C Wilson, 2007                                                                                         - 52 -
Programming in Visual Basic Express

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



     count = 0
     …                                  In a quiz program, if the user‟s answer is correct, one is
      If answer = correct Then
                                        added to the count, if not, nothing happens, so „count‟ stays
         count = count + 1
     End If                             the same.




                                                running_total = 0
                                                …
In a program adding a sequence of               For loop_counter = 1 To 3
numbers, each numbered entered is                  number = InputBox("Enter a number...")
                                                   running_total = running_total + number
added to a running total.                       Next

                                                TextBox1.Text = running_total




C Wilson, 2007                                                                                       - 53 -
Programming in Visual Basic Express

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




C Wilson, 2007                                                                                 - 54 -
Programming in Visual Basic Express

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           Design
   £1             £1                  1
                                                         set total to 0
   50p           £1.50
                                                         set pound_counter to 0
   10p           £1.60
   £1            £2.60                2                  prompt for and enter no_of_coins

   50p           £3.10                                   For each coin
   5p            £3.15                                     Examine coin
                                                           Set total = total + coin_value
   2p            £3.17
                                                           If coin_value is £1 Then
   2p            £3.19                                            Set pound_counter = pound_counter + 1
   5p            £3.24                                     End If
                                                         Next coin
   1p            £3.25
   20p           £3.45                                   display total
   £1            £4.45                3                  display pound_counter

   5p            £4.50


It‟s not until you actually look at the design that you realise how well programmed your own brain
already is!


C Wilson, 2007                                                                                    - 55 -
Programming in Visual Basic Express

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.




                                                                             Screen Design      TextBox1




     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                                                  ListBox1
     textboxes are cleared at the start of the program.

                                                                  TextBox2


                                                                  TextBox3




 [Notice that this screen design also uses the „GroupBox‟ tool to group
 together some of the objects on the screen. Try it!]



C Wilson, 2007                                                                                               - 56 -
Programming in Visual Basic Express



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




C Wilson, 2007                                           - 57 -
Programming in Visual Basic Express



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                     Top Level

      clear_screen()                                       1.      setup
      enter_data()                                         2.      enter rainfall data
      display_summary()                                    3.      display summary

   End Sub

   Sub clear_screen()
     „clear previously entered data and zero counters      Refinments
     TextBox1.Text = ""                                    1.1    Clear Textbox1
     TextBox2.Text = ""                                    1.2    Clear Textbox2
     TextBox3.Text = ""                                    1.3    Clear Textbox3
     ListBox1.Items.Clear()                                1.4    Clear Listbox1
     total = 0                                             1.5    Set total to zero
     dry_days = 0                                          1.6    Set dry days counter to zero
   End Sub


   Sub enter_data()
     'Allow user to enter all data and update running totals and counts
                                                           2.1     Prompt for and enter month
      month = InputBox("Enter month...", "Month")     2.2      Display month in TextBox
      TextBox1.Text = month                           2.3      Prompt for and input no. of days
      no_of_days = InputBox("Enter no. of days in month...", "Days")
                                                           2.4     Loop for no. of days
     Dim day As Integer                                  2.5              prompt for and input rainfall for day
     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                          2.6              Display rainfall in listbox
       If rainfall = 0 Then                              2.7              set total = total + rainfall
           dry_days = dry_days + 1                       2.8              If rainfall = 0 Then
       End If                                            2.9                          set dry_days = dry_days + 1
                                                         2.10             End If
     Next
                                                         2.11    End loop
     MsgBox("Thank you")                                 2.12    Display message “Thank you”
   End Sub

   Sub display_summary()
     'display summary of entered data
     TextBox2.Text = total                                 3.1     Display Total
     TextBox3.Text = dry_days                              3.2     Display no. of dray days
   End Sub



C Wilson, 2007                                                                                                - 58 -
Programming in Visual Basic Express



Sample Run(1)




C Wilson, 2007                        - 59 -
Programming in Visual Basic Express



Sample Run(2)




C Wilson, 2007                        - 60 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                              - 61 -
Programming in Visual Basic Express

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           program’s count
                                                                    over 40            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.

    ____________________________________________________________________________

    ____________________________________________________________________________

    ____________________________________________________________________________




C Wilson, 2007                                                                                           - 62 -
Programming in Visual Basic Express



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.




C Wilson, 2007                                                                               - 63 -
Programming in Visual Basic Express




                                      CREDIT LEVEL




C Wilson, 2007                                       - 64 -
Programming in Visual Basic Express

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…


        If score1 > 50 And score2 > 50 Then
            TextBox1.Text = "You passed both the tests."
        End If



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!


C Wilson, 2007                                                                                      - 65 -
Programming in Visual Basic Express

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!




C Wilson, 2007                                                                                       - 66 -
Programming in Visual Basic Express

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

                                                                  The Val function actually returns
                                                                  the numbers contained in the data.
             number = Val("2457")        'sets number to 2457.    Val stops converting at the first
                                                                  character that cannot be
             number = Val(" 2 45 7")     'sets number to 2457     interpreted as a numeric digit or
Val          number = Val("24 and 57") 'sets number to 24.        white space.

             number = Val(TextBox1.Text)                          It is particularly useful for
             „converts an empty toxtebox value to 0.              converting empty textboxes to the
                                                                  value 0 in order to avoid program
                                                                  crashes.



             MyNumber = Int(99.8) ' Returns 99.                   The Int function returns integer
                                                                  portions of numbers. In the case of
Int          MyNumber = Int(-99.8) ' Returns -100.                a negative number, the Int function
                                                                  returns the first negative integer
             MyNumber = Int(-99.2) ' Returns -100.                less than or equal to the number


             mynumber = CInt(99.8)      ' Returns 100.            CInt rounds to the nearest integer
                                                                  instead of „truncating‟ the fractional
CInt         mynumber = CInt(-99.8) ' Returns -100.
                                                                  part of numbers as the Int function
             mynumber = CInt(-99.2) ' Returns -99.                does.
                                                                  UCase converts lowercase letters
             City = InputBox("Enter capital city of France...")   to uppercase.
             If UCase(City) = "PARIS" Then                        Very useful for text comparisons
                     Correct = Correct + 1                        (e.g. quiz programs) where a
UCase
             Else                                                 match is required but, the
                     MsgBox("Wrong!")                             programmer cannot anticipate the
             End If                                               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.


C Wilson, 2007                                                                                     - 67 -
Programming in Visual Basic Express

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…

C Wilson, 2007                                                                                     - 68 -
Programming in Visual Basic Express

Repeatedly entering the similar code…
          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!")        Extension:
              maths = InputBox("Enter Maths test score...")
          End While                                                                     Reduce program
                                                                                        crashes by using
          french = InputBox("Enter French test score...")                               Val (inputbox…
          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




Using a function…

          pupil_name = InputBox("Enter name...")
          english = validate_number(0, 20, "Enter English test score...")              Extension:
          maths = validate_number(0, 25, "Enter Maths test score...")                  Reduce program
          french = validate_number(0, 30, "Enter French test score...")
          computing = validate_number(0, 30, "Enter Computing test score...")          crashes by using
          geography = validate_number(0, 40, "Enter Geography test score...")          Val (inputbox…
          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




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.

C Wilson, 2007                                                                                   - 69 -
Programming in Visual Basic Express

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



    …

    grade = validate_number(1, 7, "Enter your computing grade...")     „function call       Extension:
                                                                                            Reduce program
    …                                                                                       crashes by using
                                                                                            Val (inputbox…
        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


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.

.

    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‟.



C Wilson, 2007                                                                                            - 70 -
Programming in Visual Basic Express

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.

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




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.

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



Keeping both of these functions in a „code
library‟ helps programmers to quickly write            Note that both these user-defined functions also make use
programs with correctly validated input when            of the pre-defined function ‘Val’ as discussed earlier.
possible.


C Wilson, 2007                                                                                           - 71 -
Programming in Visual Basic Express

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


C Wilson, 2007                                                                                      - 72 -
Programming in Visual Basic Express

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.




                                                                                        ListBox1




                                                                                        TextBox1




C Wilson, 2007                                                                                     - 73 -
Programming in Visual Basic Express

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




C Wilson, 2007                                                          - 74 -
Programming in Visual Basic Express

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()                                           Top Level
     calculate_output()
     display_output()
  End Sub                                                   1.         Clear the screen and initialise variables
                                                                2.         Get inputs
  Sub setup()                                                   3.         Calculate entitlement to drive
    can_drive = "no"                                            4.         Display entitlement to drive
    ListBox1.Items.Clear()
    TextBox1.Clear()
  End Sub                                                       Refinements

  Sub get_inputs()
                                                                2.1        Prompt for, and validate, age
    'validate age using a function
    age = validate_number(0, 100, "Enter your age")             2.2        Prompt for, and validate, current license type from menu
    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)             2.1.1        Obtain user input
    'from code library                                                      2.1.2        WHILE number is not in range DO
    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                                                           2.1.3               Display error message
  End Function
                                                                               2.1.4              Obtain user input
  Sub calculate_output()                                                       2.1.5          ENDWHILE
    '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                                                                     3.1     IF license type …
                                                                               3.2            set „can drive‟ to "yes"
  End Sub                                                                      3.3     END IF

  Sub display_output()
    'display program output in textbox
    If can_drive = "yes" Then                                   4.1        IF „can drive‟ = "yes" THEN
        TextBox1.Text = "You can drive a car."                  4.2                Display "You can drive a car."
    Else                                                        4.3        ELSE
        TextBox1.Text = "You are not allowed to drive a car."   4.4                Display "You are not allowed to drive a car."
    End If
  End Sub                                                       4.5        ENDIF
End Class




C Wilson, 2007                                                                                                            - 75 -
Programming in Visual Basic Express

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.


C Wilson, 2007                                                                                - 76 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                     - 77 -
Programming in Visual Basic Express




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.


C Wilson, 2007                                                                                           - 78 -
Programming in Visual Basic Express

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.
      Randomize()
                                      The number generated will then be assigned to the variable
                                      named „dice‟.
       dice = Int(6 * Rnd() + 1)
                                      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:


                 randomnum = int(highestno - lowestno+1) *rnd() + lowestno)


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!]




C Wilson, 2007                                                                                   - 79 -
Programming in Visual Basic Express

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

         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")


    Code it and see – you only require a single command button on your form!

C Wilson, 2007                                                                                       - 80 -
Programming in Visual Basic Express

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!




            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.
                                                                                                Screen Design




C Wilson, 2007                                                                                           - 81 -
Programming in Visual Basic Express

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                                       Note: only steps 4,5 and 6
                                                                    need to be refined.
    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




C Wilson, 2007                                                                                   - 82 -
Programming in Visual Basic Express

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


C Wilson, 2007                                                                                             - 83 -
Programming in Visual Basic Express

Sample Runs




C Wilson, 2007                        - 84 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                     - 85 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                                  - 86 -
Programming in Visual Basic Express

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

 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




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‟.



C Wilson, 2007                                                                                   - 87 -
Programming in Visual Basic Express

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…                            Using an array…

Dim name1 As String                                                                 This is the name of the
                                                       Dim firstname(5) As String   array in memory.
 Name1 Homer
                                                        1   Homer
Dim name2 As String                                     2   Marge
 Name2 Marge                                            3   Bart
                                                        4   Lisa
Dim name3 As String                                     5   Maggie
 Name3 Bart                                                                         This is the data stored in
                                                                                    location firstname(4)
Dim name4 As String
 Name4 Lisa

Dim name5 As String                                              This is the element number
 Name5 Maggie                                                    or location for each item of
                                                                 data in the name array.



In order to use special array variables like this we have to learn some new commands…




C Wilson, 2007                                                                                          - 88 -
Programming in Visual Basic Express

Arrays – Typical examples of code used

                                                                                                                 1      Homer
        Create an array. The code
                                                                                                                 2      Marge
         required to create the array could                    Dim firstname(5) As String
         be something like this2.                                                                                3      Bart
                                                                                                                 4      Lisa
                                                              Note: we specify the name of the
                                                              array, its size, and its data type.                5      Maggie




        Store a single item of data. The code required to store „Bart‟ in element number 3 is
                                                                                                            firstname(3) = "bart"


        Display a single item of data. The code required to
         display the contents of element number 4 could be                                ListBox1.Items.Add(Firstname(4))



Get the idea? Now look at this…

                                                                                    Dim row As Integer
        Display the entire array. The code required                                For row = 1 To 5
         to display the entire list of all names can be                               ListBox1.Items.Add(firstname(row))
         easily written using a FOR loop as follows.                                Next
                                                                                            This code would be just as simple
                                                                                            with a list of a million names!




        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.
                                               Dim person As Integer
                                               For person = 1 To 5
                                                 firstname(person) = InputBox("Enter a name", "Address Book")
                                               Next



        Prompt for, and display a single item of data. We can even retrieve individual items of
         information.
                                    Dim element As Integer
                                    element = InputBox("Enter a number between 1 and 5", "Address Book")
                                    MsgBox("You picked " & firstname(element))


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.

C Wilson, 2007                                                                                                                 - 89 -
Programming in Visual Basic Express

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



C Wilson, 2007                                                                                              - 90 -
Programming in Visual Basic Express

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.




C Wilson, 2007                                                                                             - 91 -
Programming in Visual Basic Express

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




C Wilson, 2007                                                                                 - 92 -
Programming in Visual Basic Express

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()                                                                    1.      Set up counters and total variables
       Dim response As Integer                                                    2.      While user wishes to buy more chocolate
      While response <> vbNo
          hide_golden_ticket()                                                    3.             Hide Golden Ticket
          buy_chocolate()                                                         4.             Buy Chocolate
          update_summary()                                                        5.             Update Summary
          response = MsgBox("Would you like to buy more?", MsgBoxStyle.YesNo, "Buy Chocloate?")
       End While                                                                  6.      As if user would like to buy more chocolate

    End Sub                                                                           7.        End While

    Sub setup()
      amount_spent = 0
      bars_bought = 0
      golden_tickets = 0

    End Sub

    Sub hide_golden_ticket()                                                          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!
                                                                                      3.1      For chocolate_bar = 1 To 50
                                                                                      3.2             Set all elements of ticket array to “no win”
      'Set all bars to no win...                                                      3.3      Next
      Dim chocolate_bar As Integer
      For chocolate_bar = 1 To 50
                                                                                      3.4      Select random number between 1 and 50 inclusive as
        ticket(chocolate_bar) = "No win."                                                      winner
      Next                                                                            3.5      Set ticket array (winner) as "Golden Ticket!"
      'then set a random ticket element to golden ticket!
      Randomize()
      winner = Int(50 * Rnd()) + 1
      ticket(winner) = "Golden Ticket!"

    End Sub                                                                           Buy Chocolate

    Sub buy_chocolate()                                                               4.1      Select random number between 1 and 50 inclusive as
      'pick a bar of chocolate at random (from the sweety shop counter)
      Randomize()                                                                              purchased bar of chocolate
      bar_purchased = Int(50 * Rnd()) + 1                                             4.2      Set amount_spent to amount_spent + price
      amount_spent = amount_spent + price                                             4.3      Set bars_bought to bars_bought + 1
      bars_bought = bars_bought + 1
    End Sub

    Sub update_summary()                                                              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                                                  5.1      If random bar purchased equals random winner
                                                                                      5.2              Set golden_tickets to golden_tickets + 1
          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!"                                                                             5.3            Display „congratulations‟ message and
                                                                                                       summary of bars bought and amount spent.
        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!"
                                                                                      5.4       Else
      End If                                                                          5.5              Display „sorry‟ message and summary of bars
                                                                                                       bought and amount spent.
      'update summary details
      TextBox1.Text = "£ " & amount_spent
      TextBox2.Text = bars_bought                                                     5.6       End If
      TextBox3.Text = golden_tickets
    End Sub
                                                                                      5.7       Display amount spent in textbox
  End Class                                                                           5.8       Display no. of bars bought in textbox
                                                                                      5.9       Display no. of golden tickets in textbox




C Wilson, 2007                                                                                                                                    - 93 -
Programming in Visual Basic Express

Sample Runs




C Wilson, 2007                        - 94 -
Programming in Visual Basic Express


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.




C Wilson, 2007                                                                                     - 95 -
Programming in Visual Basic Express

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.




C Wilson, 2007                                                                                                  - 96 -
Programming in Visual Basic Express


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.



C Wilson, 2007                                                                                      - 97 -

								
To top