Repetition (Loops) Want to do some repetitive sequence of actions: print vertical line of *s * Corresponding program: printf(“*\n”);

Slides:



Advertisements
Similar presentations
Computer Science 1620 Loops.
Advertisements

Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 5 Looping.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 5: Looping by Tony.
Chapter 5: Control Structures II (Repetition)
Chapter 5: Loops and Files.
CS1061: C Programming Lecture 8: Repetition A. O’Riordan, 2004.
COMP 14 Introduction to Programming Miguel A. Otaduy May 20, 2004.
Control Structures Control structures control the flow of program execution. 3 types of control structures: sequence, selection.
© 2004 Pearson Addison-Wesley. All rights reserved5-1 Iterations/ Loops The while Statement Other Repetition Statements.
COMP 110 Introduction to Programming Mr. Joshua Stough September 24, 2007.
Section 3 - Selection and Repetition Constructs. Control Structures 1. Sequence 2. Selection 3. Repetition.
Control Structures II. Why is Repetition Needed? There are many situations in which the same statements need to be executed several times. Example: Formulas.
 Decision making statements Decision making statements if statement if...else statement Nested if...else statement (if...elseif....else Statement) 
Chapter 5: Control Structures II (Repetition)
CHAPTER 5: CONTROL STRUCTURES II INSTRUCTOR: MOHAMMAD MOJADDAM.
1 What is a loop? A loop is a repetition control structure that causes a single statement or block to be executed repeatedly Loops.
Lecture 10: Reviews. Control Structures All C programs written in term of 3 control structures Sequence structures Programs executed sequentially by default.
Repetitive Structures BBS514 Structured Programming (Yapısal Programlama)1.
Mr. Dave Clausen1 La Cañada High School Chapter 6: Repetition Statements.
1 Loops. 2 Topics The while Loop Program Versatility Sentinel Values and Priming Reads Checking User Input Using a while Loop Counter-Controlled (Definite)
1 Chapter 9 Additional Control Structures Dale/Weems.
1 Additional Control Structures. 2 Chapter 9 Topics  Switch Statement for Multi-way Branching  Do-While Statement for Looping  For Statement for Looping.
Chapter 5: Control Structures II (Repetition). Objectives In this chapter, you will: – Learn about repetition (looping) control structures – Learn how.
Chapter 7 Additional Control Structures. 2 2 void GetYesOrNo (/* out */ char& response) // Inputs a character from the user // Postcondition: response.
Program Flow Control - Looping Addis Ababa Institute of Technology Yared Semu April 2012.
Control Structures II Repetition (Loops). Why Is Repetition Needed? How can you solve the following problem: What is the sum of all the numbers from 1.
Chapter 5: Control Structures II J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design,
CMSC 104, Lecture 171 More Loops Topics l Counter-Controlled (Definite) Repetition l Event-Controlled (Indefinite) Repetition l for Loops l do-while Loops.
Chapter 4: Control Structures II
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.
CSCI 171 Presentation 5. The while loop Executes a block as long as the condition is true general form: while (condition) { statement 1; statement 2;
CMSC 104, Version 9/011 More Loops Topics Counter-Controlled (Definite) Repetition Event-Controlled (Indefinite) Repetition for Loops do-while Loops Choosing.
Introduction to Loops Iteration Repetition Counting Loops Also known as.
Repetition Statements (Loops) The do while Loop The last iteration structure in C++ is the do while loop. A do while loop repeats a statement or.
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.
Think Possibility 1 Iterative Constructs ITERATION / LOOPS C provides three loop structures: the for-loop, the while-loop, and the do-while-loop. Each.
Copyright © 2012 Pearson Education, Inc. Chapter 5: Loops.
Repetition Repetition allows you to repeat an operation or a series of operations many times. This is called looping and is one of the basic structured.
Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 5 Looping.
Chapter Looping 5. The Increment and Decrement Operators 5.1.
Beginning C For Engineers Fall 2005 Lecture 3: While loops, For loops, Nested loops, and Multiple Selection Section 2 – 9/14/05 Section 4 – 9/15/05 Bettina.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
PGT C Programming1 Week 4 – Repetition Structures / Loops.
Chapter Looping 5. The Increment and Decrement Operators 5.1.
Lecture 7 – Repetition (Loop) FTMK, UTeM – Sem /2014.
IT CS 200: R EPEATATION Lect. Napat Amphaiphan. T HE ABILITY TO DO THE SAME TASK AGAIN BY AGAIN UNTIL THE CONDITION IS MET LOOP 2.
CC213 Programming Applications Week #2 2 Control Structures Control structures –control the flow of execution in a program or function. Three basic control.
Sesi 0607EKT120/4 Computer Programming Week 5 – Repetition / Loops.
The following statements are for y = -1; if ( x ) if ( x>0 ) y = 1; else y = 0; A. y= -1 x0 B. y= 0 x0 C. y= 1 x
CHAPTER 4 REPETITION STRUCTURES 1 st semester King Saud University College of Applied studies and Community Service Csc 1101 A.AlOsaimi.
REPETITION CONTROL STRUCTURE
EKT120 COMPUTER PROGRAMMING
EKT150 INTRODUCTION TO COMPUTER PROGRAMMING
Lecture 4 - Loops UniMAP EKT120 Sem 1 08/09.
Week 4 – Repetition Structures / Loops
CS1010 Programming Methodology
Outline Altering flow of control Boolean expressions
A First Book of ANSI C Fourth Edition
Loops in C.
Chapter 2.1 Repetition.
Chapter 6: Repetition Statements
More Loops Topics Counter-Controlled (Definite) Repetition
1-6 Midterm Review.
More Loops Topics Counter-Controlled (Definite) Repetition
The while Looping Structure
ICS103: Programming in C 5: Repetition and Loop Statements
More Loops Topics Counter-Controlled (Definite) Repetition
Presentation transcript:

Repetition (Loops) Want to do some repetitive sequence of actions: print vertical line of *s * Corresponding program: printf(“*\n”);

Outline II. Program Basics H. Statements 6. Loops Pretest: While Posttest: Do-While Pretest: For Parts: termination condition, initialization, body Pretest vs Posttest Counter-controlled vs Event-controlled Infinite Loops Nested Loops

Repetitions with Loops

Types of Loops Pretest - a logical condition is checked before each repetition to determine if the loop should terminate –while loop –for loop Posttest - a logical condition is checked after each repetition for termination –do-while loop

PreTest vs. PostTest Loops

Terminating Loops Counter-controlled loops - a loop controlled by a counter variable, generally where the number of times the loop will execute is known ahead of time Event-controlled loops - loops where termination depends on an event rather than executing a fixed number of times

Counter-Controlled Loops Generally with for loops Can generally infer number of repetitions from code Examples: –read 5 numbers –print 7 items –sort n items

Event-Controlled Loops Generally with while, do-while loops Can’t infer number of repetitions from program Examples: –read until input ends –read until a number encountered –search through data until item found

Parts of Loop Initialization - commands to set up loop (set counter to initial value, etc.) Terminating condition - logical condition that is checked to terminate loop Body of loop - commands repeated –action(s) - statements to repeat –update(s) - statements to update values associated with loop (counters, etc.)

Parts of Loop Example Init: set counter to 0 Termination: counter < 5 Body: Action: print * Update: add 1 to counter

Importance of Update What if command counter++; left out? Counter never becomes >= 5. Termination Condition never met.

Infinite Loops Loop starts but termination condition never met: –you forget to increase counter –user never enters terminating data item –etc. Results –program may stop (doing nothing repeatedly) –computer may repeatedly print some data out

Termination Conditions in C Loops in C always continue when the termination condition is true and end when the condition is false Conditions can be rephrased if needed (positive termination conditions can be negated) Condition only checked at fixed points (does not have to hold true during body)

Pretest Loop: While Syntax: while (condition) statement; Corresponds to: if (!condition) DONE statement if (!condition) DONE statement...

Example of While int counter = 0; while (counter < 5) { printf(“*\n”); counter++; } single statement is compound

Executing More Than One Stmt In C, loops repeat one statement Generally we always use a compound statement as that statement: while (condition) { /* body */ } Useful even when body has one or no statements

Empty Statements and Loops What’s wrong with this? counter = 0; while (counter < 5); { printf(“*\n”); counter++; } Note the ; after the condition in the while, its an empty statement (which is the body of the while), so the while is an infinite loop

Event-Controlled While While loops are often used to test for the occurrence of events that terminate loops Example: –read in a set of numbers until a particular value is encountered –along the way count the set of numbers and the total of the numbers –print out the average of the numbers –does not terminate after a fixed point

Calculate Average Loop

Calculate Average Code total = 0; count = 0; printf(“Please enter first number: “); scanf(“%d”,&number); while (number != -999) { total += number; count++; printf(“Please enter next number: “); scanf(“%d”,&number); } printf(“Average is %.3f\n”,(float) total / count);

Using a Sentinel The value -999 is sometimes referred to as a sentinel value The value serves as the “guardian” for the termination of the loop Often a good idea to make the sentinel a constant: #define STOPNUMBER -999 while (number != STOPNUMBER)...

Compound Conditions Often the termination condition is compound: ans = ‘N’; while (!((ans == ‘Y’) || (ans == ‘y’))) { printf(“Enter id# and salary: “); scanf(“%d %f”,&id,&salary); printf(“You entered id#%1d and salary $%.2f, Is this correct? (Y/N) “,id,salary); scanf(“ %c”,&ans); }

Making Sure Loop is Entered Note in previous loop, we had to set variable ans to an initial value, ‘N’ This is because a while loop tests its condition before entering the loop, and if the condition is already false, the loop never executes Sometimes it is useful to have a loop that always executes at least once

Posttest Loop: Do-While Syntax: do { statement(s) } while (condition); Corresponds to: statement if (!condition) DONE statement if (!condition) DONE...

Using the Do-While do { printf(“Enter id# and salary: “); scanf(“%d %f”,&id,&salary); printf(“You entered id#%1d and salary $%.2f, Is this correct? (Y/N) “,id,salary); scanf(“ %c”,&ans); } while (!((ans == ‘Y’) || (ans == ‘y’))); Loop always executes at least once

Programs with Menus A)dd part to catalog R)emove part from catalog F)ind part in catalog Q)uit Select option: A A)dd part to catalog R)emove part from catalog F)ind part in catalog Q)uit Select option:

Menu Loop do { showOptions(); printf(“Select option:“); scanf(“ %c”,&optn); execOption(optn); while (!( (optn == ‘Q’) || (optn == ‘q’)));

Menu Options void showOptions() { printf(“A)dd part to catalog\n”); printf(“R)emove part from catalog\n”); printf(“F)ind part in catalog\n”); printf(“Q)uit\n”); }

Executing Options void execOption( char option ) { switch (option) { case ‘A’: case ‘a’: addPart(); break; case ‘R’: case ‘r’: delPart(); break; case ‘F’: case ‘f’: fndPart(); break; case ‘Q’: case ‘q’: break; default: printf(“Unknown option %c\n”,option); break; }

While vs Do-While Differences –where condition tested: while (first) - may execute 0 times do-while (last) - must execute at least one time Similarities –one statement executed –initialization before loop –update during loop

Pretest Loop: For Initialization included in loop header Update included in loop header Header also includes update Syntax: for ( init ; condition ; update ) statement; Generally for loops expected to execute fixed number of times (counter-controlled)

For Loop Syntax: for ( init ; condition ; update ) statement; Init: assignments to counter variables Update: changes to counter variables

For Example Printing vertical line of stars: for (counter = 0; counter < 5; counter++) printf(“*\n”);

For Example - Sum of 1 to N printf(“Number to sum to: “); scanf(“%d”,&N); total = 0; for (I = 1; I <= N; I++) total += I; /* total is now … + N */

For Example - Max of N Scores printf(“Number of students: “); scanf(“%d”,&NumStudents); for (I = 0; I < NumStudents; I++) { printf(“Enter student score %d: “); scanf(“%d”,&score); if (score > max) max = score; } /* max is highest score entered */

The Comma Form Possible to evaluate more than one expression (assignment) in initialization or update by separating each by commas Syntax: expression, expression, … printf(“Number to sum to: “); scanf(“%d”,&N); for (total = 0, I = 1; I <= N; total += I, I++); /* total is now … + N */

Directions of Counting for (I = 10; I >= 1; I--) printf(“%d…\n”,I); printf(“0 BLASTOFF!\n”); printf(“Enter start, end, inc values: “); scanf(“%d%d%d”,&lstart,&lend,&linc); for (I = lstart; ((linc < 0) && (I < lend)) || ((linc > 0) && (I > lend)); I += linc) printf(“%d\n”,I);

Nesting Loops It is often useful to have a loop within a loop (called nested loops) For example: printf(“Max N! to print: “); scanf(“%d”,&N); /* 1 */ for (I = 1; I <= N; I++) { /* 2 */ fact = 1; /* 3 */ for (J = 2; J <= I; J++) /* 4 */ fact *= J; /* 5 */ printf(“%d! = %d\n”,I,fact); /* 6 */ }

Tracing Nested Loops Stmt N I J fact output ! = ! = Stmt N I J fact output ! = ! =

More Efficient Implementation printf(“Max N! to print: “); scanf(“%d”,&N); fact = 1; for (I = 1; I <= N; I++) { fact *= I; printf(“%d! = %d\n”,I,fact); } But why does this work?

Another Nesting Example How to print: ****** ***** **** *** ** * for (I = 6; I >= 1; I--) { for (J = 1; J <= I; J++) printf(“*”); printf(“\n”); } Could have 6 be a variable

More Complex Nesting How to print: *********** ********* ******* ***** *** * for (I = 0; I <= 5; I++) { for (J = 0; J < I; J++) printf(“ “); for (J = 0; J < ( * I); J++) printf(“*”); printf(“\n”); } Note 2 (sequential) inner loops

Another Nesting Example Size: 5 ***** **** *** ** * Size: 3 *** ** * Size: 0 do { printf(“Size: “); scanf(“%d”,&Size); if (Size > 0) { for (I = Size; I >= 1; I--) { for (J = 1; J <= I; J++) printf(“*”); printf(“\n”); } } while (Size > 0);

Nesting and Functions With deep nesting its often a good idea to have inner loops in separate functions do { printf(“Size: “); scanf(“%d”,&Size); drawTri(Size); } while (Size > 0); void drawTri (int N) { int I; int J; if (N > 0) { for (I = N; I >= 1; I--) { for (J = 1; J <= I; J++) printf(“*”); printf(“\n”); }

break statement The break statement can be used to halt a loop, though it is generally better to use a flag to signal loop should end total = 0; do { scanf(“%d”,&num); if (num < 0) break; /* Loop ends */ } while (num != 0);

Flags Better to use a flag variable - a variable that is set to a value when a condition occurs total = 0; done = 0; /* done is set to 0 state */ do { scanf(“%d”,&num); if (num < 0) done = 1; /* done 1 */ } while ((num != 0) && (!done));

continue statement A continue statement says jump to the next end of the statement list Example: for (I = 0; I < 100; I++) { if ((I % 2) == 1) continue; printf(“%d is even”,I); } Again, stylistically, better not to use

Avoiding continue Can generally use an if to avoid a continue: for (I = 0; I < 100; I++) { if ((I % 2) == 1) continue; printf(“%d is even”,I); } becomes for (I = 0; I < 100; I++) { if (!((I % 2) == 1)) printf(“%d is even”,I); }