Download - Office Mix

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Mathematics of radio engineering wikipedia , lookup

History of the function concept wikipedia , lookup

Function (mathematics) wikipedia , lookup

Location arithmetic wikipedia , lookup

Elementary mathematics wikipedia , lookup

Pythagorean theorem wikipedia , lookup

Addition wikipedia , lookup

Weber problem wikipedia , lookup

Transcript
functions
functions – learning targets
•
I will be able to understand how to trace function
•
I will be able to learn how to lavage inputs and outputs
with functions
•
I will be able to learn how to write algorithms and
methods in constructing statements
functions– common core state standards
• Educational
Technology
• Language
• Reading
• Science
• Math
1.1 Innovate: Demonstrate creative thinking, construct knowledge and develop
innovative products and processes using technology.
1.3 Investigate and Think Critically: Research, manage and evaluate information
and solve problems using digital tools and resources
2.4 Adapt to Change (Technology Fluency): Transfer current knowledge to new
and emerging technologies
L.11-12.3. Apply knowledge of language to understand how language functions in
different contexts, to make effective choices for meaning or style, and to
comprehend more fully when reading or listening.
RI.11-12.1. Cite strong and thorough textual evidence to support analysis of what
the text says explicitly as well as inferences drawn from the text, including
determining where the text leaves matters uncertain
9-12 APPD The ability to solve problems is greatly enhanced by use of
mathematics and information technologies
9-12 INQF Communicate Science is a human endeavor that involves logical
reasoning and creativity and entails the testing, revision, and occasional
discarding of theories as new evidence comes to light.
S-CP.9. Use permutations and combinations to compute probabilities of
compound events and solve problems.
N-Q.1. Use units as a way to understand problems and to guide the solution of
multi-step problems; choose and interpret units consistently in formulas; choose
and interpret the scale and the origin in graphs and data displays.
functions
functions: a collection of lines of code with
a name that one can call. Functions can
have inputs and outputs.
functions
o
Functions are sub-scripts that let you write
more complicated programs.
o
Anything that can happen in normal code
can happen in a function.
o
However, variables are generally not
shared across functions
practice
o
Write a function that draws an equilateral
triangle, then call it from the main portion
of your program.
o
If you finish, try coming up with ways to
call the function multiple times
parameters
o
One powerful way to use functions is to
add parameters.
o
These are variables that are passed
between the caller and the function, and
let the function act in different ways.
inputs
o
inputs are the values passed when
calling a function. (‘params’ tab in app)
“x” is an input
“x” is a number
action sum(x : Number, y : Number)
z := x + y
“y” is also a
z->post to wall
number input
you can use inputs in the function.
They already exist when you enter
the function.
inputs
o
What will main do?
action main
code->sum(1, 2)
code->sum(5, 7)
action sum(x : Number, y : Number)
z := x + y
z->post to wall
outputs
o
Outputs are the values returned when
leaving a function. (‘returns’ tab in app)
“r” is an output
“r” is a number
action sum(x : Number, y : Number)
return r : Number
r := x + y
we assign the value to the output.
This will be the value returned by
sum
outputs
What will main do?
action main
var z := code->sum(4, 3)
z->post to wall
o
action sum(x : Number, y : Number)
returns r : Number
r := x + y
exercise 1
o
write an action that computes the sum of 3
numbers and posts it to the wall.
o
write an action that returns the sum of 3
numbers
exercise 2
o
write an action that takes a “length”
number and draws a pentagon using that
length
o
add a parameter for the color and draw the
triangle with that color
recursion
an function that calls itself…
square
o
Start by drawing a square using a function
called square.
o
We’ll add recursion to this on the next
slide.
square recursive
private action square(side : Number, depth: Number)
for 0 <= i < 4 do
turtle->forward(side)
turtle->left turn(90)
recursion!
square calls itself
if depth > 0 then
▷square(side * 0.4, depth – 1)
action main
turtle->initialize
▷square (200, 4)
squares recursive
action square(length : Number, depth : Number)
for 0 <= i < 4 do
turtle->forward(length)
turtle->turn(90)
recursion!
square calls itself
if depth > 0 then
▷square(length * 0.4, d – 1)
action main
turtle->initialize
▷square(200, 4)
smaller square
going deeper into
the fractal
tree – first step
1.
2.
3.
4.
5.
6.
7.
8.
9.
Move forward side
Turn left 20 degrees
Move forward side * 0.8
Move backwards side * 0.8
Turn right 40 degrees
Forward side * 0.8
Backwards side * 0.8
Left 20 degrees
Backwards side
tree – first step
Private action tree(side : Number, depth: Number)
turtle->forward(side)
turtle->left turn(20)
turtle->forward(side*0.8)
turtle->forward(-side*0.8)
turtle->right turn(40)
turtle->forward(side*0.8)
turtle->forward(-side*0.8)
turtle->left turn(20)
turtle->forward(-side)
how do we add recursion?
o
Do we want to add it at the end?
o
At the beginning?
o
Maybe we want to replace some aspect of
the program we’ve already written?
adding recursion
Try replacing the 2 lines below with
recursion (in the tree action):
turtle-> move(side*0.8)
turtle-> move(-side*0.8)
branches
o
Let’s draw a branch… how do you draw
4:forward –c/2
this?
7: forward c/2
8: forward –c/2
9: right turn 45
10: forward -c
5: left
turn 45
6: left
turn 45
3: forward c/2
2: right turn 45
1: forward c
branch action
action branch(c : Number)
// go to trunk
turtle->forward(c)
// rotate towards right branch
turtle->right turn(45)
// move to tip of the right branch
turtle->forward(c/2)
// go back to the top of trunk
turtle->forward(-c/2)
// cancel right turn
turtle->left turn(45)
// rotate towards left branch
turtle->left turn(45)
// move to tip of the left branch
turtle->forward(c/2)
// go back to the top of the trunk
turtle->forward(-c/2)
// cancel right turn
turtle->left turn(45)
// go back to base
turtle->forward(-c)
branch becomes tree
tree action
action branch(c : Number, d : Number)
// go to trunk
turtle->forward(c)
// rotate towards right branch
turtle->right turn(45)
// move to tip of the right branch
turtle->forward(c/2)
if d > 0 then
branch(c * 0.4, d – 1)
// go back to the top of trunk
turtle->forward(-c/2)
// cancel right turn
turtle->left turn(45)
// rotate towards left branch
turtle->left turn(45)
// move to tip of the left branch
turtle->forward(c/2)
if d > 0 then
branch(c * 0.4, d – 1)
// go back to the top of the trunk
turtle->forward(-c/2)
// cancel right turn
turtle->left turn(45)
// go back to base
turtle->forward(-c)
exercises
o
o
o
o
change the thickness of the trunk and
branches based on the depth – it should get
thinner as you draw deeper the branches
change the color from brown (top level) to
green (deepest level)
instead of 2 child branches, use 4 child
branches (tip: use a for loop).
add small random variations to the turns and
moves to make the tree look more ‘natural’.
turtle exercise
o
Write a program that draws a square. Use
a variable to represent the side length.
o
Once you’re done, choose a random color
and a different pen thickness for each
side.
o
You can also try drawing other shapes
practice
o
Go back and add a parameter for side
length to your triangle function.
o
Try calling your function with different
values for that parameter.
experiment
o
There are lots of cool geometric drawings you
can make with turtle. Here are a few ideas to
get you started:
o
Use functions within a loop so that they get
called many times.
o
Draw circles, diamonds, or stars.
o
Try functions that don’t return the turtle to
where it started.
exercise
o
Write an app that draws a circle using
twenty sides.
o
Make sure to use a variable to represent
side length – you may be surprised to see
how big or small your circle will be
exercise 0
o
Write an app that prints the squares of the
numbers 0 through 100 to the wall
Too easy? Try writing an app that finds the sum of
those numbers instead.
exercise 1
o
o
o
o
start a new turtle script
create an new action, named ‘triangle’, that draws a triangle of length 200
action triangle()
for 0 ≤ x < 3 do
turtle->forward(200)
turtle->left turn(120)
in ‘main’, create a ‘for loop’ that calls the ‘triangle’ action 100 times
turtle->initialize
for 0 ≤ x < 100 do
code->triangle
after each ‘triangle’ call, rotate the turtle by 5 degrees
turtle->initialize
for 0 ≤ x < 100 do
code->triangle
turtle->left turn(5)
exercise 2
o
change the ‘triangle’ action to take the side length as an input,
use that length when drawing the triangle
action triangle (length : Number)
for 0 ≤ x < 3 do
turtle->forward(length)
turtle->left turn(120)
o
in main, when calling ‘triangle’ in the for loop, increase the
length by 5 per iteration
var length := 20
for 0 ≤ x < 100 do
code->triangle(length)
turtle->left turn(5)
length := length + 5
exercise 3
o
change ‘triangle’ to take the side color as
an input
o
in ‘main’, when calling ‘triangle’, use a
random color
exercise 4
o
change ‘triangle’ to take the side thickness
as an input. The unit of thickness is pixels.
o
in ‘main’, when calling ‘triangle’, increase
the thickness on each iteration
exercise 5
o
change ‘triangle’ to take the number of
sides as an input. For a triangle, #sides is
3, for a square #sides is 4, etc…
o
in ‘main’, increase the number of sides of
the polygon being drawn on the screen on
each iteration.
o
recreate the following turtle drawing
o
start by creating an action that draws a
line of gears
o
then use it in a loop…
o
think like a turtle
inputs/outputs
“x” is an “number” input
“y” is a “number”
input
action sum(x : Number, y : Number)
return r : Number
r := x + y
“r” is an “number” output. Its value
is what the function returns.
action sub(x : Number, y : Number)
returns r : Number
What does ex1, ex2, ex3 do?
r := x – y
action add(x : Number, y : Number)
returns r : Number
r := x + y
action ex1()
var z := code->sub(10, 5)
z->post to wall
action ex2()
var z := code->add(10, 5)
z := code->sub(z, 6)
z->post to wall
action ex3()
var z := code->sub(code->add(1, 2), code->add(4, -1))
z->post to wall
var z := code->sub(code->add(1, 2), code->add(4, -1))
Always process the inner expressions first... We evaluate the
first code->add call.
var z := code->sub(3, code->add(4, -1))
Then the 2nd add call
var z := code->sub(3, 3)
and finally, the call to ‘sub’
var z := 0
last turtle
• once you are done with the basic shape, add your own colors/mods/customizations
• publish your script so that we can demo it to the class!
recursion
Writing a function that calls itself
sum
sum 1 to 2 = 1 + 2
sum 1 to 3 = 1 + 2 + 3
= (sum 1 to 2) + 3
sum 1 to 4 = 1 + 2 + 3 + 4 = (sum 1 to 3) + 4
sum 1 to 5 = _____________ = (sum 1 to __) + ___
sum 1 to 6 = _____________ = (sum 1 to __) + ___
Now let’s say n is any positive number
sum 1 to n = 1 + 2 … + n – 1 + n=
(sum 1 to ___) + ____
factorial
factorial(n) = n! = 1 * 2 * … * n
1! = ____________
2! = ____________ = _____ ! * _______
3! = ____________ = _____ ! * _______
4! = ____________ = _____ ! * _______
Now let’s say n is any positive number,
n! = ____________ = _____ ! * _______
what is recursion?
o
Recursion is when a action calls itself
o
Here’s an example that calculates sum 1 to n:
action sum(n : Number) returns r : Number
if n = 1 then
r := 1
else
r := n + code->sum(n-1)
recursion is awesome
o
Recursion lets you write extremely
complicated programs succinctly
o
Recursion lets you write programs that
would be nearly impossible otherwise
o
Recursion is an awesome concept once
you really understand it
recursion is hard
o
Keeping track of what a recursive function
does is confusing
o
Writing functions that work at multiple
levels of recursion is challenging
o
Infinite recursion can crash your program
•
Look at the sum function from a few slides
ago. What happens when n = 0?
factorial
o
Try changing your program to calculate n
factorial instead of the sum of the numbers
up to n.
o
Remember n factorial, or n!, is equal to 1 *
2*…*n