Що важливознати про програму
Чим хороша програма? Її велике значення в тому, що вона змушує робота робити речі набагато складніші, ніж ті, що перелічені у списку його команд. За програмою робот робить те, що без програми робити не вміє.
Постає питання, чи можна написати програму для набагато складнішого завдання, наприклад для перестановки всіх меблів на поверсі? Зрозуміло, можна лише програма для цього буде досить довгою.
Що вимагає від нас програма? Вона вимагає абсолютної точності під час її складання. Якщо, наприклад, ми в першій команді саму трішки помилимося і скажемо ПОВТОРИ 6 РАЗІВ КРОК ВПЕРЕД (замість 5 разів), робот проскочить повз двері, на другій команді повернеться і, сумлінно виконуючи програму, на третій команді проломить стіну. Якщо ми переплутаємо місцями команди 6 і 7, то робот спочатку поставить випорожнення, а потім про нього ж і спіткнеться.
Запам'ятайте, що після того, як ви віддали роботу команду ВИКОНАЙ ПРОГРАМУ і робот почав її виконувати, ви не можете програму змінити, доки він не закінчив роботу. Навіть якщо ви побачите, що робот за вашою програмою робить щось не те, марно кричати на нього, хапати його за руку тощо. Він на вас не зверне уваги. Максимум, що ви можете, це підбігти до нього і вимкнути його. Після цього ви повинні відвести його у вихідне положення і тільки потім можете повідомити змінену програму.
Повідомляти роботу команди ми зобов'язані лише тими словами, які наведені у списку команд, тому що робот розуміє лише їх. Якщо ми замість команди Візьми Предмет дамо команду Бері Предмет, робот нас не зрозуміє і команду не виконає.
Завдання 1:Напишіть програму, за якою робот сходить до кімнати за стільцем і повернеться з ним у коридор у вихідне положення.
Концепція процедури. Чи можеробот порозумнішати?
Чи розумний наш робот? Судячи з його реакцію помилки у програмі, дуже дурний. Розумний робот не став би проламувати стіну. Проте наш робот не винен у своїй дурості. Адже його розумові здібності вичерпуються списком його команд. А цей список дуже бідний. Чим він бідний?
Перше.У цьому списку немає складних команд, таких як "Наведи порядок у кімнаті", "Перенеси меблі до іншої стінки" і навіть такий порівняно простий, як "Перестав стілець". Чи можете ви доповнити список команд робота потрібними вам командами? Можете, робот цього пристосований. Нехай ви бажаєте, щоб робот виконував команду на перестановку стільця. Для цього ви вигадуєте програму перестановки стільця (ми її вже вигадали в п.1.1), потім вигадуєте, як звучатиме сама нова команда, наприклад ПЕРЕСТАВ СТІЛЕЦЬ, і нарешті повідомляєте роботу програму і кажете йому, що відтепер він повинен її виконувати за командою ПЕРЕСТАВ СТІЛЕЦЬ. Така програма називаєтьсяпроцедурою, а нова команда ПЕРЕСТАВ СТІЛЕЦЬ –зверненням до процедуриабовикликом процедури.
Отже, ми доповнили список команд робота новою командою. Чи можна вважати, що робот порозумнішав? Звичайно. Але не дуже. І ось чому. Нехай стілець знаходиться від дверей не за три кроки, а за два. Тоді наш робот, виконуючи процедуру ПЕРЕСТАВ СТІЛЕЦЬ, як вона написана в п.1.1, спіткнеться про нього, а це, звичайно, не говорить про його розум. Щоб переставити стілець, де б він не був у кімнаті, робот повинен спочатку його знайти, але команди на пошук немає у списку його команд, а скласти з команд цього списку процедуру пошуку неможливо. Ми починаємо бачити, чим ще бідний список команд робота:
Питання: Що зробить наш робот, отримавши, перебуваючи у вихідному становищі, таку безглузду програму: