apcs-a: intro alice: program design and implementation september 12, 2005

42
APCS-A: Intro Alice: Program Design and Implementation September 12, 2005

Upload: fred-gold

Post on 14-Dec-2015

227 views

Category:

Documents


0 download

TRANSCRIPT

APCS-A: Intro

Alice: Program Design and Implementation

September 12, 2005

Alice Exploration

• Demo of Alice programs

• Discussion of what we discovered

Alice Design Process

• Read the scenario A description of the problem or task

• Design (Plan ahead) Storyboard (visual or textual) Evaluate & revise - think objectively about what might

be changed

• Implement (Write the program) Dragging and dropping the components

• Test (See if it works) Does the program act how you expect it to?

Methods

• A method is something an object does In Alice, it is a set of instructions that defines how to

perform a specific task

• Alice automatically creates World.my first method that happens when the world starts (when you click play)

• An argument is information a method needs to execute an action The move method takes several arguments

Control Statements

• Sequential programming Do in order

• Simultaneous programming Do together

• Sets up a block of code - everything inside that block happens as specified by the block

Nesting

• A control statements may be placed inside another Example: We can put a small block of “do

together” code inside a bigger block of “do in order” code

Bugs

• Errors in computer science are called bugs. • In Alice, your “bugs” will be of two types:

Visual bugs: you expected one thing to happen, but actually programmed your method to do the wrong thing

Alice bugs: The programmers who wrote Alice didn’t find all the problems, so sometimes Alice will tell you it is quitting due to an unexpected bug. It is not your fault.

• Finding bugs in a program and fixing them is called debugging

Properties

• A property can also be called a definition (or sometimes a variable). It is something the object knows about itself.

Comments

• All good programs have comments which describe in regular English what the program is doing (in general, at a given step, before a particularly hard to understand point in code, etc)

• Comments are ignored by the computer, they are written for people looking at your code

Homework

• Mr. Forgetful is a referee for the STA football game which starts in an hour. His uniform, rule book, flag and whistle are all locked in his gym locker, but unfortunately he has forgotten the combination to the lock. He even bought an easy lock to begin with! The lock he owns has three dials, with numbers 0-2.

• Mr. Forgetful has asked you to help him out with his problem. He needs a surefire way to figure out the combination to his lock. A) Describe to Mr. Forgetful the steps he should take to systematically

find a way to get his lock open. Take into account the fact that he’s very stressed out - so you need to specifically tell him each individual step -- how to set the numbers, etc. (i.e. Don’t just say “try combination 011”)

B) How many combinations will he potentially have to try to get his lock open?

C) (Extra credit) If it takes him 1 second to set each number, will he make the football game?

APCS-A: Intro

Alice: Control Structures

September 13, 2005

Checkpoint

• Homework

Functions

• In Alice, functions are used to ask questions about an object’s properties (most programming languages do not distinguish between

methods and functions)

• Alice provides many built-in functions, in these basic categories: Proximity Size Spatial relation Point of view Other

Answers to functions

• Each of Alice’s built-in functions returns an answer

• The most common type of answers are: Number Boolean value (true or false) String Object

Combining Functions

• We can use these functions in many ways.• If we wanted to move a penguin from an arbitrary place in

the world to her igloo, how would we do so?

• Move Method• Functions:

Distance to Object’s width

• Math manipulation of the above

Conditionals

Sometimes what we want our program to do depends on certain conditions

Is it raining?

Yes No

Take an Umbrella

Bring aswimsuit

Does x = 0?

Yes No

Say “Can’t divide by zero”

Return y/x

Conditional Control Structure

• Use the if/else statement by dragging it into the editor

• Needs a function that will evaluate to true or false, if the answer is true, only the “IF” part happens, if the answer is false, the “Else” part happens --> and “do nothing” is an acceptable action

Relational Operators

• Located in World’s functions in the math category

• Use these to compare values to each other == is equal to != is not equal to > is greater than < is less than >= is greater than or equal to <= is less than or equal to

Boolean Logic

• Also located in World’s functions

• Not a --> not

• Both a and b --> and

• Either a or b, or both --> or

Other World Functions

• Advanced Mathematical operators Min, max, sin, cos, powers, logs, etc

• Ask user For a string, number, or yes/no

• Random number generation• Time questions• Etc• Need to make sure you use things in the proper

places, which the editor helps you figure out

Repetitions

• A control structure that easily lets you repeat an action a given number of times Must enter a whole number of times

• Under more options, you can choose to count (increment) by 1 or more

• Discussion: Why would you ever want to increment by more than 1?

Try It!

• (Exercise 7 from Alice book)• Create a world with a snowman and a stool, with the two object kind

of far apart. Use a loop to make the snowman move to the stool, one meter at a time. Use a distance to function to determine the number of times the loop repeats. (The distance to function might return a fractional distance such as 3.75 meters. The loop statement truncates the fractional number to the integer 3 and will repeat 3 times.) We recommend that you test your solution by moving the snowman and the stool to different locations on the screen and running the program with each change, so you can tell whether it works no matter where the objects are located

APCS-A: Intro

Alice: Classes, Objects, Methods, and Parameters

September 14, 2005

Classes

• A class defines a kind of object In Alice, classes are predefined as 3d models

• Think of the class as a blueprint that tells Alice how to create & display an object of that class

• Instantiation is the process of creating the object instance from the class

Objects

• An object is one particular instance of a general class Frank is an instance of the Person class

• The person class would specify that all person objects would have hairColor and eyeColor The Frank instance would have values for

hairColor and eyeColor (like black and brown)

Classes vs Objects

• The difference between classes and objects is an important distinction in OO-programming

• Do you feel comfortable with the distinction?

• Identify the following as class or object: Dog Spike the dog Car Ms.K’s Saturn Canoe

Methods

• Something an object does A set of instructions

• Primitive methods (in Alice) These are the pre-defined methods built-in to the system like

move, turn, say, etc

• But as you saw in the ice-skating program, other methods can be defined

• What belongs in a method? Everything… but think about making a new method whenever

you can logically define something as a separate task

Abstraction

• Methods can keep a program from getting too long by allowing the programmer to divide a task into smaller parts

• When we have a method that does a series of steps that we can think of as one unit, we have abstracted away part of the details of the program Instead of thinking of “Move” as the individual steps - we think of

it as one action• We don’t have to worry about each individual action that goes into

making something move

• Having separate methods also makes the program more readable (and more organized)

And Ms. K likes things organized :)

Parameters

• The pieces of information that a method or function needs in order to carry out the action Also known as arguments

• Parameters are a form of object-object (or method-method) communication

• Think of the parameter as a basket (with a name) that received information for the method to use

More about methods

• A method that defines a behavior for a single object is a class-level method

• A method that defines behaviors for several objects is a world-level method

• Methods can call as many other methods as it wants

• A method needs to be invoked (called) before it is executed

Making new methods

• Each method tab has a button that allows you to “create new method” You will be prompted to enter a name Then an new editor pane opens up where you can begin your

code

• You can define as many different methods as you want And then World.myFirstMethod could just call them in order

• World.StartObjectsMoving• World.SurpriseEvent• World.RunAway

Or you can start to do even more exciting things…

Dance Recital

• You have been tasked to show off the dance routine for a group of 15 ballerinas. The first step of the choreography is to have each dancer move forward, “jump”, and move back How would you do this? (Let’s sketch ideas on

the board)

Parameterized methods

• When you have a set of objects that all need to do the same thing, you don’t want to have to repeat the same code over and over You can take in the object as a parameter, and have the set of

repeated actions in the method body

• When you define a new method, you have the option to “create new parameter” A dialog box asks you to name your parameter (a placeholder

name) and for the type of parameter (number, boolean, object, or other)

Then you can drag the parameter name from the method header into the editor to call methods

• Only methods that are common to all objects are visible

Multiple Parameters

• What if in our dance recital, we want the 1st dancer to move forward 1 meter, the 2nd 2 meters, and so on? We need a way to specify the distance for

each dancer object in our “dance” method

• We can create a second parameter, call it d, with type number, and use that in the move instruction for each object

Choreographer

You’re the choreographer! You will make a dance routine for 10 ballerinas (or ice-skaters, penguins, or whatever). Using a parameterized method like we have discussed today, make up one routine that all the objects do (in order or in parallel). You will call your parameterized method from a new method that you create called “CurtainUp”. Replace World.MyFirstMethod with CurtainUp as the method that is called when the world starts.

APCS-A

Alice: Classes, Objects, Methods, and Parameters Revisited

September 15, 2005

Yesterday…

• We talked about classes, objects, methods and parameters and we practiced making some new world level methods (with the choreographer exercise) I think we need some more work on that, but

first lets look at one or two more things (since we won’t have a lecture tomorrow)

Creating Class-Level Methods

• Basically the same as the world-level methods

• But when you create a class-level method, you can save an object with new methods as a new kind of object IceSkater becomes FancySkater with new methods The new class inherits all the properties and methods of the

original class (anything IceSkater did, FancySkater can do)

Skate Method

• To make a skate method that looks realistic, you want the skater to slide on each leg as she moves forward To Slide realistically, you may want to lean the

upper body as you lift a leg

• Already, we have split our task up: Skate Method - has steps of move & slide Slide Method - has steps of lift leg and turn

upper body

Spin Method

• To make a spin method, we need to know how many times we want the skater to spin Also, in order to spin, we may want the skater to move her arms up and

change the leg position (prepare to spin) before the spinning happens, and after spinning, we want to return the skater back to her normal position (finish the spin)

• (The exact steps the book suggests for realistic looking movements are a little funny and would probably have to be found otherwise by trial & error) Things like turning arms backwards to left them up and preparing leg by

turning it left and backward for .2 and .25 revolutions, respectively

Creating new classes

• Once you have added new methods to a class, you can save it as a new class, a new 3d model that can be imported First, right-click rename the iceSkater in the world hierarchy -> to

FancySkater Then, right-click to select save object which writes a new file with

extension .a2c

• This class can then by imported (File>Import) and used in new worlds

• Note: make sure that you do NOT refer to other objects in your new class methods (We will talk about exceptions to this Monday)

Schedule

• Rest of today and class time tomorrow (for those of you here) : we will be working with Alice on parameterized class & world level methods After you finish the dance routine, you can make up your own animation

or see Ms. K for a project idea from the book

• Become comfortable with using methods & parameters You will show your new animation in class Monday

• Abstract Article (Due Monday) Read an article about computer science that seems interesting to you and write a 1/2-1 page single-spaced paper in which you give a brief summary of what you read, what you thought was cool about it and what (if any) implications you think it may have for computer science or for society in general Please take a magazine with you, but bring it back next week!