chapter 8
DESCRIPTION
Chapter 8. Using Repetition with Loops and Lists. Class 8: Loops and Lists. Write Do loops to execute statements repeatedly Write For loops to execute statements repeatedly Use generic collections of objects to locate items in a list and to add, change, and delete list items - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/1.jpg)
Chapter 8
Using Repetition with Loops and Lists
![Page 2: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/2.jpg)
Class 8: Loops and Lists
• Write Do loops to execute statements repeatedly• Write For loops to execute statements repeatedly• Use generic collections of objects to locate items in a
list and to add, change, and delete list items• Use controls that operate on lists, including the ListBox and ComboBox controls
• Use the DataGridView control to work with tabular data
![Page 3: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/3.jpg)
Introduction to Loops
• Chapter 7 discussed the decision-making structure• This chapter discusses the repetition structure• After completing this chapter, you will know about
the three primary control structures– The sequence structure– The decision-making structure– The repetition structure
• These structures are part of nearly every program written
![Page 4: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/4.jpg)
Executing Statements Repeatedly
• Situations where repetition is used– Calculating payroll – a loop is used to calculate the
payroll for each employee– Reading multiple records in a file – a loop is used
to process each record in a file– Graphical animations – a loop is used to move
graphical objects about the screen– Accounting problems – depreciation and loan
balances are calculated repeatedly for multiple periods
![Page 5: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/5.jpg)
Do While and Do Until Loops (Syntax)
• Do While and Do Until loops execute statements repeatedlyDo [While | Until] condition [statements] [Exit Do] [statements]Loopstatements
![Page 6: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/6.jpg)
Do While and Do Until Loops (Syntax, continued)
• Do While and Do Until loops test the condition before executing the statements in a loop– The condition evaluates to a Boolean value
• The Do While form executes statements while the condition is True
• The Do Until form executes statements until the condition becomes True
• The Exit Do statement causes the Do loop to exit immediately– statements following the loop execute
![Page 7: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/7.jpg)
Figure 8-1: Execution Flow of a Do Until Loop
![Page 8: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/8.jpg)
Figure 8-2: Execution Flow of a Do While Loop
![Page 9: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/9.jpg)
Loops and Counters
• A counter is a variable whose value increases by a constant value each time through a loop– The constant value used to increment the
counter is typically 1• A counter takes the following general form:
– Counter = Counter + 1– Counter += 1
![Page 10: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/10.jpg)
Loops and Counters (Example)
• Print the counting numbers 1 through 10 using a Do Until loop
Dim Counter As Integer = 1Do Until Counter > 10 Debug.WriteLine(Counter) Counter += 1Loop
![Page 11: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/11.jpg)
Loops and Counters (Example, continued)
• Print the counting numbers 1 through 10 using a Do While loop
Dim Counter As Integer = 1Do While Counter <= 10 Debug.WriteLine(Counter) Counter += 1Loop
![Page 12: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/12.jpg)
Types of Loops
• Pre-test loops test a condition before executing the statements in a loop
• Post-test loops execute the loop's statements first, and then test the loop's condition
![Page 13: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/13.jpg)
Post-Test Do Loops (Syntax)
• In a post-test loop, the condition is tested after the loop statements have executedDo [statements] [Exit Do] [statements]Loop [While | Until] conditionstatements
![Page 14: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/14.jpg)
Post-Test Do Loops (Syntax, continued)
• Note the statement(s) in the loop are first executed, and then the condition is tested– Thus, the loop's statements will always execute at least
once• The Do Loop While variation executes the
loop's statements while a condition is True• The Do Loop Until variation executes the
loop's statements until a condition is True
![Page 15: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/15.jpg)
Post-Test Do Loops (Example)
• Print the counting numbers 1 through 10Dim Counter As Integer = 1Do Debug.WriteLine(Counter) Counter += 1Loop While Counter < 10
![Page 16: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/16.jpg)
Figure 8-3:Execution Flow of a Post-test Do Loop
![Page 17: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/17.jpg)
The Role of an Accumulator
• An accumulator is similar to a counter– An accumulator is updated each time the statements in
a loop execute– An accumulator is used to calculate (accumulate) a
total• An accumulator takes the following general form:
– Accumulator = Accumulator + value– Accumulator += value
![Page 18: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/18.jpg)
Accumulator (Example)• Store the sum of the counting numbers 1 through
10
Dim Counter As Integer = 1Dim Accumulator As Integer = 0Do While Counter <= 10 Debug.Write (Counter) Debug.WriteLine(“ “ & Accumulator) Accumulator += Counter Counter += 1Loop
![Page 19: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/19.jpg)
Accumulator (Example) (continued)
![Page 20: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/20.jpg)
Infinite Loops
• A condition must ultimately occur causing a loop to exit• Loops can be mistakenly written so that statements execute
indefinitely – These loops are called infinite loops
• Infinite loop example (Counter is always equal to 1):Dim Counter As Integer = 1Do While Counter < 10 Debug.WriteLine(Counter)Loop
![Page 21: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/21.jpg)
Nested Do Loops and Decision-making
• Loops can be nested, just as decision-making statements can be nested
• Loops can contain decision-making statements
• Decision-making statements can contain loops
• Both can contain nested sequence structures
![Page 22: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/22.jpg)
Combining Looping and Decision-making Statements
(Example)• Determine whether a number is prime
Private Shared Function IsPrime( _ ByVal arg As Integer) As Boolean
Dim Count As Integer = 2 Do While Count < arg If (arg Mod Count) = 0 Then Return False End If Count += 1 Loop Return True
End Function
![Page 23: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/23.jpg)
For Loops (Introduction)
• For loops execute statements repeatedly• Use a For loop in place of a Do loop when
the iteration count (the number of times the loop will execute) is known in advance
• For loops run more quickly than comparable Do loops
• For loops are more readable than equivalent Do loops
![Page 24: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/24.jpg)
For Loops (Syntax)
For counter = start To end [Step increment]
[statements] [Exit For] [statements]Next [counter]statements
![Page 25: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/25.jpg)
For Loops (Syntax, continued)
• The For and Next statements mark the beginning and end of a For loop
• counter is first initialized to start– The value of counter is incremented automatically– Do not explicitly set the value of counter
• By default, counter is incremented by one each time through the loop– This value can be changed by including the Step
increment clause
![Page 26: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/26.jpg)
For Loops (Example)
• Print the counting numbers 1 to 10Dim Counter As IntegerFor Counter = 1 To 10 Debug.WriteLine(Counter)Next Counter
![Page 27: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/27.jpg)
Figure 8-5: Execution of a For Loop
![Page 28: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/28.jpg)
Nested For Loop (Example)
• Print a multiplication tableDim Factor1, Factor2, Result As IntegerFor Factor1 = 1 To 10 For Factor2 = 1 To 10 Result = Factor1 * Factor2 Debug.Write(Result.ToString() & " ") Next Debug.WriteLine("")Next
![Page 29: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/29.jpg)
Using the Step Keyword
• Use the Step keyword to modify a counter's value by a value other than 1
• Example to decrement a counter by 5
Dim CurrentYear As IntegerFor CurrentYear = 2000 To 1900 Step –5 Debug.WriteLine(CurrentYear.ToString)Next CurrentYear
![Page 30: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/30.jpg)
Introduction to Collections
• Collections store repeating items as a list• All collections store references to objects
having the same data type or different data types
• Some collections are predefined– The Controls collection, for example
• It is possible to create custom collections
![Page 31: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/31.jpg)
Members of Collections
• The Add method adds an item to the end of a collection
• The Count property returns the number of items in a collection
• The Item method references an item in a collection– The method is 0-based
• The RemoveAt method removes a collection item– The method is also 0-based
![Page 32: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/32.jpg)
Categories of Collections
• One category of collection can store items with different data types
• A second category of collection requires the data type of all items be the same– This type of collection is called a generic list
• A third category of collection stores items always having the same data type
![Page 33: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/33.jpg)
Creating a List
• The List class is used to create collections that store items with the same data type– This type of a collection is called a generic list– The List class is new to Visual Studio 2005
• Example to declare a list of type Employee:Private EmployeeList As New _ List(Of Employee)
![Page 34: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/34.jpg)
Adding Items to a List
• An instance of the List class is empty when first created– There are no items in the list
• Calling the Add method adds an item to the end of the list– The Add method accepts one argument – the item to
add– The item added must have the same data type as the
data type expected by the list
![Page 35: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/35.jpg)
Adding Items to a List (Example)
• Add two items to a list
Dim EmpCurrent As New EmployeeEmpCurrent.EmployeeID = 18223EmpCurrent.EmployeeName = "Joe Smith"EmployeeList.Add(EmpCurrent)EmpCurrent = New EmployeeEmpCurrent.EmployeeID = 24428EmpCurrent.EmployeeName = "Mary Deems"EmployeeList.Add(EmpCurrent)
![Page 36: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/36.jpg)
Referencing a List Item (Example)
• The Item method is used to reference a list item
• Reference the first Employee in the list named EmployeeListDim EmpCurrent As EmployeeEmpCurrent = EmployeeList.Item(0)Debug.WriteLine(EmpCurrent.EmployeeID.ToString)
Debug.WriteLine(EmpCurrent.EmployeeName)
![Page 37: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/37.jpg)
Deleting a Collection Item• Call the RemoveAt method with one argument –
the 0-based index of the item to remove– An exception will be thrown if the index value is
invalid• Example to remove the first collection item:
Try EmployeeList.RemoveAt(0)Catch ex As ArgumentOutOfRangeException MessageBox.Show("Employee not found.")End Try
![Page 38: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/38.jpg)
Determining the Size and Capacity of a Collection
• The Count property stores the number of items in a collection
• The Capacity property stores the number of items the collection can store– The initial value for the Capacity property is 4– The value doubles, as necessary, as Count
reaches Capacity• This is done for performance reasons
![Page 39: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/39.jpg)
Enumerating a Collection with a For loop
• A Do loop or For loop can be used to enumerate the items in a collection
• A For loop is preferable– Enumerate from 0 to Count - 1
• A For Each loop can also be used to enumerate the items in a collection
![Page 40: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/40.jpg)
Enumerating a Collection with a For Loop (Example)
• Enumerate the EmployeeList collectionDim Index As IntegerDim EmpCurrent As EmployeeFor Index = 0 To EmployeeList.Count – 1 EmpCurrent = EmployeeList(Index) Debug.WriteLine( _ EmpCurrent.EmployeeID.ToString) Debug.WriteLine(EmpCurrent.EmployeeName)
Next
![Page 41: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/41.jpg)
Introduction to the For Each Loop
• The For Each loop is used to enumerate collections
• Conceptually, it works the same way as a For loop– Each time through the loop, an object is
returned from the collection
![Page 42: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/42.jpg)
The For Each Loop (Syntax)
For Each object In group [statements] [Exit For] [statements]Nextstatements
![Page 43: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/43.jpg)
The For Each Loop (Syntax, continued)
• object contains an object reference• group contains the collection• Each time through the For Each loop an
object is returned
![Page 44: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/44.jpg)
The For Each Loop (Example)
• Enumerate the EmployeeListDim EmpCurrent As EmployeeFor Each EmpCurrent In EmployeeList Debug.WriteLine( _ EmpCurrent.EmployeeID.ToString)
Debug.WriteLine( _ EmpCurrent.EmployeeName.ToString)
Next
![Page 45: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/45.jpg)
Introduction to the ComboBox Control
• The ComboBox control displays a list of items from which the end user selects one item
• The DropDownStyle property defines the visual appearance of the ComboBox– DropDown– Simple– DropDownList
![Page 46: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/46.jpg)
Introduction to the ListBox Control
• The ListBox control is similar to the ComboBox control– The visible region does not drop down
• The SelectedItems property returns a collection of the selected items
• The SelectionMode property defines whether the user can select one item or many items
• The ClearSelected method clears the selected items
![Page 47: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/47.jpg)
Working with the ComboBox and ListBox Controls
• Common operations– Items must be added to the list– Conditional actions must be performed as the
end user selects list items– Items must be selected programmatically
![Page 48: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/48.jpg)
Adding Items to a ComboBox or ListBox
• Items can be added at design time using the String Collection Editor
• Items can be added at run time by calling the Add method as follows:
For Count = 0 To 6 lstDemo.Items.Add("Item " & _ Count.ToString)Next
![Page 49: Chapter 8](https://reader031.vdocuments.site/reader031/viewer/2022020320/56815bda550346895dc9cb50/html5/thumbnails/49.jpg)
Figure 8-13: The String Collection Editor Dialog Box