Guido van Robot Programming Summary
The Five Primitive Guido van Robot Instructions:

   1. move
   2. turnleft
   3. pickbeeper
   4. putbeeper
   5. turnoff

Block Structuring

Each Guido van Robot instruction must be on a separate line.
A sequence of Guido van Robot instructions can be treated as a single 
instruction by indenting the same number of spaces.
<instruction> refers to any of the five primitive instructions above, 
the conditional branching or iteration instructions below, 
or a user defined instruction.

    <instruction>
    <instruction>
      ...
    <instruction>

Conditionals

GvR has eighteen built-in tests that are divided into three groups: 
the first six are wall tests, the next four are beeper tests, 
and the last eight are compass tests:

   1. front_is_clear
   2. front_is_blocked
   3. left_is_clear
   4. left_is_blocked
   5. right_is_clear
   6. right_is_blocked
   7. next_to_a_beeper
   8. not_next_to_a_beeper
   9. any_beepers_in_beeper_bag
  10. no_beepers_in_beeper_bag
  11. facing_north
  12. not_facing_north
  13. facing_south
  14. not_facing_south
  15. facing_east
  16. not_facing_east
  17. facing_west
  18. not_facing_west

Conditional Branching

Conditional branching refers to the ability of a program to alter it's 
flow of execution based on the result of the evaluation of a conditional. 
The three types of conditional branching instructions in Guido van Robot 
are if and if/else and if/elif/else.
<test> refers to one of the eighteen conditionals above.

if <test>:
    <instruction>

if <test>:
    <instruction>
else:
    <instruction>

if <test>:
    <instruction>
elif <test>:
    <instruction>
...
elif <test>:
    <instruction>
else:
    <instruction>


Iteration

Iteration refers to the ability of a program to repeate an 
instruction (or block of instructions) over and over until some condition 
is met. 
The two types of iteration instructions are the do and while instructions.
<positive_number> must be an integer greater than 0.

do <positive_number>:
    <instruction>

while <test>:
    <instruction>

Defining a New Instruction:

New instructions can be created for Guido van Robot using the define statement.
 <new_name> can be any sequence of letters or digits as long as it begins with a
letter and is not already used as an instruction.
Letters for Guido van Robot are A..Z, a..z, and the underscore (_) character. 
Guido van Robot is case sensitive, so TurnRight, turnright, and turnRight are all
different names.

define <new_name>:
    <instruction>

