CSE 1301 Lecture 6B More Repetition Figures from Lewis, “C# Software Solutions”, Addison Wesley Briana B. Morrison.

Slides:



Advertisements
Similar presentations
Week 5: Loops 1.  Repetition is the ability to do something over and over again  With repetition in the mix, we can solve practically any problem that.
Advertisements

CS0004: Introduction to Programming Repetition – Do Loops.
Flow of Control Part 2: Looping
CS 115 OBJECT ORIENTED PROGRAMMING I LECTURE 10 GEORGE KOUTSOGIANNAKIS 1 Copyright: FALL 2014 Illinois Institute of Technology_ George Koutsogiannakis.
Repeating Actions While and For Loops
Computer Science 1620 Loops.
Loops – While Loop Repetition Statements While Reading for this Lecture, L&L, 5.5.
Chapter 5: Control Structures II (Repetition)
Chapter 5: Loops and Files.
Loops – While, Do, For Repetition Statements Introduction to Arrays
COMP 14 Introduction to Programming Miguel A. Otaduy May 20, 2004.
Objectives You should be able to describe:
Loops Repetition Statements. Repetition statements allow us to execute a statement multiple times Often they are referred to as loops Like conditional.
© 2004 Pearson Addison-Wesley. All rights reserved5-1 Iterations/ Loops The while Statement Other Repetition Statements.
Chapter 5: Control Structures II (Repetition)
Chapter 5: Repetition Statements. In this chapter, you will learn about: Basic loop structures while loops Interactive while loops for loops Loop programming.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Chapter 6 Repetition Statements.
ECE122 L9: While loops March 1, 2007 ECE 122 Engineering Problem Solving with Java Lecture 9 While Loops.
11 Chapter 4 LOOPS AND FILES. 22 THE INCREMENT AND DECREMENT OPERATORS To increment a variable means to increase its value by one. To decrement a variable.
Chapter 5 Loops Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved.
REPETITION STRUCTURES. Topics Introduction to Repetition Structures The while Loop: a Condition- Controlled Loop The for Loop: a Count-Controlled Loop.
CHAPTER 5: CONTROL STRUCTURES II INSTRUCTOR: MOHAMMAD MOJADDAM.
Java Programming: From the Ground Up
Project 1 Due Date: September 25 th Quiz 4 is due September 28 th Quiz 5 is due October2th 1.
Chapter 4 Loops Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved
Mr. Dave Clausen1 La Cañada High School Chapter 6: Repetition Statements.
Chapter 5 Control Structure (Repetition). Objectives In this chapter, you will: Learn about repetition (looping) control structures Explore how to construct.
Chapter 5: Control Structures II (Repetition). Objectives In this chapter, you will: – Learn about repetition (looping) control structures – Learn how.
Chapter 5: Control Structures II J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design,
Loops (cont.). Loop Statements  while statement  do statement  for statement while ( condition ) statement; do { statement list; } while ( condition.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 5 Looping.
+ Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Chapter 5: Looping.
Control Structures RepetitionorIterationorLooping Part I.
Introduction to Loops Iteration Repetition Counting Loops Also known as.
Loops and Files. 5.1 The Increment and Decrement Operators.
1 Standard Version of Starting Out with C++, 4th Brief Edition Chapter 5 Looping.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5: Looping.
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: The while Statement cin within a while Loop The for.
A FIRST BOOK OF C++ CHAPTER 5 REPETITION. OBJECTIVES In this chapter, you will learn about: The while Statement Interactive while Loops The for Statement.
A First Book of C++ Chapter 5 Repetition.
Think Possibility 1 Iterative Constructs ITERATION / LOOPS C provides three loop structures: the for-loop, the while-loop, and the do-while-loop. Each.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 4 Loops.
Copyright © 2012 Pearson Education, Inc. Chapter 5: Loops.
Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 5 Looping.
Chapter 5 Repetition. 2 Objectives You should be able to describe: The while Statement cin within a while Loop The for Statement The do Statement Common.
Intro to Loops 1.General Knowledge 2.Two Types of Loops 3.The WHILE loop 1.
Chapter Looping 5. The Increment and Decrement Operators 5.1.
LECTURE # 8 : REPETITION STATEMENTS By Mr. Ali Edan.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
Copyright 2006 Addison-Wesley Brief Version of Starting Out with C++ Chapter 5 Looping.
Chapter Looping 5. The Increment and Decrement Operators 5.1.
Lecture 7 – Repetition (Loop) FTMK, UTeM – Sem /2014.
Chapter 4 Repetition Statements Program Development and Design Using C++, Third Edition.
Sesi 0607EKT120/4 Computer Programming Week 5 – Repetition / Loops.
OBJECT ORIENTED PROGRAMMING I LECTURE 10 GEORGE KOUTSOGIANNAKIS
REPETITION CONTROL STRUCTURE
Lecture 6 Repetition Richard Gesick.
Loop Structures.
Lecture 4 - Loops UniMAP EKT120 Sem 1 08/09.
Chapter 5: Looping Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley.
Lecture 07 More Repetition Richard Gesick.
Lecture 4B More Repetition Richard Gesick
Lecture 4A Repetition Richard Gesick.
Outline Altering flow of control Boolean expressions
Module 4 Loops and Repetition 2/1/2019 CSE 1321 Module 4.
Based on slides created by Bjarne Stroustrup & Tony Gaddis
Based on slides created by Bjarne Stroustrup & Tony Gaddis
Module 4 Loops and Repetition 9/19/2019 CSE 1321 Module 4.
Presentation transcript:

CSE 1301 Lecture 6B More Repetition Figures from Lewis, “C# Software Solutions”, Addison Wesley Briana B. Morrison

CSE B-2 Overview Infinite Loops (again) Loop patterns (common tasks) Sentinel loops Nested Loops Examples

CSE B-3 What is the output? int count; for ( count = 0 ; count < 10 ; count++ ) { C.O.W(“*”) ; }

CSE B-4 OUTPUT ********** NOTE: the 10 asterisks are all on one line. Why?

CSE B-5 What’s the output from this loop? int count; for (count = 0; count < 10; count++) ; { C.O.W(“*”); }

CSE B-6 no output from the for loop! Why? the ; right after the ( ) means that the body statement is a null statement in general, the body of the for loop is whatever statement immediately follows the ( ) that statement can be a single statement, a block, or a null statement actually, the code outputs one * after the loop completes its counting to 10 OUTPUT

CSE B-7 int i = 0; while ( i < 10 ); { i++; } What does this loop do?

CSE B-8 INFINITE LOOP! The semicolon indicates an empty loop body; i++ is never executed because it is not part of the loop body, so the condition is always true. Avoid putting a semicolon after the condition of a while loop. Doing so creates an empty loop body and could result in an endless loop.

CSE B-9 The Endless Loop also called an infinite loop If the loop condition never evaluates to false, the loop body is executed continuously, without end If the loop body has no output, the endless loop makes the computer appear to hang. If the loop body produces output, the endless loop results in that output being repeatedly written without end. Aborting the program will interrupt the endless loop.

CSE B-10 Looping Techniques There are standard patterns and techniques for performing these common operations: –Accumulation –Counting Items –Finding an Average –Finding Maximum or Minimum Values

CSE B-11 Accumulation Approach: the running total –We start by initializing a total variable to 0. –Each time we read a value, we add it to the total. –When we have no more values to read, the total is complete. Note that this is the same pattern used by the grocery cashier.

CSE B-12 Accumulation Pseudocode set total to 0 // very important! read a number // priming read while ( number is not the sentinel value ) { add the number to total read the next number // update read } output the total

CSE B-13 Forgetting to initialize the total variable to 0 before beginning the loop will produce incorrect results.

CSE B-14 Counting Items Approach: the running count –We start by initializing a count variable to 0. –Each time we read a value, we check whether that value meets the criteria as something we want to count. If so, we increment the count variable by 1. –When we are finishing reading values, the count is complete.

CSE B-15 Counting Items Pseudocode set count to 0 // very important!! read input // priming read while ( input is not the sentinel value ) { if ( input is what we want to count ) add 1 to count read the next input // update read } output count

CSE B-16 Forgetting to initialize the count variable to 0 before beginning the loop will produce incorrect results.

CSE B-17 Calculating an Average Approach: combine accumulation and counting We start by initializing a total variable and count variable to 0. Each time we read an item, we add its value to the total variable and increment the count variable When we have no more items to read, we calculate the average by dividing the total by the count of items.

CSE B-18 Calculating an Average Pseudocode set total to 0 set count to 0 read a number while ( number is not the sentinel value ) { add the number to total add 1 to the count read the next number } set average to total / count average = (count==0)? 0 : (double) total / count; output the average

CSE B-19 Forgetting to check whether the denominator is 0 before performing division is a logic error.

CSE B-20 Correct Calculation Remember that if we declare total and count as integers, then average will be calculated using integer division, which truncates the remainder. To get a floating-point average, we need to type cast one of the variables (either total or count) to a double or a float to force the division to be performed as floating point. Example: double average = (double) ( total ) / count;

CSE B-21 Finding Maximum/Minimum Values Approach: the running maximum or minimum For the maximum (minimum is similar): –Read the first item and save its value as the current maximum –Each time we read a new value, we compare it to the current maximum. If the new value is greater than the current maximum, we replace the current maximum with the new value. –When we have no more items to read, the current maximum is the maximum for all values.

CSE B-22 Initializing a maximum or a minimum to an arbitrary value, such as 0 or 100, is a logic error and could result in incorrect results. For example, if we initialize the maximum to 0 and all the values read are less than 0, then we will incorrectly report 0 as the maximum. Similarly, if we initialize the minimum to 0 and all the values read are greater than 0, then we will incorrectly report 0 as the minimum.

CSE B-23 A Sentinel-controlled Loop requires a “priming read” (initialization)--this means you read one set of data before the while test if not sentinel value update is another read Sentinel values: –same data type as value read –must tell user the sentinel value –cannot be a valid data value

CSE B-24 Sentinel-Controlled while Loop initialize variables // priming read read the first data item while ( item is not the sentinel value ) { process the item // update read read the next data item } report the results

CSE B-25 Omitting the update read may result in an endless loop. Example: C.O.W( "Enter a value > " ); int input = scan.nextInt( ); while ( input != 10 ) // 10 is sentinel value { C.O.Wln( input ); } If the value entered for input is not 10, this is an endless loop because we never read a new value for input. Thus, the condition always evaluates to true.

CSE B-26 Omitting the priming read can lead to incorrect results. Example: int input, count = 0; while ( input != 10 ) // 10 is sentinel value { C.O.W( "Enter an integer > " ); input = scan.nextInt( ); count++; } C.O.Wln( "Count is " + count ); If the user enters the values , then the output will be "Count is 3", which is incorrect. We should not process the sentinel value.

CSE B-27 Do not check for the sentinel value inside a while loop. Let the while loop condition detect the sentinel value.

CSE B-28 Constructing Loop Conditions The loop body is executed as long as the loop condition evaluates to true So if we want to stop executing the loop when the sentinel value is read, the loop condition has to check that the value is NOT the sentinel Thus, the loop continuation condition is the inverse of the loop termination condition.

CSE B-29 Example: Find Sum of 5 Integers set total to 0 for i = 1 to 5 by 1 { read integer add integer to total } print the total

CSE B-30 Update Increment Can Be > 1 Print the even numbers from 0 to 20 set output to an empty String for i = 0 to 20 by 2 { append i and a space to output } print the output String

CSE B-31 for (init; expr1; expr2) statement; init statement can be null; expr2 is optional for ( ; inputval != 999; ) inputval = scan.nextInt(); expr1 optional, true assumed for ( ; ; ) C.O.Wln( “ Hi ” ); init can be a declaration for (int i = 0; i < 10; i++)//local scope For Loop Rules

CSE B-32 Loop Control Variable Scope When a loop control variable is declared inside the for loop header, it cannot be referenced after the loop for ( int i = 0; i < 3; i++ ) { C.O.Wln( i ); // ok } C.O.Wln( i ); // error: i undefined

CSE B-33 To Reference i After the Loop int i; // declare i before loop for ( i = 0; i < 3; i++ ) { C.O.Wln( i ); } C.O.Wln( i ); // ok

CSE B-34 Testing for Loops An important test for for loops is that the starting and ending values of the loop variable are set correctly. For example, to iterate 5 times, use this header: for ( int i = 0; i < 5; i++ ) or this header: for ( int i = 1; i <= 5; i++ )

CSE B-35 Nested Loops Loops can be nested inside other loops; that is, the body of one loop can contain another loop. A while loop can be nested inside another while loop or a for loop can be nested inside another for loop. A for loop can be nested inside a while loop and a while loop can be nested inside a for loop.

CSE B-36 initialize outer loop while ( outer loop condition ) {... initialize inner loop while ( inner loop condition ) { inner loop processing and update }... } Pattern of a Nested Loop

CSE B-37 To design a nested loop begin with outer loop when you get to where the inner loop appears, make it a separate module and come back to its design later

CSE B-38 // print heading C.O.Wln("i \t j"); for (int i = 0; i < 4; i++) { C.O.Wln( "Outer " + i); for (int j = 0; j < i; j++) C.O.Wln( " Inner \t" + j); } // end for - outer loop What’s the Output?

CSE B-39 Nested for Loop Execution Inner loop executes all its iterations for each single iteration of the outer loop Example: how can we print this?

CSE B-40 Analysis The highest number we print is the same as the line number. for line = 1 to 5 by 1 { for number = 1 to line by 1 { print number and a space } print a new line }

CSE B-41 Now let’s work some more loop examples….

CSE B-42 Test Yourself How many times is the loop body below repeated? What is printed during each repetition of the loop body? x = 3; count = 0; while (count < 3) { x = x * x; C.O.Wln(x); count++; } //end while

CSE B-43 Test Yourself The following for loop is intended to display the values of i from 1 to 10. But the loop does not work correctly. Explain what the problem is and describe how to correct it. for (int i = 0; i < 10; i++) C.O.Wln( i++); Write a loop to add all the odd integers between 1 and n.

CSE B-44 Test Yourself What output values are displayed by the loop below for a data value of 5? C.O.Wln( “Enter an integer “); x = int.Parse(kb.ReadLine()); product = x; count = 0; while (count < 4) { C.O.Wln( product ); product = product * x; count++; } // end while C.O.Wln(“End of loop “ + count + “ “ + product);

CSE B-45 Test Yourself What is the least number of times that the body of a while loop may be executed? What is displayed by the segment: sum = 0; while (sum < 100) sum += 5; C.O.Wln( sum ); Rewrite the loop so that it prints all multiples of 5 from 0 through 100, inclusive. Your young cousin is learning the binary number system and has asked you to write a program that displays all powers of 2 that are less than a certain value (say, 10,000).

CSE B-46 Test Yourself Write a flag-controlled loop that continues to read pairs of integers until it reads a pair with the property that the first integer in the pair is evenly divisible by the second.

CSE B-47 What does the while statement below display? Rewrite it as a for statement. num = 10; while (num <= 100) { C.O.Wln( num ); num += 10; } // end while What does the for statement below display? Rewrite it as a do-while statement. for (n = 3; n > 0; n--) C.O.Wln( n + “ squared is “ + Math.pow (n, 2)); Test Yourself

CSE B-48 What is displayed by the following program segments? (Assume m is 3 and n is 5.) for (int i = 0; i 0; i--) { for (int j = n; j > 0; j--) C.O.W( “*”); C.O.Wln( ); } // end for i

CSE B-49 Write the nested loops that cause the output below to print