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

DJVU-файл В.Н. Пильщиков - Язык Плэнер, страница 8 Искусственный интеллект (3181): Книга - 7 семестрВ.Н. Пильщиков - Язык Плэнер: Искусственный интеллект - DJVU, страница 8 (3181) - СтудИзба2019-09-18СтудИзба

Описание файла

DJVU-файл из архива "В.Н. Пильщиков - Язык Плэнер", который расположен в категории "". Всё это находится в предмете "искусственный интеллект" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр DJVU-файла онлайн

Распознанный текст из DJVU-файла, 8 - страница

Когда список Ь1 станет пустым, то согласно условному оператору произойдет. выход из блока со эначением, равным последнему вна-- ченкю переменной К1 В данном примере идентификатор Ь испольэовался и как метка, н как переменная. Это не ошибка. В плэнере имена переменных, имена меток и имена процедур могут совпадать. Это ле выэывает путаницы, поскольку повиция, в которой находится идентификатор, однозначно определяет, какой объект обозначен данным идентификатором. [ЛО. Циклы С помощью описанных в предыдущем параграфе средств можно организовать любые циклические вычисления. Однако для удобства написания циклов в ябык встроены специальные функции, которые мы н рассмотрим в этом параграфе.

Один из типичных циклов, испольауемых в плэнерских программах,— это цикл по элементам некоторого списка: определен- 38 ные действия должны быть повторены для каждого элемента данного списка. Примером подобного цикла может служить задача ° переворачивания» списка, рассмотренная в предыдущем параграфе. Возможный способ организации таких циклов ааключается в том, что от списка постепенно отщепляется по одному элементу и для этого элемента выполняются требуемые действия. Если список является, скажем, значением переменной Ь, то схема этого цикла талона: А [СОХО ([ЕМРТУ .Ц [ОО В])] [ЯЕТ Е [1.Ц] [ЯЕТ 1 [КЕЯТ 1,Ц] [ОО А] В Здесь в начале каждого шага цикла выполняются одни и те же действия: проверяется, не пуст ли список Ь, и, если не пуст, выделяется его первый элемент, который присваивается некоторой переменной Е, а список иэ остальных элементов делается новым значением переменной Е. Для сокращения записи этой группы действий в язык встроена Функция ЛХ: [Г1М й»»], ВОВК.

Значениями обоих аргументов должны быть имена переменных, описанных в одном из объемлющих блоков, причем переменная 1» обязана иметь значение. Если им является непустой список, тогда функция присваивает первый элемент этого списка переменной йь а «хвосг» списка, т. е. список из остальных элемеитов,— переменной йц значение функции в данном случае равно (). При любом другом значении переменной 1» (пустом списке или атомарном выражении) функция ничего не декрет, ее значение— атом Т. Подчеркнем, что значениями аргументов функции Р1г( должны быть просто имена переменных, без всяких префиксов.

В пла-. нере, вообще, действует правило: если аргумент некоторой функции — это переменная, которой функция будет что-то присванватть то имя этой переменной укааь»вается беа префиксов. Используя функцию Р1Х, описанную выше схему цикла па алементам списка П можно упростить: А [СОг)Р ([Р1г( Е Ц [ОО В])] [00 А] В 39 Например, «перевернуть» список, явлнющийся значением переменной Ь, можно так: [РВ06 (Ь1 (ВЬ ( ) ) Е) [БЕТ 1Л .Ц А [СОЫП ([Р1Ы Е Ь1) [ВЕТПВЫ .В1])) [БЕТ ВЬ (.Е ),ВЬ)) [60 А)] Во многих случаях еще более удобным, чем функция Р1Ы, оредством для оргаииаации цикла по элементам списка является Функция ЬООР: [ЬООР х ! «» е» ... е»], РБПВВ, Ь ) 1. Первый аргумент х этой функции не вычисляется; он указывает пмя переменной, которая играет роль параметра цикла.

Эта переменная вводится при входе в функцию ЬООР и локализуется внутри иее. Функция действует следующим обравом. Она вводит переменную х и вычисляет значение второго аргумента, которое долл«но быть некоторым списком Ь. Далее фу«пщия последовательно присваивает переменной х элементы списка Ь и для каждого такого аначения переменной х по очереди вычисляет формы еь Значением функции является значение формы еы вычисленное иа последнем шаге цикла. Возможно, что зна~ением ! был пустой список, тогда цикл не выполняется, а значением функции является (). Действие функции ЬООР эквивалентно вычислению следующего выражения (а и Ь вЂ” вспомогательные переменные, имена которых отличны от названий других переменных): [РВ06 (х о (Ь ())) [БЕТ а !) А [СОЫП ([Р1Ы х а) [ВЕТПВЫ .Ь])] [БЕТ Ь [ПО е~ е» «»]] [60 А)) Испольауя функцию 1,00Р, «перевернуть» список Ь можно так: [РВ06 ((В1 ())) [ЬООР Е .1 [БЕТ ВЬ (.Е !.ВЬ)) .ВЬ]] Рассмотрим еще одни пример.

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

Функция увеличивает на 1 зто вначение и делает полученное число новым значением переменной. Это же число является и значением функции. Примеры: [РО [ЯЕТ Х 5) (.Х [АРР1 Х) .Х]] -~ (5 б б) [РО [ЯЕТ-Х г"] [ЯЕТ г" — Ч.4] [АРШ .Х] .У) -~- —,6.4 В последнем примере значением аргумента функции АРР1 является идентификатор У, поэтому меняется значение именно этой переменной, а не переменной Х.

Функция ЯРВР [ЯРВ1 1), ЯРВЕ, Эта функция действует аналогично функции АРШ, но только не увелнчвваег, а уменьшает ла 1 значение переменной. Функции АРР1 и ЯПВ1 попользуются для органивации циклов, в которых параметр цикла принимает числовые значения, изменяющиеся с шагом 1 или — 1. Например, цикл, параметр К которого меняет свое значение от 1 до некоторого числа 11 с шагом 1, может быть организован так: [ЯЕТ К О] А [АРР1 К] [СОМО ([ОТ .К .Р)) [60 В))] [60 А] В Для большего удобства в написании подобных циклов в яаык встроена Функция РОВ: [рОВ з п с, е, ... з„], РЯОВВ„Й ) 1.

Первый аргумент з данной функции не вычисляется и является параметром цикла, локализуемым внутри фу:вицин. Функция вводят переменную с именем з и вычисляет виачение своего второго аргумента, которое должно быть целым или вещественным числом 1т'. Далее функция по очереди присваивает переменной л значения 1, 2, 3 и т, д. и длн каждого такого значения переменной х последовательно вычисляет формы ео Цикл прекращается, когда очередное аначение переменной х становится строго болыпе числа У.

Значением функции является зяачение выражения еы вычисленное на последнем шаге цикла. В случае Л ( 1 цикл не выполняется ня разу, а значением функции объявляется пустой список (). Действие функции РОК эквивалентно вычислению следующего выражения (а и Ь вЂ” вспомогательные переменные): [РКОС ((х 0) а (Ь ( ))) [ЯЕТ а и] А [АО))1 х) [СОЕЙ ([СТ .х .а) [ВЕТСВВ .Ь) Ц [ЯЕТ Ь [ВО е~ ез ... еь]] [СО А)) Рассмотрим несколько примеров использования функции РОВ.

Следующая группа операторов вычисляет факториал Р целого числа Ы: [ЯЕТ Р 1] [РОК 1 .Ь( [БЕТ Р [Х .Р .Ц]) Действие встроенной функции [МЕМВ .Е .Ц (см. $ Ь7) можно описать в виде следующего блока: [РВОС () [РОК К [ЬЕЖСТН .Ц [СОКЕ ([ЕО [.К .Ц .Е) [ВЕТСВЫ .К]))п Функция РОВ„как видно из ее определения, предназначена для организации циклов, в которых начальное значение и шаг иаменеиия параметра цикла равны 1. Чаще всего именно такие циклы н используются в ялэнерских программах. Но если требуется органиаовать цикл, где это не так, тогда следует отказаться от использования функции РОВ либо приспособиться к ее особенностям.

Например, вычислить произведение Р = Ы.Х(Ы+ 1) Х ° . Х М с помощью этой функции можно следующим обрааом: [ЯЕТ Р .Ы] [РОК 1 [ — .М .Ы] [БЕТ Р [Х .Р [+.1 Ы))Ц В планере имеетсл еще две встроенниге функции, предназначенные для организации циклических вычислений. ФУнкЦиа %Н1ЬЕ: [КгН1ЬЕ Р е~ еэ ... еь), РАВЕ, й ) 1. Действие этой функции эквивалентно вычислению А [СОХО (р е, ез ... еь [СО А])) Таким образом, функция ЖН1ЬЕ вычисляет преднкат р и, если его значение отлично от (), последовательно вычисляет выраже- ния ес Затем эти действия повторяются вновь, Цикл прекращается, когда вначемие иредиката р становится равным ().

Значением функции всегда является пустой список (). Например, в реаультате вычисления [БЕТ Р [БЕТ К 1) ] [1ЧН1ЬЕ [1 Е .Р .11) [АВВ1 К) [ЯЕТ Р [Х Р К))! переменной Р будет присвоено значение наименьшего из факто- риалов, превосходящих заданное число йй Функция ПЕТ1Ь: [ПНТ1Ь е~ еэ ... еь р), РЯОВВ, й «) 1. Действие этой функции эквивалентно вычислению А [РО е1 еэ ... е» [СОг(В (р [ОО А)Ц) Следовательно, функция сначала вычисляет формы ео а ватам вычисляет предикат р. Если его аначение отлично от (), то данные действия повторяются вновь.

В противном случае функция еаканчнваег свою работу со значением (). [Л). Функции ЕУяЛ Следуя традициям языка лисп, планер имеет в числе своих встроенных функций функцию ЕЧАЬ, с помощью которой можно вычислять выражения, построенные в процессе выполнения программы. Обращение к этой функции имеет следующий вид: [ЕЧА1 е). Функция относится к классу ЯПВВ, поэтому при обращении к ней прежде всего вычисляется ее аргумент. Значение Е этого аргумента функция рассматривает кал простую форму (а Е обязано.

ею быть) и вычисляет ее, объявляя полученное значение своим вначением. Таким обрааом, функция ЕЧАЬ вычисляет вначение значения своего аргумента. Пусть, к примеру, значением переменной Х является список [+ 2 4), тогда имеем [ЕЧАЬ .Х) -~ 6 Действительно, аиачением аргумента является список [+ 2 4), вычислив который, функция ЕЧАЬ и получает число 6. Вычисление выражения, являющегося аначением переменной,— довольно типичное применение функции ЕЧАЬ в плэнерских программах. Такие выражения либо строятся во время 43 выполнения программы, либо известны заранее (при написании программы), но их нельая было вычислять раньше времени. Другое применение функции ЕЧАЬ вЂ” сразу вычислить только что построенные выражения. Напримор, если требуется вычислить условное выражение из двух клауз, которые варанее неиввестны, но являются значениями переменных Х п Ч, то это можно сделать, вычислив выражение [ЕЧАЬ [РОЕМ [СОР(П Х Х]]] Если, скажем, значением переменной Х является список (() А), а значением переменной У вЂ” список (Т В С), то в реаультате вычисления указанного выражения получится атом С.

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

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