Робот Карел
🎯 Данас: пишеш низ наредби којима Карел стиже до циља. Радиш сам, својим темпом. Не мораш да урадиш све задатке — важно је да разумеш оно што урадиш.
1. Задаци
- Задатак бираш горе лево. Ради их редом, од првог.
- Лево пишеш код, десно је Карелов свет. ▶ Покрени (или Ctrl+Enter) покреће програм.
- Корак извршава један по један ред — жуто је ред који је управо извршен.
- Ако нешто не ваља, испод света пише у ком реду и шта; тај ред је у коду црвен.
- Кад Карел реши задатак, кликни „Решио/ла сам“ — задатак се бележи код наставника и у списку добија ✔.
Како се решава задатак
- Погледај свет: где је Карел, куда гледа, где је циљ.
- Испланирај корак по корак — можеш прстом по екрану.
- Напиши, покрени, и гледај где је Карел скренуо погрешно — тај ред поправи.
Кад запнеш, питај се
- Где Карел гледа пре ове наредбе?
- Куда иде за сваки ред? Покажи прстом.
- До ког реда је све било добро?
⭐ Ако си решио све задатке
Реши „Степенице“ са што мање редова. Онда у Вежбалишту смисли свој пут за Карела, или помози другу — питањима, не куцањем уместо њега.
2. Наредбе
Сваки програм почиње редом from karel import * — без њега Пајтон не зна ни за једну наредбу.
| Наредба | Шта ради |
|---|---|
napred() | једно поље напред, куда гледа |
levo() | окрене се налево, у месту |
desno() | окрене се надесно, у месту |
uzmi() | узме лоптицу са поља на ком стоји |
ostavi() | остави лоптицу коју носи |
Наредбе не мораш да куцаш: клик на њих испод кода их убаци тамо где је курсор.
Питања која Карел уме да одговори
Ово нису радње — Карел се од њих не помера. Одговор је да (True) или
не (False), и користе се уз while и if.
| Питање | Значи |
|---|---|
moze_napred() | Да ли испред мене нема зида? |
ima_loptica_na_polju() | Да ли на пољу на ком стојим има лоптица? |
ima_loptica_kod_sebe() | Да ли носим бар једну лоптицу? |
Испред питања може not, па је одговор обрнут: not moze_napred() значи „испред је зид“.
Двотачка и увлачење
Код for, while и if важи исто правило: ред се завршава
двотачком :, а наредбе које му припадају пишеш увучене
(Tab или 4 размака). Први ред који није увучен више не припада петљи — он се изврши после ње.
for — понови тачно толико пута
for i in range(4):
napred()
Карел четири пута иде напред — исто као четири реда napred(), само краће.
Број у загради је колико пута. Увучено може да буде и више наредби: понављају се све, редом.
while — понављај док је одговор „да“
while moze_napred():
napred()
Пре сваког круга Карел пита „могу ли напред?“. Док може — иде; кад стигне до зида, петља стаје. Користиш га кад не знаш колико пута треба, нпр. кад је пут сваки пут друге дужине.
У телу петље мора да се деси нешто што ће једног дана променити одговор.
while moze_napred(): без napred() у телу никад не стаје —
Карел ће рећи да програм ради предуго.
if — уради само ако је одговор „да“
if ima_loptica_na_polju():
uzmi()
Ако на пољу има лоптица, Карел је узме; ако нема, прескочи увучени део и иде даље. Тако не удари у грешку „на овом пољу нема лоптице“.
Уз else кажеш шта да ради кад је одговор „не“:
if moze_napred():
napred()
else:
levo()
Петља и одлука заједно
Наредбе се могу слагати једна у другу — свака следећа увучена још мало више:
for i in range(5):
napred()
if ima_loptica_na_polju():
uzmi()
Пет пута: корак напред, па узми лоптицу ако је има.
Провери да ли знаш
- Шта ради
levo, а штаnapred? Да ли се Карел помера кад скрене? - Кад користиш
for, а кадwhile? - Шта се деси са увученим редом испод
ifкад је одговор „не“? - Карел гледа десно. Како да гледа лево?
- Шта радиш кад Карел удари у зид или стане на погрешно поље?
🛠️ Кад нешто не ради
| Проблем | Шта да урадиш |
|---|---|
| Не могу у кабинет | надимак без размака; лозинка малим словима; провери да не куцаш ћирилицом |
| Нема дугмета „Решио/ла сам“ | ниси пријављен (горе десно треба да буде твој аватар), или задатак још није решен |
| Нестао ми је код | код се чува само на рачунару на ком си радио; на другом рачунару крећеш испочетка |
| Карел скрене на погрешну страну | лево и десно гледај из Кареловог смера, не из свог |
| Окренуо се, али се није померио | тако и треба — после окрета додај napred |
| Ударио у зид | један napred вишка — изброј поља |
| „Пајтон не зна шта је …“ | наредба је погрешно откуцана или великим словом — Карел ти предложи праву |
| „Недостаје двотачка“ / „треба да буде увучен“ | ред са for, while, if или else завршава се са :, а редови испод њега су увучени |
| Петља се понавља само једном или ништа | погледај увлачење — оно што није увучено није у петљи |
| „Недостају заграде“ | иза наредбе иду (): napred(), не napred |
| Карел узима где нема лоптице | није стигао на поље где мислиш — прођи програм ред по ред |