Chapter 8 Using Repetition with Loops and Lists. Class 8: Loops and Lists Write Do loops to execute...
-
Upload
violet-harvey -
Category
Documents
-
view
251 -
download
3
Transcript of Chapter 8 Using Repetition with Loops and Lists. Class 8: Loops and Lists Write Do loops to execute...
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
• Use controls that operate on lists, including the ListBox and ComboBox controls
• Use the DataGridView control to work with tabular data
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
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
Do While and Do Until Loops (Syntax)
• Do While and Do Until loops execute statements repeatedlyDo [While | Until] condition
[statements]
[Exit Do]
[statements]
Loop
statements
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
Figure 8-1: Execution Flow of a Do Until Loop
Figure 8-2: Execution Flow of a Do While Loop
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
Loops and Counters (Example)
• Print the counting numbers 1 through 10 using a Do Until loop
Dim Counter As Integer = 1
Do Until Counter > 10
Debug.WriteLine(Counter)
Counter += 1
Loop
Loops and Counters (Example, continued)
• Print the counting numbers 1 through 10 using a Do While loop
Dim Counter As Integer = 1
Do While Counter <= 10
Debug.WriteLine(Counter)
Counter += 1
Loop
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
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] condition
statements
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
Post-Test Do Loops (Example)
• Print the counting numbers 1 through 10Dim Counter As Integer = 1
Do
Debug.WriteLine(Counter)
Counter += 1
Loop While Counter < 10
Figure 8-3:Execution Flow of a Post-test Do Loop
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
Accumulator (Example)
• Store the sum of the counting numbers 1 through 10
Dim Counter As Integer = 1
Dim Accumulator As Integer = 0
Do While Counter <= 10
Debug.Write (Counter)
Debug.WriteLine(“ “ & Accumulator)
Accumulator += Counter
Counter += 1
Loop
Accumulator (Example) (continued)
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 = 1
Do While Counter < 10
Debug.WriteLine(Counter)
Loop
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
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
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
For Loops (Syntax)
For counter = start To end [Step increment]
[statements]
[Exit For]
[statements]
Next [counter]
statements
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
For Loops (Example)
• Print the counting numbers 1 to 10Dim Counter As Integer
For Counter = 1 To 10
Debug.WriteLine(Counter)
Next Counter
Figure 8-5: Execution of a For Loop
Nested For Loop (Example)
• Print a multiplication tableDim Factor1, Factor2, Result As Integer
For Factor1 = 1 To 10
For Factor2 = 1 To 10
Result = Factor1 * Factor2
Debug.Write(Result.ToString() & " ")
Next
Debug.WriteLine("")
Next
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 Integer
For CurrentYear = 2000 To 1900 Step –5
Debug.WriteLine(CurrentYear.ToString)
Next CurrentYear
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
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
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
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)
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
Adding Items to a List (Example)
• Add two items to a list
Dim EmpCurrent As New Employee
EmpCurrent.EmployeeID = 18223
EmpCurrent.EmployeeName = "Joe Smith"
EmployeeList.Add(EmpCurrent)
EmpCurrent = New Employee
EmpCurrent.EmployeeID = 24428
EmpCurrent.EmployeeName = "Mary Deems"
EmployeeList.Add(EmpCurrent)
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 Employee
EmpCurrent = EmployeeList.Item(0)
Debug.WriteLine(EmpCurrent.EmployeeID.ToString)
Debug.WriteLine(EmpCurrent.EmployeeName)
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
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
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
Enumerating a Collection with a For Loop (Example)
• Enumerate the EmployeeList collectionDim Index As Integer
Dim EmpCurrent As Employee
For Index = 0 To EmployeeList.Count – 1
EmpCurrent = EmployeeList(Index)
Debug.WriteLine( _
EmpCurrent.EmployeeID.ToString)
Debug.WriteLine(EmpCurrent.EmployeeName)
Next
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
The For Each Loop (Syntax)
For Each object In group
[statements]
[Exit For]
[statements]
Next
statements
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
The For Each Loop (Example)
• Enumerate the EmployeeListDim EmpCurrent As Employee
For Each EmpCurrent In EmployeeList
Debug.WriteLine( _ EmpCurrent.EmployeeID.ToString)
Debug.WriteLine( _
EmpCurrent.EmployeeName.ToString)
Next
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
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
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
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
Figure 8-13: The String Collection Editor Dialog Box