В.Н. Пильщиков - Язык Плэнер, страница 5
Описание файла
DJVU-файл из архива "В.Н. Пильщиков - Язык Плэнер", который расположен в категории "". Всё это находится в предмете "искусственный интеллект" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 5 - страница
еа) -« [Е Е ... Е,) Следовательно, для того чтобы построить новый список с круглыми скобками, достаточно выписать подряд выражения, йа эначеннй которых должен состоять новый список, заключить-все эти выран«ения в'круглые скобки и полученный таким обравом список вычислить. Данное правило вычисления списков включает в себя различные конкретные способы построения списков, которые мы проиллюстрируем на примерах. Во всех этих примерах предполагается, что переменная Х имеет аначение [А В), переменная г — значение (С В Е), переменная Š— значение Р, а переменная «У— значение ().
Если мы хотим построить 1 список, алемеитами которого являются значЕния каких-то переменных и функций (в лиепе в этих целях применяется функция ЫБТ), то должны использовать простые обращения к данным переменным и функциям: (.Х .У) ([А В) (С В Е)) (.Х У .Е .Ж) -«- ([А В) (С П Е) Р ()) (А (.Е С) Л7) -«- (А (Р С) ()) ([КЕЯТ 1 .г) ДЗОТЕ ())) '-«. ((П Е) ()) Если элементами нового списка должны быть не сами аначения переменных и функций, а алементы втих значений (это аналог лисповской функции АРРЕ5(В), тогда следует испольвовать 22 сегментные обращения к переменным и функциям: (!.Х (Х) -~ (А В С 0 Е) (!.Х !.У !.2 (ЛЧ) -~ (А В С В Е Р) (<КЕЯТ 1 .У) !.Х) -~- (В Е А В) Во втором иэ этих примеров значением выражения !.2 является атом Р, который и заносится в список-результат, а аначеиием выражения )ЛУ является пустой сегмент, поэтому данное выражение не вносит никаких влементов з список-реаультат.
Если требуется добавить новые элементы в начало существующего списка (аналог лисповской функции СОР(Б), в середину или его конец, если требуется объединить элементы некоторых спис.ков с добавлением новых элементов, тогда используются как простые, так и сегментные обращения к переменным и функциям: (.Х !.У) -~. ([А В] С 0 Е) (!.У .Х) -~ (С В Е [А В]) (.Х (Х .2) -ь ([А В] С В Е Р) (!.Х Лу (Х) -~ (А В () С В Е) Рассмотрим еще два примера.
Если значением переменной Ь является список (1 2 3 4 5), тогда (<НЕАВ 2 .1> <ВЕБТ З.ЬУ) -~ (1 2 4 5) (<ВЕЕТ 1 .Ь) [1 .Ьп -~- (2 3 4 5 1) В первом примере иэ списка удаляется третий элемент, а во втором примере первый элемент переносится в конец списка. Фушщия ЬЕР(ОТН: [ЬЕ5)ОТН !]„БУЕВ. Значением этой функции является целое число — длина списка Ь: [ЬЕ5)ОТН ( Ц -~. 0 [ЬЕ5(ОТН [О()ОТЕ <А (В С) ВУ]] — 3 1.5. Арифметические функции Хотя язык пленер и не ориентирован на вычислительные аадачк, в нем вое же имеется достаточно большой набор встроенных арифметических функций.
Они рассматриваются в данном параграфе. Значениями всех аргументов этих функций должны быть числа,целые или,вещественные. Значения функций †такжечис. Функция+: [+ о~ вз ... оь], БАЕВЕ, Ь > 1. Значением функции является сумма значений ее аргументов. Зто значение будет целым числом, только если аиачения всех аргументов — целые числа; если значение хотя бы одного аргумента вещественно, то вещественным будет и значение функции. Примеры: [+ 4 — 30] -~- 1 [+ 4 — 3 0.0] 1.0 Функция —: [ — л~ и*], Я(/ВК. Эта функция вычисляет разность У~ — Ум где Уь напомним, обоаначает значение аргумента ль а Уз — аначение аргумента вз. Результат вычисления функции будет целым числом, только если числа У~ и Уз целые, Припер: [ — [+ 3 6] [ — 4 2]] -~ 7 Отметим, что этому выражению в обычной математической символике соответствует запись (3+ 6) — (4 — 2).
Как видно, плэнерская символика менее наглядна и удобна. Однако в планерских программах выписывать сложные арифметические выражения приходится довольно редко, поэтому данный дедостаток ие сказывается слишком сильно. Функция М: [М в~ вг ° .. вь], ЯПВК, /с ~ )1. Значением функции является произведение чисел У,. Оно будет целым числом лишь прн условии, что все У» — целые числа. Фу ц /: [/ и, и,], ЯОВК. Эта функция делит число У~ на число №, которое не должно равняться нулю. Значением данной функции всегда является вещественное число. Например: [/ 20 4] -~.
5.0 Функция Р1Ч: [Р1Ч и~ лз], Я(/ВК. Значение функции — целое число [У~/У,], где [х] означает наи.большее целое, ие превосходящее число ж Если У[ и Уз — натуральные числа, то эта функция находит неполное частное от деления У~ на №. Примеры: . [Р)Ч 1983. 100] -~. 19 [Р1Ч 5.7 — 3.4] -~ — 2 Функция МОР: [МОР л~ вз], ЯПВК. Значением функции является число У~ — Уз Х [Ус/Уз]. Оно будет целым, только если У~ и Уз — целые числа. Для натуральных чисел эта функция вычисляет остаток от деления У~ на Уз.
Например: [МОР 1983 100] - 83 [МОР 5.7 — 3.4] -~. — 1Л Функция 1: [1 в~ вз], ЯОВК. Функция возводит У«в степень У». Значение функции является целым числом только при условии, что № — целое, а У» — натуральное число или О. При вещественном У» и неположительном Уь а также при нулевом У~ и отрицательном целом У» аначение функции не определено. Примеры: [) 5'2] -».
25 [) 5.0 О] -» ,1.0 Фушщия АВБ: [АВЯ в], ЯПВВ. Значением функции является абсолютная величина числа У. Тип результата совпадает с типом числа № Функция ЕУТ1ЕВ: [ЕУТ)ЕК в], ЯПВВ. Значение функции — наибольшее целое, не превосходящее число № Например: [ЕУТ1ЕИ 5.8] -~- 5 Фу ц ВОПУВ: [ВОПНВ и], БПВВ. Значением функции является ближайшее к У целое число, т. е.
наибольшее иа целых, не превосходящих число У+ 0.5. Например: [КОПУН 5.8] -» 6 Функция 81ам: [816У л], Я(/ВВ. В результате вычисления этой функции получается число 1, если У ) О, илн число О, если У= О, или число — 1, если У (О. Функция МАХ: [МАХ и, и» ... и»], Я1)ВВ, )» ) 1. Значение функции равно наибольшему иэ чисел У«(первому из наибольших, если их несколько). Например: [МАХ 4 6.0 — 2.9 6] -+- 6.0 Фушщия М15В [М1У в~ и» ...
и»], Б()ВК, )«) 1. Значение функции равно (первому) наименьшему из чисел У«. Фуннция КАУРОМ: [ВАННОМ]. При каждом обращенни эта функция в качестве своего значения выдает некоторое «случайное» число иэ интервала (О, 1). Эти псевдослучайные числа имеют равномерное распределение. Кроме укааанных вьппе арифметических функций, в пленере имеются также встроенные функции, собтветствующие елементарным математическим функциям. Считая известными их определения, перечислим лишь имена этих функций в языке: 81У (синус), СОБ (косинус), ТС (тангенс), СТС (котангенс), АНСЯ1У (арксинус), АВСТС (арктангенс), 81]ВТ (квадратный корень), ЕХР (экспонента) и ЬУ (натуральный логарифм).
Все эти функции имеют 25 один аргумент и относятся и классу БПВВ, их эиачевиями всегда являются веществеявьге числа. Примеры: (З1)ВТ О] З.О 181М (АВСЗ1М 0.5]] -~. 0.5 $.6. Операции над шкалами Шкалы можно использовать для представления равных типов данных. Например, если отождествить биты 1 и 0 с логическими зкачевиями «истииа» и «ложь», то шкалу можно рассматривать как вектор логических величии, В виде шкал можно представлять и подмножества некоторого фиксированного миожества. Для этого следует поставить в соответствие каждому элемелту множества (иапример, каждой латинской букве) определенный разряд шкалы ( укве А — самый правый разряд, букве  — предпоследийй раэб ряд и т. д,), тогда любое подмножество этого множества будет иэображаться шкалой, в которой едииипы находятся только и тех раэрядах, что соответствуют элемевтам подмножества.
Так, подмкожество гласных латинских букв (А, Е, 1, О, П) иэображается шкалой «04040421. Отметим, что логические массивы и множества можно представлять и в виде списков, например множество гласиых букв— в виде списка (А Е 1 О П), ио представление в виде шкал болев экономно в смысле расхода памяти. Правда, шкалы иь«еют- ограиичевиый размер, повтому с их помощью можно представлять массивы и множества только с небольшим числам элементов.
Для работы со шкалами в планер введены следующие фуквции. Фуииция ~/ «1«/ ««««], ЗПВВ. Напомним, что согласно принятым в $1.3 обозначениям, эяачеяиями обоих аргументов должны быть шкалы, которые мы обозначаем как о«и сг. Значение функции — также шкала, ьй рав- . ряд которой равен 1, если в «-м разряде хотя бы одной вэ шкал Я« и Я«имеется единица, и равен 0 иначе. Например: [~/ »14 е12] — «16 Если шкалы рассматривать как логические массивы, то данная функция реаливует пораэрядяое логическое сложение (дивъювк- Ш«ю), а если рассматрввать их как множества, то это операция объединепдя миожеств.
Фу щ 1«1: ]/~ ««], ЗПВК. Значением этой фуикции является шкала, содержащая едкиицы только в тех разрядах, в которых обе пиалы с« и о« одиовремеи- но имеют единицы. Например: [ /~ «14 «12) ->. «10 Данная функция реалкаует операци>о пораарядного логического умножения (конъюнкцию), если пщалы рассматриваются нак логические массивы, или операцию пересечения множеств, если шкалы изобра>ка>от множества. Фушщия СОМР: [СОМР г> г,), ЯПВВ.
Значение функции †шка, аначение ыго разряда которой равно О, если значения пх раарядов шкал Б> и 3> совпада>от, и равно 1 в противном случае. Отметим, что если шкалы Я> и Б> полностью совпадают, то значением функции является нулевая шкала «О. Например: [СОМР «14 «12] ->. «6 [СОМР «7042 «7042[ -««О Для логических массивов данная функция реализует операцию поразрядного сравнения (отрицания логической эквивалентности), а для множеств — симметрической разности. Функция БН1РТ> [ЯН1РТ г н[, БПВВ. Значением второго аргумента должно быть целое число )У (езди аначением является вещественное число, то оно автоматически округляется до'ближайшего целого — см.