НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

К главе 16

Задача 16.1

Обобщите функции TEST (ТЕСТ) и ASSIGN (ПРИСВАИВАНИЕ) так, чтобы они могли работать с рекурсивными образцами и данными.

Задача 16.2

Обобщите функции TEST и ASSIGN так, чтобы они могли работать с переменными типа ? и > как в элементах данных, так и в образцах. Это необходимо для реализации демонов "если-добавлено" или "если-изъято", которые содержат в образцах эти специальные символы.

Задача 16.3

Обобщите функцию DEFINE-DEMON (ОПРЕДЕЛИТЬ-ДЕМОН) так, чтобы можно было создавать демонов без имен. Предположите, что такие демоны имеют NIL в позиции имени функции.

Задача 16.4

Обобщить функцию REMOVE (ИЗЪЯТЬ) на случай переменных типа ?, > и <.

Задача 16.5

Реализуйте метод типа "если-необходимо". Заметьте, что первой задачей является определить, как должна работать система сопоставления.

Задача 16.6 (предложена Ричардом Брауном)

Рассмотрим следующий короткий рассказ:

Мнни Маус жила при короле Сердитом, и позвольте мне сказать, это не была райская жизнь. Однажды, работая в поле, она услыхала плачь дракона. После некоторого анализа стало ясно, что у дракона в крыле торчала заноза. Минни извлекла ее, и, выражая свою благодарность, дракон дал Минни волшебную лампу.

Юна принесет тебе неограниченное количество всего, что ты захочешь, но не забудь те волшебные слова, которые ее выключают".

Когда король Сердитый услышал о том, что произошло, он решил получить что-то и для себя. Он отобрал лампу у Минни и, закрывшись в своем дворце, начал изготавливать фисташковое мороженое. Но он был не в состоянии остановить густой зеленый поток и утонул в нем.

Наконец, зеленая река принесла лампу обратно Минни, которая сказала "Фу", чтобы остановить ее, и с тех пор все жили счастливо.

Часть 1. Охарактеризуйте основной момент рассказа.

Часть 2. Найдите и охарактеризуйте просчет в следующей программе:


Найдите ту строку, которая должна быть добавлена после метки LOOP, чтобы программа работала (в предположении, что ей следует делать то, на что указывает ее название, т. е. вычислять факториал).

Часть 3. Рассмотрим следующий короткий рассказ (основанный на идее Ларри Нивена):

Редфорд осуществил мечту всей своей жизни; ровно в полночь демон появился в его пентаграмме 1). Но возникла проблема. Цело выглядело так, что демон обязан выполнить любое желание, которое может высказать вызвавший его, если только оно не потребует более 24 часов на его осуществление. После выполнения желания демон должен появиться внутри всякой новой пентаграммы, которая (в результате магических действий) потребует его присутствия. От демона не требуется выполнение более одного желания заказчика, и он может появиться в пента-грамме произвольно быстро.

Если нет нового вызова в пентаграмму, то у демона в распоряжении оказывается свободное время, в течение которого он увлекался тем, что уничтожал вызвавших его людей.

Редфорд после обстоятельного спора высказал свое желание: демон должен оставаться неподвижным (по отношению к земле) в течение 24 часов.

Всю ночь и весь следующий день Редфорд размышлял. Уже 11.45 вечера, а Редфорд все еще не нашел решения. Внимательно посмотрев на демона, Редфорд удовлетворенно щелкнул пальцами и, улыбаясь, нарисовал своим магическим карандашом новую пентаграмму.

В полночь демон почуял новую пентаграмму и начал появляться внутри нее. "Странно, эта пентаграмма меньше, чем я думал. Сделаю себя несколько меньше". Но пентаграмма все еще была мала, так что демон снова сделал себя меньше, однако пентаграмма все еще была мала...

Редфорд продолжал улыбаться, когда демон сжался в ничто. Он знал, что демону ни за что не удастся вместиться в пентаграмму, которую он нарисовал на его толстом животе.

Охарактеризуйте основной момент этого рассказа.

Часть 4. Найдите просчет в следующей программе:


Подсказка: Имеется определенное соответствие между характером просчетов и основными моментами рассказов. Два приведенных рассказа соответствуют двум приведенным программам в том отношении, что основной момент в рассказе соответствует просчету (ошибке). Эти две ошибки оказались в структуре управления. Другая ошибка - это хорошо известная "мертвая хватка" (ошибка в распределении ресурсов), которую может проиллюстрировать рассказ О'Генри "Дары волхвов". Классическая проблема FUNARG (ошибка в управляющей структуре) иллюстрируется в Гамлете историей Розенкранпа и Гильденстерна.

Существуют и другие классы ошибок, например ошибки в выборе последовательности, рассмотренные Сассманом. Их часто удается красиво подытожить, приведя мораль из волшебных сказок.

Такие наблюдения на мысль о методике генерации новых сюжетных поворотов.

Часть 5. Выберите ошибку в программе, охарактеризуйте ее, а затем напишите короткий оригинальный рассказ, содержащий схожий поворот в сюжете. Позаботьтесь о доказательстве соответствия сюжетного поворота и ошибки. Предложения в отношении ошибки: ошибка печати, неправильный тип данных, неожиданный побочный эффект, отсутствующий переквизит, неопределенная метка. Разумеется, если вы сможете указать какую-то необычную ошибку, то будет еще лучше.

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь