Presentation is loading. Please wait.

Presentation is loading. Please wait.

Control Structures VB part 2

Similar presentations


Presentation on theme: "Control Structures VB part 2"— Presentation transcript:

1 Control Structures VB part 2
6-Jul-19

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() End While Kim.turn(LEFT) How would this be written as part of a method?

4 While isFlower(AHEAD) hop() pick() End While turn(LEFT) End Sub
As part of a method Sub pickRow() While isFlower(AHEAD) hop() pick() End While turn(LEFT) End Sub The main program would be: Sub Main() Dim Kim as Jeroo = new Jeroo() Kim.pickRow() End Sub

5 Review: The Conditional statements
some statement if condition THEN do if true End If next statement some statement if (condition) Then do if true else do if false End If next statement If condition_1 then 'statements that execute if condition_1 is true elseif condition_2 then 'statements to execute when condition_2 is true 'more else if blocks as necessary elseif last_condition then 'statements to execute when last_condition is true else 'statements to execute when all conditions are false End If If If-else Cascaded if

6 Changing Cascaded-If into a Jeroo method
Sub Decide() 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) then Louisa.hop() Louisa.pick() elseif Louisa.isNet(AHEAD) then Louisa.toss() elseif Louisa.isWater(AHEAD) then Louisa.plant() elseif Louisa.isJeroo(AHEAD) then Louisa.give(AHEAD) else Louisa.turn(LEFT) End If End Sub To turn this into a Jeroo method, give it a name and remove the specific Jeroo name from the code

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: NOT Tiffany.isClear(right) AND ie: Tiffany.isClear(right) AND Tiffany.isClear(left) OR ie: Tiffany.hasFlower() OR Tiffany.isClear(ahead)

8 Compound condition examples
Boolean Expression (VB-style) & English Translation NOT Bob.isNet(AHEAD) There is not a net ahead of Bob Bob.hasFlower() AND 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) OR 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) AND ( NOT 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. Pseudocode: While there is not a net on the left or right hop End While 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 End If hop one time 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 End While 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 End If Jessica.hop() first problem Which is the correct way to say: “there is not a net on the left or right” ? NOT isNet(left) OR isNet(right) NOT isNet(left) and NOT isNet(right) this can be read as: there is not a net on the left and there’s not a net on the right.

11 Translate the pseudo code to code
While there is not a net on the left or right hop End While 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 End If Jessica.hop() this has been solved before so how must it change if the net is on the left? turn(RIGHT) toss() turn(LEFT) turn(LEFT) toss() turn(RIGHT)

12 Put it together: Which part still needs to be translated into code?
While NOT isNet(left) and NOT isNet(right) hop() End While If there is a net to the right then Else ‘ if the net is not to the right, it must be on the left End If Jessica.hop() isNet(right) then turn(RIGHT) toss() turn(LEFT) turn(LEFT) toss() turn(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. The code to remove one net and move forward has already been written: If isNet(RIGHT) then turn(RIGHT) toss() turn(LEFT) End If hop()

15 Some questions: Answer: Question:
The Problem: Remove all the nets on Jessica’s right side as she crosses the island. Answer: there is water ahead While NOT iswater(ahead) hop() End While ‘ put the code here to ‘ remove a net if there is one. 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”?

16 Final version: Put the pieces together
Notice the indentation: While not iswater(ahead) ‘ remove the net if there is one. If isNet(RIGHT) then turn(RIGHT) toss() turn(LEFT) End If hop() End While

17 The End


Download ppt "Control Structures VB part 2"

Similar presentations


Ads by Google