210 likes | 372 Views
Simple Control Structures. boolean s, the if statement, and the while loop. What are control structures?. You can’t do very much if your program consists of just a list of commands to be done in order The program cannot choose whether or not to perform a command
E N D
Simple Control Structures booleans, the if statement, and the while loop
What are control structures? • You can’t do very much if your program consists 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 variables
For 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 (tryand assert) which we won’t talk about today
boolean • 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 logic
Declaring booleanvariables • booleanvariables are declared like any other kind of variable: • boolean hungry; • boolean passingGrade; • boolean taskCompleted = false; • booleanvalues can be assigned to booleanvariables: • 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 numbers
The 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(); • Theif statement controls one other statement • Often this isn’t enough; we want to control a group of statements
Compound 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 semicolon
The if statement again • The ifstatement 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 x
condition? true statement false Flowchart for the ifstatement
The if-else statement • Theif-elsestatement chooses which of two statements to execute • Theif-elsestatement 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 controlled statement
Example if-else statements • if (x >= 0) absX = x;else absX = -x; • if (itemCost <= bankBalance) { writeCheck(itemCost); bankBalance = bankBalance - itemCost;}else { callHome(); askForMoreMoney(2 * itemCost);}
condition? true false statement-1 statement-2 Flowchart for the if-else statement
Aside: the “mod” operator • The modulo, or “mod,” operator returns the remainder of an integer division • The symbol for this operation is% • Examples: • 57 % 10 gives7 • 20 % 6 gives 2 • Useful rule:xis divisible by y if x % y == 0 • If the left operand is negative, the result is negative (or zero) • Examples: -20 % 3 = -2, 20 % -3 = 2, -20 % -3 = -2
Nesting 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 • Assumepandqare booleans • There are four basic operations on booleans: • Negation (“not”): !p is true ifpis false (and false otherwise) • Conjunction (“and”): p && q is true if bothp 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 true
Simpler 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 whileloop • 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 all
condition? true statement false Flowchart for the while loop
Countdown 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!