Chapter 4 Control Structure: Loop Knowledge: Understand the various concepts of loop control...

Preview:

Citation preview

Chapter 4 Control Structure: Loop

Knowledge:Understand the various concepts of loop control structure

Skill:Be able to develop a program involving loop control structure

1

Prof. Kuanquan Wang

The School of Computer Science and Technology

Harbin Institute of technology

Outline

4.1 Review and introduction to loop flow control structure

4.2 Loop control with counter4.3 Loop control with condition test4.4 Loop control with sentinel

4.1 Review and introduction to loop flow control structure

How many basic flow control structure?

There are 3 kinds of basic flow control structure.

Sequence Selection Repetition or loop

C Programming LanguageC Programming Language 44

How Loops are Controlled?How Loops are Controlled?

Sentinel ControlledCounter Controlled

•1, 2, 3, 4, …•…, 4, 3, 2, 1

Condition Controlled

C Programming LanguageC Programming Language 55

4.2 Counter Controlled Loop4.2 Counter Controlled Loop

counter ← initial Value

test counter value

Step n

Step x

false

true

Update counter

C Programming LanguageC Programming Language 66

Counter Controlled LoopCounter Controlled Loop

counter = initialValue

test counter value

Step n

Step x

false

true

Update counter

counter ← initial Value

C Programming LanguageC Programming Language 77

Example:Example:

Can you identify the input and output???

Draw a flowchart for the following problem:

Read 5 integer and display the

value of their summation.

Input : 5 integer n1, n2, n3, n4, n5 Output: The summation of

n1, n2, .., n5

Input example: 2 3 4 5 6

Output example: 20

C Programming LanguageC Programming Language 88

Input n1

Input n2

Input n3

input n4

input n5

output sum

sum ← n1+n2+n3+n4+n5

start

2n1

Assume input example: 2 3 4 5 6

3n2

4n3

5n4

6n5

20sum

end

This flowchart does not use loop, hence

we need to use 6 different variables

C Programming LanguageC Programming Language 99

Counter-Counter-Controlled Controlled LoopLoop

counter ← 1, sum ← 0

counter < 6

sum ← sum + n

false

true

counter++

output sum

input n

1counter

sum 0

1 < 6 true

2n

0 + 22

2

2 < 6 true

3

2 + 35

3

3 < 6 true

4

5 + 49

4

4 < 6 true

5

9 + 514

5

5 < 6 true

6

14 + 620

6

6 < 6 false

Assume input example:

2 3 4 5 6

This loop iscounter-controlled

The counter Increases by 1

Uses only 3 variables

C Programming LanguageC Programming Language 1010

Decreasing Counter-Controlled LoopDecreasing Counter-Controlled Loop

counter ← 5, sum ← 0

counter > 0

sum←sum+ x

false

true

counter--

output sum

input x

C Programming LanguageC Programming Language 1111

Loop : Loop : forfor

Condition is tested first Loop is controlled by a counter Syntaxes

for (initial value ; condition; update counter) statement;

Or

for (initial value ; condition; update counter) {statement;statement;

}

C Programming LanguageC Programming Language 1212

i ← 0, sum ← 0

i < 5

sum←sum+ x

false

true

i++

output sum

input x

int x, sum, i;sum = 0;for (i = 0; i < 5; i++) {

scanf(“%d”,&x);sum = sum + x;

}printf(“%d”,sum);

C Programming LanguageC Programming Language 1313

forfor statement statement

Example:

for ( num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

???

_

1 _printf(“have come to exit\n”);

C Programming LanguageC Programming Language 1414

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

1

_

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 1515

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

1

_

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 1616

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

1

1 _

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 1717

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

2

1 _

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 1818

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

2

1 _

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 1919

forfor statement statement

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

2

1 2 _

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 2020

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

3

1 2 _

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 2121

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

3

1 2 _

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 2222

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

3

1 2 3 _

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 2323

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

num

4

1 2 3 _

forfor statement statement

printf(“have come to exit\n”);

C Programming LanguageC Programming Language 2424

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

printf(“have come to exit\n”);

num

4

1 2 3 _

forfor statement statement

C Programming LanguageC Programming Language 2525

Example:

for (num = 1; num <= 3; num++ ) printf(“%d\t”, num);

printf(“have come to exit\n”);

num

4

1 2 3 have come to exit_

forfor statement statement

C Programming LanguageC Programming Language 2626

Loop StructureLoop Structure

Condition is tested first Condition is tested later

4.3 Loop control with condition test

C Programming LanguageC Programming Language 2727

false

true

Testing Condition First

condition

Step x

Step y

Step a

Step n

C Programming LanguageC Programming Language 2828

Testing Condition First

condition

Step x

Step y

Step a

Step n

C Programming LanguageC Programming Language 2929

Loop: whileLoop: while

Condition is tested first Loop is controlled by condition or a counter Syntax

while (condition) statement;

Orwhile (condition) {

statement;statement;

}

C Programming LanguageC Programming Language 3030

Step a

condition

Step n

Step x

false

true

Step y

Testing condition later

C Programming LanguageC Programming Language 3131

Step a

condition

Step n

Step x

false

true

Step y

Testing condition later

C Programming LanguageC Programming Language 3232

Do-while LoopDo-while Loop Statements in the loop are executed first (at least

once), and condition is tested last Loop is controlled by a condition or counter Syntax

do { statement;statement;

} while (condition);statement;

C Programming LanguageC Programming Language 3333

Example: Draw a flowchart for this problem;

Given an exam marks as input, display the appropriate message based on the rules below:

If marks is greater than 49, display “PASS”, otherwise display “FAIL”

However, for input outside the 0-100 range, display “WRONG INPUT” and prompt the user to input again until a valid input is entered

C Programming LanguageC Programming Language 3434

Condition-ControlledCondition-Controlled LoopLoop

false

true

input m

m<0 || m>100

m>49 “PASS”

“FAIL”

true

false

“WRONG INPUT”

Assume m=110

m 110

110 < 0 || 110 >100

WRONG INPUT

Assume m=5

5

5 < 0 || 5 >100

5 > 49

FAIL

Assume m=57

57

57 < 0 || 57 >100

57 > 49

PASS

Condition-controlled loop with its condition being tested at the end

C Programming LanguageC Programming Language 3535

false

true

input m

m<0 || m>100

m>49 “PASS”

“FAIL”

true

false

“WRONG INPUT”

input m

Condition-controlled loop with its condition being tested first

C Programming LanguageC Programming Language 3636

int marks;scanf(“%d”,&marks);while (marks<0) | | (marks>100) {

printf(“WRONG INPUT”);scanf(“%d”,&marks);

}if (marks>49) {

printf(“PASS”);else

printf(“FAIL”);}

DoubleSelection

C Programming LanguageC Programming Language 3737

do-while statementdo-while statement

Example :printf(“Input start and end value : “);scanf(“%d %d”, &start, &end);do {

printf(“%c (%d)\n“, start, start);start++;

} while (start <= end) ;

_

???

start

???

end

Input start and end value : _Input start and end value : 65 67_

65 67

Input start and end value : 65 67A (65)_

66

66 <= 67

Input start and end value : 65 67A (65)B (66)_

67 <= 67

67

Input start and end value : 65 67A (65)B (66)C (67)_

68

68 <= 67

C Programming LanguageC Programming Language 3838

4.4 Sentinel-Controlled Loop4.4 Sentinel-Controlled Loop

Draw a flowchart for a problem which:

Receive a number of positive integers and display the summation and average of these integers.

A negative or zero input indicate the end of input process

Can you identify the input and output???

Input: A set of integers ending with a

negative integer or a zero

Output: Summation and Average of these integers

C Programming LanguageC Programming Language 3939

Input Example:

30 16 42 -9

Output Example:

Sum = 88

Average = 29.33

Sentinel Value

C Programming LanguageC Programming Language 4040

Now…What have you

understand?

C Programming LanguageC Programming Language 4141

x>0

sum←sum+x

false

true

input x

sum←0

input x

display sum

Try to understand What will happen if this statement is deleted???

?

What happened if these 2

statements exchange

places

sum←sum+x

input x

?

C Programming LanguageC Programming Language 4242

ExerciseExercise Given a set of integers

with the last one being 999 Display the summation of

all the integers.

Input example: 1 3 23 999

Output example: Sum = 27

Draw the flowchart for this problem

C Programming LanguageC Programming Language 4343

Sentinel-controlled loop

true

x!=999

sum←sum+x

false

input x

sum=0

input x

output sum

#include <stdio.h>

void main() {

int sum, x;

sum = 0;

scanf(“%d”, &x);

while (x != 999) {

sum = sum + x;

scanf(“%d”, &x);

}

printf(“The sum : %d\n”, sum);

}

C Programming LanguageC Programming Language 4444

int sum, x; sum = 0; scanf(“%d”, &x); while (x != 999) { sum = sum + x; scanf(“%d”, &x); } printf(“\nThe sum : %d\n”, sum);

?

?x

sum 0

1

_1

1 != 999

0+11

1 3

33 != 999

1+34

1 3 23

2323 != 999

4+2327

1 3 23 999

999999 != 999

The sum : 27

C Programming LanguageC Programming Language 4545

Now…Let us have a

summary!The concept of Loop Structure

3 methods to control loop structure

Counter Controlled, Condition Controlled, Sentinel Controlled

3 statements in C language

for, while, do while

Thank you for your attention!

Now let us have a break!

Recommended