Arrays - PowerPoint PPT Presentation

About This Presentation
Title:

Arrays

Description:

Title: Outline & Objective Author: Faye Navabi Last modified by: Monther Created Date: 11/14/1997 6:39:34 PM Document presentation format: On-screen Show (4:3) – PowerPoint PPT presentation

Number of Views:99
Avg rating:3.0/5.0
Slides: 42
Provided by: Fay111
Category:
Tags: arrays

less

Transcript and Presenter's Notes

Title: Arrays


1
Chapter 7
  • Arrays

2
Outline and Objective
  • Arrays in Visual Basic
  • One-dimensional arrays
  • Control arrays
  • Two-dimensional arrays
  • Searching
  • Sorting

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.

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 or Subscripted variable An individual
    data item within an array.

5
Array Declaration
  • SyntaxDim arrayName(m To n) As varTypewhere m
    and n are integers
  • Examples
  • Dim month(1 To 12) As String
  • Dim population(1987 To 2003) As Single
  • Dim students(1 To 30) As String

6
The Dim Statement
  • Used to declare an array
  • A Dim statement must occur before the first
    reference to the array elements.

7
Initializing an Array
  • Private Sub cmdWhoWon_Click()
  • Dim teamName(1 To 4) As String
  • Dim n As Integer
  • teamName(1) "Red Sox"
  • teamName(2) "Giants"
  • teamName(3) "White Sox"
  • teamName(4) "Cubs"
  • n Val(txtNumber.Text)
  • picWinner.Print "The " teamName(n) " won
    World Series " n
  • End Sub

8
Array teamName()
Array Name
  • Dim teamName( 1 To 4) As String

Red Sox Giants White Sox Cubs
teamName(1)
Index
9
Initializing an Array by Reading from a File
  • Dim student (1 To 30) As String
  • Dim count As Integer
  • Open STUDENTS.TXT For Input As 1
  • For count 1 To 30
  • Input 1, student(count)
  • Next count

10
Adding Up Elements in an Array
  • Dim score(1 To 30) As Single, student(1 To 30) As
    String
  • Dim count As Integer, average as Integer, sum As
    Integer
  • 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

11
Parallel Arrays
  • Two arrays are said to be parallel if subscripted
    variables having the same subscript are related.

12
Example of Parallel Arrays
  • Dim nom(1 To 8) As String, score(1 To 8) As
    Integer
  • Dim student As Integer
  • Open SCORE.TXT For Input As 1
  • For student 1 To 8
  • Input 1, nom(student), score(student)
  • Next student
  • Close 1

13
Form_Load()
  • Use it to Initialize Form Level variables
  • Use it to initialize Form Level Arrays
  • Use it to Dim Dynamic Arrays

14
Dynamic Arrays
  • ReDim can only be used inside a procedure
  • Defines or dimensions a Dynamic array
  • ReDim arrayName (m To n) as varType
  • m, n can be a variables or expressions
  • Use Dim in General Declaration as
  • Dim arrayName() as varType
  • Cannot be used till you ReDim it in a procedure

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

16
Merging two ordered 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.

17
Passing an Array
  • An array can be passed to another procedure by
    reference.
  • Example
  • Private Sub cmddisplay_Click()
  • 'Pass array to subprogram and function
  • Dim score(1 To 5) As Integer
  • Call FillArray(score())
  • picAverage.Print Average is" Sum(score()) /
    5
  • End Sub

18
Array Score is passed to a Sub procedure
  • 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
19
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

20
Sorting
  • A common practice involving arrays is to sort the
    elements of the array in either ascending or
    descending order.
  • Sorting techniques
  • Bubble Sort
  • Shell Sort

21
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 an array is called a
    pass.

22
Bubble Sort
  • For passNum 1 To 4
  • For index 1 To 5 - passNum
  • If name(index) gt name(index 1) Then
  • Call SwapData(name(), index)
  • End If
  • Next index
  • Next passNum

23
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

24
Bubble Sort
  • The number of passes used to sort the elements in
    an array is equal to the number of elements in
    the array less 1.
  • Bubble sort works well for sorting small arrays,
    but is often too slow for very large ones.

25
Shell Sort
  • Similar to the bubble sort
  • Instead of comparing and swapping adjacent
    elements A(count) and A(count1), Shell sort
    compares and swaps non-adjacent elements A(count)
    and A(count Gap), where Gap starts at roughly
    half the size of the array

26
Shell Sort
  • At the end of each pass, if no elements have been
    swapped in the current pass, then Gap is halved
    for the next pass.
  • Eventually, Gap becomes one, and adjacent
    elements are compared and swapped as necessary.

27
Shell Sort
  • gap Int(numParts / 2)
  • Do While gap gt 1
  • Do
  • doneFlag True
  • For index 1 To numParts - gap
  • If part(index) gt part(index gap)
    Then
  • Call Swap(part(index),
    part(index gap)
  • doneFlag False
  • End If
  • Next index
  • Loop Until doneFlag True
  • gap Int(gap / 2) 'Halve the length
    of the gap
  • Loop

28
Efficiency of Bubble and Shell sort (average
number of comparisons)
  • Array Elements Bubble Sort Shell
    Sort
  • 5 10 15
  • 15 105 115
  • 25 300 302
  • 30 435 364
  • 100 4,950 2,638
  • 500 124,750 22,517

29
Ordered Array
  • An array is ordered if its values are in either
    ascending or descending order.
  • For string arrays, ANSI values are used to
    evaluate the less than or equal to condition.

30
Searching Arrays
  • The process of finding the position of a value in
    an array is called searching
  • A sequential search examines each element,
    beginning with the first, until the specified
    value is found or the end of the array is reached

31
Example of a Sequential Search
  • Dim nom(1 To 15) As String, index As Integer,
    foundFlag As Boolean
  • Do While (index lt 15) And (Not foundFlag)
  • If nom(index) Fred Then
  • foundFlag True
  • Else
  • index index 1
  • End If
  • Loop
  • picOutput.Print Fred is located at position
    index

32
Sequential Search
  • Useful for small arrays.
  • Very inefficient for large arrays (for example,
    names in a telephone book).
  • For any size array, if the array is ordered, the
    more efficient binary search can be used.

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

34
Binary Search
  • Private Sub BinarySearch(corp As String, result
    As String)
  • Dim foundFlag As Boolean, first as Integer,
    last as Integer
  • first 1
  • last numFirms
  • Do While (first lt last) And (foundFlag
    False)
  • middle Int((first last) / 2) Select
    Case UCase(firm(middle)) Case corp
    foundFlag True Case Is gt corp
    last middle - 1 Case Is lt corp
    first middle 1 End Select
  • Loop continued on next slide

35
Binary Search (continued)
  • If foundFlag True Then
  • result "found
  • Else
  • result "not found
  • End If
  • End Sub

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

37
Declaration of Two-Dimensional Array
  • Syntax
  • Dim arrayName(m1 To m2, n1 To n2) As varType
  • Example
  • Dim rm(1 To 4, 1 To 4) As Single

column
row
38
Example of a two-dimensional array rm(1 To 4, 1
To 4)
Chicago
Los Angeles
New York
Philadelphia
Chicago
Los Angeles
New York
Philadelphia
rm (2,2)
rm (3,4)
39
Example of Input File
  • 0, 2054, 802, 738
  • 2054, 0, 2786, 2706
  • 802, 2786, 0, 100
  • 738, 2706, 100, 0

40
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

41
Examples How many elements?
  • Dim rm(1 To 4) As Single
  • Dim rm(4, 1 To 4) As Single
  • Dim rm(1 To 4, 1 To 4) As Single
  • Dim rm(4, 1 To 4) As Single
  • Dim rm(0 To 3, 97 To 100)
  • Dim rm (-5 To -3, 5 To 5)
  • Dim (-3 To -5)
Write a Comment
User Comments (0)
About PowerShow.com