Activity Guide - Will It Crash?
Activity Guide - Will It Crash?
Activity Guide - Will It Crash?
Unit 5 - Lesson 7
Name(s)____________________Brian Huynh_____________ Period _2_____ Date _____3/10/2020__
Activity Guide - Will it Crash?
There are a few patterns to the ways if-statements are typically used:
● Basic If-statements
● Sequential If-statements
● Basic If-else statements
● Nested If and if-else statements.
● Combinations of all of the above
Each section below presents an example of one of these common patterns, followed by a few problems
for you to try. For each type study, and make sure you understand, the example and why each of the
3 scenarios ends up in the state shown.
MOVE_FORWARD ()
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
MOVE_FORWARD ()
}
ROTATE_LEFT () Use the diagram to
MOVE_FORWARD () trace each robot move.
ROTATE_LEFT ()
IF (CAN_MOVE (left))
{
ROTATE_LEFT ()
}
MOVE_FORWARD ()
MOVE_FORWARD ()
1
EXAMPLE: Sequential If-statements
Lines of code, including if statements, are
evaluated separately, one at a time, in
order from top to bottom. An if-block
executes ONLY if the expression is true.
Note that an earlier if-statement might
change the state of the of world for an
if-statement that comes later. This makes
it hard to predict what will happen unless
you trace the robot moves and take each
line one at a time.
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
ROTATE_LEFT ()
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
ROTATE_LEFT ()
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
ROTATE_RIGHT ()
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
ROTATE_LEFT ()
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
IF (CAN_MOVE ( left ))
{
ROTATE_LEFT ()
MOVE_FORWARD ()
}
IF (CAN_MOVE ( left ))
{
ROTATE_LEFT ()
MOVE_FORWARD ()
}
IF (CAN_MOVE ( left ))
{
ROTATE_LEFT ()
MOVE_FORWARD ()
}
2
EXAMPLE: If-else Statement
The code in the if-block executes ONLY if
the expression is true, otherwise the code
in the else block will run. But one or the
ust execute. An else statement
other m
can be attached to a single if-statement.
ROTATE_LEFT ()
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
ELSE{ NOTE: Easy to miss
ROTATE_LEFT () MOVE_FORWARD on
ROTATE_LEFT () the last line
}
MOVE_FORWARD ()
Here is a block-based
version of a very similar
program.
IF (CAN_MOVE (left))
{
ROTATE_LEFT ()
MOVE_FORWARD ()
}
ELSE
{
ROTATE_RIGHT()
MOVE_FORWARD ()
}
IF (CAN_MOVE (right))
{
ROTATE_RIGHT ()
}
ELSE
{
ROTATE_LEFT ()
}
MOVE_FORWARD ()
3
EXAMPLE: Nested Statements
You can put if- and if-else statements
inside other if-statements. All previous
rules apply, but tracing the code can be
tricky.
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
}
ELSE
{
IF(CAN_MOVE( backward ))
{
ROTATE_LEFT ()
ROTATE_LEFT ()
MOVE_FORWARD ()
}
MOVE_FORWARD ()
}
MOVE_FORWARD ()
IF (CAN_MOVE (forward))
{
IF (CAN_MOVE (left))
{
ROTATE_LEFT ()
}
ELSE{
ROTATE_RIGHT ()
}
MOVE_FORWARD ()
}
ELSE
{
ROTATE_LEFT ()
ROTATE_LEFT ()
}
MOVE_FORWARD ()
4
Challenge: putting it all together — if, if-else, sequential if, nested statements
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
IF (CAN_MOVE (left))
{
ROTATE_LEFT ()
IF (CAN_MOVE (right))
{
ROTATE_RIGHT()
}
}
}
MOVE_FORWARD ()
IF (CAN_MOVE (forward))
{
MOVE_FORWARD ()
IF( CAN_MOVE (left))
{
IF( CAN_MOVE (right))
{
ROTATE_RIGHT ()
}
ELSE
{
ROTATE_LEFT ()
}
}
ELSE
{
ROTATE_RIGHT ()
}
MOVE_FORWARD ()
}
ELSE
{
ROTATE_LEFT ()
ROTATE_LEFT ()
}
MOVE_FORWARD ()
5
Now you try it!
Now that you’ve had a bunch of practice reading and tracing code with if-statements, try writing your own
pseudocode robot program that uses if-statements.
Problem statement:
Write a program to make the robot end up on the target gray square
facing any direction...but your code must be able to handle the possibility
of an obstacle that could appear in any one of the other squares (i.e.
squares that aren’t the start or target squares - numbered 1-7 in the
diagram)
You must write the code without knowing ahead of time where the
obstacle will be. In other words, you must write one program that can
handle any possibility that might occur. For this exercise, there 8 possible
locations where obstacle might be, we’ll call them scenarios 0-7:
Write your program by hand below and test it by tracing it against each of the 8 possible
scenarios. Your code should get the robot to the target no matter where the obstacle appears.
Goal: When the program ends, the robot is on the gray square -- it can be facing any direction
Tip: When hand-writing code you don’t need to follow the pseudocode syntax strictly, as long as
your intent is clear. For example, using abbreviations and/or omitting the curly-braces and just
indenting is fine.
x8