Робот Карел - Додатни задаци за вежбу¶
Задаци¶
Помери све лоптице уназад¶
Испред Карела је прав пут непознате дужине. На почетном пољу нема лоптица. Карел треба да сваку лоптицу премести за једно поље ка левој страни екрана.
Овај задатак можемо да решимо и без употребе наредбе if
. На пример,
можемо да док год има поља испред Карела, понављамо следеће кораке:
пређи на следеће поље
узми све лоптице са тог поља
иди корак назад (то јест, окрени се два пута и иди напред)
остави све лоптице
врати се на поље са којег си узео лоптице
Овакво решење је дато као почетно у прозору испод. Пратећи дати
програм, Карел ће се чак и кад не узме ни једну лоптицу враћати на
претходно поље. Можеш ли да убациш једну наредбу if
у програм,
тако да се Карел не враћа ако није узео ни једну лоптицу? Наравно,
биће потребно да се неке дате наредбе увуку у тело наредбе if
.
Три пута горе-доле¶
Карел се налази на правоугаоној табли од 5 редова и 7 колона и треба да стигне до доњег десног поља.
Карел треба три пута да понови једну сложену радњу, а то је: да пређе у следећу (десну) колону, оде до њеног врха, оде још једну колону десно, сиђе до првог реда и на крају да се окрене ка последњој колони да би се припремио за следеће понављање.
Допуни програм, водећи рачуна да се бројач у for наредбама које
додајеш не зове i
(то име је већ употребљено у спољној петљи).
Горе-доле¶
Карел се налази на правоугаоној табли непознате величине (број колона је увек непаран), без лоптица. Циљ је да Карел стигне до доњег десног поља, а да би то постигао, мораће да се креће кроз колоне наизменично горе-доле.
Донеси све са табле¶
Карел треба да донесе свих 12 лоптица на полазно поље.
Карел треба четири пута да пређе у следећу колону и испразни је, а на крају да дође на полазно поље и остави све лоптице. Карел ће испразнити колону ако три пута понови корак напред и узимање, а затим се врати на почетак колоне у исти положај.
Допуни програм.
Донеси свих 60¶
Сада се на сваком од истих 12 поља као у претходном задатку налази по 5 лоптица. Карел треба да донесе свих 60 лоптица на полазно поље.
Овај програм се од претходног разликује по томе што наредба uzmi() треба да стоји у додатној петљи, трећој у дубину. Такође, разликује се и број лоптица које Карел на крају програма оставља на полазно поље. Покушај да ископираш претходни програм и преправиш га.
Сакупи лоптице на степеницама¶
Карел поново треба да заврши у доњем десном углу, а успут треба да узме све лоптице.
Да би се решиo овај задатак, можеш у претходни програм да убациш петље за узимање лоптица. Покушај да ископираш и преправиш претходни програм.
Препоне¶
Помози роботу да прескочи препоне и покупи лоптицу.
Једно могуће решење (не и једино) је следеће.