/
Java Advanced Control Structures Java Advanced Control Structures

Java Advanced Control Structures - PowerPoint Presentation

nonhurmer
nonhurmer . @nonhurmer
Follow
342 views
Uploaded On 2020-06-22

Java Advanced Control Structures - PPT Presentation

Objectives Be able to use a switch statement for selective execution Be able to implement repetition using alternative loops do while loops Be able to write a recursive method 3 The ID: 783261

println system break case system println case break switch int statement move dest src daycode aux factorial problem return

Share:

Link:

Embed:

Download Presentation from below link

Download The PPT/PDF document "Java Advanced Control Structures" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Java

Advanced Control Structures

Slide2

Objectives

Be able

to use a switch statement for selective execution.

Be able to implement repetition using alternative loops:do-while loopsBe able to write a recursive method.

Slide3

3

The

switch Statement

Multi-alternative selection can be implemented using:

The multi-branch

if

statement

The

switch

statement

The multi-branch

if

statement can always be used.

The

switch

statement is a specialized form that operates more efficiently under certain circumstances.

Slide4

4

switch

:

Syntax and Behavior

expression

StatementList

1

value

1

StatementList

2

value

2

StatementList

n

switch (

expression

) {

case

value

1

:

statementList

1 case value2: statementList2 … default: statementListn}Requirements:expression must be integer compatible;values must be constants or literals;Cases check for equality.

otherwise

Slide5

5

switch

&

if

:

Examples

switch (

dayCode

) {

case 1:

System.out.println

("Sunday");

break;case 2:

System.out.println("Monday"); break;case 3:

System.out.println("Tuesday"); break;

case 4: System.out.println("Wednesday"); break;

case 5: System.out.println

("Thursday"); break;case 6: System.out.println

("Friday"); break;case 7:

System.out.println

("Saturday"); break;

default:

System.out.println("invalid code");

}if (dayCode == 1) { System.out.println("Sunday");} else if (dayCode == 2) { System.out.println("Monday");} else if (dayCode == 3) { System.out.println("Tuesday");} else if (dayCode

== 4) {

System.out.println("Wednesday");

} else if (

dayCode

== 5) {

System.out.println

("Thursday");

} else if (

dayCode

== 6) {

System.out.println

("Friday");

} else if (

dayCode

== 7) {

System.out.println

("Saturday");

} else {

System.out.println

("invalid code);

}

Slide6

6

switch

:

Fall-Through Behavior

The

switch

statement implements

fall-through

behavior.

More than one case can be associated with one statement list.

If only one list is to be executed, then that list must explicitly exit the switch using:

breakreturnthrow

exit

Slide7

7

switch

:

Examples

switch (

dayCode

) {

case 1:

System.out.println

("Sunday");

break;

case 2:

System.out.println("Monday");

break;case 3: System.out.println("Tuesday");

break;case 4:

System.out.println("Wednesday"); break;case 5:

System.out.println("Thursday"); break;

case 6: System.out.println("Friday"); break;

case 7: System.out.println

("Saturday"); break;

default:

System.out.println("invalid code");

}

switch (dayCode) {case 1: case 7: System.out.println("weekend"); break;case 2:

case 3:

case 4:

case 5:

case 6:

System.out.println

("weekday

");

break;

d

efault

:

System.out.println

("invalid code");

}

Slide8

Execute!

// value of y?

x = 3;

y = 3;switch (x + 3){

case 6: y = 1;

default: y += 1;

}

Practice

//Rewrite using switch

if (a == 1){

x += 5; }else if (a == 2) { x += 10; }else if (a == 3) { x += 16; }else if (a == 4) { x += 34;}

Slide9

9

The

while

Loop

while (

condition

){

statement

}

condition

False

True

A

while

loop executes a statement based on a boolean condition.

Statement

Slide10

10

The

do

-

while

Loop

do {

statement

}

while

(condition);

A

do-while

loop is a post-test version of the while statement.

statement

condition

True

False

Slide11

11

do-while

:

Example

System.out.print

("Guess a number from 1-10: ");

do {

number =

keyboard.nextInt

();

} while (number != 7);

System.out.println

("You guessed it!");

Slide12

Execute!

// What is the output?

int

i =

3;

while

(

i

>= 1){

int

num = 1;

for (int j = 1;

j <= i; j++){ System.out.print(num + "xxx"); num *= 2; }

System.out.println(); i--;}

Slide13

Execute!

// What is the output?

int

i = 1;

do

{

int

num

= 1;

for (int j = 1; j <= i

; j++){ System.out.print(

num + "yyy"); num += 2; } System.out.println(); i++;

} while (i <= 3);

Slide14

14

Introduction

Recursion is a way of defining functions self-referentially.

Examples:

Droste

effect;

(Parenthetical comments (especially comments within comments), etc.);

A chain of phone callers on hold;

Inductive Proofs.

Image

from

google.com

Slide15

15

Example: Factorial

Write a function that, given n, computes n!

n! == 1 * 2 * ... * (n-1) * n

Example:

5! == 1 * 2 * 3 * 4 * 5 == 120

Assumptions:

Receive n, a non-negative integer.

Return n!, a double (to avoid integer overflow).

Slide16

16

Preliminary Analysis

This can be viewed as a counting problem, so we could solve it iteratively:

public static

int

factorial1(

int

n){

int

result = 1;

for (

int

i = 2; i <= n; i++){ result *= i;

} return result;

}

Slide17

17

An Alternate Analysis

Consider the following alternate analysis:

n! == 1 * 2 * ... * (n-1) * n

(n-1)! == 1 * 2 * ... * (n-1)

n! == (n-1)! * n

Historically, this is how the factorial function was defined.

Slide18

The Mechanics of Recursion

Design recursive functions using a three-step process:

Identify a

base case - an instance of the problem whose solution is

trivial

.

E.g., The factorial function has two base cases:

if n == 0: n! == 1

if n == 1: n! == 1

Slide19

2. Identify an

induction step

- a means of solving the non-trivial instances of the problem using one or more “smaller” instances of the problem.

E.g.,

n! ==

(n-1)!

*

n

Mechanics (cont.)

Slide20

3. Form an

algorithm

that includes the base case and induction step, and ensures that each inductive step moves toward the base case.

factorial:

Receive n.

If n > 1 then

Return factorial(n-1) * n.

Else

Return 1.

Mechanics (cont.)

Slide21

public static

int

factorial(

int

n

){

if

(n > 1

){

return factorial(n-1

) * n; } else { return

1; }}

Implementation

Slide22

M

ove

disks from a source pin to a target pin, using the third pin as an auxiliary.

Rules:

move only one disk at a time;

never put a larger disk onto a smaller one.

Example: Towers of Hanoi

Slide23

Today’s problem is to write a program that generates the instructions for the priests to follow in moving the disks.

While quite difficult to solve iteratively, this problem has a simple and elegant

recursive

solution.

Design

Slide24

public static void main (String []

args

) {

Scanner keyboard = new Scanner(

System.in

);

System.out.println

(

"

The Hanoi Towers\n");

System.out.print

("number of disks: "); int n = keyboard.nextInt();

move(n, 'A', 'B', 'C');

}

Driver Program

Slide25

Base case:

Inductive case:

Design

(cont.)

Slide26

We can combine these steps into the following algorithm:

0. Receive

n,

src, dest, aux.

1. If

n

> 1:

a. move(

n-1,

src

, aux,

dest); b. move(1, src,

dest, aux); c. move(

n-1, aux, dest, src); Else Display “Move the top disk from ” + src + “ to ” + dest.

Algorithm

Slide27

public static void move(

int

n, char

src

, char

dest

, char aux) {

if (n > 1) {

move(n-1,

src

, aux,

dest

);

move(1, src, dest, aux); move(n-1, aux, dest, src);

} else {

System.out.println("Move the top disk from " +

src + " to " + dest); }

}Implementation

Slide28

How many “moves” does it take to solve this problem as a function of

n

, the number of disks to be moved.

n # of moves required______

1 1

2 3

3 7

4 15

5 31

...

i

2i-1

64 264-1Algorithm Analysis

Slide29

Given a “super-printer” that can generate and print 1,048,576 (2

20

) instructions/second, how long would it take to print 2

64-1 instructions?

2

64

/2

20

= 2

44

seconds @ 244 / 26 = 238

minutes @ 2

38 / 26 = 232 hours @ 232 / 25 = 227 days @

227 / 29 = 218 years @ 2

18 / 27 = 211 centuries

@ 211 / 24 = 27 = 128 millenniaAnalysis

(cont.)

Slide30

30

Graphical Examples

Sierpinski

triangles

Tree fractals

Koch’s snowflake