Control Structures. Program Flow Java will execute the statements in your code in a specific...

Preview:

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

Recommended