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

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

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

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

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

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

Возможный выход — организовать цикл [ЯЕТ Я 0] [ЬООР )т .Ь [ЯЕТ Я [+ .Б .г(!]] Однако более эффективен иной выход: сначала построить «законпоез обращение к функции сложения — [+ В Н ... ( ], где Ь— числа из списка Ь, а вэтом уже вычислить это выражение, обратившись к функции ЕЧАЬ. Таким образом, наша задача может быть решена следующим образом: [ЯЕТ Я [ЕЧАЬ [РОЕМ [+ ).Ь]1]] [Л2. Определение новых функций До сих пор мы рассматривали лишь встроенные функции языка, продолжим их изучение и позже. Но сколько бы встроенных функций не было в языке, в любой более или менее сложной программе возникает необходимость в новых функциях, которые выполняют действия, специфичные именно для этой программы. Язык допускает использование таких функций.

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

Второй аргумент — список (ЕАМВВА иаг доНу) — нааывается овределающам выражением функции ув. Его первый элемент ЕАМВВА указывает, что определяется именно фуйкция, а не процедура иного типа (сопоставитель .или теорема), второй элемент иаг описывает (формальные) аараметры определяемой функция, а третий элемент — простая форма ЬоН1г — нааывается телом функции ра и опнсывает алгоритм ов вычисления. В результате выполнения функции ВЕР1ЫЕ вырабатывается эначение гв.

Однако главное в работе данной функции ааключается в ее побочном эффекте —,в том, что она вводит и программу новую функцию с указанным именем и определяющим выражением, к которой теперь можно обращаться иа любой точки программы. (Отметим, что если имя новой функции совпадает с именем другой процедуры илй с именем константы, то эта процедура или константа автоматически уничтожается.) Обращение к новой функции записывается по тем же правилам, что и обращения к встроейным функцинм: дто ае ае ... аь'1 или (ув ае ае ...

аь), аДе ро — имЯ фУнкЦии, опРеДеленной нольаователем, а ае — аРгУ- менты (фактические параметры), ири которых функция должна быть вычислена. Сколько аргументов можно задавать при обращении к функции ро, какие ограничения на них накладываются — эсе это определяется элементом иаг из определяющего выражения данной функции. Синтаксически иаг может быть идентификатором, »-.переменной или списком, составленным иа идентификаторов и *-переменных.

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

Однако в данном случае аргументы могут быть любыми выражениями, поскольку они не вычисляются: при обращении к функции ее параметру присваивается 1 список, состаалеикый из невычисленных аргументов. И, наконец, саг может иметь вид (и, и, ... еь), з ) О, где е~ — либо просто идентификаторы, либо идентификаторы, помеченные звездочкой. У такой функции ровно й параметров, их имена — идентификаторы гч (без звездочек), и при обращении к функции нужно указывать ровна з аргументов. Когда вычисляетсн обращение к функции, ьму параметру присваивается либо значение ьго аргумента (он должен бьжь простой формой), если и, не помечен звездочкой, либо сам ьй аргумент (любое выражение) в том виде, как он задан з обращении, если и~ помечен.

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

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

Раосмотрим описанные выше правила определения функций и вычисления обращений к ним па конкретных примерах.' В реаультате вычйсления выражения [ВЕРПЧЕ 1Р (ВАМВВА (Р»Е1 еЕ2) 1СОг(0 (.р'(ЕЪАТ, .ЕЦ) (Т (ЕУАЬ .Е21)))) будет определена функция с именем 1Р, дейотвие которой аналогично вычислению конструкции Н Р Феп Е1 е1зе Е2 яаыка алгол-60. В частности, аналогия распространяется и на то, что из двух выражений Е1 и Е2 вычисляться всегда будет лишь одно. Например, при значении перемепной ЪЧ, равном (А), обращение [1Р [ВМРЕ ЛУ] [ЯЕТ Х А] [ЯЕТ Х В]] вычисляется следующим обрааом.

Поскольку первый параметр функции 1Р не помечен, первый аргумент вычисляется; второй же и третий параметры помечены, поэтому два других аргумента не вычисляются. Следовательно, параметрам присваиваются такие значения: Р:= (), ЕП= [ЯЕТ Х А], Е2:= [ЯЕТ У В]. Теперь вычисляется тело функции 1Р, т.

е. условное выражение. Так как значение переменной Р равно (), в условном выражении вычис. ляется выражение из второй клаузы, т. е. выражение [ЕЧАЕ .Е2]. Вычисление его сводится к вычислению выражения .[ЯЕТ 'У В]. Таким образом, переменной Ч присваивается аначение В, а значением тела функции 1Р становится атом В. Этот же атом является и значением укаааннаго обращения к функции 1Р. Данный пример покааывает, какие параметры определяемых функций следует метить авеадочкой, а какие — нет. Если некоторые аргументы функции вообще не должны вычисляться либо они будут вычисляться,но только во время вычисления тела функции, тогда соответствующие параметры нщбходимо пометить.

Если же в теле функции должны испольэоватьсн значения аргументов, тогда соответствующие параметры ме метятся. В следующем примере определяется фувнция, обращаться к которой можно с любым количеством аргументов, причем при обращении все эти аргументы вычисляются. [ОЕИХЕ СА (ЬАМВПА М [/ [ЕЧМ [РОЕМ [+ ЕХ]]] [ЬЕНОТН .Щ])] Данная функция подсчитывает среднее арифметическое (числовых). аначений своих аргументов. Пусть, например, значением переменной Х является число 5.8, тогда обращение [СА 6 .Х [+ .Х 2.2]] вычисляется так. Поскольку в определяющем выражении данной функции в качестве описания параметров указан идентификатор М, то ато означает, что все аргументы, указанные в обращении, вычисляются и что из их значений составляется список, который присваивается параметру Е: Н:= (6 5.8 8.0). Далее вычисляется тело функции СА — обращение к функции деления, первый аргумент который находит сумму чисел списка Н (см.

$1.И), а второй — общее количество этих чисел. Таким образом, аначением функции СА является частное от деления 19.8 на 3, т. е. число 6.6. Отметим, что в общем случае правила яаыка ие накладывают ограничений на значения аргументов определяемых функций. Однако алгоритмы вычисления этих функций обычно ограничивают ! область допустимых аначений аргументов. Так, вначениями аргументов функции СА могут быть только числа. Подобного рода ограничения никак не фиксируются в плзнерскмх программах; помнить о них и придерживаться их обязан сам польэователь, если он не хочет, чтобы вычисление функции привело к ошибке.

Примером функции с прои»вольным числом аргументов, которые заранее не вычисляются, может служить следующая функция ОВ1, действие которой эквивалентно вычислению встроенной функции ОВ: [РЕР1ХЕ ОВ1 (1АМВРА «Р1Я [РВОС (Щ А [СО)ЧР ([Р1Н Р Р1Я] ()) ([ЕЧАЬ .Щ) (Т [66 А)Н))4 Например, обращение [ОВ1 [АТОМ .Х) [Е1) .Х (А)]) при значении (А) у переменной Х вычисляется так. Параметр функции ОВ1 помечен, поэтому ему присваивается список иэ не- вычисленных аргументов: Р1Я:= ([АТОМ .Х) [Е1) .Х (А))).

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

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

Если Р— атом, то эначением функции объявляется 1. Если Р— инее атомарное выражение или пустой список, то аначение функции равно О. Иначе Ь является иепустым спис- ком, и в этан случае функция )ЧА рекурсивно применяется к первому алемеиту списка Ь, чтобы определить сколько атомов входит в етот элемент, и к «хвосту» списка Ь, чтобы подсчитать число атоиов в этой части списка. Затем полученные числа складыватотся, что и дает общее количества атомов, входящих,в весь список Ь.

Например: [)»(А (А (В 2 (СЦ «70Ц -ь 5 1.»3. Программа Программа на пленере представляет собой последовательность выражений (точнее, простых форм). Зтп выражения принято навывать выражениями верхнего уровня нрограммы, чтобы отличить их от подвыражений, нз которых они состоят. Выполнить программу — ато вначит последовательно вычислить выражения ее верхнего уровня. Более точно, вычисление программы происходит так. Считывается ее первое выражение, и оно печатается на АЦПУ (при работе с пленер-системой в пакетном режиме) или на внране терминала (в диалоговом режиме).

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