CONTROL STRUCTURES (SELECTION) PROGRAM COMPONENTS SEQUENCE Groups Of Sequential Steps SELECTION Making Choices IF-THEN (one way) IF-THEN-ELSE (two way or multi way) SWITCH (multi way) ITERATION(Looping) Repeating Steps WHILE – DO (top tested) DO – WHILE (bottom tested) FOR (fixed iteration) BOOLEAN DATA TYPE Two Values – true (1) or false (0) Example: bool isOvertime = true; cout << “Is overtime “ << isOvertime << endl; isOvertime = false; cout << “Is overtime “ << isOvertime << endl; Internal program value Cannot be read in via keyboard entry Only displayed as 1 or 0 BOOLEAN DATA TYPE Boolean names should reflect true value For example: bool done = false; bool even = false; bool error = true; Can be initialized with integer: Using 0 intializes to false Anything Else initializes to true It is best to use values true or false RELATIONAL / EQUALITY OPERATORS Boolean expression is: A condition in which a relational operator tests the relationship between two values or expressions and returns a boolean result (true or false) Relational / Equality operators: Allow comparison of the size, magnitude or equality of data items that are the same or compatible types. For example: less than ( < )…. 3 < 5 evaluates to true bool isLessThan = 3 < 5; RELATIONAL / EQUALITY OPERATORS Operator Meaning True Example False Example < Less Than 3<5 4 < 2 or 6 < 6 <= Less Than OR Equal To 3 <= 4 or 3 <= 3 10 <= 5 > Greater Than 8>7 9 > 10 or 4 > 4 >= Greater Than OR Equal To 5 >= 4 or 5 >= 5 5>=6 == Equal To 20 == 20 10 == 11 != Not Equal To 10 != 20 20 != 20 Evaluation of either a relational or equality operator always results to either true or false. RELATIONAL / EQUALITY OPERATORS Relational Operator Priority (<, <=, >, >=) Are below the arithmetic operator Equality Operator Priority ( ==, !=) Are below the the relational operators LOGICAL OPERATORS Logical Operators ( !, &&, || ): Allow the combination of boolean values according to the rules of mathematical logic. Logical expressions evaluate to a boolean result (true or false) Not (!) Inverts the boolean value true becomes false or false become true LOGICAL OPERATORS AND (&&) Evaluates to true only if both values are true bool x; bool y; X && Y == True && True True True && False False False && True False False && False False LOGICAL OPERATORS OR ( || ) Evaluates to false only if both values are false bool x; bool y; X || Y == True || True True True || False True False || True True False || False False OPERATOR PRECEDENCE All operator precedence: BOOLEAN, RELATIONAL, EQUALITY AND LOGICAL OPERATIORS Example: bool flag1, flag2, flag3; int num1, num2; flag1 = (98 % 13 != 98 / 13) || (2 * 5 != 10); cout << "The truth value of variable flag1 is " << flag1 << endl; num1 = 12 + 3 * 7; num2 = 10 + num1 % 3; flag2 = (num1 > num2) && (num2 < 12); cout << "The truth value of variable flag2 is " << flag2 << endl; flag3 = flag1 || !flag2; cout << "The truth value of variable flag3 is " << flag3 << endl; SELECTION MAKING CHOICES One-Way (choose to do or not to do) if Two-Way (choose to do one or the other) if – else conditional operator Multiple Selection(choose to do one of many) nested if - else switch ONE-WAY SELECTION SIMPLE if ( RELATIONAL EXPRESSION(s) ) STATEMENT; COMPOUND if ( RELATIONAL EXPRESSION(s) ) { STATEMENT; STATEMENT; STATEMENT(s); } ONE WAY SELECTION RULES 1. The statement(s) is/are executed if and only if the relational expression(s) evaluate(s) to true. ONE WAY SELECTION EXAMPLES: if (current_balance > 1000) interest = current_balance * 0.015; if (day == 7 && hours_worked > 40) { ot_pay = (hours_worked – 40) * pay_rate * 2; total_pay = 40 * pay_rate + ot_pay; } ONE WAY SELECTION EXAMPLE: int main() { bool isEven; int num; cout << "Enter an integer "; cin >> num; cout << endl; if (num > 10) cout << num << " is greater than 10" << endl; isEven = (num % 2 == 0); if (isEven) cout << num << " is an EVEN number." << endl; if (!isEven) cout << num << " is an ODD number." << endl; system ("pause"); return 0; } TWO WAY SELECTION SIMPLE if ( RELATIONAL EXPRESSION(s) ) Statement; else Statement; TWO WAY SELECTION COMPOUND if ( RELATIONAL EXPRESSION(s) ) { Statement; Statement(s); } else { Statement; Statement(s); } TWO WAY SELECTION RULES 1. First statement(s) will be executed if and only if the evaluation of the relational expression(s) is/are true. 2. Second statement(s) will be excuted if and only if the evaluation of the relational expression(s) is/are false. TWO WAY SELECTION EXAMPLES char string float float employee; state; ot_pay, pay_rate, gross_pay; hours_worked, tax; Example 1: if (state == “CO”) tax = 0.065; else tax = 0.05; TWO WAY SELECTION EXAMPLES Example 2: if (employee == ‘E’ || employee == ‘S’) gross_pay = 40 * pay_rate; else { reg_pay = pay_rate * 40; ot_pay = (hours_worked – 10) * pay_rate * 1.5; gross_pay = reg_pay + ot_pay; } CONDITIONAL OPERATOR Can Accomplish Two Way Selection Using The Conditional Operator (?:) expression1 ? expression2 : expression3 Example state == “CO” ? tax = 0.065 : tax = 0.05; Cannot Include Compound Statements