Download
alice in action with java n.
Skip this Video
Loading SlideShow in 5 Seconds..
Alice in Action with Java PowerPoint Presentation
Download Presentation
Alice in Action with Java

Alice in Action with Java

620 Views Download Presentation
Download Presentation

Alice in Action with Java

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Alice in Action with Java Chapter 4 Flow Control

  2. Objectives • Use the Booleantype and its basic operations • Use the ifstatement to perform some statements while skipping others • Use the forand whilestatements to perform (other) statements more than once • Use Booleanvariables and functions to control if and whilestatements • Use the wait()message to temporarily suspend program execution Alice in Action with Java

  3. Flow Control • Flow: sequence of steps for performing a user story • Flow control statement: structure for managing flow • Flow control statements used in previous chapters • doInOrder: produces a sequential execution • doTogether: produces a parallel execution • Control statements introduced in the current chapter • if: directs program flow along one of two paths • for: directs flow into a fixed number of loops • while: directs flow into an arbitrary number of loops Alice in Action with Java

  4. Flow Control (continued) Alice in Action with Java

  5. The Boolean Type • A basic Alice type used to define Boolean variables • ABooleanvariableholds a value of trueorfalse • Other basic types: Number and Object • Condition (Boolean expression) • Produces a value of trueorfalse • Basis for decision-making in programs Alice in Action with Java

  6. Boolean Functions • Return a value of true or false • Can act as a condition in an ifor while statement • Many refer to an object’s bounding box • Example: obj.isBehind(obj2) • true, if obj’s position is beyond obj2’s rear edge • false, otherwise Alice in Action with Java

  7. BooleanVariables • Used to store a value of trueorfalse • Can be used in condition for if or while statement • How to create a Booleanvariable • Click create new variable(or parameter) button • Specify Booleanas variable (or parameter) type Alice in Action with Java

  8. Relational Operators • Produce trueor false values • Six relational operators: ==,!=,<,<=,>,>= • Located in functions pane of world’s details area • Most often used to compare Number values • Example: hoursWorked > 40 • hoursWorkedis aNumbervariable • true when more than 40 hours have been worked Alice in Action with Java

  9. Relational Operators (continued) Alice in Action with Java

  10. Boolean Operators • Used to modify or combine relational operations • Three Boolean operators: AND, OR, NOT • Located in functions pane of world’s details area • Example: age > 12 && age < 20 • ageis aNumbervariable • Teen number compared to condition returns true Alice in Action with Java

  11. Boolean Operators (continued) Alice in Action with Java

  12. Introducing Selective Flow Control • Summary of a scene with a princess and a dragon • Princess meets a mute dragon and asks questions • Dragon shakes its head to respond yes or no • Objective: write a shakeHead()method • Requirements for shakeHead() • Parameter: yesOrNo, a String • If yesOrNo == “yes”, dragon shakes head up and down • If yesOrNo == “no”, dragon shakes head sideways • Use an if statement to produce conditional behavior • The if control structure is at bottom of editing area Alice in Action with Java

  13. Introducing Selective Flow Control (continued) Alice in Action with Java

  14. ifStatement Mechanics • Value of a condition determines direction of flow • Structure of an if statement: • if (Condition ) { Statements1} else { Statements2} • if statement behavior is also called selective flow • If Condition is true, Statements1 are selected • If Condition is false, Statements2 are selected Alice in Action with Java

  15. ifStatement Mechanics (continued) Alice in Action with Java

  16. Building if Statement Conditions • Coding the condition of the if statement • Click on the yesOrNoparameter • Drag parameter into the editing area • Drop the parameter onto the condition’s placeholder • Choose otherand then type “yes” • Overview for coding the remainder of shakeHead() • Add headMovement variable for amount of turn • Add turn()statements for up and down motion • Add turn()statements for sideways motion Alice in Action with Java

  17. Building if Statement Conditions (continued) Alice in Action with Java

  18. Building if Statement Conditions (continued) • Building a scene method that uses shakeHead() • princess greets dragon using a say()message • princessasks four questions • shakeHead()is called in response to each question • Click the Play button to test the program Alice in Action with Java

  19. Building if Statement Conditions (continued) Alice in Action with Java

  20. Building if Statement Conditions (continued) Alice in Action with Java

  21. The wait()Statement • Pauses a program for specified number of seconds • Form of wait()statement: wait(numSecs); • Use of wait()scene with dragon and princess • Inserted between princess’s first and second lines Alice in Action with Java

  22. Validating Parameter Values • if statement can be used to guard set of statements • Flow enters only if parameter values are valid • Example: check distance value passed to jump() • Check for positive value with condition distance > 0 • Check jump length with distance < MAX_DISTANCE • Combine two conditions with the AND (&&) operator • distance > 0 &&distance <= MAX_DISTANCE • How to incorporate validating logic using if structures • Place original jump()logic onto true path (outer if) • Place validating logic in the false path (nested if) Alice in Action with Java

  23. Validating Parameter Values (continued) Alice in Action with Java

  24. Validating Parameter Values (continued) Alice in Action with Java

  25. Validating Parameter Values (continued) Alice in Action with Java

  26. Introducing Repetition • Refer to flapWings()method from Figure 2-16 • Enhancement: use for loop to flap wings numTimes • Overview for implementing the enhancement • Open the flapWings()method • Adjust the duration values for the wing movements • Drag loopcontrol to the top of the method and drop • Select numTimes for number of iterations • Drag the doInOrder statement into the for statement Alice in Action with Java

  27. Introducing Repetition (continued) Alice in Action with Java

  28. Introducing Repetition (continued) Alice in Action with Java

  29. Mechanics of the for Statement • Repeat statement execution a fixed number of times • Example: pass 3 to flapWings()for 3 flaps • Structure of the simple for statement • for(int index = 0;index < limit;index++){ Statements } • Thefor statement is also known as a counting loop • First statement in ( ) initializes the index • Second statement in ( ) checks index against limit • Third statement in ( ) increments the index Alice in Action with Java

  30. Mechanics of the for Statement (continued) Alice in Action with Java

  31. Mechanics of the for Statement (continued) • To test a for loop, trace the behavior with values • Statements are executed while index < numTimes • Example: send flapWings(3)to the dragon object • Simple version of for lets you modify limitvalue • Purpose of show complicated version button • Change initial value of index and/or update to index • Example: change update to index+=2 • Note: neither version of for allows you to count down Alice in Action with Java

  32. Mechanics of the for Statement (continued) Alice in Action with Java

  33. Mechanics of the for Statement (continued) Alice in Action with Java

  34. Nested Loops • Three shots enhancing Scene 1 of dragon animation • Dragon flies toward a castle in the countryside • As dragon nears castle, it circles the tower three times • Dragon then descends and lands on the drawbridge • One way to build the first shot • Go to go into the Add Objectswindow • Position the dragon above the castle’s drawbridge • Move dragon up until it is even with the castle’s tower • Drop a dummy and then drag the dragon off-screen • Use setPointOfView()to properly position dragon Alice in Action with Java

  35. Nested Loops (continued) • One way to build the second shot • Use for statement to control other flying statements • Understanding the mechanics of Shot 2 • Outer for controls inner (nested) for in flapWings() • AsSeenBy()attribute revolves dragon around castle • Increase duration of turn()to synchronize moves • Set style to smooth the animation • The third shot is discussed in Section 4.4 Alice in Action with Java

  36. Nested Loops (continued) Alice in Action with Java

  37. The while Statement • limit value in for loop must be set to a fixed value • Circumstance when the for loop is appropriate • Statements are to be executed a fixed number of times • Problem: looping when the limitvalue is unknown • Solution: use a while statement Alice in Action with Java

  38. Introducing the while Statement • Strategy for building third shot of dragon animation • Repeatedly have dragon flap its wings • Move dragon downward while it is above drawbridge • Overview for building the third shot • Place doTogether statement in doInOrder statement • Use setPointOfView()to move cameracloser • Send flappingWings()message to the dragon • Drag the while statement to the editing area • Drop the while statement below doInOrder • Insert placeholder value into the while condition Alice in Action with Java

  39. Introducing the while Statement (continued) Alice in Action with Java

  40. Introducing the while Statement (continued) • Building the third shot (continued) • Drag dragon’s isAbove()over condition and drop • Add castle.bridge argument to isAbove() • Insert doTogether statement in the while loop • Add move() method to cause dragon to descend • Send another flapWings()message to dragon • Use setPointOfView()to zoom in for a close-up • Infinite loop occurs if loop lacks falsifying condition • In third shot, move()eventually terminates loop Alice in Action with Java

  41. Introducing the while Statement (continued) Alice in Action with Java

  42. Introducing the while Statement (continued) Alice in Action with Java

  43. while Statement Mechanics • Provides for both definite and indefinite looping • Structure of a while loop • while ( Condition ) { Statements } • The while loop is more general than the for loop • Flow enters while structure if Conditionistrue • One statement must eventually falsify Condition Alice in Action with Java

  44. while Statement Mechanics (continued) Alice in Action with Java

  45. Comparing the for and while Statements • while statement can produce any type of repetition • for statement is used for fixed number of repetitions • Loop selection question to ask: “Am I counting?” • If yes, use a for statement; otherwise, use while • Both loops test conditions before flow enters structure • Both loops are bypassed if initial condition is false Alice in Action with Java

  46. A Second Example • Setting up the scene • Use shebuilder to create a soccer player (Jane) • Place soccerBall object in Jane’s hands • Writing a dropBounce()method for soccerBall • Move the ball downdistanceToGroundmeters • Change distanceToGround by bounce factor (2/3) • Move ball up reduced distanceToGround meters • Bouncing continues while distanceToGround > 0 • Writing a janeDropsBall()method • Send roll()messages to forearms • Send dropAndBounce()message to soccerBall Alice in Action with Java

  47. A Second Example (continued) Alice in Action with Java

  48. A Second Example (continued) Alice in Action with Java

  49. A Second Example (continued) Alice in Action with Java

  50. Flow-Control Functions • Functions can be defined to answer questions • Complex questions are asked by flow-control functions Alice in Action with Java