В.Н. Пильщиков - Язык Плэнер, страница 3
Описание файла
DJVU-файл из архива "В.Н. Пильщиков - Язык Плэнер", который расположен в категории "". Всё это находится в предмете "искусственный интеллект" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 3 - страница
Ь Атомы. Значением атома всегда является мам этот атом. Поэтому АВС вЂ” АВС 49.6 -». 49.6 «20 -+ «20 2, Обращения к переменным с прей»иксом г:» (.-переменные). Значением такой формы является текущее значение переменной, ямя которой укааано в обращении.
Если,. к примеру, переменная Х .имеет аначение В, то .Х -«В Может оказаться, что в момент обращения к переменной она не «»писана или не имеет эначение, тогда вычислить данную форму нельая. 43 3. Обращение к константам с нреу)иксом е:» (:-неременные). Ревультатом обращения к константе (глобальной переменной) явлкется ее текущее зваченве. Например, если в программе определена константа с именем СО)г и еначением [А В], то :СО)Ч -«(А ВД Обращение к неопределенной константе является ошибкой. 4. Сниски е круглых скобках (1 сниски).
Л-список является формой, только если все его элементы — формы. Значением его является 1.-список, составленный ив значений его элементов. Так, при укаванных выше вначениях переменной Х и константы СОМ имеем (А .Х:СО)») -«(А В 1А В1) Отметим, что поскольку эначенинми атомов являются сами атомы, значением 1 списка, составленного ив атомов, является сам же этот 1 список. Например: (А 45 — 2.7 «650) — ~- (А 45 — 2.7 «650) Более того, совпадают со свовми значениями и 1 списки, элементами которых являются не только атомы, во и 1 списки, составленные из подобных же элементов.
Например: (А (В С)) -« (А (В С)) ((1 2) (3 (4 5)) 6) †« ((1 2) (3 (4 5)) 6) 5, Сниски е квадратных скобках (Р-сниски). Такой список является формой, только если он представляет собой обращение к функции. Значением данной формы является реэультат вычисления -функции при ваданных в обращении аргументах. Если, например, функция с именем + с(скалывает числа, то 1+ 234) -«9 Прежде чем перейти к сегментным формам яаыка, определим понятие сегментации еырагсенин.
Под этим понимается следующее действие: сегментация атомарного выражения дает это же самое выражение, а сегментация списка дает последовательность (сегмент) элементов этого описка, т. е. при сегментации отбрасываются внешние скобки списка. Таи, результатом сегментации списка (А (В> С) является сегмент А (В>.
С . Сегментные фошеы,1. Обращения к неременным с креугигсом «6» ()хнеременные). Значением такой формы является сегмеитированвое эначение укаеанной переменной. Например, при эвачении 'А у переменной Х и вначении 1А (В СЦ у переменной »' имеем !Х -» А !.У -». А (В С) 2. Обращенин к константам с префиксом «(:» ((:-переменные), Результатом вычисления втой формы является сегмептированное значение указанной константы.
3. Списки в у»косых скобках (Б-списки). Такое выражение является формой, только если оно представляет собой так называемое сегментное обращение к функции. Значением данной формы является сегментировавный реаультат вычисления функции. Например, если значением функции с именем !)()ОТЕ является ее аргумент, то («)()ОТЕ (А [В] (С В))) -» А [В) (С В) Никакие другие выражения языка не являются формами, попытка вычислить их приведет к ошибке. Отметим, что сегментные формы можно использовать только в небольшом числе случаев, которые всегда будут оговариваться явно. В дальнейшем же под еформой» будем понимать »простую «рорму», если ве укааано иное.
1.3. Обращения к функциям Функция — его процедура, в рееультате вычисления которой вырабатывается некоторое аначевие. В виде таких процедур в пленере представляются арифметические и другие операции (типа проверки на равенство), собственно функции (типа синуса) и операторы (типа оператора присваивания, цикла). Польеователь может вычислять функцию лишь ради ее побочного эффекта, но и в этом случае она должна выдавать некоторое значение.
При обращении к функции указывается ее имя и аргументы (фактические параметры). Имя функции — всегда идентификатор. Аргументами в общем случае могут быть любые выражения, но очень часто на них накладываются определенные ограничения. Значение функции — его некоторое выражение. В языке различаются два вида обращений к функциям — простые и сегментные. Простое обращение к Яункции с именем тн в аргументами-а; еаписывается в виде следующего Р-списка: [)н а» а» ... а») Этому обращению в обычной символике соответствует запись )н(а», а», ..., а»). Се»мактное обращение к у)ункции с тем же именем и теми же аргументами видается в виде Я-списка: (1н а» а» ...
а»г Примеры простых (слева) и сегментных (справа) обращений к функциям: [81М .Х] (31Я .Х) [НЕАВ 2 (А В С)) (НЕАВ 2 (А В С)) [ВЕАЩ (ВЕАР) (в последней строке укаеаны обращения к функции, не имеющей аргументов). При любом, простом нли сегментном, обращении к функции ее вычисление происходит одинаково, различие лить в том, что при сегментном обращении иолучениое еначение функции еще и сегментируется. Например, если функция ВЕЧ «переворачивает» список (переписывает в обратном порядке его элементы), задан-' ный в качестве аргумента, то имеем [ВЕЧ (А В С)) ' -~ (С В А) (ВЕЧ (А В С)) -~ С В А При обращении к функции разрешается в качестве первого элемента списка-обращения укаеывать не только имя функции, ио н .-переменную или:-переменную.
В таком случае берется текущее значение укааанной переменной (константы), которое должно быть идентификатором, и этот идентификатор рассматривается как имя функции, к которой происходит обращение. Например, обращение [.Р 5) эквивалентно обращению [315( 5), если текущим значением переменной Р является идентификатор 315(, либо эквивалентно обращению [СОВ 5)„ если переменная Р имеет еначение СОЯ. Такое неявное задание имени функции позволяет в ряде случаев сократить текст программы.
Все функции яаыка делятся на естрсенв»«е и овред«лвекме. Встроенные функции в его стандартные функции, правила вычисления которых нввестны транслятору языка. Описывать в программе такие функции, естественно, не надо. В пленере имеется большой набор встроенных функций, в виде которых представлены базовые операции по обработке данных и основные способы объединения операций в более крупные действия. Но как бы нн был велик набор'подобных функций, в каждой программе воаиикает потребность в новых функциях; специфичных для данной программы.
Такие функции должны быть описаны самим польеователем, только после этого оп нмеет право обращаться к ним. Именно ети функции и называются определяемыми. Правила определения новых функций будут объяснены позже, а пока мы рассмотрим встроенные функции яеыка. При описании встроенных функций будут использоваться следующие соглашения и обозначения. 16 Е При описании каждой встроенной функции будет указываться только простое обращение к ней и будут объясняться правила вычисления функции именно в етом случае.
2. Следуя традиции языка лисп, мы будем делить встроенные- функции на два класса — класс БОВЕ и класс РБОВК. К классу БАЕВЕ будем относить те функции, которые работают со аначеииями своих аргументов; все аргументы стих функций (в термино-логии языка алгол-60) выаываются по аначению. Ясно, что аргументами функций класса ВОВК могут быть ие любые выражения, а только формы.
Все остальные встроенные функции относятся. к классу РБЮВК; у них либо вообще не вычисля|отса аргументы, либо вычисляются, но уже во время выполнения собственно- функции. Примером фувмции класса РБПВК может служить встроеннам функция ОООТЕ, обращение к которой имеет следующий вид: (ОООТЕ где х — любое выражение асыка, Эта функция пе вычисляет свою аргумент, а берет его в том виде, как он задан в обращении, и выдает в качестве своего вначения. Например: (ОПОТЕ (+ У бЦ [+ У б) Функция О()ОТЕ применяется в тех случаях, когда выражение х должно рассматриваться как таковое, а ие как форма, которая должна быть вычислена. При описании каждой встроенной функции (имеющей хохм бы один аргумент) мы будем укавывать, к какому классу она относится. Если укаеаи класа БАЕВЕ, то это без дополнительных пояснений будет оаначать, что вычисление собственно функции начинается только после того, как' будут вычислены все ее аргументы (аргументы всегда вычисляются слева направо).
Для функций же класса РБПВК правила вычисления их аргументов будут всегда указываться явно. 3. На аргументы многих встроенных функций иакладываютсм определенные ограничения. При описании функций мы будем указывать ети ограничения не словами, а испольауя следующие обозначения для аргументов: е — любая простая форма с произвольным аначеиием, которое будет обозначаться Е; ) — простая форма, аиачением которой обязательно должен быть список (с любыми скобками), обоаначаемый Ь; $ — простая форма, значением которой должен быть идентвфикатор, который будет обоаначаться П и — простая форма, вначением которой должно быть число (цепов или вещественное), обовначаемое )У; 2 В.
н, пильщиков а — простая форма, значением которой должна быть шкала, которая будет обозначаться Я. Эти обозначения могут быть снабжены индексами еь лю Еь .Уь и т. п. Согласно данным обоаначениям запись (ЕЕ ЕМ в 1), ЗПВВ означает, что функция с вменен ЕБЕМ относится к классу 8()ВВ к что у нее два аргумента.