Download Programming in Karel and more Summaries Programming Languages in PDF only on Docsity!
Programming in Karel
Eric Roberts and Jerry Cain
CS 106J
April 5, 2017
Once upon a time...
Review: Primitive Karel Commands
move() Move forward one square
turnLeft() Turn 90 degrees to the left
pickBeeper() Pick up a beeper from the current square
putBeeper() Put down a beeper on the current square
- On Monday, you learned that Karel understands the following
commands:
- At the end of class, we designed a Karel program to solve the
following problem:
1 2 3 (^1 2 3 4 )
1 2 3 (^1 2 3 4 )
The MoveBeeperToLedge Program */
- File: MoveBeeperToLedge.k
- This program moves a beeper to a ledge. / function moveBeeperToLedge() { move(); pickBeeper(); move(); turnLeft(); move(); turnLeft(); turnLeft(); turnLeft(); move(); putBeeper(); move(); }*
Defining New Functions
- In Karel—and in JavaScript as you will see beginning next
week—a function is a sequence of statements that has been
collected together and given a name. All functions in Karel
have the following form:
function name () { statements that implement the desired operation }
- The first function in a Karel program is the main function,
which is called when you press the Run button at the bottom
of the screen.
- Most Karel programs define additional helper functions that
implement individual steps in the complete solution.
The turnRight Function
- As a simple example, the following function definition allows
Karel to turn right by executing three turnLeft operations:
function turnRight() { turnLeft(); turnLeft(); turnLeft(); }
- Once you have made this definition, you can use turnRight
in your programs in exactly the same way you use turnLeft.
- In a sense, defining a new function is analogous to teaching
Karel a new word. The name of the function becomes part of
Karel’s vocabulary and extends the set of operations the robot
can perform.
Exercise: Defining functions
- Define a function turnAround that turns Karel around 180°.
- Define a function backup that moves Karel backward one
square, leaving Karel facing in the same direction.
function turnAround() { turnLeft(); turnLeft(); } function backup() { turnAround(); move(); turnAround(); }
- The turnRight and turnAround functions are so important
that they are included in a library called "turns".
Control Statements
- In addition to allowing you to define new functions, Karel
also includes statement forms that allow you to change the
order in which statements are executed. Such statements are
called control statements.
- The control statements available in Karel are:
- The repeat statement, which repeats a set of statements a
predetermined number of times.
- The while statement, which repeats a set of statements as long
as some condition holds.
- The if statement, which applies a conditional test to determine
whether a set of statements should be executed at all.
- The if - else statement, which uses a conditional test to choose
between two possible actions.
Using the repeat Statement
- You can use repeat to redefine turnRight as follows: function turnRight() { repeat (3) { turnLeft(); } }
- The following function creates a square of four beepers,
leaving Karel in its original position:
function makeBeeperSquare() { repeat (4) { putBeeper(); move(); turnLeft(); } }
Conditions in Karel
- Karel can test the following conditions: frontIsClear() frontIsBlocked() leftIsClear() leftIsBlocked() rightIsClear() rightIsBlocked() beepersPresent() noBeepersPresent() beepersInBag() noBeepersInBag() facingNorth() notFacingNorth() facingEast() notFacingEast() facingSouth() notFacingSouth() facingWest() notFacingWest() positive condition (^) negative condition
The if and if - else Statements
- The if statement in Karel comes in two forms:
- A simple if statement for situations in which you may or may
not want to perform an action:
if ( condition ) { statements to be executed if the condition is true } if ( condition ) { statements to be executed if the condition is true } else { statements to be executed if the condition is false }
- An if - else statement for situations in which you must choose
between two different actions:
function test() { putBeeperLine(); turnLeft(); putBeeperLine(); } Exercise: Creating a Beeper Line
- Write a function putBeeperLine that adds one beeper to
every intersection up to the next wall.
- Your function should operate correctly no matter how far
Karel is from the wall or what direction Karel is facing.
- Consider, for example, the following function called test : 1 2 3 4 5 1 2 3 2
The End