Presentation is loading. Please wait.

Presentation is loading. Please wait.

11-May-15 Control Structures part 2. Overview Control structures cause the program to repeat a section of code or choose between different sections of.

Similar presentations


Presentation on theme: "11-May-15 Control Structures part 2. Overview Control structures cause the program to repeat a section of code or choose between different sections of."— Presentation transcript:

1 11-May-15 Control Structures part 2

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

3 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?

4 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(); }

5 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

6 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() { }

7 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)

8 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

9 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

10 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

11 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);

12 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

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

14 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:

15 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:

16 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

17 The End


Download ppt "11-May-15 Control Structures part 2. Overview Control structures cause the program to repeat a section of code or choose between different sections of."

Similar presentations


Ads by Google