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

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

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

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

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

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

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

Тогда в результате вычисления выражения [АВЕлОНЕ )Ь] значение 53 переменной Х увеличится на 1. Действительно, при вычислении этого выражения параметру == функции присвоится идентификатор Х. Тело функции — это обращение к функции БЕТ, которая присваивает переменной Х (этот идентификатор является вначеннем ее первого аргумента) значение своего второго аргумента. При вычислении этого аргумента к 1 добавляется значение выражения [ЧА(Л)Е .==], равное числу 4 в значению переменяой Х, имя которой получилось в реаультате вычисления формы .==.

Таким оаразом, переменной Х будет присвоено число 5, что в требовалось. Почему для обозначения параметра функции АВВ-ОЕЕ выбрав необычный идентификатор ==? Ответ такой. Если бы мы обозначили этот параметр каким-то обычным идентификатором, скажем Х: [ВЕ«)ХЕ АВВ-О(«'Е (ЬАМВВА (Х) [ЯЕТ .Х [+ 1 [ЧА1ЛЕ .Х]]])] то наша функция неправильно бы работала в том случае, когда при обращении к ней указывалась переменная с именем Х.

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

Поскольку описание параметра «ближе», чем описание переменной, то ЧАЛОЕ берет значение именно параметра, т. е. идентификатор Х. Именно к этому идентификатору будет прибавляться 1, что, естественно, приведет к ошибке. Таким образом, совпадение имени параметра функции АВВ-ОЕЕ с именем переменной, существовавшей до обращения к функции, привело к тому, что зта переменная стала недоступной нз тела функции, поэтому взять или изменить ее значение в теле функции не удастся. Иабавиться от такбго дефекта в определении функции АВВ-0(ЧЕ нельзя (если ее параметр обозначен как ==, тогда функция неприменима.к переменной с именем. =).,Однако выбрав в качестве названия параметра «экзотический» идентификатор ==, которым редко обозначают имена переменных, мы уменьшили вероятность проявления дефекта функции АВВ-ОМЕ. В предыдущей части данного параграфа под'«переменными» понимались «локальные переменные», которые вводятся только 54 на время выполнения какой-то процедуры.

Но в языке имеются и переменные иного сорта — глобальные переменные, которые называются константами. Константы отличаются от локальных переменных тем, что онн существуют с мо»«ента своего появления и до конца вычисления программы и что опи доступны нз любой точки программы. Одно из применений 'констант — зто обозначение каких-либо величин. Например, чтобы каждый раз не выписывать много цифр числа я, можно ввести в программе константу с именем Р1, присвоив ей з качестве значения число ЗЛ41592653, и дальше испольэовать в программе только краткое обозначение Р1. Именно поэтому такие объекты в яаыке и называю»ел константами.

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

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

Сегментное обращение к константе задается префиксом «Н», а результатом такого обращения является сегмснтированное значение константы. Например, если:С вЂ” (А В <С)), то 1;С вЂ” А В (СЕ Определить константу можно в любой момент и в любой точке программы, после чего она становится доступной во всей,программе, Изменить аначение константы также можно в любой момент к в любом месте.

Оба этих действия выполняет Функция СЯЕТ: 1СЯЕТ 1 «1, ЗОВЕ. Значением первого аргумента должен быть идентификатор 1, а аначением 'второго аргумента может быть любое вьгражеяие Е. Если константы с именем 1 в программе еще нет, тогда функция вводит новую константу с этим именем и значением Е. Если же константа ! уже существовала, то функция присваивает ей новое значение — выражение Е. Таков побочный эффект функции СВЕТ, значением же ее является выражение Е.

Например, после вычисления [СВЕТ Р! ЗЛ4!592653) в программе появится константа с именем Р1 и значением ЗЛ4!592653. Имена констант не должны совпадать с именами процедур (функций, сопоставителей и теорем). Если определяется константа, имя которой совпадает с именем процедуры, то последняя уничтожается. Верно и обратное: определение процедуры (с помощью функции ОЕР1г(Е) уничтожает константу с тем же именем.

С именами же локальных переменных (а также меток) названия констант могут совпадать. Вопрос, к чему происходит обращение — к константе или переменной, легко решается по префиксу, укааанкому в обращен»1»г. Например: [РВОО (Х) [БЕТ Х А) [СВЕТ Х В) (.Х:Х)) — » (А В) В дальнейшем изложении мы оставим за локальными переменными название «переменные», а глобальные переменные будем называть только «константами». 1Л5. Ввод-'вывод Как мы видели в ! !.!3, исходные данные для плэнерскей программы могут быть заданы кап аргументы ее основной функции, а значение этой функции можно рассматривать как результат вычисления всей программы, причем этот результат автоматически выводится на печать.

Однако на практике такой способ задания исходных данных и печати реаультата неудобен, поэтому в нзык встроены процедуры ~ввода-вывода, позволяющие запрашивать данные для программы н, печатать ее результаты в любой нужный момент. Функция ВЕАВ: [ВЕАЩ. Эта функция, не имеющая аргументов, осуществляет ввод информации. Она считывает очередное выражение из числа заданных для ввода и, не вычисляя его, объявляет своим значением.

Например, если для ввода подготовлена следующая последовательность выражений: (А В С) 5.2 [ЕЬЕМ ! .Х) то при вычислении выражений [ЯЕТ Х [БЕАБ]] [ЯЕТ «' ([БЕАР] <КЕАБ>)] переменной Х будет присвоено значение (А В С), а переменной Х вЂ” эначепие (5.2 Е1ЕМ 1 .Х). Фушщия РК1г«Т: [РБ1КТ е], ЯБВБ. Данная функция выводит (например, печатает на АЦПУ) эначеяне своего аргумента. В этом заключается побочный эффект функции, значение же ее совпадает со аначением аргумента.

Например,при вычислении выражения [ВО [ЯЕТ Х (А В)] [ЯЕТ Т [РБ1КТ .Х]]] переменные Х и г получат одно и то же апачение — список (А В), п этот же список будет выведен на печать. Функция РБ1КТ печатает только одно выражение, причем печатает его с новой строки. Нередко же требуется напечатать «в одну строку> сраау несколько выражений. В таких случаях применяется другая функция вывода— Функция МРВ1КТ> [МРБ!КТ е«еа ... е>], Б()ВВ, 1«Ъ1. > Аргументами а«этой функции могут быть как простые, так и Р / сегментные формы.

Функция вычисляет список [е«еа... «а) и объявляет его значение своим реаультатом. Одновременно функция выводит (например, па АЦПУ) аначение этого списка, но беэ внешних круглых скобок. Другими словами, функция печатает эначения своих аргументов «Э одну строку>. Если, к примеру, эпачением переменной ФРАЗА является список (КИСКА ЛЮБИТ МОЛОКО), а юичением переменной СЛОВО— атом КИСКА, то в реаультате вычисления выражения [МРБ1ЫТ В " БФРАЗА " НЕПОНЯТНО: .СЛОВО] получится эпачение (В " КИСКА ЛЮБИТ МОЛОКО НЕПОНЯТНО: КИСКА) и будет напечатано: В " КИСКА ЛЮБИТ МОЛОКО " НЕПОНЯТНО: КИСКА Сделаем замечание относительно вывода вещественных чисел.

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