Simple Control Structures

Download Report

Transcript Simple Control Structures

Simple Control Structures
booleans, the if statement, and the
while loop
What 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 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 is one new statement type (try) 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 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
x
x
x
x
x
<y
<= y
== y
!= y
>= y
>y
// is x less than y?
// is x less than or equal to y?
// is x equal to y? (do not use =)
// is x unequal to y?
// is x greater than or equal to y?
// is x greater than y?
• 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();
• The if 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 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;
}
Flowchart for the if statement
condition?
false
true
statement
The 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 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);
}
Flowchart for the if-else statement
true
statement-1
condition?
false
statement-2
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 gives 7
– 20 % 6 gives 2
• x is divisible by y if x % y == 0
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
• 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 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 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 all
Flowchart for the while loop
condition?
false
true
statement
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!
The End