Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 8, Slide 1Starting Out with Visual Basic 3 rd Edition Chapter 8 Arrays, Timers, and More.

Similar presentations


Presentation on theme: "Chapter 8, Slide 1Starting Out with Visual Basic 3 rd Edition Chapter 8 Arrays, Timers, and More."— Presentation transcript:

1 Chapter 8, Slide 1Starting Out with Visual Basic 3 rd Edition Chapter 8 Arrays, Timers, and More

2 Chapter 8, Slide 2Starting Out with Visual Basic 3 rd Edition Chapter 8 Introduction

3 Chapter 8, Slide 3Starting Out with Visual Basic 3 rd Edition Chapter 8 Topics Arrays are like groups of variables that allow you to store sets of similar data A single dimension array is useful for storing and working with a single set of data A multidimensional array can be used to store and work with multiple sets of data Array programming techniques covered Summing and averaging all the elements in an array Summing all the columns in a two-dimensional array Searching an array for a specific value Using parallel arrays

4 Chapter 8, Slide 4Starting Out with Visual Basic 3 rd Edition Section 8.1 Arrays An Array Is Like a Group of Variables With One Name You Store and Work With Values in an Array by Using a Subscript

5 Chapter 8, Slide 5Starting Out with Visual Basic 3 rd Edition Array Characteristics An array stores multiple values of same type Like a group of variables with a single name For example, the days of the week would be: a set of 7 string variables maximum length of 9 characters All variables within an array are called elements and must be of the same data type You access the elements in an array through a subscript

6 Chapter 8, Slide 6Starting Out with Visual Basic 3 rd Edition Subscript Characteristics A subscript, also known as an index, is a number that identifies a specific element within an array Subscript numbering works like the index for a list box: Subscript numbering begins at 0 1st element in an array is always subscript 0 Last element is total number of elements - 1

7 Chapter 8, Slide 7Starting Out with Visual Basic 3 rd Edition Declaring an Array ArrayName is the variable name of the array UpperSubscript is the value of the array's highest subscript Must be a positive whole number DataType may be any valid Visual Basic data type VB knows an array is declared when name is followed by number of elements in parens Dim ArrayName(UpperSubscript) As DataType

8 Chapter 8, Slide 8Starting Out with Visual Basic 3 rd Edition Array Declaration Example hours(0) hours(1) hours(2) hours(3) hours(4) hours(5) Dim hours(5) As Integer Note that 6 elements are available when an array with an uppersubscript of 5 is declared Each element is an integer type

9 Chapter 8, Slide 9Starting Out with Visual Basic 3 rd Edition Default Initialization All elements of an Integer array are initialized to zero Same initialization as an integer variable Each array element is initialized exactly the same as a simple variable of that data type A Single is initializled to zero (0.0) A String is initialized to nothing (empty string)

10 Chapter 8, Slide 10Starting Out with Visual Basic 3 rd Edition Implicit Array Sizing & Initialization An array can be initialized when declared Example: This array is implicitly sized Upper subscript value is left blank Number of elements implied from initialization Upper subscript of 5 implied by this example A 6 element array is declared Elements are assigned the values shown Dim numbers() As Integer = {2, 4, 5, 7, 9, 12}

11 Chapter 8, Slide 11Starting Out with Visual Basic 3 rd Edition Named Constant as Upper Subscript A named constant may be used as an array's highest subscript instead of a number A common use for named constants Highest subscript is often used multiple times If highest subscript changes, use of a named constant allows it to be changed in one place Const UPPER_SUB As Integer = 100 Dim array(UPPER_SUB) As Integer

12 Chapter 8, Slide 12Starting Out with Visual Basic 3 rd Edition Working With Array Elements Simply include the subscript to use an array element like an ordinary variable numbers(2) refers to 3 rd element of array numbers(0) = 100 numbers(1) = 200 numbers(2) = 300 numbers(3) = 400 numbers(4) = 500 numbers(5) = 600 pay = hours(3) * rate tallies(0) += 1 MessageBox.Show(grossPay(5).ToString)

13 Chapter 8, Slide 13Starting Out with Visual Basic 3 rd Edition Arrays and Loops Loops are frequently used to process arrays Use a loop to prompt for 10 values Use a loop to reset values in the names array to an empty string Dim count As Integer For count = 0 To 9 series(count) = CInt(InputBox("Enter a number")) Next count Dim count As Integer For count = 0 To 999 names(count) = "" Next count

14 Chapter 8, Slide 14Starting Out with Visual Basic 3 rd Edition Array Bounds Checking Visual Basic checks each subscript value of each array reference used at run time A subscript is invalid if it is Negative Greater than the UpperSubscript declared An invalid subscript causes VB to throw an exception Bounds checking is not done at design time

15 Chapter 8, Slide 15Starting Out with Visual Basic 3 rd Edition For Each … Next Statement This statement is similar to a For…Next Iterates for each element in the array strName assigned value of next array element at each iteration Tutorial 8-1 demonstrates array processing Dim employees As String() = {"Jim", "Sally", _ "Henry", "Jean", "Renee"} Dim strName As String For Each strName In employees MessageBox.Show(strName) Next name

16 Chapter 8, Slide 16Starting Out with Visual Basic 3 rd Edition Section 8.2 More About Array Processing There Are Many Uses of Arrays and Many Programming Techniques That Involve Them For Example, Arrays Are Used to Total Values or Search for Data

17 Chapter 8, Slide 17Starting Out with Visual Basic 3 rd Edition Determining Number of Elements Arrays have a Length property that holds the number of elements in the array Note that length is number of array elements, not the upper subscript of the array Length property always 1 greater than the upper subscript Dim values(25) As Integer For count = 0 to (values.Length – 1) MessageBox.Show(values(count).ToString) Next count

18 Chapter 8, Slide 18Starting Out with Visual Basic 3 rd Edition Total the Values in an Array Variable to hold sum ( intTotal) is initialized to zero prior to loop Iterate over all elements, adding each element to intTotal Dim intUnits(24) as IntegerDeclare array Dim intTotal As Integer = 0'Initialize accumulator Dim intCount as IntegerDeclare loop counter Find total of all values held in array For intCount = 0 To (intUnits.Length – 1) intTotal += intUnits(intCount) Next intCount

19 Chapter 8, Slide 19Starting Out with Visual Basic 3 rd Edition Average the Values in an Array Similar to previous example but then divides total by number of elements to get average Dim intUnits(24) as IntegerDeclare array Dim intTotal As Integer = 0'Initialize accumulator Dim dblAverage as DoubleDeclare average var Dim intCount as IntegerDeclare loop counter Find total of all values held in array For intCount = 0 To (intUnits.Length – 1) intTotal += intUnits(intCount) Next intCount Use floating-point division to compute average dblAverage = intTotal / intUnits.Length

20 Chapter 8, Slide 20Starting Out with Visual Basic 3 rd Edition Find Highest & Lowest Array Values Pick first element as the highest Search rest of array for higher values If a higher value is located, save the value Use similar logic to find lowest value Dim intNumbers(24) as Integer Dim intCount as Integer Dim intHighest as Integer = intNumbers(0) For intCount = 1 To (intNumbers.Length - 1) If intNumbers(intCount) > intHighest Then intHighest = intNumbers(intCount) End If Next intCount

21 Chapter 8, Slide 21Starting Out with Visual Basic 3 rd Edition Copy Values in One Array to Another Done by copying elements one at a time Note that this cannot be done by a simple assignment newValues = oldValues Causes newValues variable to reference the same memory location as oldValues Thus any change to oldValues will affect newValues and vice versa For intCount = 0 To 100 newValues(intCount) = oldValues(intCount) Next intCount

22 Chapter 8, Slide 22Starting Out with Visual Basic 3 rd Edition Parallel Arrays Sometimes useful to store related data in two or more arrays called parallel arrays Causes the i th element of one array to be related to the i th element of another Allows related data to be accessed using the same subscript on both arrays

23 Chapter 8, Slide 23Starting Out with Visual Basic 3 rd Edition Parallel Arrays Example Assume the following array declarations Element 1 refers to the same person with name in one array and address in the other Dim names(4) As String Dim addresses(4) As String Names(0) Names(1) Names(2) Names(3) Names(4) Addresses(0) Addresses(1) Addresses(2) Addresses(3) Addresses(4) Person #1Person #2Person #3Person #4Person #5

24 Chapter 8, Slide 24Starting Out with Visual Basic 3 rd Edition Parallel Arrays Processing Dim names(4) As String Dim addresses(4) As String For intCount = 0 To 4 lstPeople.Items.Add("Name: " & names(intCount) & _ " Address: " & addresses(intCount)) Next intCount Use parallel array processing to add name and address of each person to a list box Tutorial 8-2 has an example of parallel arrays

25 Chapter 8, Slide 25Starting Out with Visual Basic 3 rd Edition Array & List Box Parallel Processing ' Initialize a List Box with names lstPeople.Items.Add("Jean James")' Subscript 0 lstPeople.Items.Add("Kevin Smith")' Subscript 1 lstPeople.Items.Add("Joe Harrison")' Subscript 2 ' Initialize an Array with corresponding phone numbers phoneNumbers(0) = "555-2987" phoneNumbers(1) = "555-5656" phoneNumbers(2) = "555-8897" ' Process a selection If lstPeople.SelectedIndex > -1 And _ lstPeople.SelectedIndex < phoneNumbers.Length Then MessageBox.Show(phoneNumbers(lstPeople.SelectedIndex)) Else MessageBox.Show("That is not a valid selection.") End If A list box selection used as an array index

26 Chapter 8, Slide 26Starting Out with Visual Basic 3 rd Edition Searching Arrays, The Search Find 1 st instance of value 100 in array scores intPosition gives position of this value Dim blnFound as Boolean = False Dim intCount as Integer = 0 Dim intPosition as Integer = -1 Search for a 100 in the array Do While Not blnFound And intCount < scores.Length If scores(intCount) = 100 Then blnFound = True intPosition = intCount End If intCount += 1 Loop

27 Chapter 8, Slide 27Starting Out with Visual Basic 3 rd Edition Searching Arrays, The Result Indicates whether the value was found If found, position is given as a test number ' Was 100 found in the array? If blnFound Then MessageBox.Show( _ "Congratulations! You made a 100 on test " & _ (intPosition + 1).ToString, "Test Results") Else MessageBox.Show( _ "You didnt score a 100, but keep trying!", _ "Test Results") End If

28 Chapter 8, Slide 28Starting Out with Visual Basic 3 rd Edition Sorting an Array Arrays have a Sort method Arranges elements in ascending order (lowest to highest) Sorted so that numbers = {1, 3, 6, 7, 12} Sorted so that names = {Alan, Bill, Kim, Sue} Dim numbers() As Integer = { 7, 12, 1, 6, 3 } Array.Sort(numbers) Dim names() As String = { "Sue", "Kim", _ "Alan", "Bill" } Array.Sort(names)

29 Chapter 8, Slide 29Starting Out with Visual Basic 3 rd Edition Resizing an Array ReDim is a new keyword If Preserve is specified, the existing contents of the array are preserved Arrayname names the existing array UpperSubscript specifies the new highest subscript value Can declare an array with no subscript and state number of elements later with ReDim ReDim [Preserve] Arrayname(UpperSubscript)

30 Chapter 8, Slide 30Starting Out with Visual Basic 3 rd Edition Resizing Example Dim scores() As Single' Declared with no elements Dim numScores as Integer ' Obtain number of elements from the user numScores = CInt(InputBox("Enter number of test scores")) If numScores > 0 Then ReDim scores(numScores - 1) Else MessageBox.Show("You must enter 1 or greater.") End If Array scores declared with no elements User prompted for number of elements ReDim resizes array based on user input

31 Chapter 8, Slide 31Starting Out with Visual Basic 3 rd Edition Section 8.3 Sub Procedures and Functions That Work With Arrays You May Pass Arrays As Arguments to Sub Procedures and Functions You May Also Return an Array From a Function This Allows You to Write Sub Procedures and Functions That Perform General Operations With Arrays

32 Chapter 8, Slide 32Starting Out with Visual Basic 3 rd Edition Passing Arrays as Arguments Dim numbers() As Integer = { 2, 4, 7, 9, 8, 12, 10 } DisplaySum(numbers) Sub DisplaySum(ByVal intArray() As Integer) Dim total As Integer = 0 ' Accumulator Dim count As Integer ' Loop counter For count = 0 To (intArray.Length - 1) total += intArray(count) Next MessageBox.Show(Total is " & total.ToString) End Sub Array numbers passed to DisplaySum sub Sub computes/shows sum of array elements Can pass any integer array to DisplaySum

33 Chapter 8, Slide 33Starting Out with Visual Basic 3 rd Edition Passing Arrays: ByVal and ByRef When passing an array ByVal Calling procedure sees sub procedure changes to element values Simple variables dont work this way If sub assigns array argument to another array, no effect on array in calling procedure When passing an array ByRef Calling procedure sees sub procedure changes to element values If sub assigns array argument to another array, calling procedure array values affected

34 Chapter 8, Slide 34Starting Out with Visual Basic 3 rd Edition Passing Arrays Example Dim numbers() As Integer = { 1, 2, 3, 4, 5 } ResetValues(numbers) Sub ResetValues(ByVal intArray() As Integer) Dim newArray() As Integer = {0, 0, 0, 0, 0} intArray = newArray End Sub After ResetValues procedure executes, numbers array still contains { 1, 2, 3, 4, 5 } If array passed ByRef, numbers array will contain { 0, 0, 0, 0, 0 } after procedure runs

35 Chapter 8, Slide 35Starting Out with Visual Basic 3 rd Edition An Array Returned From a Function Function GetNames() As String() ' Get four names from user ' Return them as an array of strings. Dim strNames(3) As String Dim strInput As String Dim count As Integer For count = 0 To 3 strInput = InputBox("Enter name " & _ (count + 1).ToString) strNames(count) = strInput Next Return strNames End Function Return type String() indicates an array of strings Thus the function result must be assigned to an array of strings

36 Chapter 8, Slide 36Starting Out with Visual Basic 3 rd Edition Section 8.4 Multidimensional Arrays You May Create Arrays With More Than Two Subscripts to Hold Complex Sets of Data

37 Chapter 8, Slide 37Starting Out with Visual Basic 3 rd Edition A Two Dimensional Array Picture Column 0Column 1Column 2Column 3 Row 0 Row 1 Row 2 Thus far, arrays have been one-dimensional However, arrays can also be two-dimensional Picture a two-dimensional array like a spreadsheet with rows and columns

38 Chapter 8, Slide 38Starting Out with Visual Basic 3 rd Edition Two Dimensional Array Syntax UpperRow and UpperColumn give the highest subscript for the row and column indices of the array The array on the previous slide could be: Defines three rows; 0, 1, and 2 And four columns; 0, 1, 2, and 3 Dim ArrayName(UpperRow, UpperColumn) As DataType Dim array(2,3) As Single

39 Chapter 8, Slide 39Starting Out with Visual Basic 3 rd Edition Two Dimensional Array Subscripts Dim array(2,3) As Single Column 0Column 1Column 2Column 3 Row 0array(0,0)array(0,1)array(0,2)array(0,3) Row 1array(1,0)array(1,1)array(1,2)array(1,3) Row 2array(2,0)array(2,1)array(2,2)array(2,3)

40 Chapter 8, Slide 40Starting Out with Visual Basic 3 rd Edition Nested Loops And Two Dimensions For row = 0 To 2 For col = 0 To 3 num = Val(InputBox("Enter a score.")) scores(row, col) = num Next col Next row Nested loops are often used in processing two-dimensional arrays In the example, a nested loop is used to insert a value into every element of array scores

41 Chapter 8, Slide 41Starting Out with Visual Basic 3 rd Edition Implicit Sizing and Initialization Can be used with multi-dimensional arrays: Row 0 values Row 1 values Row 2 values Initializes array numbers with the following values Dim numbers(,) As Integer = _ { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} } Col 0Col 1Col 2 Row 0123 Row 1456 Row 2789

42 Chapter 8, Slide 42Starting Out with Visual Basic 3 rd Edition For Each Loop With Two Dimensions A For Each Loop will process all elements of an array without requiring nested loops The example below computes the sum of all elements Total has the value 45 when loop is complete Dim numbers(,) As Integer = {{1, 2, 3}, _ {4, 5, 6}, _ {7, 8, 9}} For Each element In numbers total += element Next element

43 Chapter 8, Slide 43Starting Out with Visual Basic 3 rd Edition Sum Two-Dimensional Array Columns ' Process each column in turn For col = 0 To 2 ' Initialize column accumulator total = 0 ' Sum the column values from each row For row = 0 To 4 total += values(row, col) Next row ' Display the sum of the column. MessageBox.Show("Sum of column " & _ col.ToString & " is " & total.ToString) Next col Outer loop controls column subscript Inner loop controls row subscript

44 Chapter 8, Slide 44Starting Out with Visual Basic 3 rd Edition Three-Dimensional Arrays & Beyond VB allows arrays of up to 32 dimensions Beyond three dimensions, they are difficult to visualize But, all one needs to do is to be consistent in the use of the different indices

45 Chapter 8, Slide 45Starting Out with Visual Basic 3 rd Edition Section 8.5 Enabled Property, Timer Control, and Splash Screens You Disable Controls by Setting Their Enabled Property to False The Timer Control Allows Your Application to Execute a Procedure at Regular Time Intervals Splash Screens Are Forms That Appear As an Application Begins Executing

46 Chapter 8, Slide 46Starting Out with Visual Basic 3 rd Edition Enabled Property Most controls have an Enabled property If this Boolean property is set to false the control is disabled meaning the control: Cannot receive the focus Cannot respond to user generated events Will appear dimmed, or grayed out Default value for this property is true May be set in code when needed as shown: btnExample.Enabled = False

47 Chapter 8, Slide 47Starting Out with Visual Basic 3 rd Edition Timer Control A Timer control generates Tick events Double-click on Timer tool in Toolbox to add Appears in component tray Standard prefix is tmr Can perform a process at regular intervals by coding the process in a Tick event procedure Two important properties Enabled must be true to generate Tick events Interval (milliseconds) decides tick frequency Interval of 1000 causes 1 timer tick per second Tutorial 8-5 demonstrates the Timer control

48 Chapter 8, Slide 48Starting Out with Visual Basic 3 rd Edition Splash Screens A form, often with an application logo, that is displayed while an application is loading A splash screen usually: Has Topmost property set to True so it is displayed over the forms of other applications Disappears shortly by using a Timer Is modeless so the application continues to load while the splash screen is displayed Tutorial 8-6 demonstrates a splash screen

49 Chapter 8, Slide 49Starting Out with Visual Basic 3 rd Edition Section 8.6 Anchoring and Docking Controls Controls Have Two Properties, Anchor and Dock, That Allow You to Determine the Controls Position on the Form When the Form Is Resized at Run Time

50 Chapter 8, Slide 50Starting Out with Visual Basic 3 rd Edition Anchor Property Anchor - a property of various form controls A control anchored to a form edge keeps the same distance to the form edge Controls may be anchored to any, all, or none of the right, left, top, or bottom edges Default is to anchor to top and left edges Can just as easily anchor to bottom right If anchoring to opposing sides, control is resized when form is resized Anchoring to all 4 sides causes control to be resized proportionally to form

51 Chapter 8, Slide 51Starting Out with Visual Basic 3 rd Edition Dock Property Dock - a property of various form controls A control docked to a form edge is placed directly against the form edge Controls may be docked to Any one form edge but not more than one No edge or not docked (the default) Length or width of docked control changes to match length or width of the form edge

52 Chapter 8, Slide 52Starting Out with Visual Basic 3 rd Edition Section 8.7 Random Numbers Visual Basic Provides the Tools to Generate Random Numbers

53 Chapter 8, Slide 53Starting Out with Visual Basic 3 rd Edition Initial Random Number Generation Often used for games and simulations A Random class provides methods and properties to work with random numbers May supply a seed number as below causing same sequence of numbers to be generated Leave the argument blank to omit the seed VB then uses its default random number seed Sequence not repeated if seed omitted Randomize [Number]

54 Chapter 8, Slide 54Starting Out with Visual Basic 3 rd Edition Generating More Random Numbers To get next random number in sequence Repeatedly use a statement like the above to generate additional random numbers randomNumber = Rnd

55 Chapter 8, Slide 55Starting Out with Visual Basic 3 rd Edition Random Numbers in a Range Rnd creates random numbers in the range of 0.0 to 1.0 Can scale these to a selected range of integer numbers needed in your program: Where LowerNumber and UpperNumber are the lowest and highest numbers permitted Tutorial 8-7 shows an interesting use of random numbers randomNumber = Int(LowerNumber + Rnd * _ (UpperNumber - LowerNumber))

56 Chapter 8, Slide 56Starting Out with Visual Basic 3 rd Edition Section 8.8 Building the Demetris Leadership Center Application Build an application making use of arrays and a splash screen


Download ppt "Chapter 8, Slide 1Starting Out with Visual Basic 3 rd Edition Chapter 8 Arrays, Timers, and More."

Similar presentations


Ads by Google