• Tidak ada hasil yang ditemukan

Directory UMM :wiley:Public:college:compsci:bergin:

N/A
N/A
Protected

Academic year: 2017

Membagikan "Directory UMM :wiley:Public:college:compsci:bergin:"

Copied!
18
0
0

Teks penuh

(1)

7

2

PRIMITIVE INSTRUCTIONS

AND SIMPLE PROGRAMS

2.1

CHANGING POSITION

This chapter begins ur study f the r b t pr gramming language. We will start with a detailed explanati n f the primitive instructi ns that are built int every r b t’s v cabulary. Using these instructi ns, we can instruct any r b t t m ve thr ugh the w rld and handle beepers. Secti n 2.6 sh ws a c mplete r b t pr gram and discusses the elementary punctuati n and grammar rules f the r b t pr gramming language. By the end f this chapter we will be able t write pr grams that instruct r b ts t perf rm simple bstacle av idance and beeper transp rtati n tasks.

Bef re explaining the primitive instructi ns f the r b t pr gramming language, we must first define the technical term A r b t executes an instructi n by per-f rming the instructi n’s ass ciated acti n r acti ns. The r b t executes a pr gram by executing a sequence f instructi ns that are given t it by the helic pter pil t. Each instructi n in such a sequence is delivered t the r b t in a message, which directs

ne r b t t perf rm ne instructi n in the pr gram.

Every r b t understands tw primitive instructi ns that change its p siti n. The first f these instructi ns is , which changes a r b t’s l cati n.

When a r b t executes a instructi n, it m ves f rward ne bl ck; it c ntinues t face the same directi n. T av id damage, a r b t will n t m ve f rward if it sees a wall secti n r b undary wall between its current l cati n and the c rner t which it w uld m ve. Instead, it turns itself ff. This acti n, called an will be explained further in Secti n 2.7.

(2)

Robot has executed an error shutoff

Figure 2-1 A Figure 2-1 B

Figure 2-2 t execute a instructi n in this situati n, it sees a wall secti n. Relying n its self-preservati n instinct, it perf rms an err r shut ff.

The sec nd primitive instructi n that changes a r b t’s p siti n is . This instructi n changes the directi n in which the r b t is facing but d es n t alter its l cati n.

A r b t executes a instructi n by piv ting 90 t the left. The r b t remains n the same street c rner while exe-cuting a instructi n. Because it is imp ssible f r a wall secti n t bl ck a r b t’s turn, cann t cause an Situati n Bef re a Instructi n uati n After Executing a Instructi n

(3)

2.3

FINISHING A TASK

and change the r b t’s p siti n, after executing either f these instructi ns, the r b t still is n s me c rner and still is facing ne f the f ur c mpass directi ns.

Karel-Werke’s designer purp sely did n t pr vide a built-in instruc-ti n. W uld adding a t the primitive instructi ns all w the r b t t perf rm any task it cann t acc mplish with ut ne? A m ment’s th ught—and the right flash f insight—sh ws that the instructi n is unnecessary; it d es n t permit r b ts t acc mplish any new tasks. The key bservati n f r verifying this c nclusi n is that a r b t can manage the equivalent f a instructi n by executing three instructi ns.

We need a way t tell a r b t that its task is finished. The instructi n fulfills this requirement.

When a r b t executes a instructi n, it turns ff and is incapable f executing any m re instructi ns until restarted n an ther task. The last instructi n executed by every r b t in a pr -gram must be a instructi n.

Every r b t understands tw instructi ns that permit it t handle beepers. These tw instructi ns perf rm pp site acti ns.

When a r b t executes a instructi n, it picks up a beeper fr m the c rner n which it is standing and then dep sits the beeper in its beeper-bag. If a in-structi n is attempted n a beeperless c rner, the r b t per-f rms an err r shut per-fper-f. On a c rner with m re than ne beeper the r b t picks up ne, and nly ne, f the beepers and then places it in the beeper-bag.

A r b t executes a instructi n by extracting a beeper fr m its beeper-bag and placing the beeper n the cur-rent street c rner. If a r b t tries t execute a

instructi n with an empty beeper-bag, the r b t perf rms an err r shut ff. If the r b t has m re than ne beeper in its beeper-bag, it extracts ne, and nly ne, beeper and places it

(4)

2.5

ROBOT DESCRIPTIONS

All r b ts pr duced by Karel-Werke have at least the capabilities just described. As we will see, such r b ts are very primitive, and we might like r b ts with additi nal abilities. Theref re, we must have s me way t describe th se extra abilities s that the fact ry can build a r b t t ur specificati ns. Karel-Werke empl ys a simple r b t pr gramming language t describe b th r b t abilities and the lists f r b t in-structi ns, called The simple m del f r b t described ab ve is called the class. The specificati n f the class in the r b t pr gram-ming language f ll ws.

F ll wing the m del class name is a list f instructi ns f r this kind f r b t. The list is always written in braces and , and the final brace is always f ll wed by a semic l n. Each entry is als terminated by a semic l n.

The five instructi ns, thr ugh , name acti ns that

can perf rm. We defined each f these acti ns in the f reg ing secti ns, and we will see many examples f their use thr ugh ut this b k. The w rd prefixes each f these instructi ns t indicate that they return n feedback when executed. Later we will see additi nal instructi ns that d pr duce feedback when executed, rather than changing the state f the r b t as these instructi ns all d . The matching parentheses that f ll w the instructi n names mark them as the names f acti ns that a r b t will be able t carry ut.

A sample task f r an might be t start at the rigin, facing east, and then walk three bl cks east t a c rner kn wn t have a beeper, pick up the beeper, and n that c rner. A c mplete pr gram t acc mplish this task is sh wn

// Deliver the robot to the origin (1,1), // facing East, with no beepers.

Karel.move();

ur o o o o o ur o o

o oo oo

(5)

Initial Situation Final Situation

C mplete pr grams will be discussed in the next secti n.

In this secti n we describe a task f r a r b t named Karel and a c mplete pr gram that instructs it t perf rm the task. The task, illustrated in Figure 2-3, is t transp rt the beeper fr m 1st Street and 4th Avenue t 3rd Street and 5th Avenue. After Karel has put d wn the beeper, it must m ve ne bl ck farther n rth bef re turning ff.

The f ll wing pr gram instructs Karel t perf rm this task. The pr gram uses all f the instructi ns available t r b ts in the class, a few new w rds fr m the r b t pr gramming v cabulary, and punctuati n symb ls such as the peri d and semic l n. We will first discuss Karel’s executi n f this pr gram, and then analyze the general structure f all r b t pr grams.

Karel.move();

(6)

2.6.1

Executing a Program

We must n te that this is n t the nly sequence f instructi ns that will c rrectly perf rm the stated task. Alth ugh it is bvi us and direct, this is just ne f many sequences that will acc mplish the task.

A set f instructi ns f r ne r m re r b ts is called a and is intr duced by the special term, r reserved w rd, . The first instructi n in the main task bl ck c nstructs the r b t, ass ciates the name with it, and delivers it fr m the fac-t ry, ready fac-t run, fac-t 1sfac-t Sfac-treefac-t and 2nd Avenue, facing easfac-t wifac-th n beepers in ifac-ts beeper-bag. This statement can be th ught f as a delivery specificati n. It instructs the helic pter pil t h w t set up the r b t when it is delivered. The delivery specifi-cati n als names the specific type r class f r b t that we want delivered. Here we want an .

The remaining lines f the main task bl ck instruct Karel h w t carry ut the task. These instructi ns are read t Karel by the helic pter pil t, as described next.

Bef re a pr gram can be executed in a w rld, the pr gram is read at the fact ry t make sure it has n err rs. We will discuss err rs later; f r n w, we will assume that

ur pr gram is c rrect.

H w is a pr gram executed? A pr gram executi n is begun after the helic pter pil t delivers the r b t t the required c rner and sets it up acc rding t the delivery specificati n. Here we require that the be set up n 1st Street and 2nd Avenue, facing east, and with zer beepers in its beeper-bag. Then, f r each additi nal c mmand in the main task bl ck, the pil t sends a c rresp nding electr nic message t the r b t named in that c mmand. The message gives the instructi n that the named r b t is supp sed t perf rm. These messages are relayed by the pil t t the r b t thr ugh a special r b t c ntr l satellite that h vers ver the w rld. Since a r b t can execute nly ne instructi n at a time and since the satellite has a very limited c mmunicati n capacity, nly ne instructi n can be sent at a time. The pil t must wait f r instructi n c mpleti n bef re sending the next message. When the r b t c mpletes the current instructi n, it sends a reply back t the pil t thr ugh the satellite indicating that the next instructi n can be sent. Messages fr m the main task bl ck are sent sequentially with ut mitting any instructi ns in a strict t p-t -b tt m rder. The pil t c ntinues sending messages until either all messages in the main task bl ck have been sent r the pil t attempts t send a message t a r b t that has executed a

r has perf rmed an err r shut ff.

It is als p ssible f r r b ts t send messages t each ther. When this ccurs, the r b t sending the message waits f r the reply bef re c ntinuing. This is t guarantee that the satellite c mmunicati n channel is never verl aded.

(7)

o o o o o

T determine what a pr gram d es, we simulate, r trace, its executi n. Simulating r tracing a r b t pr gram means that we must systematically execute the pr gram exactly as the pil t and r b ts w uld, rec rding every acti n that takes place. We can simulate a r b t pr gram by using markers n a sheet f paper (representing r b ts and the w rld). We simulate a r b t pr gram by f ll wing the sequence f instructi ns in the rder the pil t reads them t the r b t. We will discuss tracing later, but in rder t bec me pr ficient r b t pr grammers, we must understand exactly h w the pil t reads the pr gram and the r b t executes it. The ability t simulate a r b t’s behavi r quickly and accurately is an imp rtant skill that we must acquire.

Let’s f ll w a simulati n f ur pr gram. In the f ll wing simulati n

means 1st Street and 4th Avenue. In the f ll wing ann tati n we explain exactly what state the r b t is left in after the executi n f the instructi n. N te that the symb l (tw adjacent slash characters) is used in the simulati n t intr duce c mments int

ur r b t pr grams. Each c mment begins with the mark and c ntinues t the end f the line. These c mments are ign red by the pil t and by the r b ts; they are included nly t aid ur wn understanding f the pr gram. Here we use them t explain in detail each instructi n as it will be executed. We n te, h wever, that if the pr gram is changed in any way, the c mments are likely t bec me invalid.

(1, 4)

// A new robot named Karel is // constructed and delivered to // (1, 2), facing East. Karel has // no beepers in its beeper-bag.

Karel.move(); // Karel moves east

// to (1, 3)

Karel.move(); // Karel moves east

// to (1, 4)

Karel.pickBeeper(); // Karel picks 1 beeper, // 1 beeper in bag

Karel.putBeeper(); // Karel puts 1 beeper // down, now 0 beepers // in bag

Karel.move(); // Karel moves north

(8)

2.6.2

The Form of Robot Programs

Karel is d ne and we have verified that ur pr gram is c rrect thr ugh simulati n by tracing the executi n f the pr gram.

N w that we have seen h w a r b t executes a pr gram, let’s expl re the grammar rules f the r b t pr gramming language. The fact ry and pil ts pay strict attenti n t grammar and punctuati n rules, s ur time is well spent carefully studying these rules. We start by dividing the symb ls in a r b t pr gram int three gr ups. The first gr up c nsists f special symb ls. It has members such as the punctuati n marks like the semic l n, the braces and , and the peri d. The next gr up f symb ls c nsists f names such as r b t and class names, and . We als use names t refer t instructi ns, like and . The third and last gr up f symb ls c nsists f reserved w rds. We have already seen a few f these like and .

Reserved w rds are used t structure and rganize the primitive instructi ns in the r b t pr gramming language. They are called w rds because their use is reserved f r their built-in purp se. These reserved w rds may n t be reused f r ther purp ses in a r b t pr gram, such as r b t names. T make the reading f pr grams easier, we may write r b t pr grams using b th upper- and l wercase letters as well as the undersc re character, but we must be c nsistent. F r example, is always spelled with all l wercase letters. The r b t pr gramming language is

meaning that the use f upper- and l wercase letters in a w rd must be c nsistent each time the w rd is used. If we use the w rd in a r b t pr gram it w uld refer t s mething else, perhaps the name f a r b t.

Since r b t pr grams need t be read by humans as well as r b ts, it is helpful t be able t put explanat ry material int the pr gram itself. The language theref re permits c mments t be inserted int the text f the pr gram. As we have seen in the f reg ing pr gram, a c mment begins anywhere n a line with the special symb l (tw slash marks with n space between). The c mment terminates nly when the line d es. Anything may be put n the line f ll wing the c mment symb l.

Every r b t pr gram c nsists f a single task f r ne r m re r b ts. This main task bl ck is intr duced by the reserved w rd and is encl sed in curly brace punctuati n marks. N tice that the pening brace must be matched eventually by a cl sing brace. Matching pairs f braces are called delimiters, because they mark, r delimit, the beginning and end f s me imp rtant entity.

(9)

o o o o

The main task bl ck itself starts with a list f definiti ns, called declarati ns. In the f ll wing pr gram we have nly ne declarati n, which declares that the name will be used as the name f a r b t in class . Declarati ns in-tr duce new names and indicate h w they will be used in the rest f the pr gram. The declarati ns f r b t names always end with a semic l n. We c uld als declare names f r several different r b ts, even r b ts f different classes. The declarati ns f r b ts can best be th ught f as delivery specificati ns t the fact ry. They always c ntain inf rmati n ab ut h w the r b t sh uld be placed in the w rld.

Every pr gram has ne main task bl ck. Each f the statements in the main task bl ck is terminated by a semic l n. M st f the statements in the main task bl ck are instructi ns t the r b ts declared in the declarati n list. The ne excepti n here is the delivery instructi n, which causes the fact ry t c nstruct and deliver a new named Karel t 1st Street and 2nd Avenue (we always list streets first), facing east, with n beepers in its beeper-bag. When delivered, the r b t is set up and ready t execute instructi ns sent t it. Since r b ts are delivered by the fact ry in helic pters, we d n’t need t be c ncerned ab ut walls in the w rld that might impede delivery t any c rner. The helic pter will be able t fly ver them.

Instructi ns given t a specific r b t are called messages. We can send messages t several different r b ts fr m the same main task bl ck, s we need t specify which r b t is t carry ut each instructi n. Thus, if we have a r b t named Karel and want it t m ve, we send the message . This seems redundant here when there is nly ne r b t, but it is required nevertheless. An instructi n that causes a r b t t perf rm ne f its wn instructi ns, such as m ve, is kn wn as a message statement. The instructi n named in a message statement ( ) is called the message, and the r b t ( ) is the receiver f the message. Messages are the means f getting a r b t t execute an instructi n.

Executi n always begins with the first instructi n f ll wing the reserved w rd . R b ts are aut matically shut d wn at the final cl sing brace in a pr gram; the instructi n must be used f r that purp se. The cl sing brace marks the end f the instructi ns that will be executed. If we reach the end f the instructi ns in the main task bl ck and any r b t is still n because it hasn’t yet executed a

instructi n, it means that at least ne instructi n has been mitted fr m the pr gram, and any r b t still n will rep rt an err r.

Observe that the pr gram is nicely indented as well as c mmented. It is well r-ganized and easy t read. This style f indenting, as well as the c mments, is nly f r the benefit f human readers. The f ll wing pr gram is just as easily executed as the previ us pr gram.

As this example illustrates, the imp rtance f ad pting a pr gramming style that is easy t read by humans cann t be veremphasized.

not

task { ur_Robot Karel(1,2, East,0); Karel.move(); Karel.move(); Karel.pickBeeper(); Karel.move(); Karel.turnLeft(); Karel.move(); Karel.move();

(10)

v

When a r b t is prevented fr m successfully c mpleting the acti n ass ciated with an instructi n, it turns itself ff. This acti n is kn wn as an err r shut ff, and the effect is equivalent t executing a instructi n. H wever, turning ff is n t the nly way such a pr blem c uld be addressed. An alternative strategy c uld have the r b t just ign re any instructi n that cann t be executed successfully. Using this strategy the r b t c uld c ntinue executing the pr gram as if it had never been required t execute the unsuccessful instructi n.

T justify the ch ice f executing an err r shut ff, rather than just ign ring in-structi ns in such situati ns, c nsider the f ll wing: Once an unexpected situati n arises— ne that prevents successful executi n f an instructi n—a r b t pr bably will be unable t make further pr gress t ward acc mplishing the task. C ntinuing t execute a pr gram under these circumstances will lead t an even greater discrepancy between what the pr grammer had intended f r the r b t t d and what it is actually d ing. C nsequently, the best strategy is t have the r b t turn ff as s n as the first inc nsistency appears.

S far, we have seen three instructi ns that can cause err r shut ffs: , , and . We must c nstruct ur pr grams carefully and ensure that the f ll wing c nditi ns are always satisfied.

A r b t executes a instructi n nly when the path is clear t the next c rner immediately in fr nt f it.

A r b t executes a instructi n nly when it is n the same c rner as at least ne beeper.

A r b t executes a instructi n nly when the beeper-bag is n t empty.

A r b t executes a instructi n at the end f each pr gram.

We can guarantee that these c nditi ns are met if, bef re writing ur pr gram, we kn w the exact initial situati n in which the r b t will be placed.

In this secti n we classify all pr gramming err rs int f ur br ad categ ries. These categ ries are discussed using the anal gy f a m t rist with a task in the real w rld. It sh uld help clarify the nature f each err r type. Y u might ask, “Why spend s much time talking ab ut err rs when they sh uld never ccur?” The answer t this questi n is that pr gramming requires an unc mm n am unt f precisi n, and alth ugh err rs sh uld n t ccur in principle, they ccur excessively in practice. Theref re we must bec me adept at quickly finding and fixing err rs by simulating ur pr grams.

A lexical err r ccurs whenever the r b t pr gram c ntains a w rd that is n t in its v cabulary. As an anal gy, supp se that we are standing n a street in San Francisc and we are asked by a l st m t rist, “H w can I get t P rtland, Oreg n?” If we tell the m t rist, “fsdt jkhpy hqngrpz fgssj sgr ghhgh grmplhms,” we c mmit a lexical err r.

(11)

o o o o o o o o o

The m t rist is unable t f ll w ur instructi ns because it is imp ssible t decipher the w rds f which the instructi ns are c mp sed. Similarly, the r b t executing a pr gram must understand each w rd in a pr gram that it is asked t execute.

Here is a r b t pr gram with s me lexical err rs:

The last err r ccurs because the r b t pr gramming language is case-sensitive. The w rd turnLeft is n t the same as turnleft.

Even if the pil t rec gnizes every w rd in a pr gram, the pr gram still might har-b r a syntax err r. This type f err r ccurs whenever we use inc rrect grammar r inc rrect punctuati n. G ing back t ur l st m t rist, we might reply, “f r, Keep hun-dred. just miles g ing eight.” Alth ugh the m t rist rec gnizes each f these w rds individually, we have c mbined them in a senseless, c nv luted manner. Acc rding t the rules f English grammar, the parts f speech are n t in their c rrect p siti ns. We discussed the grammar rules f r basic r b t pr grams in Secti n 2.6.2.

The f ll wing pr gram c ntains n lexical err rs, but it d es have syntax err rs.

(12)

o o o o o o o

If ur pr gram c ntains lexical r syntax err rs, the fact ry will disc ver them when ur pr gram is checked there. In b th cases, the fact ry has n c ncepti n f what we t say; theref re, it d es n t try t c rrect ur err rs. Instead, the fact ry inf rms us f the detected err rs and d esn’t build the r b t. This acti n is n t an err r shut ff, f r in this case the r b t never has a chance t begin t execute the pr gram. While discussing the next tw categ ries f err rs, we will assume that the fact ry finds n lexical r syntax err rs in ur pr gram, s it builds the r b t and the pil t delivers it and begins t execute the pr gram.

The third err r categ ry is called an executi n err r. Unlike lexical and syntax err rs, which are detected at the fact ry, the pil t can nly detect these err rs while the pr gram is running r during a simulati n f its executi n. Executi n err rs ccur whenever a r b t in the w rld is unable t execute an instructi n successfully and is f rced t perf rm an err r shut ff. Returning t ur m t rist, wh is trying t drive fr m San Francisc t P rtland, we might say, “Just keep g ing f r eight hundred miles.” But if the m t rist happens t be facing west at the time, and takes ur direc-ti ns literally, the m t rist w uld reach the Pacific Ocean after traveling nly a few miles. At this p int, the m t rist w uld halt, realizing that he r she cann t f ll w ur instructi ns t c mpleti n.

Likewise, a r b t turns ff if asked t execute an instructi n that it cann t execute successfully. Instructing a r b t t when the fr nt is bl cked, t

n a c rner that has n beeper, and t when the beeper-bag is empty are examples f executi n err rs, and each ne results in an err r shut ff.

The final err r class is the m st insidi us, because pil ts, the fact ry, and r b ts cann t detect this type f err r when it ccurs. We label this categ ry f err r an intent err r. An intent err r ccurs whenever the pr gram successfully terminates but d es n t successfully c mplete the task. Supp se ur m t rist is facing s uth when we say, “Just keep g ing f r eight hundred miles.” Even th ugh these instructi ns can be successfully f ll wed t c mpleti n, the m t rist will end up s mewhere in Mexic , rather than Oreg n.

Here is an example f an intent err r in a r b t pr gram: Beginning in the situati n sh wn in Figure 2-4, Karel is t pick up the beeper, m ve it ne bl ck t the n rth, put the beeper d wn, m ve ne m re bl ck t the n rth, and .

There are n lexical, syntax, r executi n err rs in this pr gram. As far as Karel and the helic pter pil t are c ncerned, when the is executed, everything is

(13)

Figure 2-4 the east. The intent was a n rtherly m ve, but the final result was an easterly m ve. The pr gram d es n t satisfy the requirements f the stated task and thus c ntains an err r f intent.

Remember that a r b t d es n t understand the task f r which we have pr -grammed it. All that the r b t can d is execute the instructi ns we have sent it in ur pr gram. Thus, there is n way f r a r b t t kn w that the pr gram did n t acc m-plish what we intended. Similarly, the pil t has n way t kn w what we intended. He r she nly kn ws what is actually written in the pr gram itself.

In pr gramming jarg n, all types f err rs are kn wn as bugs. There are many ap c-ryphal st ries ab ut the rigin f this term. In ne st ry the term is said t have been riginated by teleph ne c mpany engineers t refer t the s urce f rand m n ises transmitted by their electr nic c mmunicati ns circuits. An ther st ry rigi-nated with the Harvard Mark I C mputer and Grace Murray H pper, later Admiral. The c mputer was pr ducing inc rrect answers, and when engineers t k it apart try-ing t l cate the pr blem, they f und a dead m th caught between the c ntacts f a relay, causing the malfuncti n: the first c mputer bug. Other st ries ab und, s per-haps we shall never kn w the true ent m l gy f this w rd.

Perhaps the term became p pular in pr gramming because it saved the eg s f pr grammers. Instead f admitting that their pr grams were full f err rs, they c uld say that their pr grams had bugs in them. Actually, the metaph r is apt; bugs are hard t find, and alth ugh a l cated bug is frequently easy t fix, it is difficult t ensure that all bugs have been f und and rem ved fr m a pr gram. Debugging is the name that pr grammers give t the activity f rem ving err rs fr m a pr gram.

(14)

Figure 2-5

c mplicated. C ncentrate n writing grammatically c rrect, pleasingly styled pr -grams. Refer back t the pr gram and discussi n in Secti n 2.6 f r rules and examples f c rrect grammar and punctuati n. Each f these pr blems requires a single r b t f the class. In each case we assume it will be named Karel. This is n t required, h wever, and y u are, in general, free t name y ur r b ts with ther names. Verify that each pr gram is c rrect by simulating Karel’s acti ns in the appr priate initial situati n.

Start a r b t in the initial situati n illustrated in Figure 2-5 and simulate the executi n f the f ll wing pr gram. Karel’s task is t find the beeper, pick it up, and then turn itself ff. Draw a map f the final situati n, stating whether an err r ccurs. If an executi n r intent err r d es ccur, explain h w y u w uld c rrect the pr gram. This pr gram has n lexical r syntactic err rs.

1.

ur_Robot

task

{ ur_Robot Karel(2, 7, West, 0); Karel.move();

(15)

Figure 2-6

Carefully inspect the f ll wing pr gram and c rrect all lexical and syntactic err rs. There are nine err rs. F ur err rs inv lve semic l ns, three are syntactical, and ne is lexical. (Yes, there is an ther err r t .) C nfirm that each w rd is in an appr priate place and that it is a c rrectly spelled instructi n name r reserved w rd. Y u may use the pr gram in Pr blem 1 as a m del f r a lexically and syntactically c rrect pr gram.

What is the smallest lexically and syntactically c rrect r b t pr gram?

In m st cities and t wns we can walk ar und the bl ck by repeating the f l-l wing acti ns f ur times:

Walk t the nearest intersecti n

Turn either right r left (the same ne each time)

2.

(16)

Figure 2-7

If this is d ne c rrectly, we will return t ur riginal starting place. Pr gram Karel t walk ar und the bl ck. Will y ur pr gram succeed f r the initial sit-uati n in Figure 2-6?

Every m rning Karel is awakened in bed when the newspaper, represented by a beeper, is thr wn n the fr nt p rch f the h use. Pr gram Karel t retrieve the paper and bring it back t bed. The initial situati n is given in Figure 2-7, and the final situati n must have Karel back in bed (same c rner, same directi n) with the newspaper.

The wall secti ns in Figure 2-8 represent a m untain (n rth is up). Pr gram Karel t climb the m untain and then plant a flag, represented by a beeper, n the summit; Karel then must descend the ther side f the m untain. Assume that Karel starts with the flag-beeper in the beeper-bag. Remember that Karel is n t a super-r b t that can leap t the t p f the m untain, plant the flag, and then jump d wn in a single b und. As illustrated, Karel must cl sely f ll w the m untain’s face n the way up and d wn.

5.

6.

o o

(17)

Figure 2-8

Figure 2-9

o o o

o o o

o o o

o o o

o o o

On the way h me fr m the supermarket, Karel’s sh pping bag ripped slightly at the b tt m, leaking a few expensive items. These gr ceries are represented by—y u guessed it—beepers. The initial situati n, when Karel disc vered the leak, is represented in Figure 2-9. Pr gram Karel t pick up all the dr pped items and then return t the starting p siti n.

7.

o

o o o

The M untain Climbing Task

(18)

Figure 2-10

Figure 2-11

o o o

o o o o

o o o o

o o o

o o

o o

o

Write a pr gram that instructs Karel t rearrange the beeper pattern as sh wn in Figure 2-10.

Karel is practicing f r the R b t Olympics. One f Karel’s events is the shuttle race. The shuttle race requires Karel t m ve ar und tw beepers in a figure 8 pattern as sh wn in Figure 2-11. Write a pr gram that instructs Karel t walk a figure 8 pattern as fast as p ssible (“fast” implies as few instructi ns as p ssible). Karel must st p in the same place it starts and must be facing the same directi n.

8.

9.

The Rearrange-the-Beepers Task

Gambar

Figure 2-1 ASituati n Bef re aoo
Figure 2-3The Initial and Final Situati ns f Karel’s Taskoo
Figure 2-4Karel’s Initial Situati no
Figure 2-5Initial Situati n f r Pr blem 1ooo
+5

Referensi

Dokumen terkait

Sehubungan dengan tahap evaluasi dan pembuktian kualifikasi dalam proses pengadaan paket Pembuatan Taman Hijau II, dengan ini kami mengundang Saudara untuk menghadiri

Kepada perusahaan/Peserta Pelelangan Sederhana yang berkeberatan terhadap Hasil Pelelangan Sederhana ini diberikan kesempatan untuk mengajukan sanggahan melalui SPSE

Supervisi/Pengawasan Pembangunan Dermaga III Gorontalo, yang diselenggarakan oleh Panitia Pengadaan Barang/Jasa Satuan Kerja Pemeliharaan dan Rehabilitasi Pelabuhan

Berdasarkan Berita Acara Hasil Pelelangan Paket Pekerjaan Rehabilitasi Gedung Asrama Putra pada Panti Sosial Bina Grahita (PSBG) Ciungwanara Bogor Nomor :

Pada hari ini Jumat tanggal Empat belas bulan Agustus tahun Dua ribu lima belas , pada jam 10.00 s/d 11.00 wib Pokja ULP II PSBK “Pangudi Luhur” Bekasi

[r]

Data yang diperoleh dari penelitian ini adalah data pengaruh perubahan kecepatan pemakanan terhadap kekasaran permukaan dengan dalam pemakanan 0,25(mm), dengan

2017 yang dibentuk berdasarkan Surat Keputusan Kepala Unit Layanan Pengadaan Kantor Kesyahbandaran dan Otoritas Pelabuhan Kelas I Dumai Nomor : SK.001/1/1/KSOP.DMI-ULP/2017