chapter 7 conditional statements
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 PresentationTRANSCRIPT
![Page 1: Chapter 7 Conditional Statements](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/1.jpg)
Chapter 7
Conditional Statements
![Page 2: Chapter 7 Conditional Statements](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/25.jpg)
7.3 Variable Scope
Local scope – variables or constants declared within braces
![Page 26: Chapter 7 Conditional Statements](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062301/568153b1550346895dc1b45e/html5/thumbnails/41.jpg)
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)