41
Looping in C++ MELJUN COR TES, MBA,MP A,BSCS,ACS Gateway Institute of Science & Technology

MELJUN CORTES C++ Demo MAY 7 2011

Embed Size (px)

Citation preview

Page 1: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 1/41

Looping in C++

MELJUN CORTES, MBA,MPA,BSCS,ACS

Gateway Institute of Science & Technology

Page 2: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 2/41

The Increment and Decrement Operators

Introduction to Loops: The while Loop Using the while loop for Input Validation

Counters The do-while loop The for loop Keeping a Running Total

5-2

Page 3: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 3/41

Sentinels

Nested Loops

Breaking Out of a Loop

The continue Statement

Creating Good Test Data

5-3

Page 4: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 4/41

• ++ adds one to a variable

val++; is the same as val = val + 1;• -- subtracts one from a variable

val--; is the same as val = val – 1;

• can be used in prefix mode (before) or

postfix mode (after) a variable

5-4

Page 5: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 5/41

• ++val and --val increment or decrement thevariable, then return the new value of thevariable.

• It is this returned new value of the variablethat is used in any other operations within thesame statement

5-5

Page 6: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 6/41

 int x = 1, y = 1;

x = ++y; // y is incremented to 2// Then 2 is assigned to x

cout << x

 << " " << y; // Displays 2 2

x = --y; // y is decremented to 1// Then 1 is assigned to x

cout << x

 << " " << y; // Displays 1 1

5-6

Page 7: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 7/41

• val++ and val-- return the old value of thevariable, then  increment or decrement thevariable

• It is this returned old value of the variablethat is used in any other operations withinthe same statement

5-7

Page 8: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 8/41

 int x = 1, y = 1;x = y++; // y++ returns a 1 first

// The 1 is assigned to x// then y is incremented to 2

cout << x

 << " " << y; // Displays 1 2x = y--; // y-- returns a 2

// The 2 is assigned to x// then y is decremented to 1

cout << x

 << " " << y; // Displays 2 1

5-8

Page 9: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 9/41

Can be used in arithmetic expressionsresult = num1++ + --num2;

• Must be applied to something that has alocation in memory. Cannot have

result = (num1 + num2)++; // Illegal• Can be used in relational expressionsif (++num > limit)

prefix- and postfix-operations will causedifferent comparisons

5-9

Page 10: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 10/415-10

• Loop: part of program that may execute morethan once (i.e., it repeats) 

•   while loop format: while (condition)

{ statement(s);

}

• The {} can be omitted if there is only one

statement in the body of the loop

No ; here

Page 11: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 11/41

 while (condition){ statement(s);

}

condition is evaluated

◦ if it is true, the statement(s) are executed, andthen condition is evaluated again

◦ if it is false, the loop is exited

5-11

Page 12: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 12/415-12

true

statement(s)

false

condition

Page 13: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 13/41

int val = 5;

 while (val >= 0){ cout << val << " ";

val--;}

produces output:5 4 3 2 1 0

5-13

Page 14: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 14/41

 while is a pretest loop (condition isevaluated before the loop executes)(Entry Control Loop)If the condition is initially false, thestatement(s) in the body of the loop arenever executedIf the condition is initially true, thestatement(s) in the body continue to beexecuted until the condition becomes false

5-14

Page 15: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 15/41

The loop must contain code to allowcondition to eventually become false so theloop can be exited

• Otherwise, you have an infinite loop (i.e., a

loop that does not stop) • Example infinite loop:x = 5; while (x > 0) // infinite loop because

cout << x; // x is always > 0

5-15

Page 16: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 16/41

Loops are an appropriate structure forvalidating user input data

1. Prompt and read in the data.

Use a while loop to test if data is valid.Enter the loop only if data is not valid.Inside the loop, prompt the user to re-enter the data.

The loop will not be exited until validdata has been entered.

5-16

Page 17: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 17/41

cout << "Enter a number (1-100) and" << " I will guess it. ";

cin >> number;

 while (number < 1 || number > 100)

{ cout << "Number must be between 1 and 100." << " Re-enter your number. ";

cin >> number;

}

// Code to use the valid number goes here.

5-17

Page 18: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 18/41

Counter: variable that is incremented ordecremented each time a loop repeats

Can be used to control execution of the loop(loop control variable) 

Must be initialized before entering loop

May be incremented/decremented eitherinside the loop or in the loop test

5-18

Page 19: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 19/41

Program can be written so that user input determines loop repetition

Can be used when program processes a listof items, and user knows the number of 

items

User is prompted before loop. Their inputis used to control the number of repetitions

5-19

Page 20: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 20/41

int num, limit;

cout << "Table of squares\n";cout << "How high to go? ";cin >> limit;cout << "\n\nnumber square\n";

num = 1; // loop control variable while (num <= limit){ cout << setw(5) << num << setw(6)

<< num*num << endl;num++;

}

5-20

Page 21: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 21/41

• do-while: a post test loop (condition isevaluated after the loop executes) 

• Format:

do{ 1 or more statements; 

} while (condition);

5-21

Notice the

required ; 

Page 22: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 22/41

5-22

statement(s)

condition

false

true

Page 23: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 23/41

Loop always executes at least once• Execution continues as long as condition istrue;

The loop is exited when condition becomesfalse

• Useful in menu-driven programs to bringuser back to menu to make another choice

5-23

Page 24: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 24/41

5-24

Pretest loop that executes zero or more times• Useful for counter-controlled loop

• Format:

for( initialization; test; update )

{ 1 or more statements;

} No ; goes

here

Required ;

Page 25: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 25/41

for(initialization; test; update){ // {} may be omitted 

statement(s); // if loop body contains

} // only 1 statement

Perform initializationEvaluate test expression:

(a) If true, execute statement(s)(b) If false, terminate loop execution

Execute update, then re-evaluate test expression

5-25

Page 26: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 26/41

5-26

true

statement(s)

falsetest

initialization

code

update

code

Page 27: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 27/41

int sum = 0, num;

for (num = 1; num <= 10; num++)

sum += num;

cout << "Sum of numbers 1 – 10 is " << sum << endl;

5-27

Page 28: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 28/41

If test is false the first time it is evaluated,the body of the loop will not be executed

The update expression can increment ordecrement by any amount

Variables used in the initialization sectionshould not be modified in the body of theloop

5-28

Page 29: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 29/41

Can define variables in initialization codeTheir scope is the for loop

Initialization code, test, or update code cancontain more than one statementSeparate statements with commas

Example:for (int sum = 0, num = 1; num <= 10; num++) 

sum += num;

5-29

Page 30: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 30/41

Can omit initialization if already doneint sum = 0, num = 1;for (; num <= 10; num++) 

sum += num;

Can omit update if done in loopfor (sum = 0, num = 1; num <= 10;) 

sum += num++;

Can omit test – may cause an infinite loopfor (sum = 0, num = 1; ; num++) 

sum += num;

5-30

Page 31: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 31/41

running total: accumulated sum of numbersfrom each repetition of loopaccumulator: variable that holds running totalint sum = 0, num = 1; // sum is the

 while (num <= 10) // accumulator{ sum += num;num++;

}cout << "Sum of numbers 1 – 10 is "

 << sum << endl;

5-31

Page 32: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 32/41

Sentinel: value in a list of values that indicatesend of data

• Special value that cannot be confused with avalid value, e.g., -999 for a test score

• Used to terminate input when user may notknow how many values will be entered

5-32

Page 33: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 33/41

int total = 0;

cout << "Enter points earned " << "(or -1 to quit): ";

cin >> points;

 while (points != -1) // -1 is sentinel

{total += points;cout << "Enter points earned: ";cin >> points;

}

5-33

Page 34: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 34/41

  while: pretest loop (loop body may not beexecuted at all) 

do-while: post test loop (loop body willalways be executed at least once) 

for: pretest loop (loop body may not beexecuted at all); has initialization andupdate code; is useful with counters or if precise number of repetitions is known

5-34

Page 35: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 35/41

A nested loop is a loop inside the body of another loop• Example:for (row = 1; row  <= 3; row++){

for (col = 1; col  <= 3; col++){cout << row * col << endl;

}}

5-35

outer loop

inner loop

Page 36: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 36/41

Inner loop goes through all its repetitions foreach repetition of outer loop

Inner loop repetitions complete sooner thanouter loop

Total number of repetitions for inner loop isproduct of number of repetitions of the twoloops. In previous example, inner looprepeats 9 times

5-36

Page 37: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 37/41

Can use break to terminate execution of aloop

Use sparingly if at all – makes code harder tounderstand

When used in an inner loop, terminates thatloop only and goes back to outer loop

5-37

Page 38: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 38/41

Can use continue to go to end of loop andprepare for next repetition•   while and do-while loops go to test and repeat

the loop if test condition is true

 for loop goes to update step, then tests, andrepeats loop if test condition is true

Use sparingly – like break, can makeProgram logic hard to follow

5-38

Page 39: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 39/41

When testing a program, the quality of the

test data is more important than the quantity.Test data should show how different parts of the program executeTest data should evaluate how program

handles:◦normal data◦data that is at the limits of the valid range◦invalid data

5-39

Page 40: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 40/41

Write a Program which takes a single integer "height" and displays a "pyramid"

of this height made up of of "*" characters on the screen. The program, should beable to reproduce the following example output:

This program prints a 'pyramid' shape of a specified height on the screen.

how high would you like the pyramid?: 37 Pick another height (must be between 1 and 30):5

**

****

******

********

**********

Question 1

Q i 2

Page 41: MELJUN CORTES C++  Demo MAY 7 2011

7/29/2019 MELJUN CORTES C++ Demo MAY 7 2011

http://slidepdf.com/reader/full/meljun-cortes-c-demo-may-7-2011 41/41

Question 2"For" loops can always be re-written as "while" loops, and vice-

versa. Are the following two programs equivalent, and what is

their output? Explain your answer, and run the programs tocheck. 

Program (a):

#include <iostream.h>int main(){ int count = 1;

for (; count <= 5 ; count++)

{int count = 1;cout << count << "\n";

}return 0;

}

Program (b):

#include <iostream>int main(){

int count = 1;

while (count <= 5){

int count = 1;

cout << count << "\n";count++;

}return 0;

}