1 / 41

Chapter 7 Conditional Statements

Chapter 7 Conditional Statements. 7.1 Conditional Expressions. Condition – 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. 7.1.1 Relational Operators.

fawzia
Download Presentation

Chapter 7 Conditional Statements

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 7Conditional Statements

  2. 7.1 Conditional Expressions • Condition – 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

  3. 7.1.1 Relational Operators * Single equal sign (=) is an assignment / does NOT compare values

  4. 7.1.1 Relational Operators constint CONST_iEXP = 9; int iexp1 = 0, iexp2 = 5; floatfexp = 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

  5. 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.

  6. 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.

  7. 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

  8. 7.1.2 Logical Operators • Logical NOT truth table • Order of precedence • ! (not) • && (and) • || (or)

  9. 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

  10. 7.1.2 Logical Operators Various logical operators int iexp1 = 0, iexp2 = 5; float fexp = 9.0; charcexp = 'a'; constintCONST_iEXP = 9; bool result; result = iexp1 < iexp2 && fexp == 9.0; result = iexp1 > CONST_iEXP || fexp == 9.0;// true result = !(fexp == 9.0 || iexp1 > CONST_iEXP);// false // Short-Circuit Evaluation result = fexp == 9.0 || iexp1 > CONST_iEXP; // true

  11. 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;

  12. 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; • }

  13. 7.2 The if Statement • if (condition) statement; // Example 1 if ( 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; }

  14. 7.2.1 The else Statement • Optional part of an if statement • Can’t stand alone • Must be associated with an openif • if( <condition> ) • <action 1> // Consequence (true-part) • else • <action 2> // Alternative (false-part) • Means: “otherwise”, “catch-all”, “none of the above”

  15. 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 previousif(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

  16. 7.2.1 The if-else Statement else Example if ( grade >= 60 ) pass = true; else { pass =false; cout << "Hope you do better next time" << endl; }

  17. 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;

  18. 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?

  19. 7.2.1 Sequence of if statements • Inefficient: 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;

  20. 7.2.1 Multiple-alternative chain of if • Mutual exclusion: result can be only one of the choices if ( avg >= 90 ) cout << "A" << endl; elseif ( avg >= 80 ) cout << "B" << endl; elseif( avg >= 70 ) cout << "C" << endl; elseif ( avg >= 60 ) cout << "D" << endl; else cout << "F" << endl; 90 80 70 60

  21. 7.2.1 Multiple alternative if chain • Notes: • Each condition is tried until one is satisfied (i.e., value is true) • The matching consequence is executed • The decision process terminates the

  22. 7.2.1 The Nested if construct • Nested 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; }

  23. 7.3 Variable Scope • Scope of a variable – determines: • What code can access or change the variable • How long the variable exists or lives

  24. 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 { intvar_a = 5, var_b = 10; var_a++; cout <<"var_a: "<< var_a << endl; } cout <<"var_b: "<< var_b;// Error: undeclared // identifiervar_b

  25. 7.3 Variable Scope • Local scope – variables or constants declared within braces

  26. 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 pow constfloat PI = 3.141592F;// global scope floatglobal_area = 0; // global scope intmain() {floatradius = 5;// local scope global_area =static_cast<float>( PI* pow( radius, 2 ) ); cout << global_area <<" sq. in."<< endl; return0; } // Output 78.5398 sq. in.

  27. 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 pow constfloat PI = 3.141592F;// global scope floatglobal_area = 0; // global scope intmain() {floatradius = 5; // local scope global_area =static_cast<float>(PI* pow(radius, 2)); cout << global_area <<" sq. in."<< endl; return0; } // Output 78.5398 sq. in.

  28. 7.3 Variable Scope • Global variables - automatically initialized to 0 Avoid global variables (i.e., global_area) #include<iostream> using std::cout; using std::endl; #include<cmath>// Needed for pow constfloat PI = 3.141592F;// global scope floatglobal_area = 0; // global scope intmain() {floatradius = 5; // local scope global_area =static_cast<float>(PI* pow(radius, 2)); cout << global_area <<" sq. in."<< endl; return0; } // Output 78.5398 sq. in.

  29. 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

  30. 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, andlong

  31. 7.4 The switch Statement • General 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

  32. 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

  33. 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

  34. 7.4 The switch Statement intmenu_item = 0; ... switch ( menu_item ) { case1: // Using literal values cout << "You have chosen option 1." << endl; break; case2: cout << "You have chosen option 2." << endl; break; case3: cout << "You have chosen option 3." << endl; break; default: cout << "Invalid menu option." << endl; }

  35. 7.4 The switch Statement constshortGREEN = 0; constshortYELLOW = 1; constshortRED = 2; shortlight_color = GREEN; switch ( light_color ) { caseGREEN: // Using constants cout <<"Go!"<< endl; break; caseYELLOW:// Let fall through caseRED: cout <<"Stop!"; cout <<"Proceed when light is green."<< endl; break; default: cout <<"Stop!"; cout <<"Power is out!"<< endl; }

  36. 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; }

  37. 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:

  38. 7.5 Conditional Operator • Conditional operator- considered a ternary operator, meaning it has three operands • Syntax: <condition> ? <true expression> : <false expression>

  39. 7.5 Conditional Operator • One of the expressions is returned based upon the evaluation of the condition int a = 5, b = 0; intlarger = a > b ? a : b; cout << larger << endl; // Output 5

  40. 7.5 Conditional Operator • Equivalent if statement to code on previous page int a = 5, b = 0; intlarger; if ( a > b ) larger = a; else larger = b;

  41. 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)

More Related