Главная » Просмотр файлов » В.Н. Пильщиков - Язык Плэнер

В.Н. Пильщиков - Язык Плэнер (1156455), страница 28

Файл №1156455 В.Н. Пильщиков - Язык Плэнер (В.Н. Пильщиков - Язык Плэнер) 28 страницаВ.Н. Пильщиков - Язык Плэнер (1156455) страница 282019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 28)

Функция ТЕМР применяется в тех случаях, когда надо проверить, может ли быть вычисление некоторого выражения успешным или. нет, и когда надо при любом исходе сразу же уничтожить все следы этой проверки. Например, рассмотренная в 1 3.3 функция РАТН при поиске пути в графе иаменяет аначения переменных иа предикатов и операторов графа, и если она находит - путь, то аиачения этих переменных оказываются отличными от начальных вначений. Когда мы хотим определить, существует ли путь в графе, но не хотим, чтобы при этом менялись значения переменных, следует вычислить выражение [ТЕМР [РАТН А С]]. Здесь функция РАТН все же иамеиит эначения переменных, но затем функция ТЕМР восстановит их начальные аначения.

Следующие блочные функции представляют собой компоэиции трех предыдущих функций с функцией РВОС: [РРКОС (и~ и» ... и ) е~ е» ... е»], РЯ()ВВ, т) О; й ) 1 [ЯРВОС (и~ и» ... и„) е~ е» ... е»], РЯОВК, т) О, )е ) 1 [ТРВОС (и~ и» ... и,) е~ е» ... е»], РЯОВВ, т >~ О, )«~ >1 Любая иа этих функций вычисляется так же, как и функция РВОС, но перед выходом иа нее (по ВЕТБК3) или после того, как выполнен последний оператор е») выполняются те же «выходяые» действия, что и в функциях РЕЕМ, ЯТКС или ТЕМР соответственно.

Например, при выходе из функции ЯРКОС уничтожают ся все Р-точки, поставленные при вычислении ее тела, но сохраняются обратные операторы. Отметим, однако, что при выходе из этих функций, осуществляемом с помощью функции 60 или ЕХ1Т, «выходные» действия не выполняютея.

Все предыдущие функции этого параграфа можно использовать только тогда, когда известно эаранее, что Р-точки и/или обратные операторы должны быть уничтожены. Но бывает и так, что мы не внаем об атом ааранее и уанаем об этом поаже, когда вычисления уже начаты. В таких ситуациях применяются встроенные функции РЕКМЕХ, ЯТКСЕХ, ТЕМРЕХ и РА1ЬЕХ, которые подобно функции ЕХ1Т осуществляют выход иэ некоторой 133 объемлющей процедуры, уничтожая при этом Р-точки и/или обратные операторы внутри данной процедуры.

Функция РЕВМЕХ: [РЕВМЕХ е?л и?], ЯПВК. Эта функция действует. аналогично функции ЕХ1Т (см. 3 1Л8 и 2.8), т. е. осуществляет выход со аначением Б из (У+1)-й объемлющей процедуры с .именем РУ, но перед выходом оиа уничтожает все Р-точки и обратные операторы, появившиеся с начала вычисления данной процедуры (для встроенных процедур класса ЯПВК и определяемых процедур — с того момента, как началось вычисление их аргументов). Функция ЯТК6ЕХ: [ЯТВСЕХ е?и л?], БОВЕ. Данная функция действует аналогично функции РЕКМЕХ, по уничтожает только Р-точки. Функция ТЕМРЕХ: [ТЕМРЕХ е?л и?], ЯПВВ.

Эта функция действует так же, как функция ЯТВСЕХ, по дополнительно еще выполняет все обратные операторы, запомненные с начала вычисления процедуры, иа которой сейчас осуществляется выход. Функции РА1ЬЕХ«[РА1ЬЕХ е?л л?], БПВК. И зта функция осуществляет выход из (Ж+ 1)-й и объемлющей процедуры с именем Р?У, но выход по неуспеху: функции уничтожает все Р-точки, поставленные внутри данной процедуры, и вырабатывает неуспех, связывая с ним сообщение.Е. Таким обрааом, по этому неуспеху происходит возврат к развилке, которая была определена до начала выполнения данной процедуры РХ Отметим, что при выходе из функций РЕЕМ, БТКС, ТЕМР, РРКОС, ЯРВОС и ТРКОС, осуществляемом функцией РЕВМЕХ, ЯТВСЕХ, ТЕМРЕХ или РА1ЬЕХ, выполняются «выходные? действия последних функций.

Приведем пример использования рассмотренных функций: [РКОС (Х) [АЬТ () [КЕТОВ)«? Т]] [БЕТ Х [ФБ]] [605)О ([ЕО [5 .Х] 2] [РА11ЕХ (5 2) РВОС]) ([Е«) [ — 2 .Х] 6] [РЕВМЕХ (7 6) РВОС]) (Т [РА1Ц)] ])] Если в задаче о восьми фераях существует решение, в котором один иа фераей расположен на 5-й горизонтали и 2-й вертикали, тогда данное, выражение вырабатывает неуспех с сообщением 134 (5 2).

Если же есть решение, где один иэ ферзей находится на 7-й горизонтали и б-й вертикали, тогда все Р-точки и обратные операторы внутри этого выражения уничтожаются, а само выражение успешно и имеет аиачеиие (7 6). В остальных случаях значением выражения является атом Т. 3.7. Именованные развилки Раавилки, которые мы до сих пор рассматривали, не идентифицируются. Если воэвраты по неуспеху происходят только к поь следним развилкам, то рааличать развилки и ие нужно, Но если требуется осуществить возврат к какой-то предыдущей раавилке, то воаникает проблема: каким образом указать эту раавилку? В некоторых случаях здесь помогает рассмотренная в предыдущем параграфе функция РА1ЬЕХ.

С ее помощью можно осуществить возврат к развилке, что была определена до входа в какую-то объемлющую процедуру. Однако другие развилки, например те, что остались в процедурах, уже'аакончнвших свою работу, оказываются недоступными. В связи с этим в планере разрешено давать развилкам имена, чтобы затем можно было ссылаться на эти развилки и осуществ-' лять воаврат к ним по неуспеху. ФУикЦиа РР: 1РР вате е1 еэ ... еа1, РЯ)ВВ, й) 1. Эта функция действует точно так же, как функция АЬТ, т. е: определяет развилку, Ьй альтернативой которой является вычисление формы еь ио в дополнение к атому функция РР дает имя своей раавилке, которое задается аргументом вате.

Данный аргумент должен быть атомом или ;переменной, аначением которой является атом; этот атом и есть имя развилки. Осуществить возврат по неуспеху к раавилке, имеющей имя, можно с помощью функции РА11,. В 1 3,2 были рассмотрены обращения к этой функции с одним аргументом или беэ аргументов. Допускается также обращение с двумя аргументами: [РАН е а), В()ВВ.

Значением первого аргумента, как и раньше, может быть любое выражение Е, а вот значением второго аргумента должен быть какой-либо атом А. Функция РА1Ь уничтожает все Р-точки, пот ставленные после того, как была определена развилка с именем А, и вырабатывает обычный неуспех, связывая с ним сообщение Е. Тем самым этот неуспех вернет программу к развилке с именем А. Если раавилок с именем А несколько, то воаврат происходит к последней иэ ннх. Если же таких раэвилок вообще нет, то осуществляется выход по неуспеху на верхний уровень программы 135 вычнсление текущего выражения программы оказывается неуопешным.

Рассмотрим следующий пример. Предположим, что некоторое дерево задается своим корнем Я и функцией ДОЧВЕРШ, которая по названию любой вершины дерева выдает список названий всех ее дочерних вершин. Требуется определить, есть ли.ввтом дереве хотя бы одна вершина на уровне, глубина которого больше заданного чдсла Ы. (Считаем, что корень дерева находится на нулевом уровне, его дочерние вершины в на первом уровне л т, д.) Решение втой задачи может быть описано в виде следующей функции: [ПЕР!НЕ УРОВ (1АМВВА (Б Х) [РВОО ((К 0)) [РР 1 () [ВЕТПВН [ХЕ() [МЕБЯ] АМОКО]]] 1 [БЕТ Я [АМОКО [ДОЧВЕРШ .Я]]] [АВВ1 К] [СОНЕ ([ЬЕ .К .Х] [60 Ц)] [РА1Ь Т 1]])] Данная функция ведет поиск в глубину выбирает какую-то ветвь дерева и исследует ее до конца или до уровня Н+ 1.

Число К указывает уровень рассматриваемой в данный момент вершины Я. Если К не больше Х, а Б — концевая вершина, то функция ДОЧВЕРШ в качестве своего значения выдает пустой список, поэтому функция АМОКО вырабатывает неуспех (с сообщением АМОКО), по которому присходит возврат к предыдущей вершине дерева, и далее рассматривается другая ветвь от атой предыдущей вершины. Если глубина дерева ие превосходит Н, то будут просмотрены все вершины дерева и в конце концов программа вернется к функции РР по неуспеху, с которым связано сообщение АМОНО.

В данном случае значение функции УРОВ равно (). Но если при просмотре дерева была найдена вершина на более глубоком; чем Х, уровне, 'тогда поиск ораву же прекрап(ается и вырабатывается неуспех с сообщением Т, который, минуя зсе развилки, соответствующие точкам ветвления дерева,распространится до функции РР. В данном случае значениям функции УРОВ. является атом Т. 3.8. Функции «к и Г1]Ч0 В планере проверку каких-либо условий можно оформить не только в виде функций-предикатов, принимающих значения «истина> и «ложь», но и в виде функций, вычисление которых успешно, если проверяемое условие выполнено, и неуспешно в противном случае. Таковы, найример, рассмотренные выше функ.- ции БОМ, ФБ и РАТН.

Если для работы с преднкатами использу- 1ЗБ ется функция СОг)О, то для работы с функциями второго типа в языке испольауетсн встроенная функция 1Р, обращение к которой можно рассматривать как условное выражение, реагирующее на успех/неуспех. Как и у функции СОг)О, аргументы функции 1Р называются клаузами, а их пер;зые злемеиты — условиями. Обращение к этой функции имеет следующий вид; [1Р.(е е ... етщ ) [еа е„... е, )], РВОВК, Функция 1Р прежде всего ставит Р-точку, а' затем по очереди вычисляет условия ес Если вычисление очередного условия неуспешно, то выработанный при этом неуспех будет «пойман» данной Р-точкой, после чего функция переходит к вычислению условия иэ' следующей клаузы. Если окажется, что все условия не-. успешны, функция уничтожит свою Р-точку и успешно закончит работу со значением ( ).

Характеристики

Тип файла
DJVU-файл
Размер
3,34 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее