Upload
daniel-patterson
View
221
Download
1
Tags:
Embed Size (px)
Citation preview
Control Structures
Program Flow• Java will execute the
statements in your code in a specific sequence, or "flow".
• The "flow" of the program and can be described through a "flow diagram":
a more sophisticated program
a simple program
statement
statement
statement
statement
statement
statement
statement statement
statement
statement
What are Control Structures?
• Control structures alter the flow of the program, the sequence of statements that are executed in a program.
• They act as "direction signals" to control the path a program takes.
• Two types of control structures in Java:– decision statements– loops
Decision Statements
• A decision statement allows the code to execute a statement or block of statements conditionally.
• Two types of decisions statements in Java:– if statements– switch statements
If Statement
if (expression) { statement;}rest_of_program;
• expression must evaluate to a boolean value, either true or false
• If expression is true, statement is executed and then rest_of_program
• If expression is false, statement is not executed and the program continues at rest_of_program
If Statement Flow Diagram
The if decision statement executes a statement if an expression is true
execute statement
execute rest_of_program
Is expressiontrue?
yes
no
if (expression) { statement1;}rest_of_program
If-Else Statementif (expression) { statement1;}else{ statement2;}next_statement;
• Again, expression must produce a boolean value
• If expression is true, statement1 is executed and then next_statement is executed.
• If expression is false, statement2 is executed and then next_statement is executed.
If-Else Flow Diagram
if (expression){ statement1;} else { statement2;}rest_of_program
The if-else decision statement executes a statement if an expression is true and a different statement if it is not true.
is “expression”
true?
execute statement1
execute rest_of_program
noyes
execute statement2
Chained If-Else Statements
if (grade == 'A')
System.out.println("You got an A.");
else if (grade == 'B')
System.out.println("You got a B.");
else if (grade == 'C')
System.out.println("You got a C.");
else
System.out.println("You got an F.");
Switch Statements• The switch statement enables you to test several cases
generated by a given expression.
• For example:switch (expression) {
case value1: statement1;
case value2: statement2;
default: default_statement;}
Every statement after the true case is executed
• The expression must evaluate to a char, byte, short or int, but not long, float, or double.
y
y
n
n
switch (expression){ case value1:
// Do value1 thing
case value2:// Do value2 thing
... default:
// Do default action}// Continue the program
expressionequalsvalue1?
Do value1 thing
Do value2 thing
Do default action
expressionequalsvalue2?
Continue theprogram
Break Statements in Switch Statements
• The break statement tells the computer to exit the switch statement
• For example:
switch (expression) { case value1: statement1; break; case value2: statement2; break; default: default_statement; break; }
switch (expression){ case value1: // Do value1 thing break;
case value2: // Do value2 thing break;
... default: // Do default action break;}// Continue the program
expressionequals
value1?
expressionequals
value2?
do default action
Do value1 thing
Do value2 thing
break
break
break
Continue the program
y
y
n
n
Remember the Chained If-Else . . .
if (grade == 'A')
System.out.println("You got an A.");
else if (grade == 'B')
System.out.println("You got a B.");
else if (grade == 'C')
System.out.println("You got a C.");
else
System.out.println("You got an F.");
• This is how it is accomplished with a switch:
• if-else chains can be sometimes be rewritten as a “switch” statement.
• switches are usually simpler and faster
switch (grade) {case 'A':
System.out.println("You got an A.");break;
case 'B':System.out.println("You got a B.");break;
case 'C':System.out.println("You got a C.");break;
default:System.out.println("You got an F.");
}
Loops
• A loop allows you to execute a statement or block of statements repeatedly.
• Three types of loops in Java: 1. while loops
2. for loops
3. do-while loops (not discussed in this course)
The while Loop
while (expression){statement
}
• This while loop executes as long as the given logical expression between parentheses is true. When expression is false, execution continues with the statement following the loop block.
• The expression is tested at the beginning of the loop, so if it is initially false, the loop will not be executed at all.
• For example:
int sum = 0; int i = 1;
while (i <= 10){ sum += i; i++; }
• What is the value of sum?
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
The for Loop
The control of the for loop appear in parentheses and is made up of three parts:
1. The first part, the init_expression,sets the initial conditions for the loop and is executed before the loop starts.
2. Loop executes so long as the loop_condition is true and exits otherwise.
3. The third part of the control information, the increment_expr, is usually used to increment the loop counter. This is executed at the end of each loop iteration.
for (init_expr; loop_condition; increment_expr) { statement;}
• For example:
int sum = 0;
for (int i = 1; i <= 10; i++) { sum += i; }
• What is the value of sum?
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
• Example 3:
for(int div = 0; div < 1000; div++){ if(div % 2 == 0) { System.out.println("even: " + div); } else { System.out.println("odd: " + div); } }
• What will this for loop do?
prints out each integer from 0 to 999,correctly labeling them even or odd
• If there is more than one variable to set up or increment they are separated by a comma.
for(i=0, j=0; i*j < 100; i++, j+=2) { System.out.println(i * j);
}
• You do not have to fill all three control expressions but you must still have two semicolons.
int n = 0; for(; n <= 100;) { System.out.println(++n);
}
The while loop
Test conditionis true?
Execute loopstatement(?)
Next statement
y
n
Initialize count
Test conditionis true?
Execute loop statement(s)
Increment count
New statement
The for loop
y
n
The continue Statement
• The continue statement causes the program to jump to the next iteration of the loop.
/** * prints out "5689" */ for(int m = 5; m < 10; m++) { if(m == 7) { continue; } System.out.print(m); }
• Another continue example:
int sum = 0; for(int i = 1; i <= 10; i++){ if(i % 3 == 0) {
continue; } sum += i;
}
• What is the value of sum?
1 + 2 + 4 + 5 + 7 + 8 + 10 = 37
The break Statement
• We have seen the use of the break statement in the switch statement.
• You can also use the break statement to exit the loop entirely.
// prints out numbers unless // num is ever exactly 400 while (num > 6) { if(num == 400) { break; } System.out.println(num); num -= 8; }
Nested Loops• You can nest loops of any kind one inside
another to any depth. What does this print?
for(int i = 10; i > 0; i--) {
if (i > 7) {
continue;
}
while (i > 3) {
if(i == 5) {
break;
}
System.out.println(--i);
}
System.out.println(i);
}
6554321
POP QUIZ
1. In the switch statement, which types can expression evaluate to?
2. What must be used to separate each section of a for statement.
3. Which statement causes a program to skip to the next iteration of a loop.
4. Write a for loop that outputs 100-1 in reverse sequence.
5. Write a for loop that outputs all numbers that are divisible by 3 between 0-50.
char, byte, short, int
semicolons
continue