• No results found

Chapter 9

N/A
N/A
Protected

Academic year: 2021

Share "Chapter 9"

Copied!
40
0
0

Loading.... (view fulltext now)

Full text

(1)

1

Chapter 9

Additional Control Structures

Dale/Weems/Headington

(2)

2

Chapter 9 Topics

Switch Statement for Multi-way Branching

Do-While Statement for Looping

For Statement for Looping

Using break and continue Statements

(3)

3

Switch Statement

Is a selection control structure for multi-way branching.

SYNTAX

switch ( IntegralExpression ) {

case Constant1 :

Statement(s); // optional case Constant2 :

Statement(s); // optional

. . .

default : // optional

Statement(s); // optional }

(4)

4

float weightInPounds = 165.8 ; char weightUnit ;

. . . // user enters letter for desired weightUnit

switch ( weightUnit )

{

case ‘P’ : case ‘p’ :

cout << weightInPounds << “ pounds “ << endl ; break ;

case ‘O’ : case ‘o’ :

cout << 16.0 * weightInPounds << “ ounces “ << endl ; break ;

case ‘K’ : case ‘k’ :

cout << weightInPounds / 2.2 << “ kilos “ << endl ; break ;

case ‘G’ : case ‘g’ :

cout << 454.0 * weightInPounds << “ grams “ << endl ; break ;

default :

cout << “That unit is not handled! “ << endl ; break ;

}

(5)

5

Switch Statement

the value of IntegralExpression (of char, short, int, long or enum type ) determines which branch is executed

case labels are constant ( possibly named )

integral expressions. Several case labels

can precede a statement

(6)

6

Control in Switch Statement

control branches to the statement following the case label that matches the value of IntegralExpression.

Control proceeds through all remaining statements, including the default, unless redirected with break

if no case label matches the value of

IntegralExpression, control branches to the default label, if present--otherwise control passes to the statement following the entire switch statement

forgetting to use break can cause logical errors because after a branch is taken, control proceeds sequentially until either break or the end of the

switch statement occurs

(7)

7

Do-While Statement

Is a looping control structure in which the loop condition is tested after each iteration of the loop.

SYNTAX

do {

Statement

} while ( Expression ) ;

Loop body statement can be a single statement or a block.

(8)

8

void GetYesOrNo ( /* out */ char& response ) // Inputs a character from the user

// Postcondition: response has been input // && response == ‘y’ or ‘n’

{

do {

cin >> response ; // skips leading whitespace if ( ( response != ‘y’ ) && ( response != ‘n’ ) )

cout << “Please type y or n : “ ;

} while ( ( response != ‘y’ ) && ( response != ‘n’ ) ) ; }

Function Using Do-While

(9)

9

Do-While Loop vs. While Loop

POST-TEST loop (exit-condition)

The looping condition is tested after

executing the loop body.

Loop body is always executed at least

once.

PRE-TEST loop (entry-condition)

The looping condition is tested before

executing the loop body.

Loop body may not

be executed at all.

(10)

10

Do-While Loop

When the expression is tested and found to be false, the loop is exited and control passes to the

statement that follows the do-while statement.

Statement

Expression DO

WHILE

FALSE

TRUE

(11)

11

A Count-Controlled Loop

SYNTAX

for ( initialization ; test expression ; update ) {

0 or more statements to repeat

}

(12)

12

The for loop contains

an initialization

an expression to test for continuing

an update to execute after each

iteration of the body

(13)

13

Example of Repetition

int num;

for ( num = 1 ; num <= 3 ; num++ ) {

cout << num << “Potato” << endl;

}

(14)

14

Example of Repetition

num

int num;

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

cout << num << “Potato” << endl;

OUTPUT

?

(15)

15

Example of Repetition

num

OUTPUT 1

int num;

for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

(16)

16

Example of Repetition

num

OUTPUT 1

int num;

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

cout << num << “Potato” << endl;

true

(17)

17

Example of Repetition

num

int num;

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

cout << num << “Potato” << endl;

OUTPUT 1

1Potato

(18)

18

Example of Repetition

num

OUTPUT 2

int num;

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

cout << num << “Potato” << endl;

1Potato

(19)

19

Example of Repetition

num

OUTPUT 2

true

1Potato

int num;

for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

(20)

20

Example of Repetition

num

int num;

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

cout << num << “Potato” << endl;

OUTPUT 2

1Potato

2Potato

(21)

21

Example of Repetition

num

OUTPUT 3

int num;

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

cout << num << “Potato” << endl;

1Potato

2Potato

(22)

22

Example of Repetition

num

OUTPUT 3

true

1Potato 2Potato

int num;

for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

(23)

23

Example of Repetition

num

int num;

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

cout << num << “Potato” << endl;

OUTPUT 3

1Potato

2Potato

3Potato

(24)

24

Example of Repetition

num

OUTPUT 4

int num;

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

cout << num << “Potato” << endl;

1Potato

2Potato

3Potato

(25)

25

Example of Repetition

num

OUTPUT 4

false

1Potato 2Potato 3Potato

int num;

for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

(26)

26

Example of Repetition

num

When the loop control condition

is evaluated and has value false, the loop is said to be “satisfied” and control passes to the statement following the For statement.

4

false

int num;

for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

(27)

27

The output was:

1Potato

2Potato

3Potato

(28)

28

int count ;

for ( count = 4 ; count > 0 ; count-- ) {

cout << count << endl;

}

cout << “Done” << endl;

Count-controlled Loop

OUTPUT: 4 3 2 1

Done

(29)

29

What is output?

int count;

for ( count = 0 ; count < 10 ; count++ ) {

cout << “”;

}

(30)

30

OUTPUT

**********

NOTE: the 10 asterisks are all on one line. Why?

(31)

31

What output from this loop?

int count;

for (count = 0; count < 10; count++) ; {

cout << “”;

}

(32)

32

no output from the for loop! Why?

the ; right after the ( ) means that the body statement is a null statement

in general, the Body of the for loop is whatever statement immediately follows the ( )

that statement can be a single statement, a block, or a null statement

actually, the code outputs one * after the loop completes its counting to 10

OUTPUT

(33)

33

Several Statements in Body Block

const int MONTHS = 12 ; int count ;

float bill ;

float sum = 0.0 ;

for (count = 1; count <= MONTHS; count++ ) {

cout << “Enter bill: “ ; cin >> bill ;

sum = sum + bill ; }

cout << “Your total bill is : “ << sum << endl ;

(34)

34

Break Statement

break statement can be used with Switch or any of the 3 looping structures

it causes an immediate exit from the Switch, While, Do-While, or For statement in which it appears

if the break is inside nested structures,

control exits only the innermost structure

containing it

(35)

35

Continue Statement

is valid only within loops

terminates the current loop iteration, but not the entire loop

in a For or While, continue causes the rest of the body statement to be skipped--in a For statement, the update is done

in a Do-While, the exit condition is tested,

and if true, the next loop iteration is begun

(36)

36

Imagine using . . .

a character, a length, and a width to draw a box, for example,

using the values ‘&’, 4, and 6 would display

&&&&&&

&&&&&&

&&&&&&

&&&&&&

(37)

37

Write prototype for void function

called DrawBox ( ) with 3 parameters.

The first is type char, the other 2 are type int.

void DrawBox( char, int , int );

NOTE: Some C++ books include identifiers in

prototypes. Any valid C++ identifiers, as long as each is different, can be used.

void DrawBox( char letter, int num1, int num2);

(38)

38

void DrawBox(char what, int down, int across)

// 3 function parameters

{

int row, col; // 2 local variables

for ( row = 0; row < down; row++ ) {

for (col = 0; col < across; col++ ) {

cout << what;

}

cout << endl;

}

return;

}

(39)

39

#include <iostream>

void DrawBox (char, int, int);

// prototype

int main ( )

{

char letter = ‘&’;

DrawBox(letter, 4, 2*3);

// arguments

DrawBox(‘V’, 9, 3);

// appear in call

return 0;

}

THE DRIVER PROGRAM

(40)

40

Write a function using prototype

void DisplayTable ( int ) ; // prototype

The function displays a specified multiplication table.

For example, the call DisplayTable(6) displays this table:

1 x 6 = 6 2 x 6 = 12 3 x 6 = 18

. . .

12 x 6 = 72

References

Related documents

The Effect of Yoga on The Behaviour of Boys with Attention Deficit Hyperactivity Disorders (ADHD).. The University

Parameters affecting on driver seat design are very complex in nature and require detailed study of human anthropometry, seat dimensions, its mechanisms, materials of

Less used within the field of social entrepreneurship, the MLP may be a useful analytical framework for improving understanding of the dynamics of social innovation processes,

Furthermore, researchers suggest that the expression of PTSD symptoms in women who have experienced childhood victimization may differ from those who have experienced other types

In the current thesis four empirical studies are presented in which we tested the general hypothesis of disturbed anticipatory state-to-state switch-related neural

Injection Quantity Control Cylinder Injection Quantity Correction Pre-Injection Main Injection Crankshaft Angle Inject on Rate Inject on Pressure 1 3 4

Scarabaeus megaparvulus has a well-developed transverse frontal carina; a more densely punctate pronotum without sagittal line and with a basal medial lobe; exposed scutellum;

The second option is based on purely exploring information inherent in the acquired PET emission datasets about tissue attenuation without the need for any