Download presentation
Presentation is loading. Please wait.
Published byAngela Cook Modified over 8 years ago
1
Chapter 7 Conditional Statements
2
7.1 Conditional Expressions Conditions - compare the values of variables, constants and literals using one or more relational operators Binary operators - a variable, constant, or literal must appear on each side of the operator The comparison determines whether the expression is true or false
3
7.1.1 Relational Operators Relational OperatorDescription == 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 Double equal sign ( == ) tests for equality
4
7.1.1 Relational Operators const int CONST_INT_EXP = 9; int int_exp1 = 0, int_exp2 = 5; float float_exp = 9.0; char char_exp = 'a'; bool result; result = int_exp1 == 0; // true result = int_exp2 >= int_exp1; // true result = int_exp1 > CONST_INT_EXP; // false result = float_exp == CONST_INT_EXP; // true result = char_exp <= int_exp1; // false result = int_exp1 != int_exp2; // true result = char_exp == 'a'; // true
5
7.1.1 Relational Operators // ----- ILLEGAL OR MALFORMED CONDITIONS ---- result = int_exp1 < int_exp2 < float_exp; // Malformed condition. May or may not compile // depending on compiler used. Even if the // compiler will compile this condition, it // should NEVER be written in this manner. result = char_exp == "a"; // Illegal. Attempting to compare a character // to a string literal.
6
7.1.2 Logical Operators Logical operators - combine multiple relational operators into a larger composite condition Operators: || (OR) - binary operator False value only if the conditions on each side of the operator are false
7
7.1.2 Logical Operators Operators: (continued) && (AND) - binary operator Results in a true value only if the condition on both sides of the operator are true ! (NOT) - unary operator Reverses logic of the single condition
8
7.1.2 Logical Operators Truth table - displays Boolean results produced when the operator is applied to specified operands Logical AND and OR truth table Condition 1Condition 2 && Result || Result true false true falsetruefalsetrue false
9
7.1.2 Logical Operators Logical NOT truth table Order of precedence - && operator evaluated before the || operator The ! operator - highest level of precedence of all logical operators and is higher than the relational operators Condition ! Result truefalse true
10
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
11
7.1.2 Logical Operators int int_exp1 = 0, int_exp2 = 5; float float_exp = 9.0; char char_exp = 'a'; const int CONST_INT_EXP = 9; bool result; result = int_exp1 < int_exp2 && float_exp == 9.0; result = int_exp1 > CONST_INT_EXP || float_exp == 9.0; // true result = !(float_exp == 9.0 || int_exp1 > CONST_INT_EXP);// false // Short-Circuit Evaluation result = float_exp == 9.0 || int_exp1 > CONST_INT_EXP; // true Various logical operators
12
7.2 The if Statement if statement - uses conditions to determine a specific action Syntax: if ( )
13
7.2 The if Statement - any valid expression, either built from relational and logical operators or from evaluation of a single variable zero is false while any non-zero value is considered true - any valid C++ statement multiple statements must be enclosed in curly braces { }
14
7.2 The if Statement if statement - uses conditions to determine a specific action // Example 1 if ( test >= 80 && test < 90 ) cout << "You have earned a B" << endl; // Action block // Example 2 if ( test >= 90 ) { // Start of the action block cout << "You have earned an A" << endl; cout << "Excellent work!" << endl; } // End of the action block // Example 3 if ( test >= 70 && test < 80 ) {// Start of the action block cout << "You have earned a C" << endl; } // End of the action block
15
7.2.1 The else Statement else statement - optional part of if statement Can’t stand alone Must be associated with an if if ( ) else
16
7.2.1 The else Statement else no condition or expression associated with it relies on results of the condition associated with the if executes action(s) only if the condition is false action can contain one or more statements if more than one statement, the action must be enclosed in curly braces
17
7.2.1 The else Statement if ( grade >= 60 ) pass = true; else { pass = false; cout << "Hope you do better next time" << endl; } else Example
18
7.2.1 The Nested if Nested if - embedding another if in action block of the else if ( avg >= 90 ) cout << "A" << endl; else if ( avg >= 80 ) cout << "B" << endl;
19
7.2.1 The Nested if Nested if indentation can cause the code to become difficult to read if ( ) else if ( ) else if ( )... else // Optional
20
7.2.1 The Nested if Inefficient if statement 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;
21
7.2.1 The Nested if Using else if statements is much more efficient than using separate if statements else if statement 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;
22
7.2.1 The Nested if Flow of an if statement
23
7.2.1 The Nested if Nested control statement - has another control statement in its action block Map most nested if statement with nearest unmatched else 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; }
24
7.3 Variable Scope Scope of a variable – determines: What code can access or change the variable How long the variable exists or lives
25
7.3 Variable Scope Below, 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
26
7.3 Variable Scope Local scope – variables or constants declared within braces
27
7.3 Variable Scope Constant PI and variable global_area - physically declared outside of function - placed at the global level #include using std::cout; using std::endl; #include // Needed for pow const float PI = 3.141592F;// global scope float global_area = 0;// global scope int main() { float radius = 5;// local scope global_area = static_cast ( PI * pow( radius, 2 ) ); cout << global_area << " sq. in." << endl; return 0; } // Output 78.5398 sq. in.
28
7.3 Variable Scope Any code within the file can access PI or global_area #include using std::cout; using std::endl; #include // Needed for pow const float PI = 3.141592F;// global scope float global_area = 0;// global scope int main() { float radius = 5;// local scope global_area = static_cast (PI * pow(radius, 2)); cout << global_area << " sq. in." << endl; return 0; } // Output 78.5398 sq. in.
29
7.3 Variable Scope Global variables - automatically initialized to 0 Avoid global variables (i.e., global_area ) #include using std::cout; using std::endl; #include // Needed for pow const float PI = 3.141592F;// global scope float global_area = 0;// global scope int main() { float radius = 5;// local scope global_area = static_cast (PI * pow(radius, 2)); cout << global_area << " sq. in." << endl; return 0; } // Output 78.5398 sq. in.
30
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
31
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
32
7.4 The switch Statement General form of the switch statement: switch( ) { // Required case : break; case : break;... default: // Optional }// 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
33
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
34
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
35
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; }
36
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; }
37
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; }
38
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:
39
7.5 Conditional Operator Conditional operator - considered a ternary operator, meaning it has three operands Syntax: ? :
40
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; // Output 5
41
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;
42
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; // Output 09:10:05 Empty quotes above tell cout to print nothing if the condition is false (i.e. hour is 10 or greater)
43
7.7 C – The Differences Previous versions of C did not have a Boolean data type There isn’t a predefined true or false All relational operators return either a zero for false or a non-zero value, usually one, for true
44
7.7 C – The Differences C programmers often create their own Boolean data type as shown below #define BOOL int #define TRUE 1 #define FALSE 0 int main( void ) { BOOL done = FALSE; return 0; } The C99 version of the ANSI Standard includes a Boolean data type Not currently supported by Visual Studio
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.