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

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

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

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

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

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

Сделать это можно с помощью такого условного выражения: [СОЧВ ([А(»)В [Н()М .Х] [ННМ .У]] [+ .Х Х]) ([ОВ [1В .Х] [10 .У]] (.Х -1- .У)) (Т ( ))] Отметим, что последнюю клаузу — (Т ()) — можно было бы и опустить, поскольку функция СОНЭ, согласно определению, и так выдаст пустой список () в качестве своего аначения, если дза первых условия ока>кутая ложными. [.9. Функция РВОО В языке имеется несколько встроенных функций, вычисление которых напоминает выполнение блоков в язьп»е алгол-60. Такие функции мы будем называть блачкыми функциями, или просто скоками.

Одна из иих, а также сопутствующие ей функции рассматриваются в етом параграфе. ЗЗ 3 и. н. пильщиков Функция РКОО. Обращение к этой блочной функции имеет следующий вид: (РКОО (а, аа ... а ) е» е» ... еь), РБ11ВК, »и ) О, й )~ 1. (РКОО (Х (У А) 2 ()»)»5 (2 .Т>)) ...) будут введены четыре локальные переменные с именами Х, г', 2 п 'т»5, причем Х и'Х не получат начальных значений, У получит начальное аначение А, а %5 — значение (2 .'»'>. После введения локальных переменных функция РКОО переходит к вычислению своего тела: по очереди вычисляются операторы еь Когда будет вычислен последний оператор еы функция закончит свою работу со значением, равным значению оператора еь. При выходе из функции ее локальные переменные уничтожаются.

Отметим, что вычисленное значение любого оператора ее кроме последнего, игнорируется. Поэтому, хотя е, могут быть произвольными простыми формами, в качестве е» имеет смысл испольаовать только идентификаторы, играющие роль меток, и обращения к функциям, которые имеют побочные эффекты. К таким функциям относятсн, например,-встроенные функции БЕТ, 00, КЕТОКР), ВО и СО»10. Функция БЕТ: (БЕТ» е), БПВК. Если аначением второго аргумента может быть то аначением первого аргумента должен быть являющийся именем одной из существующей. переменной, например переменной ближайшегб нибудь другого объемлющего блока.

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

Вычисление функции РКОО начинается с обработки описания локальных переменных, в результате чего вводятся в употребление переменные, областью су»цествования которых является тело данного блока. Каждый элемент а» олисапия вводит одну локальную переменную. Если е» вЂ” идентификатор, тогда это — имя переменной, которой не присваивается никакого начального аначения. Иначе а» должен быть 1 списком иа двух алеменгов: идентификатора и любого выражения. Идентификатор определяет имя локальной переменной, а выражение,(оно не вычисляется) — ее начальное аначение. Например, при вычислении блока лается выражение Е, однако главное в этой функции — ее побочный эффеит: переменной с кмеием 1 присваивается новое значение Е. Например, после вычисления [ЯЕТ Х [ВЕЕТ 1 (А В С)]] -» (В С) переменная Х получит значение (В С), а после вычисления [БЕТ [2 (Х У Е Ж)]»5] переменной У будет присвоено значение»5.

Если в первом из этих примеров имя переменной — Х вЂ” аадано явно, то во втором примере имя переменной — У вЂ” было получено в реаультате вычисления. Таким образом, нмя переменной, которой присваивается значение, может быть варанее и неизвестно. Но, отметим, в любом случае значением первого аргумента должно быть просто ими переменной, без каких-либо префиксов.

Функция ЯЕТ, как правило, используется лишь ради своего побочного эффекта. Но иногда используется и вырабатываемое его значение. Например, присвоить переменным Х и У одно и то же эначоние — скажем, текущее значение переменной Š†мож так: [ЯЕТ Х [БЕТ Х .2]]. Функция ЯЕТ относится к классу БОВЕ, поэтому вычисление внешней функции ЯЕТ начинается с вычисления ее аргументов. Вычисление формы Х дает этот же идентификатор Х, а вычисление аргумента [БЕТ У .Е] дает аначенне переменной Х, иоторое внешняя функция ЯЕТ н присваивает переменной Х.

Кроме того, при вычислении внутренней функции ЯЕТ также был побочный эффект; переменная у сменила свое значение на значение переменной Е. Таким образом, сначала х', а затем Х получили одинаковое значение. Значением всего указанного выражения являетея значение переменной Е,ио оно уже не используется. Функция 60: [60 ~], ЯЮВВ. Зта функция осуществляет переход по метке 1. Как уже было сказано, операторы блока выполняются в том порядке, как они записаны.

Функция же 60 позволяет изменить атот порядок выполнения: она передает управление на оператор, следующий эа меткой 1. Например, в блоке [РВ06 '(Х) [60 В] А [ЯЕТ Х 5] В [БЕТ Х 7] ...] первым будет выполнен оператор [60 В], а следующим — оператор [ЯЕТ Х 7]. 35 Как и все функции, функция 00 имеет значение (им является 1). Однако воспользоваться этим значением никогда не удастся, поэтому данная функция вычисляется исключительно ради ее побочного эффекта — перехода по метке. Как.правило, эта метка известна заранее, позтому чаще всего в обращениях к функ.ции метки указываются явно. Но в общем случае метка может быть и вычислена, что можно использовать, например, для органиэации переключателя: [60 [Х (А В С Р)]). Здесь будет осуществлен переход по одной из меток А, В, С илп 0 в зависимости от того, какое текущее аначение имеет переменная Х: 1, 2, 3 или 4.

Отметим, что в плзнерских программах в роли меток могут выступать только те идентификаторы, которые находятся на верхнем уровне блочных функций. Ни в каких других позициях, например внутри условных выражений, идентификаторы не рассматриваются как метки. Поскольку операторами блоков могут быть обращения к любым функциям, в частности к блочным функциям, то возможна .вложенность одних блоков в другие. Все переменные и метки внутреннего блока считаются локалиаованными в нем и недоступными извне. Поатому использовать во внешнем блоке переменные внутреннего блока или осуществлять переход по метке внутреннего блока из внешнего аапрещено. А вот переменные и метки внешнего блока доступны из внутреннего блока. Так, функция ОО сначала просматривает метки ближайшего объемлющего ее блока; если нужная метка здесь есть, то на нее и осуществляется переход.

Но если ее нет, тогда. функция ищет эту метку во внешнем блоке. Аналогична ситуация и с переменными: если нужная переменная не описана во внутреннем блоке, то она берется иа внешгего блока. Функция ВЕТВЕЙ: [ВЕТНВЯ е), З()ВВ. Выше было сказано, что выход иэ блока осуществляется после того, как вычислен его последний оператор (если он, конечно, не привел к переходу по какой-либо метке).

Однако очень часто необходим выход из «середины» блока. В таком случае как раа и применяется функция ВЕТ()ВХ. Ее действие заключается в том, что она полностью аавершает вычисление ближайшей блочной функции и объявляет ее значением выражение Š— значение своего аргумента. Функция РО«[РО е«е« ... е«), РВОВ, з ) 1. Это «составной оператор». Функция по очереди вычисляет свои аргументы. Значение последнего аргумента является аиачезием функции. Например: [ОО [ЗЕТ Х 52] .Х] -~ 52 Фуикция 00 испольвуется в тех случаях, когда по правилам языка в каком-то месте программы должно находиться одно выражение, а по смыслу здесь нужно вычислить несколько выражений.

Сделав эти выражеиия аргументами функции ВО, мы удов,летворим обоим этим требованиям. Отметим, что обращаться к фуккцилм 60 и КЕТОВ)( можпо только внутри блочных функций, в то время как обращения к функциям ЯЕТ и РО допустимы и вне блоков. Кроме рассмотрекиых выше операторов присваивания, перв- хода, выхода и составного, в блоках лужны еще и условные операторы.

В роли такого оператора в языке выступает функция СОКР, поскольку з обращениях к ией можно укааывать любые функции, в частности и функции с побочными эффектами. Например, если мы хотим присвоить переменной Х зиачеиие 2, а перемеииой У вЂ” значение С, когда значением переменной 2 является число, хотим ничего не делать, когда значение 2 †шка, и хотим осуществить переход по метке Ь в остальных случаях, то это можно сделать, вычислив выражение [СОг[В ([К()М .2] [ЯЕТ Х 2] [БЕТ У С]) ([ВСАТ .2]) (Т [60 ЦЦ Таким обрааом, функция СОКР' используется в языке и как условное выражение, пааиачеиие которого — вычислить некоторое звачеиие, и как условиый оператор.

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

Потому-то при использоваиии функции СОг(Р как условного выражения в' 37 каждой клаузе обычно указывается только условие и одно выражение. Познакомившись со встроенными функциями, имеющими побочный эффект, мы теперь мсжем рассмотреть пример испольвования функции РК06. Предположим, что вначением переменной Ь является список в круглых скобках, и напишвм функцию РК06, которая «переворачивает> этот список, т. е, переписывает в обратном порядке его влементы.

Переменная Ь является внешней по отношению к данному блоку. [РВ06 (1Л (ВЬ ( ) ) Е) [ЯЕТ РЛ .1] Ь[СОг(Р ([ЕМРТХ .1Л] [КЕТПВР( .КЬ])] [ЯЕТ Е [1 .Ь1]] [ЯЕТ 1Л [ВЕЯТ 1 Л1]] [ЯЕТ В1 (.Е (.К1)] [60 Ь]] В этом блоке вводятся три локальные переменные Ь1, ВЬ и Е, причем ВЬ получает начальное вначение (). Первый оператор блока присваивает список Ь переменной Ь1; это сделано для того, чтобы не портить значение внешней переменной Ь, а наменять только аначение локальной переменной Ь1. Все последующие операторы обраауют цикл, на каждом шаге которого от -спнска Ь1 отщепляется его первый элемент (сам элемент становится значением переменной Е, а «хвост« описка †нов значением переменной Ь1), и этот элемент вставляется в нужном порядке в списке ВЬ, где постепенно накапливается «перевернутый» список.

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