Presentation is loading. Please wait.

# Stepwise Refinement -- A procedure calls another procedure

## Presentation on theme: "Stepwise Refinement -- A procedure calls another procedure"— Presentation transcript:

Stepwise Refinement -- A procedure calls another procedure

A curupira is playing soccer in the rainforest
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 curupira does a dance, otherwise he disappears, shocked that he didn’t succeed. The Curupira (Portuguese pronunciation: [kuɾuˈpiɾɐ]) is a mythological creature of Brazilian folklore. This creature blends many features of West African and European sprites but was usually regarded as mischievious. His name comes from the Tupi language kuru'pir, meaning "covered in blisters". According to the legend, this creature has bright red/orange hair and resembles a man or a dwarf, but its feet are turned backwards. – excerpted and edited from 2

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

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

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

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

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

Stepwise refinement Stepwise refinement: create another procedure & call it from this procedure 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

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

Video: 14. Create a procedure
This video illustrates the steps documented in slides Videos/14.CreateAProcedure.mp4

Open Curupira class document
Select Curupira from the class menu in the code editor

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

Comment

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

Video: 15. Selecting subpart joints
This video illustrates slide 16 Videos/16.SelectingSubparts.mp4

Select a joint in the skeleton
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

Complete procedure Now add the code Remember the Do Together!

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> Create runToObject procedure and add call to runningMotion runningMotion Do together curupira right leg turns forward curupira left leg turns backward We have completed runningMotion procedure

Implement runToObject
Click on Curupira tab Click on Add Procedure… Name it runToObject 1 Class panel 2 This is an alternative way to add a new procedure to a class, using the class panel 3

Add comment Call runningMotion

Test runToObject Return to myFirstMethod in the Scene class

Test – call from myFirstMethod
Do in order curupira runs to the soccer ball curupira kicks the soccer ball a random distance Testing: Call runToObject from 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

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

Download ppt "Stepwise Refinement -- A procedure calls another procedure"

Similar presentations

Ads by Google