control structures selection or decision or branching

Post on 17-Jan-2016

231 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Control Structures

Selection

or

Decision

or

Branching

Decision

Which the statements are executed

Two types:simple alternative ifcompound alternative if...else

Single Alternative Decision

An action is taken if the condition is true,

otherwise the control goes to the next

statement.

Syntaxif (expression)

statementIf expression is true, statement is executed; otherwise statement is skipped.

no ;

* *

Single Alternative Decision

Example:if (stomach if (stomach == empty) empty)

eat a Snickers bar; eat a Snickers bar;

note: 2 == signs

An expression is any combination of variables, constants, or function calls thatevaluate to a value.

ex. 5 x + y a = 3 + jN n++ f(12.3, a, “Yvonne”)

Syntaxif (expression)

statement

Single Alternative Decision

* *

Syntaxif (expression)

statementIf expression is true, statement is executed; otherwise statement is skipped.

no ;

* *

Single Alternative Decision

Example:if (stomach if (stomach ==== empty) empty)

eat a Snickers bar; eat a Snickers bar; eat a marshmallow sunday; eat a marshmallow sunday;

note: 2 == signs

Single Alternative Decision

Example:if (grade >= 90)if (grade >= 90) cout << “Congratulations!\n”; cout << “Congratulations!\n”;cout << “Your grade is “ << grade << “.\n";

The Compound Statement

Syntaxif (expression){{ statement; statement; if (expression) { statement; statement; } }}

Example:if (u > v){{

a = 1;b = 2;

if ( u > z){

x =11;y = 12;

}}}

* * ** *

The compound statement is itself a statement.

ifif Examples

Valid:Valid:

if (y != 0.0) z = x/y;

if (a < b && b < c) {

d = a + b + c; cout << "All OK\n";

}

* *

Not ValidNot Valid:

if b == a area = a * a;

if (a < b) && (b < c)if (a < b) ;

Valid But... Valid But... if (a < b) ;

ifif Problems

Using Using == in place of in place of ====

What is the difference between these two?

if (toss == 7)if (toss == 7)

cout << “You win the bet.”;cout << “You win the bet.”;

if (toss = 7)if (toss = 7)cout << “You win the bet.”;cout << “You win the bet.”;

Compounding 2 ifif Statementsif (j < k){ min = j;

cout << “the smaller number is “ << min;}if (j < k)

cout << "j is smaller than k\n";

More EfficientMore Efficient::if (j < k){ min = j;

cout << “the smaller number is “ << min;cout << "j is smaller than k\n"; } * *

Double Alternative Decision

An action (or set of actions) is taken if the condition is true, another action (or set of actions) is taken if the condition is false, then the control goes to the next statement.

if ... elseif ... else is the typical double alternative.

* *

The if-elseif-else Statement Syntax

if (expression)statement1

elsestatement2

If expression is nonzero then statement1 is executed and statement2 is skipped. If expression is zero statement1 is skipped and statement2 is executed.

if ... elseif ... else Examples

if (stomach == empty)

{ eat a pizza;

eat a Snickers bar;}

else eat a salad;

if ( j < k ){ min = j;

k = k * 3;}else{

min = k;j = j * 3;

} * *

Interactive Program Finding the minimum of three values

Finding the Minimum of Three Values

* * *

int x, y, z, min;cout << “Input three integers: “;cin >> x >> y >> z;if (x < y)

min = x;else

min = y;

if (z < min)min = z;

cout << “The minimum value is “ << min << ‘\n’;

Output:

Input three integers:

Interactive Program Finding the minimum of three values

* *

9 5 -12

The minimum value is -12_

The if-elseif-else Statement Syntax

if (expression)

statement1else

statement2

if (a > b)if (a > b)max = a;max = a;

elseelsemax = b;max = b;

expression1 ? expression2 : expression3

max = (a > b) ? a : b;

* * *

Nested ifif Statements

A nested if statement is an if statement that is included within another if statement.

Syntax

if (expression1)

{ if (expression2)

statement

}

Nested ifif Example

if (number == secretnumber) cout << “You guessed it!”;if (number != secretnumber){ cout << “Sorry, that’s not the number.\n”;

if (number > secretnumber) cout << “You guessed too high.\n”;

else cout << “You guessed too low.\n”;

} * *

2 statement1 3 else if (expression2) 4 statement2 5 . . .

6 else if (expressionN) 7 statementN 8 else 9 last statement10 next statement *

Chained if...elseif...else Example

Syntax 1 if (expression1)

Chained if...elseif...else Example

if (total >=90)grade = ‘A’;

else if (total >= 80)grade = ‘B’;

else if (total >= 70)grade = ‘C’;

else if (total >= 60)grade = ‘D’;

elsegrade = ‘E’;

next statement* *

The Dangling elseelseif (avg >= 60.0)

if (avg < 70.0)cout << “Passing, but marginal”; elsecout << “Failing”;

* *

if (avg >= 60.0){

if (avg < 70.0)cout << “Passing, but marginal”;

}else

cout << “Failing”;

The Dangling elseelse

if (avg >= 60.0){

if (avg < 70.0)cout << “Passing, but marginal”;

}else

cout << “Failing”;

AND vs. OR

if( (rel == 'S') && (rel == 'M') && (rel == 'F') )cout << "\nImmediate family.\n";

if( (rel != 'S') && (rel != 'M') && (rel != 'F') ){

cout << "\nNot immediate family,\n";cout << " but a close relation.\n";

}

Random Numbers#include<stdlib.h>#include<stdlib.h> // defines rand() & srand()// defines rand() & srand()

#include<time.h>#include<time.h> // defines time()// defines time()

in main():

srand(time(NULL));srand(time(NULL));

num1 = 1 + rand() % 3;num1 = 1 + rand() % 3;

num1 = 1 + rand() % 6;num1 = 1 + rand() % 6;

num1 = 6 + rand() % 5;num1 = 6 + rand() % 5;

1, 2, 31, 2, 3, 4, 5, 66, 7, 8, 9, 10

how many numbers

* * * starting number

The switchswitch Statement

Similar to if statements

Can list any number of branches

Used in place of nested if statements

Avoids confusion of deeply nested ifs

The switchswitch StatementSyntax switch (expression)

{case value1:

statement1;break;

case value2:statement2;break;

case valuen:

statementn;break;

default:statement;

}

no no ;;useuse : :

* *

The switchswitch StatementSyntax switchswitch (expression)

{case value1:

statement1;breakbreak;

case value2:statement2;breakbreak;

case valuen:

statementn;breakbreak;

defaultdefault:statement;

}

no no ;;useuse : :

The switchswitch Statementswitch (let_grd){

case ‘A’:cout << “Grade is between 90 & 100”;break;

case ‘B’:cout << “Grade is between 80 & 89”;break;

case ‘C’:cout << “Grade is between 70 & 79”;break;

cont.

The switchswitch Statementcase ‘D’:

cout << “Grade is between 60 & 69”;break;

case ‘E’:cout << “Grade is between 0 & 59”;break;

default:cout << “You entered an invalid grade.”;

}next statementnext statement

The switchswitch Statementswitch (let_grd){

case ‘A’:cout << “Grade is between 90 & 100”;break;

case ‘B’:cout << “Grade is between 80 & 89”;break;

case ‘C’:cout << “Grade is between 70 & 79”;break;

case ‘D’:cout << “Grade is between 60 & 69”;break;

case ‘E’:cout << “Grade is between 0 & 59”;break;

default:cout << “You entered an invalid grade.”;

}

The breakbreak Statementswitch (let_grd){

case ‘A’:cout << “Grade is between 90 & 100”;break;

case ‘B’:cout << “Grade is between 80 & 89”;break;

case ‘C’:cout << “Grade is between 70 & 79”;break;

case ‘D’:cout << “Grade is between 60 & 69”;break;

case ‘E’:cout << “Grade is between 0 & 59”;break;

default:cout << “You entered an invalid grade.”;

}

The breakbreak Statement

switch (let_grd){

case ‘A’:case ‘B’: cout << “Good Work”;

break;case ‘C’: cout << “Average Work”;

break;case ‘D’:case ‘E’: cout << “Poor Work”;

}

The breakbreak Statement

switch (let_grd){

case ‘A’:case ‘a’:case ‘B’:case ‘b’: cout << “Good Work”;

break;case ‘C’:case ‘c’: cout << “Average Work”;

break;etc.

The switchswitch Statement

* * * * Menu * * * *

1. NY Yankees

2. Orioles

3. Dodgers

Choose either 1, 2, or 3:

The switchswitch Statement

switch (choice){ case 1:

cout << “World Champs”; case 2:

cout << “Good Guys”; case 3:

cout << “Da Bums”;}

What will be

the output?

The switchswitch Statement

What will be the output when the user enters

1 World ChampsGood GuysDa Bums

2 Good GuysDa Bums

3 Da Bums

* * * ** * * *

4 skips the switch

The switchswitch Statement

*

switch (choice){ case 1:

cout << “World Champs”; case 2:

cout << “Good Guys”; case 3:

cout << “Da Bums”;}

switch (choice){ case 1:

cout << “World Champs”; break;

case 2: cout << “Good Guys”; break;

case 3: cout << “Da Bums”; break;

default: cout << “Enter a 1, 2, or 3”;

}

Common Errors

Using = in place of ==Using = in place of ==

Improper braces in nested ifsImproper braces in nested ifs

Too deeply nested ifsToo deeply nested ifs

Missing Missing breakbreak statements in switch the statements in switch the statementstatement

Copyright © 1999 by Freedom TLC, Inc.

DebuggingDebugging

Syntax errors vs. Logic error

Prevention - plan first!Valuation tablesDisplay values

C++ Debugger

Copyright © 1999 by Freedom TLC, Inc.

““I discovered I always have I discovered I always have

choices, and sometimes it’s choices, and sometimes it’s

only a choice of attitude”only a choice of attitude”

Judith M. KnowltonJudith M. Knowlton

Copyright © 1999 by Freedom TLC, Inc.

top related