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 are two new statement types (try and
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 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
is
is
is
is
is
x
x
x
x
x
x
less than y?
less than or equal to y?
equal to y? (do not use =)
unequal to y?
greater than or equal to y?
greater than y?
• Reminder: Don’t use == or != for floatingpoint 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;
}
• 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
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
• Useful rule: 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