Students learn how to define lines of code as a set value that can be used repeatedly in different situations, similar to a variable in math.
Prerequisites |
|
Relevant Standards |
Select one or more standards from the menu on the left (⌘-click on Mac, Ctrl-click elsewhere). Oklahoma Standards
|
Lesson Goals |
Students will be able to:
|
Student-facing Goals |
|
Materials |
|
Preparation |
|
Key Points For The Facilitator |
|
Click here to see the prior unit-based version.
- contract
-
a statement of the name, domain, and range of a function
- datatypes
-
a way of classifying values, such as: Number, String, Image, Boolean, or any user-defined data structure
- definitions area
-
the left-most text box in the Editor where definitions for values and functions are written
- value
-
a specific piece of data, like 5 or "hello"
- variable
-
a letter, symbol, or term that stands in for a value or expression
🔗What’s in Common? 30 minutes
Overview
This activity introduces the problem with duplicate code, leveraging Mathematical Practice 7 - Identify and Make Use of Structure. Students identify a common structure in a series of expressions, and discover how to bind that expression to a name that can be re-used.
Launch
Students should be logged into code.pyret.org.
Take a look at the expressions below:
star(50, "solid", "green")
scale(3, star(50, "solid", "green"))
scale(0.5, star(50, "solid", "green"))
rotate(45, star(50, "solid", "green"))
rotate(45, scale(3, star(50, "solid", "green")))
-
What code do they all have in common?
star(50, "solid", "green")
-
What would happen if you were asked to change the color of all the stars to gold? We’d have to change it everywhere it appeared.
Duplicate code is almost always bad!
There are lots of potential problems with duplicate code:
-
Readability: The more code there is, the harder it can be to read.
-
Performance: Why re-evaluate the same code a dozen times, when we can evaluate it once and use the result as many times as we need?
-
Maintainability: Suppose we needed to change the size of the stars in the examples above. We would have to make sure every line is changed, which leaves a lot of room for error.
Since we’re using that star over and over again, wouldn’t it be nice if we could define a "nickname" for that code, and then use the nickname over and over in place of the expression?
Investigate
You already know how to do this in math: x = 4 + 2 evaluates the expression, and defines the nickname x to be the value 6.
Pyret is no different! We type x = 4 + 2
to define x
to be the value 6.
-
Start a new program, and type this code into the Interactions Area.
-
What happens when you hit Enter?
-
Can you explain what happened or didn’t happen?
Expressions evaluate to answers. Definitions don’t.
Think back to math: x = 4 + 2 doesn’t have an "answer". All it does is tell us that anytime we see x, we know it stands for 6. We only see a result when we use that definition, for example x × 5 will evaluate to 30.
On the computer, try using the definition of x
by multiplying it by 5.
-
What is the usefulness of defining values? Lets the programmer reuse code, saves time, lets the programmer make changes easily, allows us to more easily use elements inside other functions
-
What datatypes can we define values for? All of them - Number, String, Image
Support for English Language Learners MLR 8 - Discussion Supports: As students discuss, rephrase responses as questions and encourage precision in the words being used to reinforce the meanings behind some of the programming-specific language, such as "define" and "value". |
Of course, the whole point of defining a value is so that it sticks around and can be used later! That’s why programmers put their definitions on the left-hand side, known as the Definitions Area.
-
Complete Defining Values - Explore (Page 16) in your student workbook. What else can you define?
-
Complete Defining Values - Practice (Page 17) with their partner.
🔗Cleaning Up Code 20 minutes
Overview
This activity is a chance to play with new concepts, combining value definitions and function composition to create new shapes or to clean up code that generates shapes. The engaging nature of the activity is designed to motivate lots of experiments, each of which gives students a chance to practice applying those concepts.
Launch
The ability to define values allows us to look for - and make use of - structure in our code or in our equations. What structure is repeated in this expression?
(x + 1)^2 - 4/( (x + 1) ) × -2(x + 1)
Investigate
Have students open this file , which draws the Chinese flag.
-
This file uses a function students haven’t seen before! What is it?
-
What is it its contract?
-
Have them change the color of all the stars from yellow to black
-
Have them identify what structure is repeated
-
Have them use a value definition to simplify the code
-
Have them change the stars from black back to yellow
Optional (for a longer time commitment):
Have students choose a flag from this list of images: (Flags of the World), and recreate one (or more!) of the flags using define
and any of the other functions they’ve learned so far.
Synthesize
How many reasons can students come up with for why defining values is useful?
These materials were developed partly through support of the National Science Foundation, (awards 1042210, 1535276, 1648684, and 1738598). Bootstrap:Integrated Oklahoma by Jen Poole is licensed under a Creative Commons 4.0 Unported License. Based on a work at www.BootstrapWorld.org. Permissions beyond the scope of this license may be available by contacting schanzer@BootstrapWorld.org.