1 / 23

Stepwise Refinement -- A procedure calls another procedure

Stepwise Refinement -- A procedure calls another procedure. A curupira is playing soccer in the rainforest. The curupira has a soccer ball and will kick the soccer ball toward a pond in the forest. Each kick causes the soccer ball to move forward a random distance .

braima
Download Presentation

Stepwise Refinement -- A procedure calls another procedure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stepwise Refinement -- A procedure calls another procedure

  2. A curupira is playing soccer in the rainforest. The curupira has a soccer ball and will kick the soccer ball toward a pond in the forest. Each kick causes the soccer ball to move forward a random distance. • If the curupira gets the soccer ball in the water, the curupiradoes a dance, otherwise he disappears, shocked that he didn’t succeed.

  3. Problem solving step 1 Download and open the world: CurupiraSoccerSetup.a3p

  4. Problem Solving step 2 Design an algorithm • Do in order • curupira runs to soccer ball • curupira kicks the soccer ball a random distance • If soccer ball is in the water, • curupira dances • else • curupira disappears

  5. Implementation translate algorithm into code, one line at a time Problem Solving step 3 Do in order curupira runs to the soccer ball curupira kicks the soccer ball a random distance …

  6. Decomposition Recall Decomposition -- take a complex procedure and break into smaller, simpler actions Do in order curupira runs to the soccer ball curupira kicks the soccer ball a random distance … runToObject Do together curupira performs running motion curupira moves forward to the ball

  7. Problem There is no running motion procedure for the curupira • runToObject • Do together • curupira performs a running motion • curupira moves forward distance to the <target>

  8. Stepwise refinement: create another procedure & call it from this procedure Stepwise refinement myFirstMethod Do in order curupira runs to the soccer ball curupira kicks the soccer ball a random distance … runToObject Do together curupira performs running motion curupira moves forward to the ball runningMotion

  9. runningMotion Algorithm • Do in order • Do together • curupira right leg turns forward • curupira left leg turns backward • Do together • curupira right leg turns backward • curupira left leg turns forward • Do together • curupira right leg turns forward • curupira left leg turns backward

  10. Video: 14. Create a procedure This video illustrates the steps documented in slides 11 -12.

  11. Select Curupirafrom the class menu in the code editor Open Curupira class document

  12. Select Add Procedure… and name it runningMotion Declare a new procedure

  13. Comment

  14. By default, actions are for this (entire) curupira Translating algorithm to code • Do in order • Do together • curupira right leg turns forward • curupira left leg turns backward • Do together • curupira right leg turns backward • curupira left leg turns forward • Do together • curupira right leg turns forward • curupira left leg turns backward

  15. This video illustrates slide 16 Video: 15. Selecting subpart joints

  16. Click on the instance menu Select an appropriate joint for the subpart In this example, select the hip because the leg subpart turns at the hip Select a joint in the skeleton

  17. Now add the code Remember the Do Together! Complete procedure

  18. Working our way back up… myFirstMethod Do in order curupira runs to the soccer ball curupira kicks the soccer ball a random distance … runToObject Do together curupira performs running motion curupira moves forward distance to the <target> CreaterunToObjectprocedure and add call to runningMotion runningMotion Do together curupira right leg turns forward curupira left leg turns backward … We have completed runningMotionprocedure

  19. Click on Curupira tab Click on Add Procedure… Name itrunToObject Implement runToObject 1 Class panel 2 3

  20. Add comment Call runningMotion

  21. Return to myFirstMethod in the Scene class Test runToObject

  22. Test – call from myFirstMethod myFirstMethod Do in order curupira runs to the soccer ball curupira kicks the soccer ball a random distance … Testing: Call runToObjectfrom myFirstMethod runToObject Do together curupira performs running motion curupira moves forward distance to the <target> runningMotion Do together curupira right leg turns forward curupira left leg turns backward …

  23. Call runToObject in myFirstMethod After we have defined the new procedure, runToObject… 3. 1. 2. • … we need to call it somewhere in our program • Select curupira in the instance menu • Drag the runToObject tile into myFirstMethod in the editor • Click on Run

More Related