Control Structures Overview n Without control structures n

  • Slides: 16
Download presentation
Control Structures

Control Structures

Overview n Without control structures, n n n everything happens in sequence, the same

Overview n Without control structures, n n n everything happens in sequence, the same way every time Jeroo has two basic control structures n n while ( to repeat statements ) if (to make choices) (includes: if-else, cascaded if-else)

Repetition The Jeroo language only contains one repetition structure: n the pretest while loop.

Repetition The Jeroo language only contains one repetition structure: n the pretest while loop. Check first 1. 2. Execute “some statement” Check the condition n n if it is true – execute body some statement while(condition) { recheck condition n n Keep repeating while true if it is false – terminate loop execute “next statement body of loop } next statement;

While loop notes n n The pretest while structure (also called a while loop)

While loop notes n n The pretest while structure (also called a while loop) is used to define a block of code that will be executed repeatedly as long as a specified condition is true. Note: The while structure is not a method, which means that we do not send it as a message to a Jeroo object. Example: while there is a flower ahead of the jeroo named sam, keep picking it and hopping: while(sam. is. Flower(AHEAD)) { sam. hop(); sam. pick(); } it’s called pre-test because first it tests to see if it’s true that there is a flower ahead before picking and hopping

In Java when something is NOT true n ! Means NOT in Java n

In Java when something is NOT true n ! Means NOT in Java n !is. Flower(HERE) n n Means there is not a flower here !is. Water(AHEAD) n Means there is not water ahead

another loop example: Example: while there is not a net ahead of the jeroo

another loop example: Example: while there is not a net ahead of the jeroo named james, keep hopping: while(!james. is. Net(AHEAD)) { james. hop(); } it’s called pre-test because first it tests to see if it’s true that there is NOT a net ahead before hopping

Example problem using loops n Assume that a Jeroo named kim is not standing

Example problem using loops n 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. is. Flower(AHEAD)) { kim. hop(); kim. pick(); } kim. turn(LEFT);

While loop style n There are two important things to observe about the coding

While loop style n There are two important things to observe about the coding style. n n 1. } marks the end of the loop 2. The statements in the loop are indented. while(condition) { // statements that comprise the body of // the loop }

The form of a Conditional Statement 1. 2. Execute “some statement” Check the condition

The form of a Conditional Statement 1. 2. Execute “some statement” Check the condition n n 3. true – execute true branch false – skip true branch execute “next statement” some statement if(condition) { do if true } next statement;

If Example n Have the Jeroo named jessica check for a net to her

If Example n Have the Jeroo named jessica check for a net to her right. If there is one, have her disable it and return to her current state. Whether or not she disables a net, jessica should hop one space ahead. if (jessica. is. Net(RIGHT) ) { jessica. turn(RIGHT); jessica. toss(); jessica. turn(LEFT); } jessica. hop();

If-else statement some statement 1. 2. Execute “some statement” Check the condition if (condition)

If-else statement some statement 1. 2. Execute “some statement” Check the condition if (condition) true – execute true branch , skip false branch false – skip true branch, execute false branch do if true n n 3. execute “next statement” { } else { do if false } next statement

If-else Example n n Notice where the code matches the problem description: Have the

If-else Example n n Notice where the code matches the problem description: Have the Jeroo named Timmy check for a net straight ahead. If there is one, have him disable it and turn around. If there is not a net straight ahead, Timmy should turn right. After he disables the net and turns around or simply turns right, Timmy must move one space forward. if (timmy. is. Net(AHEAD)) { timmy. toss(); timmy. turn(LEFT) ; } else { timmy. turn(RIGHT); } timmy. hop();

Sensor methods In the Jeroo language, the sensor methods are the basic building blocks

Sensor methods In the Jeroo language, the sensor methods are the basic building blocks for creating conditions. The simplest way to create a condition is to invoke a sensor method. n has. Flower() is. Facing( compass. Direction ) is. Flower( relative. Direction ) is. Jeroo( relative. Direction ) is. Net( relative. Direction ) is. Water( relative. Direction ) is. Clear( relative. Direction ) n Each sensor method is Boolean. It has either a true or a false result. n n n Does this Jeroo have any flowers? Is this Jeroo facing in the indicated direction? Is there a flower in the indicated direction? Is there another Jeroo in the indicated direction? Is there a net in the indicated direction? Is there water in this direction? Is there a clear space in the indicated direction? A clear space contains no flower, no net, no water, and no Jeroo. Use these examples to write some Boolean conditions

Cascaded if statement style This particular structure is often called a cascaded if. Only

Cascaded if statement style This particular structure is often called a cascaded if. Only one block of code will be executed. 3 things about the coding style. n 1. The {}’s are aligned with the start of the words if and else. n 2. else if is two words. n 3. The other statements are indented. n There are 2 important things to observe about this structure n n 1. There is no limit on the number of else-if blocks. 2. The final else block is optional. else if is 2 words 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 }

Cascaded if-else Example n n n n Assume that a Jeroo named Louisa is

Cascaded if-else Example n n n n 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. is. Flower(AHEAD)) { louisa. hop(); louisa. pick(); } else if (louisa. is. Net(AHEAD)) { louisa. toss(); } else if (louisa. is. Water(AHEAD)) { louisa. plant(); } else if (louisa. is. Jeroo(AHEAD) ) { louisa. give(AHEAD); } else { louisa. hop(); louisa. turn(LEFT); }

The End

The End