**Unformatted text preview:**

Simple Control StructuresWhat are control structures?For C and C++ programmers onlybooleanDeclaring boolean variablesNumeric comparisonsThe if statementCompound statementsThe if statement againFlowchart for the if statementThe if-else statementExample if-else statementsFlowchart for the if-else statementAside: the “mod” operatorNesting if (or if-then) statementsOperations on booleansSimpler testsThe while loopFlowchart for the while loopCountdown exampleThe EndSimple Control Structuresbooleans, the if statement, and the while loopWhat are control structures?•Our programs so far consist of just a list of commands to be done in order–The program cannot choose whether or not to perform a command–The program cannot perform the same command more than once–Such programs are extremely limited!•Control structures allow a program to base its behavior on the values of variablesFor C and C++ programmers only•Statement types are almost identical to those in C and C++•Main difference: true/false conditions must be boolean, not numeric!•Some unusual uses of the comma in for statements are not permitted in Java•There are two new statement types (try and assert) which we won’t talk about todayboolean•boolean is one of the eight primitive types –booleans are used to make yes/no decisions–All control structures use booleans•There are exactly two boolean values, true (“yes”) and false (“no”)–boolean, true, and false are all lowercase•booleans are named after George Boole, the founder of Boolean logicDeclaring boolean variables•boolean variables are declared like any other kind of variable: boolean hungry; boolean passingGrade; boolean taskCompleted = false;•boolean values can be assigned to boolean variables: taskCompleted = true;Numeric comparisons•The following numeric comparisons each give a boolean result: x < y // is x less than y? x <= y // is x less than or equal to y? x == y // is x equal to y? (do not use =) x != y // is x unequal to y? x >= y // is x greater than or equal to y? x > y // is x greater than y?•Reminder: Don’t use == or != for floating-point numbersThe if statement•The if statement has the form: if (boolean-expression) statement•Examples: if (passingGrade) System.out.println("Whew!"); if (x > largest) largest = x; if (citBook.price < 40.00) citBook.purchase();•The if statement controls one other statement–Often this isn’t enough; we want to control a group of statementsCompound statements•We can use braces to group together several statements into one “compound” statement: { statement; statement; ...; statement; }•Braces can group any number of statements: { } // OK--this is an “empty” statement { x = 0; } // OK--braces don’t hurt { temp = x; x = y; y = temp; } //typical use•The compound statement is the only kind of statement that does not end with a semicolonThe if statement again•The if statement controls one other statement, but it can be a compound statement•Example: if (cost < amountInPocket) { System.out.println("Spending $" + cost); amountInPocket = amountInPocket - cost;}•It’s good style to use braces even if the if statement controls only a single statement: if (cost > amountInPocket) { System.out.println("You can't afford it!");}•I personally make an exception to this style rule when the controlled statement fits easily on the same line with the if: if (x < 0) x = -x; // use absolute value of xFlowchart for the if statementcondition?statementtruefalseThe if-else statement•The if-else statement chooses which of two statements to execute•The if-else statement has the form: if (condition) statement-to-execute-if-true ;else statement-to-execute-if-false ;•Either statement (or both) may be a compound statement•Notice the semicolon after each statementExample if-else statements•if (x >= 0) absX = x;else absX = -x;•if (itemCost <= bankBalance) { writeCheck(itemCost); bankBalance = bankBalance - itemCost;}else { callHome(); askForMoreMoney(2 * itemCost);}Flowchart for the if-else statementcondition?truestatement-1 statement-2falseAside: the “mod” operator•The modulo, or “mod,” operator returns the remainder of an integer division•The symbol for this operation is %•Examples: 57 % 10 gives 7 20 % 6 gives 2•Useful rule: x is divisible by y if x % y == 0Nesting if (or if-then) statements•A year is a leap year if it is divisible by 4 but not by 100, unless it is also divisible by 400 if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) leapYear = true; else leapYear = false; } else leapYear = true;}else leapYear = false;Operations on booleans•Assume p and q are booleans•There are four basic operations on booleans:–Negation (“not”): !p is true if p is false (and false otherwise)–Conjunction (“and”): p && q is true if both p and q are true–Disjunction (“or”): p || q is true if either of p and q is true–Exclusive or (“xor”): p ^ q is true if just one of p and q is trueSimpler tests•A simpler leap-year test: if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) leapYear = true;else leapYear = false;•An even simpler leap-year test: leapYear = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);The while loop•This is the form of the while loop:while (condition) statement ;•If the condition is true, the statement is executed, then the whole thing is done again•The statement is executed repeatedly until the condition becomes false•If the condition starts out false, the statement is never executed at allFlowchart for the while loopcondition?statementtruefalseCountdown example seconds = 5;while (seconds > 0) { System.out.print(seconds + "..."); seconds = seconds - 1;}System.out.println("Blast off!"); Result: 5...4...3...2...1...Blast off!The

View Full Document