1 CSE1301 Computer Programming Lecture 10: Iteration (Part 1)

Slides:



Advertisements
Similar presentations
Computer Science 1620 Loops.
Advertisements

CSE1301 Computer Programming Lecture 4: C Primitives I.
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.
1 CSE1301 Computer Programming: Lecture 15 Flowcharts and Debugging.
1 CSE1301 Computer Programming Lecture 10: Iteration (Part 1)
Chapter 6 - Repetition. Introduction u Many applications require certain operations to be carried out more than once. Such situations require repetition.
1 CSE1301 Computer Programming Lecture 11: Iteration (Part 2)
1 CSE1301 Computer Programming Lecture 11: Iteration (Part 2)
1 Lecture 14 Chapter 6 Looping Dale/Weems/Headington.
FIT Objectives By the end of this lecture, students should: understand iteration statements understand the differences of for and while understand.
1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging.
Control Structures - Repetition Chapter 5 2 Chapter Topics Why Is Repetition Needed The Repetition Structure Counter Controlled Loops Sentinel Controlled.
Introduction to Computing Lecture 07: Repetition and Loop Statements (Part II) Introduction to Computing Lecture 07: Repetition and Loop Statements (Part.
Algorithms and Computing Lecture 3 Control Statements By Dr. M. Tahir Khaleeq.
Real World Applications: Statistical Measures Problem (page 95-98) Read a series of floating-point numbers from the standard input, and print a statistical.
Do-while loop Syntax do statement while (loop repetition condition)
Repetitive Structures BBS514 Structured Programming (Yapısal Programlama)1.
Chapter 5 Repetition and Loop Statements J. H. Wang ( 王正豪 ), Ph. D. Assistant Professor Dept. Computer Science and Information Engineering National Taipei.
Copyright © Nancy Acemian 2004 For Loops-Break-Continue COMP For loop is a counter controlled loop. For loop is a pretest loop. Used when number.
Chapter 4 Loops Write code that prints out the numbers Very often, we want to repeat a (group of) statement(s). In C++, we have 3 major ways of.
Chapter 7 Additional Control Structures. 2 2 void GetYesOrNo (/* out */ char& response) // Inputs a character from the user // Postcondition: response.
CMSC 104, Lecture 171 More Loops Topics l Counter-Controlled (Definite) Repetition l Event-Controlled (Indefinite) Repetition l for Loops l do-while Loops.
C Programming Lecture 7 : Control Structures. Control Structures Conditional statement : if, switch Determine a block of statements to execute depending.
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.
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.
1 Standard Version of Starting Out with C++, 4th Brief Edition 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.
1 For Loops l From Chapter 9 l A shorthand way of coding count 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.
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.
PGT C Programming1 Week 4 – Repetition Structures / Loops.
Copyright 2006 Addison-Wesley Brief Version of Starting Out with C++ Chapter 5 Looping.
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.
1 CSE1301 Computer Programming: Lecture 16 Flow Diagrams and Debugging.
1 CSC103: Introduction to Computer and Programming Lecture No 9.
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.
BIL 104E Introduction to Scientific and Engineering Computing Lecture 6.
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
 Real numbers representation - Floating Point Notation  First C Program  Variables Declaration  Data Types in C ◦ char, short, int, long, float, double,
CHAPTER 4 REPETITION STRUCTURES 1 st semester King Saud University College of Applied studies and Community Service Csc 1101 A.AlOsaimi.
ECE Application Programming
EKT120 COMPUTER PROGRAMMING
EKT150 INTRODUCTION TO COMPUTER PROGRAMMING
Lecture 7: Repeating a Known Number of Times
Lecture 4 - Loops UniMAP EKT120 Sem 1 08/09.
Week 4 – Repetition Structures / Loops
CS1010 Programming Methodology
Iteration statement while do-while
2008/10/22: Lecture 12 CMSC 104, Section 0101 John Y. Park
CSI 121 Structure Programming Language Lecture 10: Iteration (Part 1)
Control Structures - Repetition
Control Structures Lecture 7.
Looping.
2008/10/22: Lecture 12 CMSC 104, Section 0101 John Y. Park
Chapter 2.1 Repetition.
UMBC CMSC 104 – Section 01, Fall 2016
Assist.Prof.Dr. Nükhet ÖZBEK Ege University
More Loops Topics Counter-Controlled (Definite) Repetition
Dale Roberts, Lecturer IUPUI
More Loops Topics Counter-Controlled (Definite) Repetition
ECE 103 Engineering Programming Chapter 18 Iteration
More Loops Topics Counter-Controlled (Definite) Repetition
More Loops Topics Counter-Controlled (Definite) Repetition
More Loops Topics Counter-Controlled (Definite) Repetition
More Loops Topics Counter-Controlled (Definite) Repetition
ICS103: Programming in C 5: Repetition and Loop Statements
More Loops Topics Counter-Controlled (Definite) Repetition
Presentation transcript:

1 CSE1301 Computer Programming Lecture 10: Iteration (Part 1)

2 Topics while statement for statement break statement Nested loops

3 The while Statement Implements the repetition in an algorithm Repeatedly executes a block of statements Tests a condition (Boolean expression) at the start of each iteration Terminates when condition becomes false (zero)

4 Example: addnum.c Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count

5 Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Initialize Check condition Update Iteration Control Example: addnum.c (cont)

6 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addnum.c (cont)

7 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count only the variables sum and count are initialized to 0 Example: addnum.c (cont)

8 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf("%d", &totalNumbers); return 0; }. Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addnum.c (cont)

9 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf("%d", &totalNumbers); while (count < totalNumbers) { } return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addnum.c (cont)

10 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf("%d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addnum.c (cont)

11 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf("%d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Same as: sum = sum + nextNum; Others: -=, *=, /=, etc. (King, Table 4.2) Example: addnum.c (cont)

12 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf("%d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Same as: count = count + 1; Decrement: count --; (King, Table 4.2) Example: addnum.c (cont)

13 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf("%d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addnum.c (cont)

14 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf("%d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Read in numbers, add them, and print their sum and average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addnum.c (cont)

15 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf ("% d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Example: addnum.c (cont) totalNumberscountnextNumsum ???? 0 0.0

16 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf ("% d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Example: addnum.c (cont) totalNum bers countnextNumsum ????

17 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf ("% d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Example: addnum.c (cont) totalNum bers countnextNumsum ????

18 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf ("% d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Example: addnum.c (cont) totalNum bers countnextNumsum ????

19 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count = 0, totalNumbers; scanf ("% d", &totalNumbers); while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Example: addnum.c (cont) totalNum bers countnextNumsum ????

20 Common Mistakes in while – “ one liners” while (num < minimum) scanf(“%d”, &num); printf(“Number must be greater than %d.\n”, minimum); printf(“Please try again.\n”); while (num < minimum) { scanf(“%d”, &num); } printf(“Number must be greater than %d.\n”, minimum); printf(“Please try again.\n”);

21 while (num < minimum) { scanf(“%d”, &num); printf(“Number must be greater than %d.\n”, minimum); printf(“Please try again.\n”); } while (num < minimum) scanf(“%d”, &num); printf(“Number must be greater than %d.\n”, minimum); printf(“Please try again.\n”); Common Mistakes in while -- “ one liners” (cont)

22 while (num < minimum); { scanf(“%d”, &num); printf(“Number must be greater than %d.\n”, minimum); printf(“Please try again.\n”); } Common Mistakes in while -- extra semi-colon; Marks the end of the while-block -- usual cause of infinite loops

23 Read in numbers, add them, and print their sum and average set sum to 0 input nextNum check if end of input while (not end of input) { add nextNum to sum input nextNum check if end of input } etc...etc...etc... Checking for End-of-Input / End-of-File in while

24 Read in numbers, add them, and print their sum and average set sum to 0 input nextNum check if end of input while (not end of input) { add nextNum to sum input nextNum check if end of input } etc...etc...etc... float nextNum; float sum = 0.0; scanf(“%f”, &nextNum); while ( ?????? ) { sum += nextNum; scanf(“%f”, &nextNum); } etc...etc...etc... Checking for End-of-Input / End-of-File in while (cont)

25 Read in numbers, add them, and print their sum and average set sum to 0 input nextNum check if end of input while (not end of input) { add nextNum to sum input nextNum check if end of input } etc...etc...etc... float nextNum; float sum = 0.0; scanf(“%f”, &nextNum); ??????? while ( ?????? ) { sum += nextNum; scanf(“%f”, &nextNum); ??????? } etc...etc...etc... Checking for End-of-Input / End-of-File in while (cont)

26 Read in numbers, add them, and print their sum and average set sum to 0 input nextNum check if end of input while (not end of input) { add nextNum to sum input nextNum check if end of input } etc...etc...etc... float nextNum; float sum = 0.0; scanf(“%f”, &nextNum); ??????? while ( ?????? ) { sum += nextNum; scanf(“%f”, &nextNum); ??????? } etc...etc...etc... Checking for End-of-Input / End-of-File in while (cont) Recall: When the input ends, the scanf() function returns a special char value: EOF

27 Read in numbers, add them, and print their sum and average set sum to 0 input nextNum check if end of input while (not end of input) { add nextNum to sum input nextNum check if end of input } etc...etc...etc... float nextNum; float sum = 0.0; while ( scanf(“%f”,&nextNum) != EOF ) { sum += nextNum; } etc...etc...etc... Checking for End-of-Input / End-of-File in while (cont)

28 Read in numbers, add them, and print their sum and average set sum to 0 input nextNum check if end of input while (not end of input) { add nextNum to sum input nextNum check if end of input } etc...etc...etc... float nextNum; float sum = 0.0; while ( scanf(“%f”,&nextNum) != EOF ) { sum += nextNum; } etc...etc...etc... Checking for End-of-Input / End-of-File in while (cont)

29 The for Statement Form of loop which allows for initialization and iteration control Syntax: for ( initialization ; condition ; update ) { instruction block } Careful! A semi-colon here marks the end of the instruction block!

30 Example: addfor.c Read in numbers, add them, and print the sum and the average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count

31 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Read in numbers, add them, and print the sum and the average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addfor.c (cont)

32 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Read in numbers, add them, and print the sum and the average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Initialize Example: addfor.c (cont)

33 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Read in numbers, add them, and print the sum and the average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Check condition Example: addfor.c (cont)

34 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Read in numbers, add them, and print the sum and the average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addfor.c (cont) Update (aka Increment Step) IMPORTANT!! The Update is performed AFTER the body of the loop

35 #include /**********************************\ Read in numbers and add them up Print out the sum and the average \**********************************/ int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n",sum/count); return 0; } Read in numbers, add them, and print the sum and the average set sum to 0 set count to 0 input totalNumbers while (count < totalNumbers) { input nextNum add nextNum to sum add 1 to count } output "Sum was" sum output "Mean was" sum/count Example: addfor.c (cont)

36 #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; } while and for #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); count = 0; while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; }

37 #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; } while and for (cont) #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); count = 0; while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; } Check condition Initialize

38 #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; } #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); count = 0; while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; } Check condition while and for (cont)

39 #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); for ( count=0; count < totalNumbers; count++ ) { scanf("%f", &nextNum); sum += nextNum; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; } #include int main() { float nextNum, sum = 0.0; int count, totalNumbers; scanf("%d", &totalNumbers); count = 0; while (count < totalNumbers) { scanf("%f", &nextNum); sum += nextNum; count++; } printf("Sum was %f\n",sum); printf("Mean was %f\n", sum/count); return 0; } Update while and for (cont)

40 The break Statement Implements the "exit loop" primitive Causes flow of control to leave a loop block ( while or for ) immediately

41 Example: recip.c Print out the reciprocals of numbers entered. Quit when 0 is entered loop { input nextNum if (nextNum is 0) { exit loop } else { output 1/nextNum }

42 #include /*******************************\ Print out the reciprocals of numbers entered. Quit when 0 is entered \*******************************/ int main() { float nextNum; return 0; } Print out the reciprocals of numbers entered. Quit when 0 is entered loop { input nextNum if (nextNum is 0) { exit loop } else { output 1/nextNum } Example: recip.c (cont)

43 #include /*******************************\ Print out the reciprocals of numbers entered. Quit when 0 is entered \*******************************/ int main() { float nextNum; while (1) { } return 0; } Print out the reciprocals of numbers entered. Quit when 0 is entered loop { input nextNum if (nextNum is 0) { exit loop } else { output 1/nextNum } “while (True)” infinite loop Example: recip.c (cont)

44 #include /*******************************\ Print out the reciprocals of numbers entered. Quit when 0 is entered \*******************************/ int main() { float nextNum; while (1) { scanf("%f", &nextNum); } return 0; } Print out the reciprocals of numbers entered. Quit when 0 is entered loop { input nextNum if (nextNum is 0) { exit loop } else { output 1/nextNum } Example: recip.c (cont)

45 #include /*******************************\ Print out the reciprocals of numbers entered. Quit when 0 is entered \*******************************/ int main() { float nextNum; while (1) { scanf("%f", &nextNum); if (nextNum == 0.0) { break; } else { printf("%f\n", 1/nextNum); } return 0; } Print out the reciprocals of numbers entered. Quit when 0 is entered loop { input nextNum if (nextNum is 0) { exit loop } else { output 1/nextNum } Example: recip.c (cont)

46 #include /*******************************\ Print out the reciprocals of numbers entered. Quit when 0 is entered \*******************************/ int main() { float nextNum; while (1) { scanf("%f", &nextNum); if (nextNum==0.0) { break; } else { printf("%f\n", 1/nextNum); } return 0; } Print out the reciprocals of numbers entered. Quit when 0 is entered loop { input nextNum if (nextNum is 0) { exit loop } else { output 1/nextNum } Example: recip.c (cont)

47 #include /*******************************\ Print out the reciprocals of numbers entered. Quit when 0 is entered \*******************************/ int main() { float nextNum; while (1) { scanf("%f", &nextNum); if (nextNum==0.0) { break; } else { printf("%f\n", 1/nextNum); } return 0; } Print out the reciprocals of numbers entered. Quit when 0 is entered loop { input nextNum if (nextNum is 0) { exit loop } else { output 1/nextNum } Example: recip.c (cont)

48 Example: addpos.c Read in numbers, and add only the positive ones. Quit when input is 0 set sum to 0 loop { input number if (number is zero) { exit loop } else if ( number is positive) { add number to sum } output sum

49 include /**************************** ** Read in numbers, and add ** only the positive ones. ** Quit when input is 0 *****************************/ int main() { float num, sum = 0.0; printf("sum = %f\n", sum); return 0; } Read in numbers, and add only the positive ones. Quit when input is 0 set sum to 0 loop { input number if (number is zero) { exit loop } else if ( number is positive) { add number to sum } output sum Example: addpos.c (cont)

50 include /**************************** ** Read in numbers, and add ** only the positive ones. ** Quit when input is 0 *****************************/ int main() { float num, sum = 0.0; while (scanf("%f", &num) > 0) { sum += num; } printf("sum = %f\n", sum); return 0; } Read in numbers, and add only the positive ones. Quit when input is 0 set sum to 0 loop { input number if (number is zero) { exit loop } else if ( number is positive) { add number to sum } } output sum Example: addpos.c (cont) scanf returns EOF if an end of file occurs; otherwise it returns the number of items converted and assigned

51 include /**************************** ** Read in numbers, and add ** only the positive ones. ** Quit when input is 0 *****************************/ int main() { float num, sum = 0.0; while (scanf("%f", &num) > 0) { if (num == 0) break; else if (num > 0) sum += num; } printf("sum = %f\n", sum); return 0; } Read in numbers, and add only the positive ones. Quit when input is 0 set sum to 0 loop { input number if (number is zero) { exit loop } else if ( number is positive) { add number to sum } output sum Example: addpos.c (cont)

52 include /**************************** ** Read in numbers, and add ** only the positive ones. ** Quit when input is 0 *****************************/ int main() { float num, sum = 0.0; while (scanf("%f", &num) > 0) { if (num == 0) break; else if (num > 0) sum += num; } printf("sum = %f\n", sum); return 0; } Read in numbers, and add only the positive ones. Quit when input is 0 set sum to 0 loop { input number if (number is zero) { exit loop } else if ( number is positive) { add number to sum } output sum Example: addpos.c (cont)

53 include /**************************** ** Read in numbers, and add ** only the positive ones. ** Quit when input is 0 *****************************/ int main() { float num, sum = 0.0; while (scanf("%f", &num) > 0) { if (num == 0) break; else if (num > 0) sum += num; } printf("sum = %f\n", sum); return 0; } Example: addpos.c (cont) These comparisons are ok despite num being of type float

54 include /**************************** ** Read in numbers, and add ** only the positive ones. ** Quit when input is 0 *****************************/ int main() { float num, sum = 0.0; while (scanf("%f", &num) > 0) { if (num == 0) break; else if (num > 0) sum += num; } printf("sum = %f\n", sum); return 0; } Read in numbers, and add only the positive ones. Quit when input is 0 set sum to 0 loop { input number if (number is zero) { exit loop } else if ( number is positive) { add number to sum } output sum Example: addpos.c (cont)

55 scanf and while -- Example 1 float num; while (scanf(“%f”, &num) > 0) {...etc...etc...etc... } Input: 45.2 Result: 1

56 float num; while (scanf(“%f”, &num) > 0) {...etc...etc...etc... } Input: -5 Result: 1 scanf and while -- Example 1 (cont)

57 float num; while (scanf(“%f”, &num) > 0) {...etc...etc...etc... } Input: 0 Result: 1 scanf and while -- Example 1 (cont)

58 float num; while (scanf(“%f”, &num) > 0) {...etc...etc...etc... } Input: c Result: 0 scanf and while -- Example 1 (cont)

59 float num; while (scanf(“%f”, &num) > 0) {...etc...etc...etc... } Input: Dog Result: 0 scanf and while -- Example 1 (cont)

60 float num; while (scanf(“%f”, &num) > 0) {...etc...etc...etc... } scanf and while -- Example 1 (cont) Input: ^Z or ^D (depending on the operating system) Result: EOF (usually has value -1, but it can be any negative number)

61 int val; float x, y, z; val = scanf(“%f %f %f”, &x, &y, &z); printf(“%d\n”, val); Input: Output: 3 scanf -- Example 2

62 int val; float x, y, z; val = scanf(“%f %f %f”, &x, &y, &z); printf(“%d\n”, val); scanf -- Example 2 (cont) Input: c Output: 2

63 Input: 42.5 c 23 Output: 1 int val; float x, y, z; val = scanf(“%f %f %f”, &x, &y, &z); printf(“%d\n”, val); scanf -- Example 2 (cont)

64 Input: man 2 wolf Output: 0 int val; float x, y, z; val = scanf(“%f %f %f”, &x, &y, &z); printf(“%d\n”, val); scanf -- Example 2 (cont)

65 int num; char ch; float x; printf(“Please enter an int, a char, and a float: “); if ( scanf(“%d %c %f”, &num, &ch, &x) != 3 ) { printf(“Invalid input. No cookie for you.\n”); } else { printf(“Thank you. Your cookie is in the box.\n”); } scanf -- Example 3

66 int num; char ch; float x; printf(“Please enter an int, a char, and a float: “); if ( scanf(“%d %c %f”, &num, &ch, &x) != 3 ) { printf(“Invalid input. No cookie for you.\n”); } else { printf(“Thank you. Your cookie is in the box.\n”); } scanf -- Example 3 (cont)

67 Nested Loops Loops can be placed inside other loops The break statement applies to the innermost enclosing while or for statement

68 Example: rect.c Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row }

69 Example: rect.c (cont) #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); return 0; } Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row }

70 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { } return 0; } Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } Example: rect.c (cont)

71 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { for (colc=0; colc < numcol; colc++) { } } return 0; } Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } Example: rect.c (cont)

72 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { for (colc=0; colc < numcol; colc++) { printf("*"); } } return 0; } Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } Example: rect.c (cont)

73 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { for (colc=0; colc < numcol; colc++) { printf("*"); } printf("\n"); } return 0; } Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } Example: rect.c (cont)

74 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { for (colc=0; colc < numcol; colc++) { printf("*"); } printf("\n"); } return 0; } Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } Example: rect.c (cont)

75 Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { for (colc=0; colc < numcol; colc++) { printf("*"); } printf("\n"); } return 0; } program Example: rect.c (cont) algorithm

76 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); rowc = 0; while (rowc < numrow) { for (colc=0; colc < numcol; colc++) { printf("*"); } printf("\n"); rowc++; } return 0; } Variation: rect2.c Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row }

77 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { colc = 0; while (1) { printf("*"); colc++; if (colc == numcol) { break; } } printf("\n"); } return 0; } Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } Variation: rect3.c

78 #include /* Print an m-by-n rectangle of asterisks */ int main() { int rowc, colc, numrow, numcol; printf("\nEnter width: "); scanf("%d", &numcol); printf("\nEnter height: "); scanf("%d", &numrow); for (rowc=0; rowc < numrow; rowc++) { colc = 0; while (1) { printf("*"); colc++; if (colc == numcol) { break; } } printf("\n"); } return 0; } Variation: rect3.c (cont) Print an m by n rectangle of asterisks input width and height for each row { for each column in the current row { print an asterisk } start next row } The innermost enclosing loop for this break is the while-loop

79 Reading King –Chapter 6, except Section 6.2 Deitel and Deitel –Chapter 3, Section 3.7 –Chapter 4, Sections 4.1 to 4.6 Sections 4.8 to 4.11