extending karel’s vocabulary this ppt originated with dr. judy hankins modifications have been...
TRANSCRIPT
![Page 1: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/1.jpg)
Extending Karel’s Vocabulary
This PPT originated with Dr. Judy HankinsModifications have been done by Dr. Untch
& Dr. Cripps
![Page 2: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/2.jpg)
Why should we extend Karel’s vocabulary?
• Karel’s vocabulary is limited.
• For example, Karel does not understand a TurnRight(); command.
He can only turn right by executing three TurnLeft(); commands.
![Page 3: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/3.jpg)
• As a second example, suppose we need to program Karel to travel over vast distances.
• Assume that the robot must move east one mile (a mile is eight blocks long), pick up a beeper, and then move another one mile north.
• Karel understands how to move a block, but not a mile.
• Conversion from miles to blocks is straightforward, but results in a very long and unreadable program. How many Move(); instructions would be needed to move Karel one mile?
![Page 4: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/4.jpg)
Karel can “learn” new commands via our instructions
• Our programs can furnish him with a dictionary of useful instruction names and their definitions.
• Each definition must be built from simpler instructions that Karel already understands.
• Given this ability to extend Karel’s vocabulary, we can solve our problems using instructions natural to our way of thinking.
![Page 5: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/5.jpg)
How do we instruct Karel to learn a new command?
• For example, suppose we want Karel to learn the new command TurnRight, then how do tell Karel to remember this information?
• We know that if we instruct Karel to perform three TurnLeft instructions, then we can accomplish a TurnRight.
![Page 6: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/6.jpg)
Defining a new function
void identifier(){
statement(s) that define the function
}
![Page 7: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/7.jpg)
1 2 3 4 5 6
1
2
3
4
5
6
Suppose we want Karel to pickup the beeper shown in the situation file. Then what are Karel’s instructions?
![Page 8: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/8.jpg)
#include <karel.h>int main(){ TurnOn(); TurnLeft(); TurnLeft(); TurnLeft(); Move(); PickBeeper(); TurnOff();}
1 2 3 4 5 6
1
2
3
4
5
6
The instructions for Karel to pickup the beeper shown in the situation file.
![Page 9: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/9.jpg)
#include <karel.h>int main(){ TurnOn(); TurnLeft(); TurnLeft(); TurnLeft(); Move(); PickBeeper(); TurnOff();}
1 2 3 4 5 6
1
2
3
4
5
6
Now, lets modify Karel’s instructions so as to learn a new command, TurnRight.
![Page 10: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/10.jpg)
#include <karel.h>void TurnRight(){ TurnLeft(); TurnLeft(); TurnLeft();}int main(){ TurnOn(); TurnRight(); Move(); PickBeeper(); TurnOff();}
1 2 3 4 5 6
1
2
3
4
5
6
Now, lets modify Karel’s instructions so as to learn a new command, TurnRight.
![Page 11: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/11.jpg)
Defining a new function/command
void identifier(){
statement(s) that define the function
}
![Page 12: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/12.jpg)
• Using this function definition mechanism to create a kind of dictionary for Karel, new commands can be defined to extend Karel’s vocabulary by writing functions.
• For example, although Karel does not have a predefined TurnRight(); command, we can user-define this instruction by writing the function shown in the previous slide and on the next slide.
![Page 13: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/13.jpg)
void TurnRight(){ TurnLeft(); TurnLeft(); TurnLeft();}
![Page 14: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/14.jpg)
• Similarly, we can define MoveAMile(); to mean eight Move(); instructions.
void MoveAMile(){ Move(); Move(); Move(); Move(); Move(); Move(); Move(); Move();}
![Page 15: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/15.jpg)
Benefits of extending Karel’s vocabulary
• We can use instructions “natural” to us.
• As in the move a mile problem, the size of our programs can be significantly reduced.
• The smaller program is much easier to read and understand.
![Page 16: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/16.jpg)
#include <karel.h>
int main()
{
TurnOn();
Move();
PickBeeper();
Move();
TurnLeft();
Move();
Move();
PutBeeper();
Move();
TurnLeft();
TurnLeft();
TurnLeft();
Move();
TurnLeft();
TurnLeft();
TurnLeft();
Move();
TurnLeft();
TurnLeft();
TurnLeft();
TurnOff();
}
![Page 17: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/17.jpg)
#include <karel.h>
int main()
{
TurnOn();
Move();
PickBeeper();
Move();
TurnLeft();
Move();
Move();
PutBeeper();
Move();
TurnLeft();
TurnLeft();
TurnLeft();
Move();
TurnLeft();
TurnLeft();
TurnLeft();
Move();
TurnLeft();
TurnLeft();
TurnLeft();
TurnOff();
}
TurnRight();
TurnRight();
TurnRight();
![Page 18: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/18.jpg)
#include <karel.h>void TurnRight(){
TurnLeft();TurnLeft();TurnLeft();
}
int main()
{
TurnOn();
Move();
PickBeeper();
Move();
TurnLeft();
Move();
Move();
PutBeeper();
Move();
TurnRight();
Move();
TurnRight();
Move();
TurnRight();
TurnOff();
}
![Page 19: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/19.jpg)
A Stair Cleaning Task
• Karel is supposed to climb stairs and pick up the beepers on each step. When he is done, he should be standing on the top step, facing East.
![Page 20: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/20.jpg)
#include <karel.h>…. int main() { TurnOn(); TurnLeft(); Move(); TurnRight(); Move(); PickBeeper(); TurnLeft(); Move(); TurnRight();…
![Page 21: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/21.jpg)
If we invent a new instruction called ClimbAStep();
then the program can be written as:
#include <karel.h> int main() { TurnOn(); ClimbAStep(); PickBeeper(); ClimbAStep(); PickBeeper(); ClimbAStep(); PickBeeper(); TurnOff(); }
![Page 22: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/22.jpg)
Now we must write the function ClimbAStep();
void ClimbAStep(){ TurnLeft(); Move(); TurnRight(); Move();}
Notice that this function depends on TurnRight(); , an instruction that we wrote previously.
![Page 23: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/23.jpg)
Recapping how to dofunction definitions
• The reserved word void starts a new function followed by the name of the function.
• The name of the function specifies what the procedure is intended to do.
• The statements that perform the task are enclosed in matching curly braces { } . These statements specify how the new instruction does what the name implies.
• The two must match exactly – otherwise one or both need to be changed.
![Page 24: Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps](https://reader038.vdocuments.us/reader038/viewer/2022110103/5697c0221a28abf838cd346c/html5/thumbnails/24.jpg)
• To demonstrate this, there are no restrictions prohibiting the following instructions definition:
void TurnRight() { TurnLeft(); TurnLeft(); }
• This is a perfectly legal definition, but it is wrong because it does not accomplish what it should.