§ 9. Выканаўца Робат

9.1. Робаты ў жыцці чалавека

Чалавек з глыбокай старажытнасці марыў пра штучнае стварэнне, якое магло б выконваць яго загады. Сёння гэта мара стала рэальнасцю — у жыцці людзей з’явіліся робаты. Яны здольныя выконваць практычна любую працу, даступную чалавеку, а таксама рабіць шмат якія рэчы, што людзям выканаць складана ці наогул немагчыма.

Робаты выкарыстоўваюцца на вытворчасці і ў быце, могуць працаваць у сферы паслуг і забаў. Бываюць робаты, падобныя да чалавека, а бываюць зусім непадобныя.

Робат — аўтаматычнае ўстройства, якое дзейнічае па загадзя складзенай праграме.

Робат атрымлівае інфармацыю пра навакольны свет ад датчыкаў — аналагаў органаў пачуццяў жывых арганізмаў — і прызначаны для ажыццяўлення розных аперацый.

Свет робатаў вельмі разнастайны. У быце сучаснага чалавека выкарыстоўваюцца аўтаматычныя пральныя і пасудамыечныя машыны, робаты-пыласосы і інш. З дапамогай робатаў можна вырошчваць расліны ці кіраваць домам.

Робат можа быць матэрыяльным або віртуальным. Віртуальны робат — спецыяльная праграма, якая выконвае пэўныя дзеянні.

Робаты з’яўляюцца выканаўцамі. Для выканаўцаў звычайна вызначаюць асяроддзе існавання і сістэму каманд.

Агульным для ўсіх робатаў з’яўляецца тое, што чалавек можа імі кіраваць. Робат атрымлівае каманды ад аператара і выконвае іх па адной ці дзейнічае аўтаномна па папярэдне складзенай праграме.

9.2. Асяроддзе існавання і сістэма каманд выканаўцы Робат

У асяроддзі праграміравання PascalABC, акрамя выканаўцы Чарцёжнік, можна выбраць выканаўцу Робат.

Асяроддзем існавання выканаўцы Робат з’яўляецца прамавугольнае клятчастае поле. Памеры поля, як і для выканаўцы Чарцёжнік, задаюцца камандай  Field(n, m). Першапачаткова Робат знаходзіцца ў цэнтральнай клетцы поля.

Паміж некаторымі клеткамі, а таксама па перыметры поля знаходзяцца сцены. Робат можа перамяшчацца па полі і зафарбоўваць паказаныя клеткі. Вялікі жоўты квадрат унутры клеткі азначае пачатковае становішча Робата, маленькі — канцавое (прыклад 9.1).

Поле Робата, на якім вызначана знаходжанне сцен, пачатковае і канцавое размяшчэнне выканаўцы, называюць становішчам.

Для падключэння выканаўцы Робат у праграме прапісваецца каманда uses Robot. Гатовыя заданні са становішчамі для Робата захоўваюцца ў задачніку, убудаваным у сістэму праграміравання, і выклікаюцца камандай task. Гэта ж каманда выкарыстоўвалася для Чарцёжніка.

Сістэма каманд выканаўцы:

 

Каманда

Дзеянне

Right

Перамяшчае Робата ўправа

Left

Перамяшчае Робата ўлева

Up

Перамяшчае Робата ўверх

Down

Перамяшчае Робата ўніз

Paint

Зафарбоўвае дадзеную ячэйку

Робат можа станавіцца на звычайную і на зафарбаваную клет-ку, але не можа перамясціцца з клеткі на клетку, калі паміж імі сцяна. Робат не можа перамясціцца за межы поля. Гэтыя дзеянні выклікаюць памылку  (прыклад 9.2). Робат можа зафарбаваць ужо зафарбаваную клетку. Такое дзеянне памылкі не выклікае.

9.3. Выкарыстанне алгарытмічнай канструкцыі паслядоўнасць для выканаўцы Робат

Разгледзім прыклады рашэння задач для выканаўцы Робат.

Прыклад 9.3. Робат знаходзіцца на полі памерам 3 × 3 клетки. Трэба зафарбаваць усе клеткі, акрамя сярэдняй (задача a2).

Для рашэння задачы Робат павінен выканаць наступны алгарытм:

зафарбаваць; управа;
зафарбаваць; управа;
зафарбаваць; уніз;
зафарбаваць; уніз;
зафарбаваць; улева;
зафарбаваць; улева;
зафарбаваць; уверх;
зафарбаваць; уверх.

У дадзеным алгарытме Робат абыходзіць клеткі, рухаючыся па гадзіннікавай стрэлцы. Той жа вынік можна атрымаць, калі Робат будзе абыходзіць поле супраць гадзіннікавай стрэлкі, першапачаткова рухаючыся ўніз.

Прыклад 9.4. Складзём праграму для зафарбоўвання клетак поля Робата па ўзоры:

Такога становішча няма ў задачніку, таму спачатку трэба стварыць поле Робата памерам 5  ×  3. Пачатковае становішча Робата на такім полі адзначана заштрыхаванай клеткай.

Для рашэння задачы Робат павінен выканаць алгарытм:

стварыць поле;
уніз;
зафарбаваць;
улева;
уверх;
зафарбаваць;
улева;
уверх;
зафарбаваць;
управа;
управа;
управа;
управа;
зафарбаваць;
улева;
уніз;
зафарбаваць.

*Якімі яшчэ спосабамі можна рашыць дадзеную задачу?

Прыклад 9.5. Рэшым задачу a1 з убудаванага задачніка.

Для рашэння дадзенай задачы Робат павінен абысці лінію (сцяну), зафарбаваць паказаныя клеткі і перамясціцца ў клетку, якая вызначае канцавое становішча выканаўцы.

Алгарытм рашэння задачы:

зрушыцца     ўправа     на     4     клеткі;
уверх;
зрушыцца     ўлева     на     4     клеткі,
зафарбоўваючы     іх     на     шляху;
улева.

У прыкладах 9.3 — 9.5 каманды выканаўцы Робат выконваліся паслядоўна, адна за другой, у тым парадку, у якім яны былі запісаны. Таму ўсе прыведзеныя алгарытмы рэалізаваны з выкарыстаннем алгарытмічнай канструкцыі паслядоўнасць.

9.4. Дапаможныя алгарытмы

Прыклад 9.6. Рэшым задачу a3 з убудаванага задачніка.

Робат павінен зафарбаваць усе клеткі поля. Але рухацца па прамой яму перашкаджаюць сцены, якія выканаўца павінен абыходзіць.

Алгарытм рашэння задачы:

зафарбаваць;     уніз;
зафарбаваць;     управа;
зафарбаваць;     уверх;
зафарбаваць;
управа;
зафарбаваць;     уніз;
зафарбаваць;     управа;
зафарбаваць;     уверх;
зафарбаваць.

Калі прааналізаваць дадзены алгарытм, то можна заўважыць, што двойчы паўтараецца паслядоўнасць каманд, якая зафарбоўвае квадрат з чатырох клетак:

зафарбаваць;     уніз;
зафарбаваць;     управа;
зафарбаваць;     уверх;
зафарбаваць.

Аформім гэтыя каманды як дапаможны алгарытм, які назавём квадрат. Тады алгарытм рашэння зыходнай задачы можа быць запісаны так:

квадрат;
управа;
квадрат.

Пры рашэнні дадзенай задачы выкарыстанне дапаможнага алгарытму дазволіла не запісваць двойчы адну і тую ж паслядоўнасць каманд.

Дапаможныя алгарытмы можна выкарыстоўваць і ў тым выпадку, калі зыходная задача разбіваецца на некалькі незалежных адна ад адной задач. Тады кожную з іх можна аформіць як дапаможны алгарытм.

Прыклад 9.7. Напішам праграму для зафарбоўвання клетак поля Робата па ўзоры:

Такога становішча няма ў задачніку, таму створым поле 7 x 3.Пачатковае становішча Робата адзначана заштрыхаванай клеткай.

У дадзенай задачы Робат павінен нарысаваць дзве асобныя фігуры: крыж і квадрат. Складзём два дапаможныя алгарытмы.

Дапаможны алгарытм крыж:

улева; зафарбаваць;
уніз; улева; зафарбаваць;
уверх; улева; зафарбаваць;
управа; зафарбаваць;
уверх; зафарбаваць.

У якасці дапаможнага алгарытму для рысавання квадрата можна выкарыстоўваць алгарытм рашэння задачы a2 (прыклад 9.3). Для пераходу ад адной фігуры да іншай Робат павінен зрушыцца на 3 клеткі ўправа:

крыж;
управа; управа; управа;
квадрат.

Робаты развозяць заказы ў рэстаране ў г. Харбін (Кітай)1

Робат LS3, створаны для транспарціроўкі грузаў па перасечанай мясцовасці.

Аўтаномны робат GROVER, які вывучае пласты льду на ледніковым шчыце Грэнландыі.

Рабатызаваная сістэма, прызначаная для вырошчвання агародніны. Кіраванне дадзенай сістэмай ажыццяўляецца праз Wi-Fi. Ёсць магчымасць аддаленага кантролю праз Інтэрнэт.

Робат-пыласос з дапамогай сістэмы камер і сэнсараў можа арыентавацца ў пакоі і будаваць маршрут уборкі.

_______________
1Матэрыялы пра робатаў узяты з сайтаў http://fishki.net/1211999-roboty-v-nashej-zhizni.html i http://www.robogeek.ru (дата доступу: 07.02.2017).

Прыклад 9.1. Поле выканаўцы Робат з пачатковым становішчам мае наступны выгляд:

Прыклад 9.2. Выклік задачы a1 з убудаванага задачніка:

Запіс каманд выканаўцы:

Запішам у праграме каманду up.

Зверху знаходзіцца сцяна, таму перамяшчэнне Робата ўверх немагчымае:

Прыклад 9.3. Пачатковае становішча:

Праграма для выканаўцы Робат:

Вынік работы праграмы мае наступны выгляд:

Прыклад 9.4. У дадзеным выпадку праграма для вучэбнага камп’ютарнага выканаўцы Робат можа быць складзена такім чынам:

Вынік работы запісанай вышэй праграмы будзе мець наступны выгляд:

Прыклад 9.5. Пачатковае становішча:

Праграма для Робата:

Вынік работы праграмы:

Прыклад 9.6. Пачатковае становішча:

Праграма 1 для выканаўцы Робат:

Вынік работы праграмы:

Праграма 2 (з выкарыстаннем дапаможнага алгарытму) для выканаўцы Робат:

Прыклад 9.7. Праграма для вучэбнага камп’ютарнага выканаўцы Робат:

Вынік работы запісанай вышэй праграмы будзе мець наступны выгляд:



1 Што такое робат?



2 Якія каманды ўваходзяць у сістэму каманд вучэбнага камп’ютарнага выканаўцы Робат?



    1. 1Пачатковае становішча на полі Робата адлюстравана на рысунку справа.

Трое навучэнцаў склалі і выканалі алгарытм, па якім Робат зафарбаваў усе клеткі шляху ад пачатковай да канцавой. На якім з рысункаў — а, б або в — адлюстравана рашэнне дадзенай задачы? Чаму?

    1. 2Які з прыведзеных алгарытмаў рашае задачу, сфармуляваную ў папярэднім заданні? Растлумачце, чаму іншыя праграмы не могуць быць алгарытмамі рашэння дадзенай задачы.

      а)

      б)

      в)

    2. 3Для якога выканаўцы прыведзены алгарытм у заданні 2, в? Сфармулюйце для гэтага выканаўцы задачу, рашэннем якой будзе прыведзены
      алгарытм.
    3. 4Для выканаўцы Робат была складзена наступная праграма:

Адлюструйце ў сшытку «ўзор», які нарысуе Робат. Пры якіх мінімальных памерах поля Робат зможа выканаць дадзеную праграму?

    1. 5Усе каманды ў праграме з задання 4 навучэнец скапіраваў тры разы. Як зменіцца «ўзор» пасля выканання праграмы? Як можна па-іншаму запісаць гэты алгарытм? Якога памеру поле трэба стварыць? Падказка. Выкарыстайце дапаможны алгарытм.
    1. 6Праграма рашэння задачы была запісана на дошцы. Два навучэнцы, перапісваючы гэты алгарытм для выканаўцы Робат, прапусцілі з прычыны няўважлівасці па адной камандзе. Якую каманду прапусціў кожны з навучэнцаў? Што будзе вынікам работы кожнай праграмы?

      Праграма,
      запісаная першым навучэнцам

      Праграма,
      запісаная другім навучэнцам

       

    2. 7Складзіце праграму для рашэння задачы a4 з убудаванага задачніка. Прапануйце два алгарытмы:

З выкарыстаннем алгарытмічнай канструкцыі паслядоўнасць. З выкарыстаннем дапаможнага алгарытму. 

8* Робат-агароднік можа разбіць градку на пасадачныя зоны-клеткі. На рысунку справа адлюстравана схема пасадкі агародніны (чырвоная клетка — таматы, зялёная — агуркі). Прапануйце сістэму каманд для робата-агародніка і распрацуйце алгарытм пасадкі агародніны (робат саджае адну расліну ў адну клетку).