Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Conditionals In many cases we want our program to make a decision about whether a piece of code should be executed or not, based on the truth of a condition.

Similar presentations


Presentation on theme: "1 Conditionals In many cases we want our program to make a decision about whether a piece of code should be executed or not, based on the truth of a condition."— Presentation transcript:

1 1 Conditionals In many cases we want our program to make a decision about whether a piece of code should be executed or not, based on the truth of a condition. For this we use conditionals if statements switch statements

2 2 Conditionals Example: IF score is higher than 50 THEN grade is PASS ELSE grade is FAIL In C++ this corresponds to one statement with 3 parts: if (score > 50) { grade = PASS; } else { grade = FAIL; }

3 3 Conditionals if (score > 50) { grade = PASS; } else { grade = FAIL; } Part 1 : the condition. An expression that evaluates to TRUE or FALSE

4 4 Conditionals if (score > 50) { grade = PASS; } else { grade = FAIL; } Part 2 : the TRUE part. A block of statements that are executed if the condition evaluates to TRUE

5 5 Conditionals if (score > 50) { grade = PASS; } else { grade = FAIL; } Part 3 : the FALSE part. A block of statements that are executed if the condition evaluates to FALSE

6 6 Conditionals Sometimes, we do not need a FALSE part: In that case, if the condition is FALSE, execution will continue at the statement following the if-statement. if (gas_tank_state == EMPTY) { fill_up_tank(); }

7 7 Conditionals If the TRUE or the FALSE part consists of only one statement, the curly braces may be omitted. The following statements are equivalent: if (score > 50) { grade = PASS; } else { grade = FAIL; } if (score > 50) grade = PASS; else grade = FAIL;

8 8 Conditionals We often use cascading if-statements: if (score > 90) lettergrade = 'A'; else if (score > 75) lettergrade = 'B'; else if (score > 60) lettergrade = 'C'; else if (score > 50) lettergrade = 'D'; else lettergrade = 'F';

9 9 Conditionals Cascading if-statements may sometimes be replaced with a switch statement: if (lettergrade == 'A') cout << "Very good!"; else if (lettergrade == 'B') cout << "Good!"; else if (lettergrade == 'C') cout << "Adequate"; else cout << "Work harder!"; switch (lettergrade) { case 'A': cout << "Very good!"; break; case 'B': cout << "Good!"; break; case 'C': cout << "Adequate"; break; default: cout << "Work harder!"; break; }

10 10 Conditionals switch (expression) { case value1: statements; break; case value2 : statements; break;... default : statements; break; } In English: Check the value of expression. Is it equal to value1 ? If yes, execute the statements and break out of the switch. If no, Is it equal to value2 ? etc. If it's not equal to any of the above, execute the default statements and then break out of the switch

11 11 Conditionals switch (expression) { case value1: statements; break; case value2 : statements; break;... default : statements; break; } -- expression should evaluate to either an int or a char -- NEVER omit break; (see next slide for an example of what may happen) -- ALWAYS have a default to cover the case when none of the above values match

12 12 Conditionals switch (lettergrade) { case 'A': case 'B': case 'C': case 'D': cout << "You passed!"; break; case 'F' : cout << "You failed!"; break; default: cout << "You received a " << lettergrade; } This is equivalent to: if (lettergrade == 'A' || lettergrade == 'B' || lettergrade == 'C' || lettergrade == 'D') cout << "You passed!"; else if (lettergrade == 'F') cout << "You failed!"; else cout << "You received a " << lettergrade;

13 13 Conditionals int x = -1; int y; switch ( x ) { case -1: y = 10; case 1 : y = 20; default : y = 30; } cout << y; This piece of code prints 30 on the screen x is -1, so the first case applies. y is assigned the value 10. Since there is no break statement, execution continues to the next case and eventually y becomes 30 which is not what we intended. This event is called fall-through.

14 14 Loops Loops repeat (iterate) a block of statements for a number of times. A terminating condition tells a loop when to stop iterating (e.g. terminate after 10 iterations or terminate when the user types NO) Careful! If there is no terminating condition, then your program will never finish

15 15 Loops Pre-Test Loop check condition if false, exit the loop if true, execute statements, iterate: check condition if false, exit the loop if true, execute statements, iterate: etc. The block of statements may not be executed at all (if condition is immediately false) The condition must be updated is( condition )true? { block of statements; } yes no star t finish initialize condition

16 16 Loops Pre-Test Loop count-driven : uses a "counter" to determine how many times it iterates Example: every time the loop iterates, a counter variable is incremented by one. When the counter reaches a specific value, the condition becomes false and the loop terminates. event-driven : uses an "event" to determine how many times it iterates Example: at each iteration the user is asked whether to continue. As long as the user types "yes" the loop iterates. When the user types "no" the condition becomes false and the loop terminates.

17 17 for loops Pre-test, mainly count-driven Syntax: Example: for (init; condition; update) { statements; } /* Frog lifetime*/ int days; for (days =155; days > 0; days--) { work_all_day(); sleep_all_night(); } die_quietly();

18 18 while loops Pre-test, mainly event-driven Syntax: Example (event): while (condition) { statements; } /* Frog Feeding */ while ( am_hungry() == TRUE && see_fly() == TRUE ) { flick_tongue(); clamp_mouth(); swallow_fly(); }

19 19 while loops Pre-test, mainly event-driven Syntax: Example (counter): while (condition) { statements; } /* Frog lifetime*/ int days; days = 155; /* initialize */ while ( days > 0 ) { /* condition */ work_all_day(); sleep_all_night(); days--; /* update */ } die_quietly();

20 20 Loops Post-Test Loop execute statements check condition if false, exit the loop if true, iterate: execute statements check condition if false, exit the loop if true, iterate: etc. The block of statements is always executed at least once The condition must be updated is( condition )true? { block of statements; } yes no finish star t initialize condition

21 21 Loops Post-test loops The block of statements is ALWAYS executed at least once! Often used for data validation (e.g. if the user types a wrong selection, keep asking for a correct one) A post-test loop may be count- or event-driven.

22 22 do-while loop Post-test, mainly event driven Syntax: Example: do { statements; } while (condition) /* Frog mating*/ do { have_mate = look_for_lady_frog(); } while ( have_mate == FALSE )

23 23 Loops In some cases, we may need to break put of a loop prematurely. To do that, we use a break statement. Example: int days; float food,fat;... for( days = 155; days > 0; days--) { work_all_day(); if ( food+fat < 0.01) break; sleep_all_night(); } die_quietly();

24 24 Loops In some cases, we may want to only execute part of the body during an iteration. To do that, we use a continue statement. Example: /* Frog feeding v2.0 */ while ( am_hungry() == TRUE && see_fly() == TRUE ) { flick_tongue(); if (!caught_fly()) continue; clamp_mouth(); swallow_fly(); }

25 25 break vs. continue vs. return continue it is used in loops it means : skip the remaining statements in the loop body and iterate again break it is used in loops and switch statements it means : skip the remaining statements in this block, break out of the block. When used in loops, it causes the loop to terminate return it may be used anywhere in a function. it means : terminate the function.


Download ppt "1 Conditionals In many cases we want our program to make a decision about whether a piece of code should be executed or not, based on the truth of a condition."

Similar presentations


Ads by Google