introducing while loops (and random numbers too) alice

24
Introducing While loops (and random numbers too) Alice

Upload: hester-lawrence

Post on 17-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducing While loops (and random numbers too) Alice

Introducing While loops (and random numbers too)

Alice

Page 2: Introducing While loops (and random numbers too) Alice

Interesting tidbit from lab

Tracing codeThe problem: We were getting an array out of bounds error, but didn’t know on which iteration of the loop it was failing!

The code looked something like:for (x=0; x<this.getWidth();x++)

{

for (y=0;y<this.getHeight();y++)

{

Pixel somepixel = this.getPixel(x,y);

Page 3: Introducing While loops (and random numbers too) Alice

Interesting tidbit from lab

Tracing codeThe solution: Print out the values of x and y each time through the loops, to see where the problem is!

The debug code looked something like:for (x=0; x<this.getWidth();x++)

{

for (y=0;y<this.getHeight();y++)

{

System.out.println(x + “ “ + y);

Pixel somepixel = this.getPixel(x,y);

Page 4: Introducing While loops (and random numbers too) Alice

Lecture objectives

To examine the while loop in AliceIn Java, the while loop has been presented as an alternative to the for loop for going through the pixels in an array

It is used in another kind of application, when we do not know a priori how many iterations will be needed

For example, when random motion is involved

Page 5: Introducing While loops (and random numbers too) Alice

Random Numbers

Random numbers are used in certain kinds of computer programs

Examples: security for web applications

encryption for satellite transmissions

gaming programs

scientific simulations

In this session, we will look at examples of how to use random numbers in animations

Page 6: Introducing While loops (and random numbers too) Alice

Built-in functions

Alice provides World-level built-in functions for generating random numbers.

Page 7: Introducing While loops (and random numbers too) Alice

Demo

20Penguin

Concepts illustrated in this example The random number function returns a floating point value between 0 and 1.

A different range of values can be obtained by using the minimum and maximum parameters.

The integer only option allows selection of either floating point or whole numbers.

Page 8: Introducing While loops (and random numbers too) Alice

Random 3D MotionIn the previous example, the penguin moves in only one direction.

In some animations, we want an object to move to a random location in 3D. We call this random 3D motion.

For example, the goldfish in this world is to swim in a random motion, where the fish can move in any direction .

Page 9: Introducing While loops (and random numbers too) Alice

Six possible directions

Of course, six move directions are possible forward, backward, left, right, up, down

In this example, we can eliminate backward because goldfish do not swim backward.

To simplify the code, we can take advantage of negative numbers.

For example, this instruction actually moves the goldfish right:

Page 10: Introducing While loops (and random numbers too) Alice

Storyboard

Only three move instructions are needed: up (will move down if the random number is negative)

left (will move right if random number is negative)

forward (no backward motion)

Two parameters (min, max) will be used to restrict the motion of the fish to a nearby location-- to look like swimming.

randomMotion

Parameters: min, max

Do together fish moves up a random number distance fish moves left a random number distance fish moves forward a random number distance

Page 11: Introducing While loops (and random numbers too) Alice

Demo

20GoldfishConcepts illustrated in this example

A random movement in 3D space is accomplished by three simultaneous move instructions. In this example, the minimum distance of the move forward instruction is 0 (the goldfish always moves forward). To call the randomMotion method, min and max values are sent as arguments to the parameters

Page 12: Introducing While loops (and random numbers too) Alice

Indefinite repetition

In some situations, we don’t know exactly how many times a block of instructions should be repeated.All we know is that repetition is needed

For example, in a board game like chess or checkers, we don’t know exactly how many moves it will take for a player to win or lose the game – all we know is that several moves will be needed.

Page 13: Introducing While loops (and random numbers too) Alice

Indefinite Repetition

In programs where a count of repetitions is not known (indefinite), we can use one of two repetition control mechanisms:

While statement Recursion

This session focuses on the While statement.

Page 14: Introducing While loops (and random numbers too) Alice

How the While statement works

The general idea is: While some condition is true

execute instruction(s)

To write a While statement, we need to know the condition that determines whether the loop will be repeated.

Page 15: Introducing While loops (and random numbers too) Alice

ExampleA common feature in popular "action films" is an exciting chase scene.

As an illustration of an animated chase scene, consider the hungry shark in this world. The shark is going to chase after and catch a fleeing fish.

Page 16: Introducing While loops (and random numbers too) Alice

Problem

The problem is how do we get the shark to chase the goldfish in a chase-like action?

The shark should not immediately catch the goldfish (otherwise, there would be no chase).

The goldfish (assuming self-preservation instincts) should appear to be fleeing.

Page 17: Introducing While loops (and random numbers too) Alice

Solution

To create a chase scene, At the same time, the shark will swim a short distance toward the fish and the fish will swim a short distance away from the shark.

The fish will flee to a random (but nearby) location.

As long as the goldfish is still 0.5 meters away from the shark, repeat the actions.

Page 18: Introducing While loops (and random numbers too) Alice

Storyboardchase

While the goldfish is more than 0.5 meters away from the shark Do in order shark point at the goldfish Do together shark swim (toward the goldfish) goldfish flee (away from the shark)shark eat (the goldfish)

The shark swim, goldfish flee, and shark eat actions are complex. Use stepwise refinement to break them down into simple steps.

Page 19: Introducing While loops (and random numbers too) Alice

chase

While the goldfish is more than 0.5 meters from the shark Do in order Point the shark at the goldfish Do together shark swim goldfish flee shark eat (goldfish)

swim

Do in order urn torso left and move forward turn torso right and move forward turn torso left and move forward

flee

Do together

wiggle tail move to random location

Eat

Parameter: whatDo in order shark points at what shark opens jaw and what disappears shark closes jaw

Page 20: Introducing While loops (and random numbers too) Alice

Demo

20Chase

Concepts illustrated in this example A While statement uses a Boolean condition to determine when the repetition ends.

Code written in a previous program can be reused in a new program.

In this example, the flee method calls the previously written randomMotion method.

Page 21: Introducing While loops (and random numbers too) Alice

Shark will catch goldfish

How do we know the shark will eventually catch the goldfish?

The shark always moves 0.4 meters toward the goldfish

The goldfish's random motion is restricted by the min and max values used in the random number function.

Page 22: Introducing While loops (and random numbers too) Alice

The loop will end

Geometrically, the fish can never move more than 0.35 meters away

The shark has a distance advantage and will eventually catch up. The loop will end.

0.20.2

0.20.35

Page 23: Introducing While loops (and random numbers too) Alice

General “Rule of Thumb”

As a general rule, a While loop should be written so the loop will eventually end.

Requires that statements within the loop change the conditions of the world such that the condition for the While statement will eventually become false.

If the While loop never ends, it is an infinite while loop.

Page 24: Introducing While loops (and random numbers too) Alice

Reading

Alice Chapter 6, Tips & Techniques 6, Random Numbers and Random Motion

Alice Chapter 7-2, Indefinite While loops