control structures part 2

17
Jun 14, 2 022 Control Structures part 2

Upload: griffin-juarez

Post on 03-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

Control Structures part 2. Overview. Control structures cause the program to repeat a section of code or choose between different sections of code while loops repeat if statements choose Programs can use whiles and ifs in the Main method or in Jeroo methods - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Control Structures part 2

Apr 20, 2023

Control Structurespart 2

Page 2: Control Structures part 2

Overview

Control structures cause the program to repeat a section of code or choose between different sections of code

while loops repeat if statements choose

Programs can use whiles and ifs in the Main method or in Jeroo methods

Control structures can use compound expressions to solve problems

Control structures can be nested inside each other to solve the most difficult problems

Page 3: Control Structures part 2

Using a while loop in a Jeroo method

Assume that a Jeroo named Kim is not standing on a flower, but there is a line of flowers ahead. Have Kim pick all of those flowers, and stop as soon as there is no flower directly ahead. After picking all of the flowers, Kim should turn to the left.

while( kim.isFlower(AHEAD) ){ kim.hop();

kim.pick();

}

kim.turn(LEFT);

How would this be written as part of a

method?

Page 4: Control Structures part 2

method pickRow(){

while(isFlower(AHEAD)) {

hop();

pick();

}

turn(LEFT);

}

As part of a method

The main program would be:

method main(){

Jeroo kim = new Jeroo();

kim.pickRow();

}

Page 5: Control Structures part 2

Review: The Conditional statements

some statement

if (condition ){

do if true}

next statement

some statement

if (condition){

do if true

}

else{

do if false

}

next statement

if( condition_1){ //statements that execute if condition_1 is true}

else if ( condition_2){ //statements to execute when condition_2 is true}

//more else if blocks as necessary else if (last_condition){ //statements to execute when last_condition is true}

else { //statements to execute when // all conditions are false

}

if

if-else

Cascaded if-else

Page 6: Control Structures part 2

Changing Cascaded-If into a Jeroo method Assume that a Jeroo named

Louisa is carrying at least one flower.

Have her check the cell ahead. If that cell contains a flower,

pick it. If that cell contains a net, disable

it. If that cell contains water, plant

a flower at the current location. If that cell contains another

Jeroo, give that Jeroo a flower. Finally, if there is nothing in

that cell, have her hop once and turn left.

if( louisa.isFlower(AHEAD)) {

louisa.hop(); louisa.pick(); }

else if( louisa.isNet(AHEAD)) {

louisa.toss(); }

else if( louisa.isWater(AHEAD)) {

louisa.plant(); }

else if( louisa.isJeroo(AHEAD)) {

louisa.give(AHEAD); }

else {

louisa.hop();

louisa.turn(LEFT); }

To turn this into a Jeroo method, give it a name and remove the specific Jeroo name from the code

method decide()

{

}

Page 7: Control Structures part 2

Simple and Compound Conditions

A simple condition has one part. In the Jeroo language, a simple condition is formed by invoking a single sensor method.

Examples: tiffany.isClear(RIGHT) walter.isFacing(EAST)

A compound condition uses logical operators. The Jeroo language contains the three most commonly used logical operators:

!(NOT) ie: !Tiffany.isClear(RIGHT) &&(AND) ie: Tiffany.isClear(RIGHT) && Tiffany.isClear(LEFT) ||(OR) ie: Tiffany.hasFlower() || Tiffany.isClear(AHEAD)

Page 8: Control Structures part 2

Compound condition examples

Boolean Expression (Java-style) & English Translation

! bob.isNet(AHEAD) There is not a net ahead of Bob

bob.hasFlower() && bob.isClear(LEFT) Bob has at least one flower and there is nothing in the cell immediately to

the left of Bob. bob.isWater(AHEAD) || bob.isWater(RIGHT)

There is water ahead or to the right of Bob, or both Notice the COMPLETE CONDITIONS on both sides of the OR

bob.isFacing(WEST) && ( ! bob.isNet(AHEAD) ) Bob is facing west and there is no net ahead Use these examples to

write compound conditions

Page 9: Control Structures part 2

A more complex Programming Example

Have the Jeroo named Jessica (who has at least 1 flower) keep moving forward until she finds a net to her left or right. When she finds one, have her disable it and return to face her original direction again. After she disables a net, Jessica should hop one space ahead.

While there is not a net on the left or right

hop

If there is a net to the right then

disable the net on the right and turn back

Else if the net is not to the right, it must be on the left

disable the net on the left and turn back

hop one time

Pseudocode:

first keep hopping until a net is found

then disable the net, whichever side it is on

then hop once

Page 10: Control Structures part 2

Translate the pseudo code to code

While there is not a net on the left or right

hop

If there is a net to the right then

disable the net on the right and turn back

Else if the net is not to the right, it must be on the left

disable the net on the left and turn back

jessica.hop()

Which is the correct way to say:

“there is not a net on the left or right” ?

1. ! isNet(LEFT) || !isNet(RIGHT)

2. !isNet(LEFT) && !isNet(RIGHT)

this can be read as: there is not a net on the left and there’s not a net on the right.

first problem

Page 11: Control Structures part 2

Translate the pseudo code to code

While there is not a net on the left or right

hop

If there is a net to the right then

disable the net on the right and turn back

Else if the net is not to the right, it must be on the left

disable the net on the left and turn back

jessica.hop()

turn(RIGHT);toss();turn(LEFT);

this has been solved before

so how must it change if the net is on the left?

turn(LEFT);toss();turn(RIGHT);

Page 12: Control Structures part 2

Put it together:

while ( !isNet(LEFT) && !isNet(RIGHT) ){

hop();}

if there is a net to the right then

else //if the net is not to the right, it must be on the left

hop();

{ turn(RIGHT); toss(); turn(LEFT);}

{ turn(LEFT);toss();turn(RIGHT);

}

Which part still needs to be translated into code?

(isNet(RIGHT))

Ready to type in the code!

Is this code for a main method or a Jeroo method? Why?

The code does not specify a Jeroo name, so it belongs in a Jeroo method

Page 13: Control Structures part 2

Control structures can be nested inside each other to solve the most difficult problems

Page 14: Control Structures part 2

A problem requiring nested control structures

Remove all the nets on Jessica’s right side as she hops all the way across the island.

if (isNet(RIGHT) )

{

turn(RIGHT);

toss();

turn(LEFT);

}

hop();

The code to remove one net and move forward has already been written:

Page 15: Control Structures part 2

The Problem: Remove all the nets on Jessica’s right side as she crosses the island.

Question: How do you know that a Jeroo has

reached the end of the island?

How do you say “ keep hopping until you reach the end of the island”?

How do you say “keep removing nets until you reach the end of the island”?

Answer: there is water ahead

while (!isWater(AHEAD)) { hop(); }

while(!isWater(AHEAD)) { // put the code here to // remove a net if there is one. }

Some questions:

Page 16: Control Structures part 2

Notice the indentation:

while(! isWater(AHEAD)){ //remove the net if there is one.

if( isNet(RIGHT)) {

turn(RIGHT); toss(); turn(LEFT);}hop();

}

Final version: Put the pieces together

Page 17: Control Structures part 2

The End