490 likes | 502 Views
Learn how to use loops to execute statements repeatedly, work with lists, and manipulate list items. Explore various types of loops and understand their syntax and flow. Discover how to incorporate loops into decision-making structures and avoid infinite loops.
E N D
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 withtabular 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
DoWhile and DoUntil Loops (Syntax) • Do While and DoUntil loops execute statements repeatedly Do [While | Until] condition [statements] [Exit Do] [statements] Loop statements
DoWhile and DoUntil Loops (Syntax, continued) • DoWhile and DoUntil loops test the condition before executing the statements in a loop • The condition evaluates to a Boolean value • The DoWhile form executes statements while the condition is True • The DoUntil form executes statements until the condition becomes True • The Exit Do statement causes the Do loop to exit immediately • statements following the loop execute
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 executed Do [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 DoLoopWhile variation executes the loop's statements while a condition is True • The DoLoopUntil variation executes the loop's statements until a condition is True
Post-Test Do Loops (Example) • Print the counting numbers 1 through 10 Dim Counter As Integer = 1 Do Debug.WriteLine(Counter) Counter += 1 Loop While Counter < 10
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
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 infiniteloops • 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 Stepincrement clause
For Loops (Example) • Print the counting numbers 1 to 10 Dim Counter As Integer For Counter = 1 To 10 Debug.WriteLine(Counter) Next Counter
Nested For Loop (Example) • Print a multiplication table Dim 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 EmployeeList Dim 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 ForEach loop can also be used to enumerate the items in a collection
Enumerating a Collection with a For Loop (Example) • Enumerate the EmployeeList collection Dim 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 ForEach Loop • The ForEach 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 ForEachLoop (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 ForEach loop an object is returned
The ForEach Loop (Example) • Enumerate the EmployeeList Dim 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 ComboBoxand 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 ComboBoxor 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