Читайте также:
|
|
Чем хороша программа? Ее великое значение в том, что она заставляет робота делать вещи гораздо более сложные, чем те, которые перечислены в списке его команд. По программе робот делает то, что без программы делать не умеет.
Спрашивается, можно ли написать программу для гораздо более сложной задачи, например для перестановки всей мебели на этаже? Разумеется, можно, только программа для этого будет достаточно длинной.
Что требует от нас программа? Она требует абсолютной точности при ее составлении. Если, например, мы в первой команде самую чуточку ошибемся и скажем ПОВТОРИ 6 РАЗ ШАГ ВПЕРЕД (вместо 5 раз), робот проскочит мимо двери, на второй команде повернется и, добросовестно выполняя программу, на третьей команде проломит стену. Если мы перепутаем местами команды 6 и 7, то робот сначала поставит стул, а потом об него же и споткнется.
Запомните, что после того, как вы отдали роботу команду ВЫПОЛНЯЙ ПРОГРАММУ и робот начал ее выполнять, вы не можете программу изменить, пока он не закончил работу. Даже если вы увидите, что робот по вашей программе делает что-то не то, бесполезно кричать на него, хватать его за руку и т.п. Он на вас не обратит внимания. Максимум, что вы можете, это - подбежать к нему и выключить его. После этого вы должны отвести его в исходное положение и только затем можете сообщить ему измененную программу.
Сообщать роботу команды мы обязаны только теми словами, которые приведены в списке команд, потому что робот понимает только их. Если мы вместо команды ВОЗЬМИ ПРЕДМЕТ дадим команду БЕРИ ПРЕДМЕТ, робот нас не поймет и команду не выполнит.
Задание 1: Напишите программу, по которой робот сходит в комнату за стулом и вернется с ним в коридор в исходное положение.
2.3. Понятие о процедуре. Может ли робот поумнеть?
Умен ли наш робот? Судя по его реакции на ошибки в программе, весьма глуп. Умный робот не стал бы проламывать стенку. Однако, наш робот не виноват в своей глупости. Ведь его умственные возможности исчерпываются списком его команд. А список этот очень бедный. Чем он беден?
Первое. В этом списке нет сложных команд, таких как "Наведи порядок в комнате", "Перенеси мебель к другой стенке" и даже такой сравнительно простой, как "Переставь стул". Можете ли вы дополнить список команд робота нужными вам командами? Можете, робот для этого приспособлен. Пусть вы хотите, чтобы робот выполнял команду на перестановку стула. Для этого вы придумываете программу перестановки стула (мы ее уже придумали в п.2.1), затем придумываете, как будет звучать сама новая команда, например ПЕРЕСТАВЬ СТУЛ, и наконец сообщаете роботу программу и говорите ему, что отныне он должен ее выполнять по команде ПЕРЕСТАВЬ СТУЛ. Такая программа называется процедурой, а новая команда ПЕРЕСТАВЬ СТУЛ – обращением к процедуре или вызовом процедуры.
Итак, мы дополнили список команд робота новой командой. Можно ли считать, что робот поумнел? Конечно. Но не очень. И вот почему. Пусть стул находится от дверей не в трех шагах, а в двух. Тогда наш робот, выполняя процедуру ПЕРЕСТАВЬ СТУЛ, как она написана в п.2.1, споткнется об него, а это, конечно, не говорит о его уме. Чтобы переставить стул, где бы он ни был в комнате, робот должен сначала его найти, но команды на поиск нет в списке его команд, а составить из команд этого списка процедуру поиска невозможно. Мы начинаем видеть, чем еще беден список команд робота:
Второе. Он беден не только количеством команд, но и их содержанием. Все его команды касаются только ходьбы и переноса предметов. Фактически, наш робот очень мало умеет, он может только бездумно расхаживать и таскать с места на место мебель. Он не может включить телевизор, так как не имеет хотя бы команды нажатия на кнопку. Он не может сходить в магазин, так как не умеет считать деньги. Он не может поздороваться с вами, так как не имеет команды что-нибудь произнести. Можете ли вы что-нибудь с этим поделать? Ничего не можете, потому что таким его сделали на заводе. Вам нужен робот с гораздо более разнообразными командами. Кроме этого, хорошо было бы иметь команды для очень мелких движений, например "согнуть средний палец на правой руке". Тогда из таких команд можно было бы составить процедуры вроде "пожми руку" или "нажми кнопку" или "включи телевизор". Но воображаемый робот с такими умениями был бы очень сложным и очень дорого бы стоил.
Вопрос: Что сделает наш робот, получив, находясь в исходном положении, такую бессмысленную программу:
Программа для робота | Пояснения для нас с вами |
1.ПЕРЕСТАВЬ СТУЛ | Обращение к процедуре ПЕРЕСТАВЬ СТУЛ |
2.НАЛЕВО | Робот поворачивается налево |
3.ПЕРЕСТАВЬ СТУЛ | Обращение к процедуре ПЕРЕСТАВЬ СТУЛ |
Ответ: Выполняя первую команду (обращение к процедуре ПЕРЕСТАВЬ СТУЛ), робот благополучно переставит стул. Выполняя вторую команду, он повернется лицом к дальней стенке. Выполняя третью команду (обращение к процедуре ПЕРЕСТАВЬ СТУЛ), он на первой же команде этой процедуры (ПОВТОРИ 5 РАЗ ШАГ ВПЕРЕД) врежется в дальнюю стенку.
Дата добавления: 2015-11-14; просмотров: 45 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Список команд. Командный и программный режимы | | | Программадля компьютера на машинном языке |