ECE 103 Engineering Programming Chapter 18 Iteration

Slides:



Advertisements
Similar presentations
CS0004: Introduction to Programming Repetition – Do Loops.
Advertisements

Computer Science 1620 Loops.
Chapter 5: Loops and Files.
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.
Mr. Dave Clausen1 La Cañada High School Chapter 6: Repetition Statements.
Chapter 7 Additional Control Structures. 2 2 void GetYesOrNo (/* out */ char& response) // Inputs a character from the user // Postcondition: response.
ECE 103 Engineering Programming Chapter 18 Iteration Herbert G. Mayer, PSU CS Status 7/19/2015 Initial content copied verbatim from ECE 103 material developed.
Repetition and Iteration ANSI-C. Repetition We need a control instruction to allows us to execute an statement or a set of statements as many times as.
Loops cause a section of a program to be repeated a certain number of times. The repetition continues while a condition remains true. When a condition.
Loops and Files. 5.1 The Increment and Decrement Operators.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5: Looping.
CS 161 Introduction to Programming and Problem Solving Chapter 18 Control Flow Through C++ Program Herbert G. Mayer, PSU Status 10/8/2014 Initial content.
Think Possibility 1 Iterative Constructs ITERATION / LOOPS C provides three loop structures: the for-loop, the while-loop, and the do-while-loop. Each.
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.
BY ILTAF MEHDI (MCS, MCSE, CCNA)1. INSTRUCTOR: ILTAF MEHDI (MCS, MCSE, CCNA, Web Developer) BY ILTAF MEHDI (MCS, MCSE, CCNA)2 Chapter No: 04 “Loops”
CS 161 Introduction to Programming and Problem Solving Chapter 17 Nested Loops Herbert G. Mayer, PSU Status 9/8/2014 Initial content copied verbatim from.
Chapter Looping 5. The Increment and Decrement Operators 5.1.
Lecture 7 – Repetition (Loop) FTMK, UTeM – Sem /2014.
Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 10P. 1Winter Quarter Repetition Structures Lecture 10.
ECE Application Programming
Chapter 6: Loops.
REPETITION CONTROL STRUCTURE
EKT120 COMPUTER PROGRAMMING
EKT150 INTRODUCTION TO COMPUTER PROGRAMMING
Lecture 7: Repeating a Known Number of Times
Chapter 5: Control Structures II
Week 4 – Repetition Structures / Loops
Quick Test What do you mean by pre-test and post-test loops in C?
CS1010 Programming Methodology
Lecture 13 & 14.
Chapter 5: Looping Starting Out with C++ Early Objects Seventh Edition
2008/10/22: Lecture 12 CMSC 104, Section 0101 John Y. Park
Chapter 13 Control Structures
Looping.
Arrays, For loop While loop Do while loop
Looping and Repetition
Chapter 2 - Introduction to C Programming
CS1100 Computational Engineering
Additional Control Structures
2008/10/22: Lecture 12 CMSC 104, Section 0101 John Y. Park
Chapter 2 - Introduction to C Programming
Exam 1 Date: Feb. 2nd, 2015 during class time (50 minutes) Coverage
CSC215 Lecture Control Flow.
Chapter 2.1 Repetition.
Chapter 6: Repetition Statements
Chapter 2 - Introduction to C Programming
UMBC CMSC 104 – Section 01, Fall 2016
REPETITION STATEMENTS
ECE 103 Engineering Programming Chapter 19 Nested Loops
ECE 103 Engineering Programming Chapter 12 More C Statements
EPSII 59:006 Spring 2004.
ECE 103 Engineering Programming Chapter 20 Change in Flow of Control
More Loops Topics Counter-Controlled (Definite) Repetition
Chapter 2 - Introduction to C Programming
Repetition Statements (Loops) - 2
Based on slides created by Bjarne Stroustrup & Tony Gaddis
Based on slides created by Bjarne Stroustrup & Tony Gaddis
More Loops Topics Counter-Controlled (Definite) Repetition
ECE 103 Engineering Programming Chapter 22 Selection
More Loops Topics Counter-Controlled (Definite) Repetition
More Loops Topics Counter-Controlled (Definite) Repetition
LOOPS The loop is the control structure we use to specify that a statement or group of statements is to be repeatedly executed. Java provides three kinds.
CSC215 Lecture Control Flow.
The while Looping Structure
More Loops Topics Counter-Controlled (Definite) Repetition
ICS103: Programming in C 5: Repetition and Loop Statements
More Loops Topics Counter-Controlled (Definite) Repetition
Looping and Repetition
Presentation transcript:

ECE 103 Engineering Programming Chapter 18 Iteration Herbert G. Mayer, PSU CS Status 7/6/2016 Initial content copied verbatim from ECE 103 material developed by Professor Phillip Wong @ PSU ECE

Syllabus Basic Loops while do-while for break, continue Examples

Basic Loops Loops are another method of changing the execution sequence of a program, by iterating A loop is a section of code that is executed repeatedly as long as a condition remains true Once the expression becomes false (fails), the program ends the loop In C one can “hand-manufacture” loops via Goto Statements, viewed as sinfully evil; that is how a computer executes loops, by so-called “branch” or “jump” instructions

Typical loops require these operations: pre-code Setup Test expression evaluation Update Setup Stay in loop TRUE Statements expression FALSE Update Each single pass through a loop is called an iteration Exit loop post-code

A loop consists of several parts: Setup Before entering the loop, any values referenced by the test expression should be initialized. Test expression evaluation An expression is tested to see if it is true or false. true : Repeat the body of the loop false : Exit the loop Body The body contains the code that is to be repeated. It can be a single statement or a statement block. Update Within the loop, there should be a way to update the test expression so that it will fail eventually.

Test expression must evaluate to either true (non-zero) or false (zero) Test expression is evaluated every iteration – either at the start or end of the loop The test is also called the termination condition An infinite loop occurs if the termination condition is never satisfied

Loop Statements in C General loop types: Conditional loops Statements are repeated for as long as a test expression remains true. → while, do-while Counted loops Statements are repeated a specified number of times. → for 6

while pre-code; while (expression) Statement; post-code; Use if the number of iterations is not known ahead of time Variables in expression must be initialized before entering the loop Loop body may be executed 0 or more times Note that the Statement may be a compound statement { } Execution Sequence Execute pre-code At start of loop, evaluate expression If expression is true Execute Statement Goto Step (b) else Exit the loop and goto Step (d) Execute post-code

Example: k = 0; while( k < 5 ) k = k + 1; // not recommended style of while while( k < 5 ) { printf( "k = %d\n", k ); } //end while num = 0; while( num < 5 ) { printf( "num = %d\n", num++ ); z = 5; while( z-- ) printf( "z = %d\n", z ); // not recommended style, no { } #include <stdio.h> int main (void) { // main int num; /* Input from user */ int sum = 0; /* Running sum */ int Done = 0; /* Flag */   /* This adds up numbers > 0 */ while( !Done ) { printf( "Enter next number: ” ); scanf("%d", &num); if ( num < 1 ) Done = 1; else sum += num; // not recommended style of if } //end while printf( "sum = %d\n", sum ); return 0; } //end main 8

Example: // Echo an input stream ( capitalized, 'S' replaced by '$’ ) #include <stdio.h> #include <ctype.h> int main( void ) { // main int ch; /* Holds input character */ /* Read input stream until end-of-line is detected */ while( ( ch = getchar() ) != '\n' ) { ch = toupper( ch ); if( ch == ‘S' ) { ch = '$'; } //end if printf( "%c", ch ); } //end while printf( "\n” ); return 0; } //end main My sister is funny! MY $I$TER I$ FUNNY! 9

do-while pre-code; do Statement; while (expression); post-code; The do-while loop tests the expression at the end Hence will be done at least once! Note semicolon after ending parenthesis, as that is the end of the do-while statement Execution Sequence Execute pre-code Enter the loop and execute Statement At end of loop, evaluate expression If expression is true Goto Step (b) else Exit the loop and goto Step (e) Execute post-code

Example: k = 0; do k = k + 1; while( k < 5 ); do { printf( "k = %d\n", k ); } while( k < 5 ); #include <stdio.h> int main( void ) { // main int num; /* Input from user */ int sum = 0; /* Running sum */ int Done = 0; /* Flag */   /* This adds up numbers > 0 */ do { printf( "Enter next number: ” ); scanf( "%d", &num ); if( num < 1 ) // not recommended! Done = 1; else sum += num; } while( !Done ); printf( "sum = %d\n", sum ); return 0; } //end main 11

for pre-code; for( expr1; expr2; expr3 ) Statement; post-code; Used if the number of iterations is computable, or known ahead of time. Loop body may be executed zero or more times Execution Sequence expr1 → setup expression expr2 → test expression expr3 → update expression Execute pre-code At start of loop, evaluate expr1 If expr2 is true Execute Statement Evaluate expr3 Goto Step (c) else Exit the loop and goto Step (d) Execute post-code

Mapping between simple for and while loops: for( expr1; expr2; expr3) { Statements; } expr1; /* Setup */ while( expr2 ) /* Test */ { Statements; expr3; /* Update */ }

→ Infinite loop: expr2 is never false! Example: for( k=0; k<=3; k++ ) ... → 4 iterations, values of k : 0, 1, 2, 3 for( t=1; t<11; t+=2 ) ... → 5 iterations, values of t : 1, 3, 5, 7, 9 for( x=1.0; x<=2.0; x+=0.5 ) ... → 3 iterations, values of x : 1.0, 1.5, 2.0 // careful “float” for( cnt = 2; cnt >= -1; cnt-- ) ... → 4 iterations, values of cnt : 2, 1, 0, -1 for( ; ; ) → Infinite loop: expr2 is never false! 14

Be careful counting iterations, especially when starting at 0, or using < versus <= in expressions! Example: for( k=1; k<=5; k++ ) ... → 5 iterations, values of k : 1, 2, 3, 4, 5 for( k=1; k<5; k++ ) ... → 4 iterations, values of k : 1, 2, 3, 4 for( k=0; k<=5; k++ ) ... → 6 iterations, values of k : 0, 1, 2, 3, 4, 5 for( k=0; k<5; k++ ) .. . → 5 iterations, values of k : 0, 1, 2, 3, 4 15

Example: for( n = 1; n < 5; n++ ) printf( "n = %d\n", n ); s_idx = 2; e_idx = 4; for( n = s_idx; n <= e_idx; n++ ) { x = exp( n ); printf( "%d %f\n", n, x ); } //end for for( T = 10; T >= 0; T-- ) x = sin( T*pi / 180.0 ); prod = 1; for( a = 1; a <= 3; a++ ) prod = prod * a; #1 : a → 1 prod = 1 * 1 → 1 #2 : a → 2 prod = 1 * 2 → 2 #3 : a → 3 prod = 2 * 3 → 6 for( ch='A'; ch<='Z'; ch++ ) printf( "%c", ch ); /* infinite loop */ for( ;; ) printf( "Hello\n” ); 16

Variable Declarations in for Loops Variable declarations are allowed in the first expression of the for loop header. Typically used to declare the iteration variable Note: NOT in old versions of C! The scope of the variable extends only to the body of the loop C99 /* C90 version */ #include <stdio.h> int main( void ) { // main int k; for( k = 0; k < 3; k++ ) printf("%d\n", k); // end for printf( "%d\n", k ); /* Works */ return 0; } //end main // C99 version #include <stdio.h> int main( void ) { // main // This is legal in C99 for( int k = 0; k < 3; k++ ) printf("%d\n", k); // end for // Compiler fails on this k printf( "%d\n", k ); return 0; } //end main 17

break Statement break causes an immediate exit from the loop that contains it; note: innermost loop! Once a break is encountered, execution goes to the first statement following the loop body break statements work with for, while, and do-while loops

Example: /* Use a state variable */ done = 0; /* State */ sum = 0; while( !done ) { printf( "x? ” ); scanf( "%d", &x ); sum = sum + x; if( sum > 1000 ) done = 1; } //end while /* Use a break statement */ #define TRUE 1 // assuming sum, x declared sum = 0; while( TRUE ) { printf( "x? ” ); scanf( "%d", &x ); sum = sum + x; if( sum > 1000 ) break; } //end while 19

continue Statement The continue statement restarts a loop Once a continue is encountered, execution proceeds to the start of the loop continue statements work with for, while, and do-while loops. If continue is used in a for statement, the setup expression is not executed again

Example: #include <stdio.h> #define TRUE 1 int main (void) float x; /* Input value */ float sum = 0.0; /* Accumulates partial sums */ while( TRUE ) { scanf( "%f\n", &x ); if( x < 10.0 || x > 95.0 ) // Check for outside range continue; sum += x; if( sum > 250.0 ) /* Check if sum limit is reached */ break; } //end while printf( "sum = %f\n", sum ); return 0; } //end main 21