41
Chapter 7 Conditional Statements

Chapter 7 Conditional Statements

  • Upload
    fawzia

  • View
    33

  • Download
    2

Embed Size (px)

DESCRIPTION

Chapter 7 Conditional Statements. 7.1 Conditional Expressions. Condition – any expression that evaluates to true/false value Relational operators are BINARY X < 4 Y == a+b q+1 != s*2. 7.1.1 Relational Operators. - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter 7 Conditional Statements

Chapter 7

Conditional Statements

Page 2: Chapter 7 Conditional Statements

7.1 Conditional ExpressionsCondition – any expression that evaluates to

true/false value

<expr1> <relational_operator> <expr2>

• Relational operators are BINARY

X < 4 Y == a+b q+1 != s*2

Page 3: Chapter 7 Conditional Statements

7.1.1 Relational Operators

Relational Operator Description

== Equality (be sure to use two equal signs) *

!= Inequality

< Less than

> Greater than

<= Less than or equal to

>= Greater than or equal to

* Single equal sign (=) is an assignment / does NOT compare values

Page 4: Chapter 7 Conditional Statements

7.1.1 Relational Operators

const int CONST_iEXP = 9;int iexp1 = 0, iexp2 = 5;float fexp = 9.0;char cexp = 'a';

bool result = true;

result = iexp1 == 0; // true

result = iexp2 >= iexp1; // true

result = iexp1 > CONST_iEXP; // false

result = fexp == CONST_iEXP; // true

result = cexp <= iexp1; // false

result = iexp1 != iexp2; // true

result = cexp == 'a'; // true

Page 5: Chapter 7 Conditional Statements

7.1.1 Relational Operators

// ----- ILLEGAL OR MALFORMED CONDITIONS ----

result = 3 < X < Y;

// Malformed condition. What does it mean?// 3 < X and X < Y ???// 3 < X or X < Y ???

cexp == "a";

// Illegal. Attempting to compare a character// to a string literal.

Page 6: Chapter 7 Conditional Statements

7.1.2 Logical Operators

Logical operators - combine bool expressions

Operators:

or: x || y (binary operator)• false only when both operands are false

and: x && y (binary operator)• true only when both operands are true

not: !x (unary operator)• false when operand is true; otherwise true.

Page 7: Chapter 7 Conditional Statements

7.1.2 Logical OperatorsTruth table - displays Boolean results produced when the operator is applied to specified operands

Logical AND and OR truth table

Condition c1

Condition c2

c1 && c2 c1 || c2

true true true true

true false false true

false true false true

false false false false

Page 8: Chapter 7 Conditional Statements

7.1.2 Logical OperatorsLogical NOT truth table

Order of precedence ! (not)&& (and)|| (or)

Condition c !c

true false

false true

Page 9: Chapter 7 Conditional Statements

7.1.2 Logical Operators

Misc Information:• Parentheses change the precedence

• Parentheses can help clarify complicated conditions

• Short-circuit evaluation - once the outcome of condition can be determined, evaluation ends

Page 10: Chapter 7 Conditional Statements

7.1.2 Logical Operators

int iexp1 = 0, iexp2 = 5;float fexp = 9.0;char cexp = 'a';const int CONST_iEXP = 9;

bool result;result = iexp1 < iexp2 && fexp == 9.0;result = iexp1 > CONST_iEXP || fexp == 9.0; // trueresult = !(fexp == 9.0 || iexp1 > CONST_iEXP);// false

// Short-Circuit Evaluationresult = fexp == 9.0 || iexp1 > CONST_iEXP; // true

Various logical operators

Page 11: Chapter 7 Conditional Statements

7.2 The if Statement

Selects actions to be taken only when a specific condition is satisfied

Syntax:if ( <condition> )

<action>

Example:if ( N % 2 == 1)

cout << N << “ is ODD” << endl;

Page 12: Chapter 7 Conditional Statements

7.2 if (<condition>) <action><condition> - a valid expression that can be

interpreted as a TRUE/FALSE value• Relational expression (e.g., x <= 2)

• Logical expression ( x>5 && y != 2)

• Integer-valued expression: 0=false; otherwise true.

<action> - a valid C++ statement or block• Single statement terminated with semicolon

• Compound statement (block) enclosed in set braces { }if (Age > 21) if (Income > 24000)

Sell_Beer = true; {

SSTax = 0.05 * Income;

FedTax = 0.075 * Income;

}

Page 13: Chapter 7 Conditional Statements

7.2 The if Statementif (condition) statement;

// Example 1if ( test >= 80 && test < 90 ) cout << "You have earned a B" << endl;

// Example 2 – relational expression/compound statement.if ( test >= 90 ){ cout << "You have earned an A" << endl; cout << "Excellent work!" << endl;}

// Example 3 – logical expression/compound statement.if ( test >= 70 && test < 80 ){ cout << "You have earned a C" << endl;}

Page 14: Chapter 7 Conditional Statements

7.2.1 The else Statement

• Optional part of an if statement• Can’t stand alone• Must be associated with an open if

if ( <condition> )

<action 1> // Consequence (true-part)

else

<action 2> // Alternative (false-part)

• Means: “otherwise”, “catch-all”, “none of the above”

Page 15: Chapter 7 Conditional Statements

7.2.1 The else Statement

else <action> // consequence.• no condition or expression associated with it

• relies on the value of the condition associated with the previous if (or chain of ifs)

• executes action(s) only if the previous condition (or chain of ifs) is false

• if more than one statement, the action must be enclosed in curly braces

Page 16: Chapter 7 Conditional Statements

7.2.1 The if-else Statement

if ( grade >= 60 ) pass = true;else{ pass = false; cout << "Hope you do better next time" << endl;}

else Example

Page 17: Chapter 7 Conditional Statements

7.2.1 Multiple alternative if

The alternative of an if is another decision:

if ( avg >= 90 ) cout << “Grade = A" << endl;else if ( avg >= 80 ) cout << "B" << endl;

-------- NOTE indentation.

if ( avg >= 90 ) cout << “Grade = A" << endl;else if ( avg >= 80 ) cout << "B" << endl;

Page 18: Chapter 7 Conditional Statements

7.2.1 Selecting from multiple alternatives

Only ONE action is selected from a chain of decisions.

if ( Avg >= 90 ) Grade = ‘A’;

else if ( Avg >= 80 ) Grade = ‘B’;else if ( Avg >= 70) Grade = ‘C’;else if ( Avg >= 60) Grade = ‘D’;else // Optional Grade = ‘F’;

NOTE: The construct terminates when a choice is made.

QUESTIONS: # of decisions needed to assign A? C? F?

Page 19: Chapter 7 Conditional Statements

7.2.1 Sequence of if statementsInefficient: how many decisions for A, C, F?

if ( avg >= 90 ) cout << "A" << endl;

if ( avg >= 80 && avg < 90 ) cout << "B" << endl;

if ( avg >= 70 && avg < 80 ) cout << "C" << endl;

if ( avg >= 60 && avg < 70 ) cout << "D" << endl;

if ( avg < 60 ) cout << "F" << endl;

Page 20: Chapter 7 Conditional Statements

7.2.1 Multiple-alternative chain of if

Mutual exclusion: result can be only one of the choices

if ( avg >= 90 )

cout << "A" << endl;

else if ( avg >= 80 )

cout << "B" << endl;

else if ( avg >= 70 ) cout << "C" << endl;

else if ( avg >= 60 )

cout << "D" << endl;

else

cout << "F" << endl;

90

80

70

60

Page 21: Chapter 7 Conditional Statements

7.2.1 Multiple alternative if chainStart If Statement

1st Condition>= 90

Action 1Display “A”

2nd Condition>= 80

3rd Condition>= 70

Action 2Display “B”

Action 3Display “C”

Action ElseDisplay “F”

End If Statement

True

True

True

False

False

False

4th Condition>= 60

False

Action 4Display “D”

True

Notes:1.Each condition is tried

until one is satisfied (i.e., value is true)

2.The matching consequence is executed

3.The decision process terminates the

Page 22: Chapter 7 Conditional Statements

7.2.1 The Nested if constructNested the consequence is itself a decision.

if ( gpa >= 3.75 )

if ( credits > 25 )

if ( money < 30000 )

{ scholarship = 5000;

cout << "Way to go!" << endl;

}

else

scholarship = 2000;

else

scholarship = 1000;

else

{ scholarship = 0;

cout << "You're on your own." << endl;

}

Page 23: Chapter 7 Conditional Statements

7.3 Variable ScopeScope of a variable – determines:

• What code can access or change the variable

• How long the variable exists or lives

Page 24: Chapter 7 Conditional Statements

7.3 Variable ScopeBelow, var_a and var_b defined within the

scope of the block• Both accessible within the block where defined• Final line generates an error message - var_b

is not defined

{ int var_a = 5, var_b = 10; var_a++; cout << "var_a: " << var_a << endl;}cout << "var_b: " << var_b; // Error: undeclared

// identifier var_b

Page 25: Chapter 7 Conditional Statements

7.3 Variable Scope

Local scope – variables or constants declared within braces

Page 26: Chapter 7 Conditional Statements

7.3 Variable Scope

Constant PI and variable global_area - physically declared outside of function - placed at the global level

#include <iostream>using std::cout;using std::endl;#include <cmath> // Needed for powconst float PI = 3.141592F; // global scopefloat global_area = 0; // global scopeint main(){ float radius = 5; // local scope global_area = static_cast<float>( PI * pow( radius, 2 ) ); cout << global_area << " sq. in." << endl; return 0;}// Output78.5398 sq. in.

Page 27: Chapter 7 Conditional Statements

7.3 Variable Scope

Any code within the file can access PI or global_area

#include <iostream>using std::cout;using std::endl;#include <cmath> // Needed for powconst float PI = 3.141592F; // global scopefloat global_area = 0; // global scopeint main(){ float radius = 5; // local scope global_area = static_cast<float>(PI * pow(radius, 2)); cout << global_area << " sq. in." << endl; return 0;}// Output78.5398 sq. in.

Page 28: Chapter 7 Conditional Statements

7.3 Variable Scope

Global variables - automatically initialized to 0Avoid global variables (i.e., global_area)

#include <iostream>using std::cout;using std::endl;#include <cmath> // Needed for powconst float PI = 3.141592F; // global scopefloat global_area = 0; // global scopeint main(){ float radius = 5; // local scope global_area = static_cast<float>(PI * pow(radius, 2)); cout << global_area << " sq. in." << endl; return 0;}// Output78.5398 sq. in.

Page 29: Chapter 7 Conditional Statements

7.4 The switch Statement

switch statement - another form of conditional statement• Also called a selection statement

• Checks only for equality and only for one variable

Page 30: Chapter 7 Conditional Statements

7.4 The switch Statement

Works well for checking a variable for limited set of values• Only works with ordinal data types

• Ordinal data types - can be translated into an integer to provide a finite, known, number set

• Examples include int, bool, char, and long

Page 31: Chapter 7 Conditional Statements

7.4 The switch StatementGeneral form of the switch statement:

switch( <variable> ){ // Required

case <literal or const 1>: <action 1> break;case <literal or const 2>: <action 2> break;

...default: // Optional <default action>

}// Required

When first line is encountered, value of the variable determined

Execution jumps to the case which corresponds to the value of the variable being examined

Execution continues until either a break statement is encountered or to the end of switch

Page 32: Chapter 7 Conditional Statements

7.4 The switch Statement

break statement - stops execution of the control structure prematurely

• Stops multiple case statements from being executed

• Many believe poor programming to use outside the context of the switch statement

Page 33: Chapter 7 Conditional Statements

7.4 The switch Statement

default statement - executed if value of the variable doesn’t match any of previous cases• Type of catch all or “case else”

• Technically can use the default case in any position

• Should physically be the last one in the switch statement

Page 34: Chapter 7 Conditional Statements

7.4 The switch Statement

int menu_item = 0;...switch ( menu_item ){ case 1: // Using literal values cout << "You have chosen option 1." << endl; break; case 2: cout << "You have chosen option 2." << endl; break; case 3: cout << "You have chosen option 3." << endl; break; default: cout << "Invalid menu option." << endl;}

Page 35: Chapter 7 Conditional Statements

7.4 The switch Statement

const short GREEN = 0;const short YELLOW = 1;const short RED = 2;short light_color = GREEN; switch ( light_color ){ case GREEN: // Using constants cout << "Go!" << endl; break; case YELLOW: // Let fall through case RED: cout << "Stop!"; cout << "Proceed when light is green." << endl; break; default: cout << "Stop!"; cout << "Power is out!" << endl;}

Page 36: Chapter 7 Conditional Statements

7.4 The switch Statement

char letter_grade;cout << "Enter letter grade: ";cin >> letter_grade;switch ( letter_grade ){ case 'A': // Using character literal values cout << "Excellent!" << endl; break; case 'B': cout << "Above average." << endl; break; case 'C': cout << "Average." << endl; break; case 'D': cout << "Below average." << endl; break; case 'F': cout << "Failed!" << endl; break; default: cout << "Invalid letter grade." << endl;}

Page 37: Chapter 7 Conditional Statements

7.4 The switch Statement

One of the most common uses of switch statement is in menu driven programs

Student Grade Program - Main Menu -

1. Enter name 2. Enter test scores 3. Display test scores 9. Exit

Please enter your choice from the list above:

Page 38: Chapter 7 Conditional Statements

7.5 Conditional Operator

Conditional operator - considered a ternary operator, meaning it has three operands

Syntax:<condition> ? <true expression> : <false expression>

Page 39: Chapter 7 Conditional Statements

7.5 Conditional Operator

One of the expressions is returned based upon the evaluation of the condition

int a = 5, b = 0;

int larger = a > b ? a : b;

cout << larger << endl;// Output5

Page 40: Chapter 7 Conditional Statements

7.5 Conditional Operator

Equivalent if statement to code on previous page

int a = 5, b = 0;int larger;

if ( a > b ) larger = a;else larger = b;

Page 41: Chapter 7 Conditional Statements

7.5 Conditional Operator

More challenging conditional operator example

short hour = 9, minute = 10, second = 5;

cout << (hour < 10 ? "0" : "") << hour << ":" << (minute < 10 ? "0" : "") << minute << ":" << (second < 10 ? "0" : "") << second << endl;

// Output09:10:05

Empty quotes above tell cout to print nothing if the condition is false (i.e. hour is 10 or greater)