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 EndJan 14, 2019Simple Control Structuresbooleans, the if statement, and the while loop2What are control structures?You can’t do very much if your program consists of just a list of commands to be done in orderThe program cannot choose whether or not to perform a commandThe program cannot perform the same command more than onceSuch programs are extremely limited!Control structures allow a program to base its behavior on the values of variables3For C and C++ programmers onlyStatement 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 JavaThere are two new statement types (try and assert) which we won’t talk about today4booleanboolean is one of the eight primitive types booleans are used to make yes/no decisionsAll control structures use booleansThere are exactly two boolean values, true (“yes”) and false (“no”)boolean, true, and false are all lowercasebooleans are named after George Boole, the founder of Boolean logic5Declaring boolean variablesboolean 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;6Numeric comparisonsThe 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 numbers7The if statementThe if statement has the form: if (boolean-expression) statementExamples: if (passingGrade) System.out.println("Whew!"); if (x > largest) largest = x; if (citBook.price < 40.00) citBook.purchase();The if statement controls one other statementOften this isn’t enough; we want to control a group of statements8Compound statementsWe 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 useThe compound statement is the only kind of statement that does not end with a semicolon9The if statement againThe if statement controls one other statement, but it can be a compound statementExample: 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 x10Flowchart for the if statementcondition?statementtruefalse11The if-else statementThe if-else statement chooses which of two statements to executeThe 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 statementNotice the semicolon after each controlled statement12Example if-else statementsif (x >= 0) absX = x;else absX = -x;if (itemCost <= bankBalance) { writeCheck(itemCost); bankBalance = bankBalance - itemCost;}else { callHome(); askForMoreMoney(2 * itemCost);}13Flowchart for the if-else statementcondition?truestatement-1 statement-2false14Aside: the “mod” operatorThe modulo, or “mod,” operator returns the remainder of an integer divisionThe symbol for this operation is %Examples: 57 % 10 gives 7 20 % 6 gives 2Useful rule: x is divisible by y if x % y == 0If the left operand is negative, the result is negative (or zero)Examples: -20 % 3 = -2, 20 % -3 = 2, -20 % -3 = -215Nesting if (or if-then) statementsA 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;16Operations on booleansAssume p and q are booleansThere 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 trueDisjunction (“or”): p || q is true if either of p and q is trueExclusive or (“xor”): p ^ q is true if just one of p and q is true17Simpler testsA 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);18The while loopThis 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 againThe statement is executed repeatedly until the condition becomes falseIf the condition starts out false, the statement is never executed at all19Flowchart for the while loopcondition?statementtruefalse20Countdown 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!21The End“640K ought to be enough for anybody.” --Bill Gates,
View Full Document