Presentation is loading. Please wait.

Presentation is loading. Please wait.

Alice in Action with Java

Similar presentations


Presentation on theme: "Alice in Action with Java"— Presentation transcript:

1 Alice in Action with Java
Chapter 4 Flow Control

2 Objectives Use the Boolean type and its basic operations
Use the if statement to perform some statements while skipping others Use the for and while statements to perform (other) statements more than once Use Boolean variables and functions to control if and while statements 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
A Boolean variable holds a value of true or false Other basic types: Number and Object Condition (Boolean expression) Produces a value of true or false 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 if or 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 Boolean Variables Used to store a value of true or false
Can be used in condition for if or while statement How to create a Boolean variable Click create new variable (or parameter) button Specify Boolean as variable (or parameter) type Alice in Action with Java

8 Relational Operators Produce true or false values
Six relational operators: ==, !=, <, <=, >, >= Located in functions pane of world’s details area Most often used to compare Number values Example: hoursWorked > 40 hoursWorked is a Number variable 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 age is a Number variable 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 if Statement Mechanics
Value of a condition determines direction of flow Structure of an if statement: if (Condition ) { Statements } else { Statements } 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 if Statement Mechanics (continued)
Alice in Action with Java

16 Building if Statement Conditions
Coding the condition of the if statement Click on the yesOrNo parameter Drag parameter into the editing area Drop the parameter onto the condition’s placeholder Choose other and 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 princess asks 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 loop control 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 } The for 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 limit value 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 Objects window 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 limit value 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 camera closer 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 Condition is true 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 down distanceToGround meters 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

51 Spirals and the Fibonacci Function
User story Scene 1: girl finds an old book and reads contents Scene 2: girl uses the map to locate a palm tree Scene 3: girl follows spiral from tree to treasure site Coding spiral motion in Scene 3 is greatest challenge Many natural spirals are based on Fibonacci numbers Fibonacci numbers (sequence) Number > 1 is found by adding two preceding numbers Example: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... Spiral inscribed in rectangles built from the sequence Alice in Action with Java

52 Spirals and the Fibonacci Function (continued)
Alice in Action with Java

53 Spirals and the Fibonacci Function (continued)
Approximating Fibonacci spiral in playScene3() Have girl move 6 times Distance of each move equals next Fibonacci number While moving forward, girl also turns left 1/4 revolution playScene3()requires a fibonacci()function To be designed and implemented in the next section Save girl as fibonacciGirl for possible reuse Alice in Action with Java

54 Spirals and the Fibonacci Function (continued)
Alice in Action with Java

55 The Fibonacci Function
Defining the outline of fibonacci()function Select girl and create a function named fibonacci Create a Number parameter named n Formula: if n > 1, f(n) = sum of two preceding numbers Designing an algorithm to generate the nth number Create local variables: result, nextToLast, last Add if statement to the function If n == 1 or n == 2, result = 1 Otherwise calculate nth value using formula in for loop fibonacci()calls in playScene3() specify spiral Alice in Action with Java

56 The Fibonacci Function (continued)
Alice in Action with Java

57 Summary Flow control statement: controls the flow of statement execution Condition: Boolean expression producing a true or false value Boolean function: returns true or false value Boolean variable: holds value of true or false Relational operators: ==, !=, <, <=, >, >= Alice in Action with Java

58 Summary (continued) Boolean operators: AND, OR, NOT
if statement: directs flow along one of two paths based on evaluation of a condition for statement: repeats execution of a group of statements a fixed number of times while statement: repeats execution of a group of statements an arbitrary number of times wait()statement: a statement that pauses program flow for a specified number of seconds Alice in Action with Java


Download ppt "Alice in Action with Java"

Similar presentations


Ads by Google