Top Banner
Arrays Visual Basic
48
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Arrays

Arrays

Visual Basic

Page 2: Arrays

Visual Basic Slide 2 of 48

Arrays

Topic & Structure of the lesson

•Introduction

•One Dimensional Array

•Sorting an array

•Searching an array

Page 3: Arrays

Visual Basic Slide 3 of 48

Arrays

Learning Outcomes

At the end of this lecture you will be able to :

1. Declare a one dimensional array

2. Store data into an array

3. Use Option Base

4. Declare an Unbound Array

5. Use Specific Bound Arrays

Page 4: Arrays

Visual Basic Slide 4 of 48

Arrays

Key Words

If you have mastered this topic, you should be

able to use the following terms correctly in your

assignments and tests:

1. Dim

2. Option Base

3. LBound

4. UBound

5. Index

Page 5: Arrays

Visual Basic Slide 5 of 48

Arrays

References

• An Introduction to Programming Using Visual Basic 6.0

David I Schneider

Chapter 7

• VB 6 How to Program

Deitel and Deitel

Chapter 7

Page 6: Arrays

Visual Basic Slide 6 of 48

Arrays

Definition of Arrays

An array is a consecutive group of memory locations that all have the same name and

the same type

To refer to a particular location or element in the array we specify the array name and the

index value

Page 7: Arrays

Visual Basic Slide 7 of 48

Arrays

How do arrays work?

56

34

12

32

45

23

Numbers(0)

Numbers(1)

Numbers(2)

Numbers(3)

Numbers(4)

Numbers(5)

Name of Array (all the same)

Only the index number makes the difference

Dim numbers(5)

Page 8: Arrays

Visual Basic Slide 8 of 48

Arrays

Declaring Arrays

There are two ways to declare an array:

Default

Specified Bounds

Dim num(10) As Integer

Dim num(1990 To 2000) As Integer

Page 9: Arrays

Visual Basic Slide 9 of 48

Arrays

Using Option Base

Option Base 1

Dim n(5)

Private Sub Command1_Click()

For i = 1 To 5

n(i) = InputBox("enter num")

Next i

End Sub

1 2 3 4 5 elements

Page 10: Arrays

Visual Basic Slide 10 of 48

Arrays

Without Option Base

Dim n(5)

Private Sub Command1_Click()

For i = 0 To 5

n(i) = InputBox("enter num")

Next i

End Sub

0 1 2 3 4 5 Six Elements

Page 11: Arrays

Visual Basic Slide 11 of 48

Arrays

Group Exercise

Num(4)2

1

3

6

8

1. Write a statement to declare the array

2 Write a statement to to print 8 from the array

3 Write a statement to total all elements in the array

4 Write a statement to double each element in the array i.e multiply each element by 2

5 What is num(0) + num(4) ?

Page 12: Arrays

Visual Basic Slide 12 of 48

Arrays

Program code using “Default” Arrays

Dim num(5) As Integer

Private Sub Command1_Click()

Print "Here are the odd numbers:"

For x = 0 To 5

If x Mod 2 = 1 Then

num(x) = x

End If

Print Space$(2) & num(x)

Next x

End Sub

Page 13: Arrays

Visual Basic Slide 13 of 48

Arrays

Program code using “Specified Bounds” Arrays

Dim frequency(1 To 6), x, dieNo As Integer

For x = 1 To 10

dieNo = 1 + Int(Rnd() * 6)

frequency(dieNo) = frequency(dieNo) + 1

Next x

Print “These are the results of the die roll:”

For x = 1 To 6

Print “No. “ & x & “ = “ & frequency(x)

Next x

Page 14: Arrays

Visual Basic Slide 14 of 48

Arrays

Group Exercise I

Build a program that constructs an array of 20 integers, in which the elements of the array are initialized to the first 20 even numbers.

After the initialization process, multiply all the elements of the array with 3.

Print the elements of the array before and after the multiplication using two List Boxes.

Page 15: Arrays

Visual Basic Slide 15 of 48

Arrays

SolutionOption Base 1Dim n(20) As IntegerPrivate Sub Command1_Click()Dim x ,y as Integery = 2For x = 1 To 20 n(x) = y List1.AddItem n(x) y = y + 2Next x

For x = 1 To 20 n(x) = n(x) * 3 List2.AddItem n(x)Next xEnd Sub

Page 16: Arrays

Visual Basic Slide 16 of 48

Arrays

Example of String Arrays

Arrays can contain any data types, including stringsOption Base 1

Dim Cars(3) As String

Dim fastestCar As Integer

Cars(1) = “Proton Satria”

Cars(2) = “Nissan Sentra”

Cars(3) = “Honda Accord”

fastestCar = 1+ Int(Rnd() * 3)

Print “The fastest car is the “ & Cars(fastestCar)

Page 17: Arrays

Visual Basic Slide 17 of 48

Arrays

Exercise II

Build a program that constructs an array of 20 integers, initialized with a random number from 1 to 20.

Generate another array of integers with the lower bound of 2 and the upper bound of 5. Using this array, find out how many numbers of the 20 integer array are multiples of 2, 3, 4 and 5.

Page 18: Arrays

Visual Basic Slide 18 of 48

Arrays

Homework

The table below gives names and test scores from a math contest. Write a program to display the names of the students scoring above the average for these eight students.

Richard 135

Geraldine 114

James 92

John 91

Paul 150

Max 114

Robert 91

Barbara 124

Page 19: Arrays

Visual Basic Slide 19 of 48

Arrays

Visual Basic

Arrays

Procedures, Searching and Sorting

Page 20: Arrays

Visual Basic Slide 20 of 48

Arrays

Learning Outcomes

At the end of this lecture you will be able to :

1. Write a program Using LBound and UBound statements

2. Pass an array to a sub procedure

3. Sort an array using bubble sort

4. Search an array using linear search

Page 21: Arrays

Visual Basic Slide 21 of 48

Arrays

Key Words

If you have mastered this topic, you should be able to use the following terms correctly in your assignments and exams:

1. Dim

2. LBound

3. UBound

4. RND

5. Sort

6. Search

Page 22: Arrays

Visual Basic Slide 22 of 48

Arrays

LBound and UBound Procedures

LBound and UBound represent the lower boundary and the upper boundary of an array respectively.Example:

Dim s(9), x As Integer

For x = LBound(s) To UBound(s)

s(x) = 2 + 2 * x

Next x

For x = LBound(s) To UBound(s)

print space$(2) & x & space$(7) & s(x)

Next x

For x = 0 To 9

Page 23: Arrays

Visual Basic Slide 23 of 48

Arrays

Group Exercise

Build a program that constructs an array of 20 integers, initialized with a random number from 1 to 20.

Create another array of integers with the lower bound of 2 and the upper bound of 5. Using this array, find out how many numbers of the 20 integer array are multiples of 2, 3, 4 and 5.

Page 24: Arrays

Visual Basic Slide 24 of 48

Arrays

Solution

Dim num(1 to 20) As Integer

Dim a(2 To 5) As Integer

Private Sub Command1_Click()

Dim x As Integer, j As Integer

For x = LBound(num) To UBound(num)

num(x) = 1 + Int(Rnd * 20)

Next x

For j = 1 To 20If num(j) Mod 2 = 0 Then a(2) = a(2) + 1End IfIf num(j) Mod 3 = 0 Then a(3) = a(3) + 1End If

Page 25: Arrays

Visual Basic Slide 25 of 48

ArraysIf num(j) Mod 4 = 0 Then

a(4) = a(4) + 1

End If

If num(j) Mod 5 = 0 Then

a(5) = a(5) + 1

End If

Next j

Print “Multiple of Two’s" & a(2)

Print “Multiple of Three’s" & a(3)

Print “Multiple of Four’s" & a(4)

Print “Multiple of Five’s & a(5)

End Sub

Solution

Page 26: Arrays

Visual Basic Slide 26 of 48

Arrays

Passing Arrays to Procedures

For a procedure to receive an array through a call, the parameter list must specify that an array will be received. For example:

Private Sub ProcessArray(x() As Integer)

The following call passes array Months to the above procedure:

Call ProcessArray(Months())

Remember: Arrays are passed by reference, not value!

Page 27: Arrays

Visual Basic Slide 27 of 48

Arrays

Example of an Array Program using Procedures

Dim num(1 To 30) As Integer

Dim y As Integer

Private Sub Form_Load()

Call InitializeArray(num())

Call UpdateValues(num())

End Sub

Page 28: Arrays

Visual Basic Slide 28 of 48

ArraysPrivate Sub InitializeArray(x() As Integer)

For y = 1 To 30

x(y) = 1 + Int(Rnd() * 10)

List1.AddItem x(y)

Next y

End Sub

Private Sub UpdateValues(x() As Integer)

For y = 1 To 30

x(y) = x(y) * x(y)

List2.AddItem x(y)

Next y

End Sub

Example of an Array Program using Procedures

Page 29: Arrays

Visual Basic Slide 29 of 48

Arrays

Group Exercise

Write a program that will pass an array of 10 integers to a sub program. The sub program will initialize the array to a random number from 1 to 10.

Page 30: Arrays

Visual Basic Slide 30 of 48

Arrays

Sorting Arrays

The simplest way to sort an array is through a bubble sort.

X(1) 5

X(2) 3

Temp

5

X(1) 3

X(2) 3

Temp

5

X(1) 3

X(2) 5

Temp

5

Temp = X(1) X(1) = X(2) X(2) = Temp

Step 1 Step 2 Step 3

Page 31: Arrays

Visual Basic Slide 31 of 48

Arrays

Program that Sorts Arrays

Private Sub Command1_Click()

Dim num(1 To 10) As Integer

Dim y, maxNo, temp As Integer

For y = 1 To 10

num(y) = 1 + Int(Rnd() * 100)

Next y

For maxNo = 1 To 10 Step 1

For y = 1 To 9 Step 1

If num(y) > num(y + 1) Then

temp = num(y)

num(y) = num(y + 1)

num(y + 1) = temp

End If

Next y

Next maxNo

Page 32: Arrays

Visual Basic Slide 32 of 48

Arrays

Group Exercise

Write a program to sort the following array

into descending order

1 5 7 8 9 0 3 2 6 4

After SortingAfter Sorting

9 8 7 6 5 4 3 2 1 0

Page 33: Arrays

Visual Basic Slide 33 of 48

Arrays

Searching Arrays

There are two ways to search through an array:

Linear Search

Binary Search

Compares each element with the search key

Eliminates searching through redundant arrays by comparing the search key with the middle element (array must be sorted)

Page 34: Arrays

Visual Basic Slide 34 of 48

Arrays

Program Using Linear Search

Dim a(1 to 10) As Integer

Dim x, key As Integer

For x = 1 to 10

a(x) = val(Inputbox(“Enter Num”)

Next x

key = val(Inputbox(“Enter Num to Search”)

For x = LBound(a) To UBound(a)

If a(x) = key

Print “Found!”

Exit Sub

End If

Next x

Print “Not Found!”

Page 35: Arrays

Visual Basic Slide 35 of 48

Arrays

Group Exercise

Write a program to store 10 random numbers into an array called Num

Accept a value from the user using an InputBox

Search the array to find the value If the number is found display using MsgBox

“Number Found” otherwise display “Not Found”

Page 36: Arrays

Visual Basic Slide 36 of 48

Arrays

Program Using Binary Search

Dim a(1 to 10),x, low, middle, high, key As Integer

For x = 1 to 10

a(x) = val(Inputbox(“Enter Num”)

Next x

key = val(Inputbox(“Enter Num to Search”)

low = LBound(a)

high = UBound(a)

Do While (low <= high)

middle = (low + high) \ 2

If (key = a(middle)) Then

Print “Found”

Exit Sub

Else

Page 37: Arrays

Visual Basic Slide 37 of 48

Arrays

Program Using Binary Search (cont)

If (key < a(middle) Then

high = middle – 1

Else

low = middle + 1

End If

End If

Loop

Print “Not found”

Page 38: Arrays

Visual Basic Slide 38 of 48

Arrays

Group Exercise

The table below gives names and test scores from a math contest.

1. Write a program to store the names and marks into an array

2. Display the names of the students scoring above the average mark

Richard 135

Geraldine 114

James 92

John 91

Paul 150

Max 114

Robert 91

Barbara 124

Page 39: Arrays

Visual Basic Slide 39 of 48

Arrays

Multi-dimensional Arrays

While single dimensional arrays look like this:

A B C D E

A two-dimensional array looks like this:

A1 B1 C1 D1 E1

A2 B2 C2 D2 E2

Page 40: Arrays

Visual Basic Slide 40 of 48

Arrays

Declaring a Multi-dimensional Array

0 1 2 3 4 5 6 70

1

2

3

4

5

6

7

If we were to represent a chess board using a multi-dimensional array, we will have the following declaration:

Dim chess(8,8) As Integer

Red square: chess(5,4)

Page 41: Arrays

Visual Basic Slide 41 of 48

Arrays

Declaring a Multi-dimensional Array (II)

1

2

3

4

5

6

7

8

Or… to be more specific:

Dim chess(1 To 8, 1 To 8) As Integer

Red square: chess(6,5)

1 2 3 4 5 6 7 8

Page 42: Arrays

Visual Basic Slide 42 of 48

ArraysOption explicit‘store values into a two dimensional arrayDim n(1 to 2, 1 to 3) As IntegerPrivate Sub Command1_Click()For i = 1 To 2 For j = 1 To 3 n(i, j) = Val(InputBox(“Enter Num" & “Row” & i & “Col” & j)) Next jNext i‘display contents of the array to listboxFor i = 1 To 2 For j = 1 To 3 List1.AddItem n(i, j) Next jNext iEnd Sub

Multi-Dimensional Array

Page 43: Arrays

Visual Basic Slide 43 of 48

Arrays

Exercise

The scores for the top three golfers at the 1999 golf tournament are shown in table below

Round1 2 3 4

Tiger Woods 70 66 65 69Tom Kite 77 69 66 70Tommy Tolles 72 72 72 67

• Write a procedure to enter the data to an array• Write a program to compute the total score for

each player

Page 44: Arrays

Visual Basic Slide 44 of 48

Arrays

SolutionDim nom(1 to 3) as string,score (1 to 3, 1 to 4) as integerPrivate sub command1_click()Dim player, round,total as integerFor player = 1 to 3 nom(player) = inputbox(“enter name”) for round 1 = 1 to 4 nom(player,round) = val(inputbox(“enter score”)) next roundNext player‘compute score for each payerFor player = 1 to 3 let total = 0For round = 1 to 4 let total = total + score(player,round)Next roundPic1.print “The total score for” ; nom(player); “is’’; totalNext player

Page 45: Arrays

Visual Basic Slide 45 of 48

Arrays

Control Arrays

• Group together similar function controls

• Min Lower Bound 0 and Max 32767

• Identified by an Integer Index

• ExampleText1(0).text = “Welcome To VB”

Text1(1).text = “Welcome To VB”

Page 46: Arrays

Visual Basic Slide 46 of 48

Arrays

Homework

• Write a program to store random numbers from 1 to 10 into a one dimensional array and determine the largest number

Page 47: Arrays

Visual Basic Slide 47 of 48

Arrays

Homework

100 students were asked to rate the quality of a particular lecturer in their class. They give a rating on a scale of 1 to 10 (1 being terrible and 10 being excellent). Place the 100 responses in an array of integers and summarize the results of the poll.

Note: The responses are to be randomized.

Page 48: Arrays

Visual Basic Slide 48 of 48

Arrays

Solution

Dim frequency(1 To 10), x, poll As Integer

Private Sub Command1_Click()

For x = 1 To 100

poll = 1 + Int(Rnd() * 10)

frequency(poll) = frequency(poll) + 1

Next x

Print "These are the results of the poll:"

For x = 1 To 10

Print "No. " & x & " = " & frequency(x)

Next x

End Sub