Top Banner
Chapter 7 - Visual Basic Schneider 1 Chapter 7 Arrays
50

Chapter 7

Jan 04, 2016

Download

Documents

Lester Luna

Chapter 7. Arrays. Outline and Objective. Arrays in Visual Basic One- dimensional arrays Control arrays Two-dimensional arrays Searching Sorting. Array verses Simple Variable. Simple variable is used to store a single value. - PowerPoint PPT Presentation
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: Chapter 7

Chapter 7 - Visual Basic Schneider

1

Chapter 7

Arrays

Page 2: Chapter 7

Chapter 7 - Visual Basic Schneider

2

Outline and Objective

• Arrays in Visual Basic• One- dimensional arrays

• Control arrays

• Two-dimensional arrays

• Searching

• Sorting

Page 3: Chapter 7

Chapter 7 - Visual Basic Schneider

3

Array verses Simple Variable

• Simple variable is used to store a single value.

• Array variable is used to represent many values of the same type with one variable name.

Page 4: Chapter 7

Chapter 7 - Visual Basic Schneider

4

Elements of an Array

• Array Name: A valid variable name for the structure.

• Subscript or Index : A value that refers to a particular array element.

• Element: An individual data item within an array.

Page 5: Chapter 7

Chapter 7 - Visual Basic Schneider

5

Array Declaration

• Syntax

Dim arrayname ( 1 To n) As VarType

Page 6: Chapter 7

Chapter 7 - Visual Basic Schneider

6

Examples of arrays

• Dim month ( 1 To 12) As String

• Dim score (1 To 30) As Single

• Dim students (1 To 30 ) As String

Page 7: Chapter 7

Chapter 7 - Visual Basic Schneider

7

The Dim Statement

• Used when you need to define an array .

• The Dim statement sets up storage for array.

• A Dim statement must occur before the first reference to the array elements.

Page 8: Chapter 7

Chapter 7 - Visual Basic Schneider

8

Initializing an Array

Private Sub cmdWhoWon_Click()

Dim teamName( 1To 5) As String

Dim n As Integer

' Fill array with World Series Winners

teamName(1) = "Red Sox"

teamName(2) = "Giants"

teamName(3) = "White Sox"

teamName(4) = "Cubs"

teamName(5) = "Cubs"

n = Val(txtNumber.Text)

picWinner.Print "The "; teamName(n); " won World Series number"; n

End Sub

Page 9: Chapter 7

Chapter 7 - Visual Basic Schneider

9

Array teamName()

teamName( 1 To 5) As String

Red Sox Giants White Sox Cubs Cubs

teamName(1)

Array Name

Index

Page 10: Chapter 7

Chapter 7 - Visual Basic Schneider

10

Initializing an Array by Reading from a File

Dim student ( 1 To 30) As String

Open “STUDENTS.TXT” For Input As #1

For count = 1 To 30

Input #1, student ( count )

Next count

Page 11: Chapter 7

Chapter 7 - Visual Basic Schneider

11

Adding Rows in an Array

Dim score( 1 To 30) As Single, student (1 To 30) As String

Open “STUDENT.TXT” For Input As #1

For count = 1 To 30

Input #1, student (count), score (count)

Next count

sum = 0

For count = 1 To 30

sum = sum + score(count)

Next count

average = sum/30

Page 12: Chapter 7

Chapter 7 - Visual Basic Schneider

12

Parallel Arrays

• Two arrays are referred to as parallel if subscripted variables having the same subscript are related.

Page 13: Chapter 7

Chapter 7 - Visual Basic Schneider

13

Example of Parallel Arrays

Dim nom ( 1 To 8) As String , score ( 1 To 8 ) As Integer

Open “SCORE.TXT” For Input As #1

For student = 1 To 8

Input #1, nom(student), score(student)

Next student

Close #1

Page 14: Chapter 7

Chapter 7 - Visual Basic Schneider

14

Ordered Array

• An array is ordered if its values are in either ascending or descending order.

• For string arrays, the ANSI table is used to evaluate the “less than or equal to” condition.

Page 15: Chapter 7

Chapter 7 - Visual Basic Schneider

15

Processing Arrays

• Searching successive elements of an array is called Sequential Search.

• Also called linear search or serial search.• A Sequential Search examines each element , from

the first to the last, until the specified value is found or the end of the array is reached.

Page 16: Chapter 7

Chapter 7 - Visual Basic Schneider

16

Example of Sequential Search (finding the quiz grades greater than 8)

Dim quiz ( 1 To 15) As Single

For position =1 TO 15

If quiz(position) > 8 THEN

picOutput.Print quiz (position)

count = count + 1

End If

Next Position

Page 17: Chapter 7

Chapter 7 - Visual Basic Schneider

17

Sequential Search

• Useful for short lists.

• Very inefficient for long lists ( example names in telephone book).

• Use binary search if the list is sorted.

Page 18: Chapter 7

Chapter 7 - Visual Basic Schneider

18

Binary Search

• In binary search, an ordered array is repeatedly divided in half. The half not containing the target value is ignored.

• To use binary search, the data in the array must be arranged in ascending or descending order.

Page 19: Chapter 7

Chapter 7 - Visual Basic Schneider

19

Binary Search

Private Sub BinarySearch(corp As String, result As String

foundFlag = 0 '1 indicates corp found

first = 1

last = numFirmsDo While (first <= last) And (foundFlag = 0) middle = Int((first + last) / 2) Select Case UCase(firm(middle)) Case corp foundFlag = 1 Case Is > corp last = middle - 1 Case Is < corp first = middle + 1 End Select

Loop

End Sub

Page 20: Chapter 7

Chapter 7 - Visual Basic Schneider

20

Binary Search

If foundFlag = 1 Then

result = "found”

Else

result = "not found

End If

Page 21: Chapter 7

Chapter 7 - Visual Basic Schneider

21

Merging

• A common practice involving arrays is merging two sorted arrays.

Page 22: Chapter 7

Chapter 7 - Visual Basic Schneider

22

The method for merging two sorted arrays :

1.Compare the two first elements of the first and second arrays.

A. If one name alphabetically precedes the other, copy it onto the third list and cross it off the original array.

B. If the names are the same, copy the name onto the third list and cross out the name from both arrays.

2. Repeat Step 1 with the new name in the array until you reach the end of either array.

3. Copy the names from the remaining array onto the third array.

Page 23: Chapter 7

Chapter 7 - Visual Basic Schneider

23

Passing an Array

• An array can be passed to another procedure by reference.

Page 24: Chapter 7

Chapter 7 - Visual Basic Schneider

24

Example of Passing an array:

Private Sub cmddisplay_Click()

' Pass array to subprogram and function

Dim score(1 To 5) As Integer

Call FillArray(score( ) )

picAverage.Cls

picAverage.Print ”Average is"; Sum(score( ) ) / 5

End Sub

Passing array score

Page 25: Chapter 7

Chapter 7 - Visual Basic Schneider

25

Array Score is passed to a Subprogram

Private Sub FillArray(s( ) As Integer)

' Fill array with scores

s(1) = 85

s(2) = 92

s(3) = 75

s(4) = 68

s(5) = 84

End Sub

This array is pointing to the same location as array score

Page 26: Chapter 7

Chapter 7 - Visual Basic Schneider

26

Array Score is passed to a Function

Private Function Sum(s ( ) As Integer) As Integer

Dim total As Integer, index As Integer

' Add up scores

total = 0

For index = 1 To 5

total = total + s(index)

Next index

Sum = total

End Function

Page 27: Chapter 7

Chapter 7 - Visual Basic Schneider

27

Control Array

• A means of constructing arrays of text boxes, labels, and command buttons.

• At least one element of a control array must be created when the form is designed.

• The remaining elements can be created either during form design, or with the Load statement.

Page 28: Chapter 7

Chapter 7 - Visual Basic Schneider

28

Creating Control Array during Form Design

• Add one instance of the desired control to the form

• Set the Index property to a number

• Set any other properties that will be common to all other elements

• Click on the control and then press Ctrl+C

• Press Ctrl + V, to create the next element

Page 29: Chapter 7

Chapter 7 - Visual Basic Schneider

29

Control Array

• All the properties of the first element are passed to other elements of the control array including the Top and Left properties.

• The only property that differs from first element is the Visible property.

• The Load statement sets the Visible property to False.

Page 30: Chapter 7

Chapter 7 - Visual Basic Schneider

30

Control Array Event Procedures:

• Even though we may have many elements in the txtBox( ) control array, we will have just one txtBox_GotFocus event procedure to deal with.

• The value of Index property for the elements of the control array must be passed.

Example:

Private Sub txtBox_GotFocus (Index As Integer)

Page 31: Chapter 7

Chapter 7 - Visual Basic Schneider

31

Creating Control Array at Run Time:

• You can create elements of a control array via Load statement at run time.

Page 32: Chapter 7

Chapter 7 - Visual Basic Schneider

32

Creating Control Array at Run Time:

• The standard unit of measurement is called Twip.• To place a new element of a control array, adjust

the Top and Left properties during run time. • Set the Visible property to True.

Page 33: Chapter 7

Chapter 7 - Visual Basic Schneider

33

The location and size of a control

Page 34: Chapter 7

Chapter 7 - Visual Basic Schneider

34

Example ( Creating control array during run time)

Private Sub Form_Load()

Dim i As Integer, monthNames As String

monthNames = "FebMarAprMayJunJulAugSepOctNovDec"

For i = 1 To 11

Load lblMonth(i)

Load txtInfo(i)

lblMonth(i).Top = lblMonth(i - 1).Top + txtInfo(0).Height

txtInfo(i).Top = txtInfo(i - 1).Top + txtInfo(0).Height

lblMonth(i).Caption = Mid(monthNames, 3 * i - 2, 3)

lblMonth(i).Visible = True

txtInfo(i).Visible = True

Next i

End Sub

Page 35: Chapter 7

Chapter 7 - Visual Basic Schneider

35

Sorting

• A common practice involving arrays is sorting the elements of the array in either ascending or descending order.

• You can sort an array in alphabetic order or numeric order.

• There are various methods to sort data items.

Page 36: Chapter 7

Chapter 7 - Visual Basic Schneider

36

Types of Sorting

• Bubble Sort

• Shell Sort

Page 37: Chapter 7

Chapter 7 - Visual Basic Schneider

37

Bubble Sort

• The bubble sort involves comparing adjacent elements and swapping the values of those elements when they are out of order.

• One complete time through the array is called a pass.

Page 38: Chapter 7

Chapter 7 - Visual Basic Schneider

38

Bubble Sort

For passNum = 1 To 4 'Number of passes is 1 less than

number of items

For index = 1 To 5 - passNum

If name(index) > name(index + 1) Then

Call SwapData( name( ), index)

End If

Next index

Next passNum

Page 39: Chapter 7

Chapter 7 - Visual Basic Schneider

39

Swapping two variables

Private Sub SwapData ( A ( ) As String, index As Integer)

Dim temp As String

temp = A ( index)

A(index ) = A (index + 1)

A ( index + 1) = temp

End Sub

Page 40: Chapter 7

Chapter 7 - Visual Basic Schneider

40

Bubble Sort

• The maximum number of passes necessary to sort the elements in an array is equal to the number of elements in the array less 1.

• The minimum number of passes to sort an array may be one.

• It works well for a small number of data items.• It is too slow for really long lists.

Page 41: Chapter 7

Chapter 7 - Visual Basic Schneider

41

Shell Sort

• Is similar to the bubble sort, but instead of comparing and swapping adjacent elements A(count) and A(count+1), it compares and swaps nonadjacent elements A(count) and A(count + Gap) , where Gap starts considerably greater than 1.

Page 42: Chapter 7

Chapter 7 - Visual Basic Schneider

42

Shell Sort

• Gap is set to one-half the length of the array.• After each pass if flag is set to 1, then Gap is

halved again for the next pass.• At the end Gap becomes one, and adjacent

elements are compared and swapped.

Page 43: Chapter 7

Chapter 7 - Visual Basic Schneider

43

Shell Sort

gap = Int(numParts / 2)

Do While gap >= 1

Do

doneFlag = 1

For index = 1 To numParts - gap

If part(index) > part(index + gap) Then

Call Swap( part(index), part(index + gap)

doneFlag = 0

End If

Next index

Loop Until doneFlag = 1

gap = Int(gap / 2) 'Halve the length of the gap

Loop

Page 44: Chapter 7

Chapter 7 - Visual Basic Schneider

44

Efficiency of Bubble and Shell sort

Array Elements Bubble Sort Shell Sort

5 10 1515 105 115

25 300 302

30 435 364

100 4950 2638

500 124,750 22,517

Page 45: Chapter 7

Chapter 7 - Visual Basic Schneider

45

Two-Dimensional Arrays

• Store values as a table, grouped into rows and columns.

• The first subscript of a two-dimensional array refers to the row and the second subscript to the column.

Page 46: Chapter 7

Chapter 7 - Visual Basic Schneider

46

Declaration of Two-Dimensional Array

• Syntax:– Dim arrayname (m1 To n1, m2 To n2) As vartype

• Example:– Dim rm (1 To 4, 1 To 4) As Single

column

row

Page 47: Chapter 7

Chapter 7 - Visual Basic Schneider

47

Example of a two-dimensional array:

rm(1 To 4, 1 To 4)

0 2054 802 7382054 0 2786 2706802 2786 0 100736 2706 100 0

Chicago

Los AngelesNew York

Philadelphia

Chicago Los Angeles New York Philadelphia

rm (2,2)rm (3,4)

Page 48: Chapter 7

Chapter 7 - Visual Basic Schneider

48

Example of Input File

0, 2054, 802, 738

2054, 0, 2786, 2706

802, 2786, 0, 100

738, 2706, 100, 0

Page 49: Chapter 7

Chapter 7 - Visual Basic Schneider

49

Manipulating a Two-Dimensional Array

• Use nested For ….. Next loops to assign or access elements of a two-dimensional array.

• Example: For row = 1 To 4

For col = 1 To 4

Input #1, rm(row, col)

Next col

Next row

Page 50: Chapter 7

Chapter 7 - Visual Basic Schneider

50

Example of two-dimensional array

Dim a(1 To 4, 1 To 5 ) As Integer

Private Sub cmdDisplay_Click()

For j = 1 To 4

For k = 1 To 5

a (j, k) = (j - k) * j

picOutput.Print a(j,k);

Next k

picOutput.Print

Next j

End Sub