Chapter 5: Control Structures II (Repetition) · C++ Programming Objectives Learn about repetition...

Post on 19-Jul-2020

17 views 0 download

Transcript of Chapter 5: Control Structures II (Repetition) · C++ Programming Objectives Learn about repetition...

1

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Chapter 5:

Control Structures II (Repetition)

2

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Objectives

Learn about repetition (looping) control

structures

Explore how to construct and use count-controlled,

sentinel-controlled, flag-controlled, and

EOF-controlled repetition structures

Examine break and continue statements

Discover how to form and use nested control

structures

Learn how to avoid bugs by avoiding

patches

Learn how to debug loops

3

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Why Is Repetition Needed?

• Repetition allows you to efficiently use variables

• Can input, add, and average multiple numbers

using a limited number of variables

• For example, to add five numbers:

– Declare a variable for each number, input the

numbers and add the variables together

– Create a loop that reads a number into a

variable and adds it to a variable that contains

the sum of the numbers

4

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Read and Add Numbers

� 2 Numbers

int Sum;

int N1;

cin >> N1;

int N2;

cin >> N2;

Sum = N1 + N2;

cout << Sum;

INPUT N1

INPUT N2

COMPUTE

Sum=N1+N2;

OUPUT Sum

START

STOP

5

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Read and Add Numbers

�3 Numbersint Sum;

int N1;

cin >> N1;

int N2;

cin >> N2;

int N3;

cin >> N3;

Sum = N1 + N2 + N3;

cout << Sum;

INPUT N1

INPUT N2

COMPUTE

Sum=N1+N2+N3;

OUPUT Sum

START

STOP

INPUT N3

6

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

N2

Read and Add Numbers

� 3 Numbers

int Sum;

int N1;

cin >> N1;

int N2;

cin >> N2;

int N3;

cin >> N3;

Sum = N1 + N2 + N3;

cout << Sum;

N1

N3

� 3 Numbers Sum so far

int Sum=0;

int N1;

cin >> N1;

Sum = Sum + N1;

int N2;

cin >> N2;

Sum = Sum + N2;

int N3;

cin >> N3;

Sum = Sum + N3;

cout << Sum;

7

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

REPEAT

3

TIMES

N2

Read and Add Numbers

N1

N3

int Sum=0;

int N1;

cin >> N1;

Sum = Sum + N1;

int N2;

cin >> N2;

Sum = Sum + N2;

int N3;

cin >> N3;

Sum = Sum + N3;

cout << Sum;

int Sum=0;

int N;

cin >> N;

Sum = Sum + N;

cout << Sum;

8

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

REPEAT

1000

TIMES

Read and Add Numbers

int Sum=0;

int N;

cin >> N;

Sum = Sum + N;

cout << Sum;

REPEAT

3

TIMES

int Sum=0;

int N;

cin >> N;

Sum = Sum + N;

cout << Sum;

9

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure

• The general form of the while statement is:

while is a reserved word

• Statement can be simple or compound

• Expression acts as a decision maker and is usually

a logical expression

• Statement is called the body of the loop

• The parentheses are part of the syntax

while ( Expression )

Statement;

10

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure

• Infinite loop: continues to execute endlessly

– Avoided by including statements in loop

body that assure exit condition is eventually false

false trueExpression

Statement

while ( Expression )

Statement;

11

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure

i=0;

while (i<=20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

0 5 10 15 20

i=25;

while (i<=20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

5 times 0 times

12

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure

i=0;

while (i<=20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

0 5 10 15 20

i=0;

while (i>=-20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

_

5 times INFINITE

13

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure

i=0;

while (i<=20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

0 5 10 15 20

i=0;

while (i<=20);

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

_

5 times

INFINITE

times

14

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure

i=0;

while (i<=20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

0 5 10 15 20

i=0;

while (i<20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

5 timesRandom number

or INFINITE

15

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure

i=0;

while (i<=20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

0 5 10 15 20

i=0;

while (i<20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

0 0 0 0 0 0 0 0 0 ….

5 times INFINITE

16

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Case 1: Counter-Controlled while Loops

• If you know exactly how many pieces of data need

to be read

//initialize the counter

counter = 0;

//test the counter

while (counter < N)

{

//loop statements

Statements;

//update the counter

counter++;

}

17

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Counter-Controlled while Loops

counter = 0;

while ( counter < N)

{

Statement;

counter++;

}

false truecounter < N

Statement

counter = 0

counter=counter +1

18

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

REPEAT

5

TIMES

Read and Add Numbersint Sum=0;

int counter=0;

while (counter<5)

{

int N;

cin >> N;

Sum = Sum + N;

counter++;

}

cout << Sum;

REPEAT

5

TIMES

int Sum=0;

int N;

cin >> N;

Sum = Sum + N;

cout << Sum;

19

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example: Sum of N Numbers

20

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Case 2: Sentinel-Controlled while Loops

• Sentinel variable is tested in the condition

• Loop ends when sentinel is encountered

//initialize the loop control variable

cin >> variable;

//test the loop control variable

while (variable != SENTINEL)

{

//loop statements

Statements;

//update the loop control variable

cin >> variable;

}

21

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Sentinel-Controlled while Loops

false truevariable!=

SENTINEL

variable!=

SENTINEL

Statement

cin >> variable;

while ( variable!=

SENTINEL)

{

Statement;

cin >> variable;

}

INPUT variable

INPUT variable

22

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example: Sentinel-Controlled Sum

23

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example: Letter to Telephone Digits

24

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Case 3: Flag-Controlled while Loops

� A flag-controlled while loop uses a bool

variable to control the loop

//initialize the loop control variable

found = false;

//test the loop control variable

while (!found)

{

//loop statements

Statements;

//update the loop control variable

if (expression)

found = true;

}

25

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Flag-Controlled while Loops

found=false;

while (!found)

{

Statement;

if (expression)

found=true;

}true

false true!found

Statement

found=false

found=true

expressionfalse

26

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

rand Function

� Generate a random int value between 0 and

32767

� In header file cstdlib

� To convert it to an integer greater than or equal to

0 and less than 100:

rand() % 100

27

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example: Number Guessing Game

28

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Case 4: EOF-Controlled while Loops� Use an EOF (End Of File)-controlled while loop

to read from an input stream (file) as long as

there is something in that stream

//initialize the loop control variable

InputStream >> variable;

//test the loop control variable

while (InputStream)

{

//loop statements

Statements;

//update the loop control variable

InputStream >> variable;

}

29

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

EOF(End of File)-Controlled while Loops

cin >> variable;

while (InputStream)

{

Statement;

cin >> variable;

}

false trueInputStream

Statement

INPUT variable

INPUT variable

30

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

eof Function

� The function eof can determine the end of file

status

� Is true when you read beyond the end of the file

� eof is a member of data type istream

� The syntax for the function eof is:

where istreamVar is an input stream variable,

such as cin or a input file variable

istreamVar.eof()

31

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example: Grades

First Name Last Name TestScore Letter Grade

��������

��������

�������

�������

��������

�������

AVERAGE

LetterGrade=

A if 90<TestScore

B if 80<TestScore<90

C if 70<TestScore<80

D if 60<TestScore<70

F if TestScore<60

ClassAverage=������������������⋯�� �����������������

=∑ ����������������"�"#�

For each

student

For the

class

32

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example:

Grades

� Flowchart

START

INPUT FirstName, LastName, AverageTestScore

YESNOInputFile

STOP

NumberStudents=0

INPUT FirstName, LastName, AverageTestScore

Calculate LetterGrade

Sum = Sum + TestScore

NumberStudents = NumberStudents+1

ClassAverage = Sum/NumberStudents

OUTPUT Name + LetterGrade

Sum=0

OUTPUT ClassAverage

33

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example: Grades

34

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

More on Expressions in while Statements

� The expression in a while statement can be

complexnoOfGuesses=0;

while ((noOfGuesses < 5) && (!isGuessed))

{

cout << "Enter an integer greater than or equal

to 0 and less than 100: ";

cin >> guess;

cout << endl;

noOfGuesses++;

}

35

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

� Consider the following sequence of numbers:

� 1, 1, 2, 3, 5, 8, 13, 21, 34, ....

� Given the first two numbers of the sequence

(say, a1 and a2)

� nth number an, n >= 3, of this sequence is

given by: an = an-1 + an-2

36

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

� Fibonacci sequence

� nth Fibonacci number

� a2 = 1

� a1 = 1

� Determine the nth number, an, n >= 3

a1 a2 a3 a4 a5

+

37

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

� Input:

� first two Fibonacci numbers

� the desired Fibonacci number n

� Output:

� nth Fibonacci number

38

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

� Problem Analysis and Algorithm Design:

1. Get the first two Fibonacci numbers

2. Get the desired Fibonacci number

� Get the position, n, of the Fibonacci number in the sequence

3. Calculate the next Fibonacci number

� By adding the previous two elements of the Fibonacci

sequence

4. Repeat Step 3 until the nth Fibonacci number is

found

5. Output the nth Fibonacci number

39

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

� Variables

Programming Example: Fibonacci Number

40

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

� Main Algorithm:

1. Prompt the user for the first two numbers—that is,

previous1 and previous2

2. Read (input) the first two numbers into previous1

and previous2

3. Output the first two Fibonacci numbers

4. Prompt the user for the position of the desired

Fibonacci number

5. Read the position of the desired Fibonacci number

into nthFibonacci

41

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

a. if (nthFibonacci == 1)

The desired Fibonacci number is the first Fibonacci number.

Copy the value of previous1 into current

b. else if (nthFibonacci == 2)

The desired Fibonacci number is the second Fibonacci number.

Copy the value of previous2 into current.

c. else calculate the desired Fibonacci number as

follows:

• Initialize counter to 3 to keep track of the calculated

Fibonacci numbers.

6.

42

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number � Calculate the next Fibonacci number, as follows:

current = previous2 + previous1;

� Assign the value of previous2 to previous1

� Assign the value of current to previous2

� Increment counter

� Repeat until Fibonacci number is calculated

7. Output the nth Fibonacci number, which is current

previous2 previous1 current

+

43

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

44

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Programming Example: Fibonacci Number

45

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure• The general form of the for statement is:

• The InitialStatement, LoopCondition, and

UpdateStatement are called for loop control

statements

– InitialStatement usually initializes a variable

(called the for loop control, or for indexed,

variable)

• In C++, for is a reserved word

for( InitialStatement; LoopCondition; UpdateStatement )

Statement;

46

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure

false true

LoopCondition

Statement

InitialStatement

UpdateStatement

for( InitialStatement; LoopCondition; UpdateStatement )

Statement;

47

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure

for (i=0; i<10; i++)

cout << i << “ ”;

cout << endl;

Sample output:

0 1 2 3 4 5 6 7 8 9

48

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure

for loop while loop

for (i=0; i<10; i++)

cout << i << “ ”;

cout << endl;

i=0;

while (i<10)

{

cout << i << “ ”;

i++;

}

cout << endl;

49

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure

for(i=0; i<10; i++)

cout << “Hello”;

cout << “*”;

for(i=0; i<10; i++)

{

cout << “Hello”;

cout << “*”;

}

simple

statement

compound

statement

50

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure

for(i=0; i<10; i++)

{

cout << “Hello”;

cout << “ * ”;

}

for(i=0; i<10; i++);

{

cout << “Hello”;

cout << “ * ”;

}

10 times 1 time

51

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure

•The following is a legal for loop:

•The following is a legal while loop:

for (;;)

cout << "Hello\n”;

while (1)

cout << "Hello\n”;

•Both loops are legal, but not semantically correct.

•They are infinite loops (never end).

52

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure • C++ allows you to use fractional values for loop control

variables of the double type

– Results may differ. Avoid using them.

• An semicolon before the body of the loop will terminate

it. for (i=0;i<5;i++);

cout << “*" << endl;

• If the initial statement, loop condition, or

update statement are omitted (empty) they are

assumed to be true and the loop is an infinite loop.for (;;)

cout << “*" << endl;

53

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure

� Not necessarily in increasing order – you can

decrement the loop control variable

for (i=10; i>0; i--)

cout << i << “ ”;

cout << endl;

Sample output:

10 9 8 7 6 5 4 3 2 1

for (i=10; i>=1; i--)

cout << i << “ ”;

cout << endl;

54

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

for Looping (Repetition) Structure � Not necessarily consecutive values for the loop control

variable

for (i=1; i<=10; i=i+2)

cout << i << “ ”;

cout << endl;

Sample output:

1 3 5 7 9

for (i=2; i<=10; i=i+2)

cout << i << “ ”;

cout << endl;

Sample output:

2 4 6 8 10

55

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Example: Fibonacci Number

56

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

do…while Looping (Repetition) Structure

• General form of a do...while:

• The statement executes first, and then the

expression is evaluated

• To avoid an infinite loop, body must contain a

statement that makes the expression false

• The statement can be simple or compound

• Loop always iterates at least once

do

Statement;

while ( Expression );

57

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

do…while Looping (Repetition) Structure

false true

Expression

Statement do

Statement;

while ( Expression );

58

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure i=0;

do

{

cout << i << “ ”;

i=i+5;

}

while (i<=20);

cout << “\n”;

Sample run:

0 5 10 15 20

i=25;

do

{

cout << i << “ ”;

i=i+5;

}

while (i<=20);

cout << “\n”;

Sample run:

0

5 times 1 times

59

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

while Looping (Repetition) Structure i=25;

do

{

cout << i << “ ”;

i=i+5;

}

while (i<=20);

cout << “\n”;

Sample run:

0

i=25;

while (i<=20)

{

cout << i << “ ”;

i=i+5;

}

cout << “\n”;

Sample run:

1 times 0 times

60

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Choosing the Right Looping Structure

� All three loops have their place in C++

– If you know or can determine in advance the number of repetitions needed, the for loop is the correct choice

– If you do not know and cannot determine in advance the number of repetitions needed, and it could be zero, use a while loop

– If you do not know and cannot determine in advance the number of repetitions needed, and it is at least one, use a do...while loop

61

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

break and continue Statements

• break and continue alter the flow of control

• break statement is used for two purposes:

– To exit early from a loop

• Can eliminate the use of certain (flag) variables

– To skip the remainder of the switch structure

• After the break statement executes, the

program continues with the first statement after

the structure

62

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

break and continue Statements

� continue is used in while, for, and

do…while structures

� When executed in a loop

� It skips remaining statements and proceeds

with the next iteration of the loop

63

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

break and continue Statements

break continue

for (i=0; i<10; i++)

{

if (i==5)

break;

cout << “ “ << i;

}

for (i=0; i<10; i++)

{

if (i==5)

continue;

cout << “ “ << i;

}

0 1 2 3 4 0 1 2 3 4 6 7 8 9

64

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Nested Control Structures

� Print N stars for (j = 1; j <= N; j++)

cout << "*";

� Print the numbers from 1 to 5, one per linefor (i = 1; i <= 5 ; i++)

{

cout << i;

cout << endl;

}

65

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Nested Control Structures

� Create and print the following pattern: *

**

***

****

*****

� Code:for (i = 1; i <= 5 ; i++)

{

for (j = 1; j <= i; j++)

cout << "*";

cout << endl;

}

On line i – print i stars

66

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Nested Control Structures

� Create and print the following pattern: *****

****

***

**

*

� Code:for (i = 5; i >= 1; i--)

{

for (j = 1; j <= i; j++)

cout << "*";

cout << endl;

}

On line 5-i-1 – print i stars / decreasing order

67

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Nested Control Structures

� Create and print the following pattern: *

**

***

****

*****

� Code:for (i = 1; i <= 5 ; i++)

{

for (j = 1; j <= 5-i; j++)

cout << “ ";

for (j = 1; j <= i; j++)

cout << "*";

cout << endl;

}

On line i – print 5-i spaces and i stars

68

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Nested Control Structures

� Pattern: *

**

***

****

*****

****

***

**

*

� Code:

for (i = 1; i <= 5 ; i++)

{

for (j = 1; j <= i; j++)

cout << "*";

cout << endl;

}

for (i = 4; i >= 1; i--)

{

for (j = 1; j <= i; j++)

cout << "*";

cout << endl;

}

69

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Avoiding Bugs by Avoiding Patches

� Software patch

� Piece of code written on top of an existing

piece of code

� Intended to fix a bug in the original code

� Some programmers address the symptom of

the problem by adding a software patch

� Should instead resolve underlying issue

70

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Debugging Loops

� Loops are harder to debug than sequence and

selection structures

� Use loop invariant

� Set of statements that remains true each

time the loop body is executed

� Most common error associated with loops is

off-by-one

71

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Summary

C++ has three looping (repetition) structures:

• while, for, and do…while

while and for loops are called pretest loops

do...while loop is called a posttest loop

while and for may not execute at all, but do...while always

executes at least once

72

Dr. Adriana Badulescu Kallas Introduction to Computer Science & Programming

Programming Fundamentals I

C++ Programming

Summary

while: expression is the decision maker, and the statement is the body of the

loop

A while loop can be:

•Counter-controlled

•Sentinel-controlled

•Flag-controlled

•EOF-controlled

for loop: simplifies the writing of a

counter-controlled while loop

Executing a breakstatement in the body of a loop immediately

terminates the loop

Executing a continue statement

in the body of a loop skips to the

next iteration