Programming with Scratch

advertisement
Summer Computing Workshop
PROGRAMMING WITH SCRATCH
Introduction to Variables
 Variables are used in every aspect of
programming. They are used to store data the
programmer needs later in the program. Let’s
create a variable for the new sprite. Call this
variable “score”. On the left you should see
and
blocks. These are the two most used
blocks when it comes to manipulating variables in
Scratch. Programmers use similar methods of
setting the value to a specified number, or
incrementing/decrementing the value. Now we will
look at a brief overview of this session.
Session 5
Basic Overview
 Incrementing/Decrementing Variables – This function is useful when
decreasing or increasing variables by a specified number (e.g. the a
player losing lives in a game or increasing a player’s score).
 Setting Variables – This function is used to set the variable’s value to
a specified number (e.g. setting the score to zero after the game is
restarted or setting the players lives to max after the game is
restarted)
 Using Variables – Programmers use variables to store data for later
use.
 Problems/Type differences – Similar to the issues related with input,
different types of data may have unexpected outcomes.
Incrementing/Decrementing Variables

For this examples we need a forever loop, an if conditional block, a change score
by block, a change x by block, another sprite (total of 2), and another block we
haven’t used before called
. This block is found in the sensing
category and will be used in the predicate part of an if/else block to detect the
collision of some other object (another sprite, an edge, etc).

We also need to give the user control over the cat similar to the cat in the input
session. Use whatever type of single-character input you want, allow the user to
move the cat towards the other sprite eventually allowing them to collide.

Now we will create a structure that increments the score only if the two sprites
are touching. Let’s construct this example (see example 5.1 on the Constructed
Examples page at the end of this section).

Notice what happens when we stop and restart the program, the score doesn’t
change as though the game started over. This is where the ability to set the
variable comes in handy.
Setting Variables
 To demonstrate setting a variable, we will use the same script
we just pieced together.
 Drag a
to the scripts area and put it above the
forever loop but still a part of the Scratch script. When do you
think the variable score will be set; before the next game
starts, or as the next game starts? Run the script and see for
yourself (see example 5.2 on the Constructed Examples page
at the end of this section).
 If you notice, the setting of the variable doesn’t occur when
the stop button is pressed, it occurs after the green flag is
clicked again. Now we will enter single stepping mode and
watch the script as it runs in order to further establish this
concept.
Using Number Variables
 There are many different ways programmers use variables
throughout their programs. Variables that contain numbers
are often used in repeat blocks, move blocks, and change
by blocks. Numbers can also be stored for later use in the
program.
 For this example, we need to construct a script that asks
the user how far they want the sprite to move, then sets
that value to a variable called “move.” The sprite then
moves right or left depending on the entered value.
 Construct example (see example 5.3 on the Constructed
Examples page at the end of this section).
Using Word Variables

Words can also be used and stored into variables. Examples could be
asking someone's name, or what their favorite color is, or if they would
like to continue with the program.

The example we will construct will modify the previous script to also ask
the user if they would like to continue, and if not, to enter the word “no.”
This will require us to create a new variable and set it to the answer.
Everything needs to be in a repeat until loop and we only repeat if the
answer variable is not equal to “no.”

Ok, sounds difficult but it really isn’t too bad. Let’s now construct this
example and see how it works (see example 5.4 on the Constructed
Examples page at the end of this section).

If you stop the script, notice the variable still contains the word “no.”
This means we must set the value of this variable to anything other than
“no” immediately after the script is started.
Problems that could Arise
 In the program we have created, when the sprite asks “How
far would you like me to move?” try entering a word or letter
instead of a number.
 Again the sprite doesn’t move. Just as discussed in the input
session, Scratch doesn’t allow the programmer to specify
different types of data. If you notice, the value of the variable
“move” is whatever you entered. In most other programming
languages, programmers specify what type of content the
variable will contain. If it were possible in Scratch, it would be
good practice to specify what type of data the variable was
going to contain later in the program. This is so we don’t have
incompatible variable types.
Amazing Example

Now we will construct a fairly difficult script using only one sprite. The script demonstrates
how variables can be used throughout a script. The goal is to have the sprite draw a grid
using nested loops and the pen feature that was discussed in session 3.

First, we want to clear what has been drawn and point the sprite in the 90 degree direction.

Ask for the size of each box inside the grid, assign that value to a variable called box size.

Ask for the width of the grid or how many blocks wide and assign it to a variable called
width.

Ask for the height of the grid which is how many boxes high the grid will be and assign the
value to a variable called height.

We will need 3 repeat loops. Now let’s construct our example (see example 5.5 on the
Constructed Examples page at the end of this section).
Constructed Examples
Example 5.1
Example 5.2
Example 5.3
Example 5.4
Constructed Examples
Example 5.5
Projects
1.
Create a Scratch script that averages multiple numbers.
You can either ask the user to enter how many numbers
they would like to average and use a repeat loop, or use
a repeat until loop and wait for the user to enter “done.”
2.
Create a Scratch script that asks the user to enter 2
numbers, stores them as variables A and B, then
switches theses numbers.
Session 5 Questions
1.
What is useful about loops?
2.
Once variables contain a value, can that value be changed?
3.
Can a variable contain a number, then later in the program, contain
words?
4.
If so, could this be a problem?
5.
There are two loops, the outer executes 5 times, the inner executes 3
times. Inside the inner loop, there is a block of code that makes a sprite
say “hello world.” How many times will the sprite say “hello world?”
6.
Can a variable be used any place a number can be used?
Download