VB Console Student Booklet
VB Console Student Booklet
Contents
Download and Setup ............................................................................................................................ 3
Your first program ................................................................................................................................ 3
Example Program 1 – Sequence ............................................................................................................ 4
Example Program 2 - Assignment .......................................................................................................... 5
Example Program 3 - Arithmetic ........................................................................................................... 6
Example Program 4 – Selection ............................................................................................................. 7
Example Program 5 - Relational operators ............................................................................................ 8
Example Program 6 - Boolean operators ............................................................................................... 9
Moderation Exercise 1 – Central Heating ............................................................................................ 10
Example Program 7 - Logical bitwise operators................................................................................... 11
Example Program 8 - Built-in functions ............................................................................................... 12
Example Program 9 ............................................................................................................................. 13
Example Program 10 ............................................................................................................................ 14
Example Program 11 - Repetition ........................................................................................................ 15
Section 12 - Flowcharts ....................................................................................................................... 16
Example Program 13 – Procedures & Functions ................................................................................. 18
Section 14 – By Ref vs. By Val .............................................................................................................. 19
Moderation Exercise 2 – Car Hire ........................................................................................................ 20
Example Program 15 - Constants ......................................................................................................... 21
Example Program 16 - Data Structures ............................................................................................... 22
Other Built-in Data Types .................................................................................................................... 23
Byte ............................................................................................................................................... 23
Enumerated .................................................................................................................................. 23
Records.......................................................................................................................................... 24
Example Program 17 – 1 dimensional arrays ........................................................................................ 26
Example Program 18a – Read from a text file ...................................................................................... 27
Example Program 18b – Write to a text file ......................................................................................... 28
Example Program 19 ............................................................................................................................ 29
Example Program 20 - Validation ........................................................................................................ 30
Example Program 21 – 2 dimensional arrays ...................................................................................... 31
Example Program 22 – Enumerated ................................................................................................... 32
Section 23 - Set operators .................................................................................................................... 33
Union .............................................................................................................................................. 33
Range ............................................................................................................................................... 33
Intersection ...................................................................................................................................... 33
Difference (Distinct) .......................................................................................................................... 34
Membership (Contains) .................................................................................................................... 36
Example Program 24 - Linear search ................................................................................................... 37
Example Program 25 - Bubble sort ...................................................................................................... 38
Extension Set A: Form Applications ..................................................................................................... 39
Extension Set B: COMP1 Revision ....................................................................................................... 40
ADTS -----------------------------------------------------------------------------------------------------------------------40-46
project.com/download/stable/
Imports System
Module Program
Sub Main(args As String())
Console.WriteLine("Hello World!")
End Sub
End Module
Tasks
0.2 – Write a program that displays the message “My name is waseem and I live in Gujrat Pakistan”
(replace waseem and Gujrat Pakistan with your own information)
0.3 – Write a program that displays the lyrics to your national anthem. Each line of the song should
be on a fresh line.
Imports System
Module Program
Sub Main(args As String())
Console.WriteLine("This is the first line of the program. It will be
executed first.")
Console.ReadKey()
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("But then the colour changes to Red.")
Console.ReadKey()
Console.BackgroundColor = ConsoleColor.White
Console.WriteLine("And the background goes white")
Console.ReadKey()
Console.ResetColor()
Console.WriteLine("But it's okay. We can reset it")
Console.ReadKey()
Console.ForegroundColor = ConsoleColor.Yellow
Console.WriteLine("The order of lines of code is important")
End Sub
End Module
Tasks
1.1) Display the words red, amber, green on a fresh line each in order on the screen. Colour the
words appropriately.
1.2) Displaythe names of the colours of the rainbow. Each on a separate line, coloured and in order.
Example Program 2 - Assignment - Integer, byte, real, boolean, character, string, date/time.
Imports System
Module Program
Sub Main(args As String())
Dim theNumber As Integer
Dim theWord As String
theWord = "Bird"
theNumber = 9
Console.ReadKey()
theWord = "Cat"
Console.WriteLine("Enter a number>")
theNumber = Int(Console.ReadLine())
Console.WriteLine("Now " & theWord & " is the word and the number is " &
theNumber)
Console.ReadKey()
End Sub
End Module
Module Program
Sub Main(args As String())
Dim number1, number2, total As Integer
End Sub
End Module
Tasks
3.3) Write a program that displays any times table the user requests
Module Program
Sub Main(args As String())
System.Console.WriteLine("Enter an integer…")
intInput = Val(System.Console.ReadLine())
If intInput = 1 Then
System.Console.WriteLine("Thank you.")
ElseIf intInput = 2 Then
System.Console.WriteLine("That's fine.")
ElseIf intInput = 3 Then
System.Console.WriteLine("Too big.")
Else
System.Console.WriteLine("Not a number I know.")
End If
Console.ReadKey()
End Sub
End Module
1. Write a program to ask the user what 24+9 is. Say “Excellent” if they get it right.
2. Write a program to ask the user “how many in a bakers dozen?” and say “most
excellent” if they get it right.
3. Write a program to ask the user to enter their age. If their age is under 18 then say
“Sorry, this film is not for you”.
4. Write a program to ask the user for two numbers. Compare the first with the second
and then print out one of three messages. Either the numbers are equal, the first is
bigger, or the second is bigger. You will need more than one IF to solve this one.
5. Write a program which asks the user to enter their password. If they enter the word
“PASSWORD” then display the message “Welcome to the treasure”, otherwise display
a message which says “go away, it’s all mine”.
6. Write a program which asks the user to enter a number between 1 and 10. If the
number entered is out with this range then display a message “Sorry…out of range”.
Module Program
Sub Main(args As String())
age = Int(Console.ReadLine())
Console.ReadKey()
End Sub
End Module
== IS Equal To
!= Not Equal To
Module Program
Sub Main(args As String())
Console.ReadKey()
End Sub
End Module
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.
You may practice this task at home, but won’t be able to refer to any notes or files when assessed.
Imports System
Module Program
Sub Main(args As String())
Dim a, b, c, d, e, f, g As Boolean
c = 23 > 14 Or 8 > 11
d = 23 > 67 Or 8 > 11
' The preceding statements set c to True and d to False.
Dim x, y As Boolean
x = Not 23 > 14
y = Not 23 > 67
' The preceding statements set x to False and y to True.
End Sub
End Module
Tasks
1) Adapt the example program so that there is output of the result of
each comparison to the screen
Module Program
Sub Main(args As String())
rounded = Math.Round(num)
squarert = Math.Sqrt(num)
Console.WriteLine("round: " & rounded & vbNewLine & "Square Root: " &
squarert)
trunc = Math.Truncate(num)
End Sub
End Module
Tasks
1) Write a program that asks for 5 numbers, calculates the mean average and then rounds it
down. Display the result on screen.
Mid Function:
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Sub Main(args As String())
End Sub
End Module
Module Program
Sub Main(args As String())
End Sub
End Module
The Left Function
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Sub Main(args As String())
End Sub
End Module
The Ucase and the Lcase Functions
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Sub Main(args As String())
End Sub
End Module
……………………..
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Sub Main(args As String())
End Sub
End Module
VB Math Functions: Numeric Functions
Abs Function
Returns
The absolute value of number
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Sub Main(args As String())
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Sub Main(args As String())
Dim MyValue As Integer
MyValue = Int((6 * Rnd()) + 1) ' Generate random value between 1 and 6.
Console.WriteLine(MyValue)
End Sub
End Module
Tasks:
Explore math.function in VB
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Sub Main(args As String())
Dim theString As String
Console.WriteLine(theString)
Console.WriteLine(newString)
End Sub
End Module
Tasks
1. Write a program that checks a username against a stored value. How the user enters the
username should NOT be case sensitive.
2. Adapt program 1 so that it also takes in a password. If the user enters spaces after the password
the computer will trim them out automatically.
3. Write a program that will check a phone number is of the correct length.
4. Write a program that asks for a user’s full name in one inputbox/textbox but then stores the
first and second names in different variables.
Module Program
Sub Main(args As String())
Dim theInt, theReal, theDate As String
theInt = "23021980"
theReal = "230.21980"
theDate = "23-02-1980"
'whole numbers
Console.WriteLine(theInt)
Console.WriteLine(theInt + "1")
Console.WriteLine(Convert.ToInt32(theInt))
Console.WriteLine((Convert.ToInt32(theInt) + 1))
Console.WriteLine()
'real numbers
Console.WriteLine(theReal)
Console.WriteLine(theReal + "1")
Console.WriteLine(Convert.ToDouble(theReal))
Console.WriteLine(Convert.ToDouble(theReal) + 1)
Console.WriteLine()
'dates
Console.WriteLine(theDate)
Console.WriteLine(theDate + "1")
Console.WriteLine(DateTime.Parse(theDate))
Console.WriteLine(DateTime.Parse(theDate).AddDays(1))
End Sub
End Module
Tasks
Module Module1
Sub Main()
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
theNumber = 7
'a loop
For x = 1 To 10
Console.WriteLine("7 x " & x & " = " & (7 * x))
Next
'the end of the loop
End Sub
End Module
End Sub
End Module
Tasks
1. Write a program which asks for your name and then displays it 5 times on the
screen.
2. Write a program to display the name of the town you live in 10 times.
3. Write a program to ask for a person’s favourite CD and the artist. Both should
be displayed on the same line 5 times.
4. Write a program to ask for a number and display its multiplication table 1 to 100
5. Write a program that asks the user for a number 5 times and adds them all up
to give a total.
Section 12 - Flowcharts
Module Program
'this is a procedure
Sub timestable(ByRef number As Integer)
For x = 1 To 10
Console.WriteLine(number & " x " & x & " = " & (number * x))
Next
End Sub
'this is a function (functions return a value)
Function adder(ByRef a As Integer, ByVal b As Integer)
adder = a + b
Return adder
End Function
Console.ReadKey()
Console.Clear()
Dim x As Integer
x = adder(2, 3) 'call to function adder which returns a value
Console.WriteLine("2 + 3 = " & x)
Console.WriteLine("4 + 6 = " & adder(4, 6)) 'you can simply the code by
putting the call directly into the print statement
Console.ReadKey()
End Sub
End Module
Tasks
If you want to pass the value of the variable, use the ByVal syntax. By passing the value of the
variable instead of a reference to the variable, any changes to the variable made by code in the
subroutine or function will not be passed back to the main code. This is the default passing
mechanism when you don’t decorate the parameters by using ByVal or ByRef.
If you want to change the value of the variable in the subroutine or function and pass the revised
value back to the main code, use the ByRef syntax. This passes the reference to the variable and
allows its value to be changed and passed back to the main code.
An example of output is shown below. The output from your program may look different but must
meet the specification.
You may practice this task at home, but won’t be able to refer to any notes or files when assessed.
1
Daily rates are in whole numbers of pounds.
'number constants
Const conPi = 3.14159265358979
Const conMaxPlanets As Integer = 9
'string constants
Const conVersion = "07.10.A"
Const conCodeName = "Enigma"
'to make a constant available to the whole program "Public" should precede it
'and it should be placed inside the module but outside the procedure
'try it
Console.ReadKey()
Type VariableType
Variable1 as varType1
Variable2 as varType2 ….
VariableN as varTypeN
End Type
After that you can declare any name as this new variable type and use it as ordinary variable.
Note: Special for this project, please do not copy and paste from this tutorial. Type the code
manually so that you may understand the different between UDT and normal variable.
Name As String
Population As Long
Diameter As Double ' in km
Year As Integer
End Type
Sub Main()
Dim myRecord As City
myRecord.Name = Console.Readline()
myRecord.Population = Console.Readline()
myRecord.Year = Console.Readline() myRecord.Diameter
= Console.Readline()
Console.Writeline(myRecord.Name & " city has population of " & _ myRecord.Population & "
million people " & vbCr & " and diameter of " & myRecord.Diameter & " km in year " & _
myRecord.Year
End Sub
Tasks
1) Run the program and try the data for some real city. You see that UDT
combine several data type into single unit.
Byte
Bytes are 8-bit (1 byte) unsigned integers ranging in value from 0 to 255 ( 0 to 2^8-1). The You can
declare Byte variables using the BYTE keyword with the DIM statement. For example:
DIM I AS BYTE
Byte variables are particularly useful for storing small, unsigned integral quantities like the number of
days in a month. You should not use Byte variables in FOR/NEXT loops, as they are highly inefficient.
Enum CardSuit
Clubs
Diamonds
Hearts
Spades
End Enum
Enum DayOfWeek
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
Sunday = 7 End
Enum
Enum Result
Win = 3
Lose = 1
Draw = 0 End
Enum
Records
In VB, Records are known as structures. They allow you to combine several data items (or fields) into
one variable. For example in college instead of having a separate variable to store information about
each fact about a student, you would create a student record with fields to store each fact (or field!):
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
End Sub
End Module
But why should we use Records? Well it makes for much neater code, without having to declare
dozens of variables, we could declare a couple of students. You'll also see how neat your code can
become when using arrays of records.
Tasks
Module Program
countries(1) = "Scotland"
countries(2) = "Belgium"
countries(3) = "Netherlands"
countries(4) = "Germany"
countries(5) = "France"
Randomize()
randomNum = Int(Int((5 * Rnd()) + 1))
End Sub
End Module
()
Tasks
1) Write a program which will set up an array to hold 50 numbers. Call the array numbers. Display
the array's contents across the screen. They should all be 0.
2) Create a program that stores an array of car records. At least 5 cars and 4 fields per record.
3) Create a program that stores an array of 5 people records. The information should be entered by
the user.
4) Adapt program 2 to now do a linear search for a certain car and display it’s details.
Module Program
'Pass the file path and the file name to the StreamReader constructor.
objStreamReader = New IO.StreamReader("E:\file\Cars.txt")
Console.ReadLine()
End Sub
End Module
Tasks
1) Write a program that reads the students’ names from a txt file and displays them on the
screen
2) Write a program that reads 10 team names from a txt file and stores them in an array
3) Write a program that reads 5 song titles from a csv file and displays them on the screen
4) Write a program that reads 20 team names from a csv file into an array, then displays the
array on screen
Module Program
'Pass the file path and the file name to the StreamWriter constructor.
objStreamWriter = New IO.StreamWriter("e:\file\myfile.txt")
End Sub
End Module
Tasks
1) Write a program that asks for 5 names and then writes then to a file
2) Write a program that writes the colours of the rainbow to a csv file
3) Write a program that reads a hiscore table from a file, asks the user to add a new hiscore,
then writes this new hiscore table to the file.
Imports System
Imports System.Reflection.Emit
Imports System.Text
Module Program
Structure person
Dim name As String
Dim age As Integer
Dim alive As Boolean
End Structure
'display data
Console.WriteLine("Student1: " & student1.name & vbTab & student1.age &
vbTab & student1.alive)
Console.WriteLine("Student2: " & student2.name & vbTab & student2.age &
vbTab & student2.alive)
Console.ReadKey()
End Sub
End Module
Tasks
1) Amend the program so that there is a write procedure and a read procedure which are
called
2) Amend the program so that the 2 student are stored in an array of people, then write and
read the array to the file
Imports System
Imports System.Text
Module Program
Do
Console.WriteLine("Enter a mark between 0 and 10")
mark = Val(Console.ReadLine())
If (mark > 10) Or (mark < 0) Then Console.WriteLine("That was not a
valid mark")
Loop Until (mark >= 0) And (mark <= 10) ' keeps going until a valid mark
is entered
Console.WriteLine("Well done!")
Console.ReadKey()
End Sub
End Module
Tasks
1) Write a program that validates a user is old enough to drive (older than 17, younger than 80)
2) Write a program that checks that a telephone number entered is long enough (string length)
3) Write a program that checks that both a username and password is correct before allowing you
to proceed.
Module Program
Console.ReadKey()
End Sub
End Module
Tasks
1) Create a 2d array which stores and displays a grid for noughts and crosses. Allow users to
pick a location and set it to an X or a O.
2) 2d array which stores a grid for Battleships. Allows the user to place their 5 ships and isplay
on screen.
You might think it would be better to use a String to hold the current value instead, but there are
several reasons why an Enum is better, such as:
• The list of valid options will be shown in a pop-up list when you are writing code (see the
picture below, after the first Code snippet), so you don't need to remember them or even
type them - instead you can just select them with your mouse or keyboard.
• It is harder to make a typo that causes bugs, as not only are the values shown in the list for
you to pick from, but also valid entries you type will be changed to the case you declared
them - so you can see when the case is not automatically corrected for you.
• If you use Option Explicit (which is highly recommended anyway), any typo's will cause a
message warning you about them.
They take less memory than Strings, and code that uses them runs faster than the String Imports
System
Imports System.Text
Module Program
Enum Importance
Critical = 4
Important = 3
None = 0
Regular = 2
Trivial = 1
End Enum
End Module
Next
Console.WriteLine(output.ToString())
Console.ReadKey()
Range
' Generate a sequence of integers from 1 to 10
' and project their squares.
Dim squares As IEnumerable(Of Integer) = Enumerable.Range(1,
10).Select(Function(x) x * x)
Intersection
' Create two integer arrays.
Dim id1() As Integer = {44, 26, 92, 30, 71, 38}
Dim id2() As Integer = {39, 59, 83, 47, 26, 4, 30}
Difference (Distinct)
Module Module1
Sub Main()
Dim products() As Product =
{New Product With {.Name = "apple", .Code = 9},
New Product With {.Name = "orange", .Code = 4},
New Product With {.Name = "apple", .Code = 9},
New Product With {.Name = "lemon", .Code = 12}}
Console.ReadKey()
End Sub
End Module
' Check whether the compared objects reference the same data.
If x Is y Then Return True
' Get hash code for the Name field if it is not null.
Dim hashProductName =
If(product.Name Is Nothing, 0, product.Name.GetHashCode())
Membership (Contains)
Module Program
End Sub
Return -1
End Function ' LinearSearch
End Module
Tasks
4) Add mobile telephone numbers to the previous program (Hint: 3rd array needed)
Module Program
End If
Next
Next
Console.ReadLine()
End Sub
End Module
Tasks
Extension: Revision
3) Create a program that codes a string into its ASCII codes and back
7) Create a program that converts a decimal number to floating point and back.
Stalk: (LIFO)
The stack is in abstraction, a linear list of items in which the list is limited to one end – defined
as the ‘top’ for each addition to (push) and deletion from (pop-) (of the stack). The
fundamental operations defining a stack are:
Imports System
Imports System.Text
Module Program
For Each c In st
Console.Write(c + " ")
Next c
Console.WriteLine()
st.Push("V")
st.Push("H")
Console.WriteLine("The next poppable value in stack: {0}", st.Peek())
Console.WriteLine("Current stack: ")
For Each c In st
Console.Write(c + " ")
Next c
Console.WriteLine()
Console.WriteLine("Removing values ")
st.Pop()
st.Pop()
st.Pop()
Console.WriteLine("Current stack: ")
For Each c In st
Console.Write(c + " ")
Next c
Console.ReadKey()
End Sub
End Module
Queue:
If you were ever in the queue at the grocery store, the first person in the queue is first served.
Another abstract data type in computer language runs on an initial basis FIFO(FirstIn
Module Program
For Each c In q
Console.Write(c + " ")
Next c
Console.WriteLine()
q.Enqueue("V")
q.Enqueue("H")
Console.WriteLine("Current queue: ")
For Each c In q
Console.Write(c + " ")
Next c
Console.WriteLine()
Console.WriteLine("Removing some values ")
Dim ch As Char
ch = q.Dequeue()
Console.WriteLine("The removed value: {0}", ch)
ch = q.Dequeue()
Console.WriteLine("The removed value: {0}", ch)
Console.ReadKey()
End Sub
End Module
Linked List
inked List is an Abstract Data Type (ADT) that holds a collection of Nodes, the nodes can be
accessed in a sequential way. Linked List doesn’t provide a random access to a Node.
Note:
1. Head of the LinkedList only contains the Address of the First element of the List.
2. The Last element of the LinkedList contains null in the pointer part of the node because it is
the end of the List so it doesn’t point to anything as shown in the above diagram.
3. The diagram which is shown above represents a singly linked list. There is another complex
type variation of LinkedList which is called doubly linked list, node of a doubly linked list
contains three parts: 1) Pointer to the previous node of the linked list 2) content of the
element 3) pointer to the next node of the linked list.
Imports System
Imports System.Text
Module Program
Dim nullPointer As Integer = -1
End If
End Sub
Dim currentnodeptr As Integer
Sub OutputAllNodes()
StartPointer = 0
currentnodeptr = StartPointer
While currentnodeptr <> nullPointer
Console.WriteLine(List(currentnodeptr).Data)
currentnodeptr = List(currentnodeptr).Pointer
currentnodeptr = currentnodeptr + 1
End While
End Sub
InsertNode(3)
OutputAllNodes()
End Sub
End Module
Binary Tree:
A binary tree is a hierarchical data structure in which each node has at most two children
generally referred as left child and right child.
3. Data element
The topmost node in the tree is called the root. An empty tree is represented
by NULL pointer.
Binary
Tree: Common Terminologies
Parent: Every node (excluding a root) in a tree is connected by a directed edge from
exactly one other node. This node is called a parent.
Child: A node directly connected to another node when moving away from the root.
Height of a node: Number of edges from the node to the deepest leaf. Height of the
tree is the height of the root.
In the above binary tree we see that root node is A. The tree has 10 nodes with 5 internal
nodes, i.e, A,B,C,E,G and 5 external nodes, i.e, D,F,H,I,J. The height of the tree is 3. B is the
parent of D and E while D and E are children of B.
Public Class TreeNode
Private mLeftNode As TreeNode
Private mData As Integer
Private mRightNode As TreeNode
End Property
Get
Return mData
End Get
End Property
Return
End If
End Sub
SyncLock (Me)
DoInorder(root)
End SyncLock
End Sub
DoInorder(node.LeftNode)
Console.Write(node.Data & " ")
DoInorder(node.RightNode)
End Sub
DoPostorder(node.LeftNode)
DoPostorder(node.RightNode)
Console.Write(node.Data & " ")
End Sub
End Class
Module modTreeTest
Sub Main()
Dim tree As Tree = New Tree()
Dim insertValue As Integer
Dim i As Integer
For i = 1 To 10
insertValue = randomNumber.Next(100)
Console.Write(insertValue & " ")
tree.InsertNode(insertValue)
Next
Console.WriteLine("Preorder Traversal")
tree.PreorderTraversal()
Console.WriteLine("Inorder Traversal")
tree.InorderTraversal()
Console.WriteLine("Postorder Traversal")
tree.PostorderTraversal()
End Sub
End Module