Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 171

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 171 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 1712019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 171)

Числа транслируются в их двоичный эквивалент с дескриптором в отдельном слове. Если найден подсписок, начинающийся с другого символа «(», то рекурсивно вызывается функция геа<) для построения внутреннего представления подсписка. Указатель на подсписок вставляется как указатель саг следующего компонента основного списка.

Заметим, что этот процесс трансляции не зависит от того, является ли список определением фупкшш или списком данных; все списки обрабатываются одинаково. Выполнение программы на языке 11ЗР состоит пз вычислений функций Е!ЗР. Последовательность выполнения программы обычно задается последовательностью вызо<н>в функций (лн>жег быть, рекурсивных) и условными выражениями. Выражения Программа пн языке ЫВР состоит из последовательности определений функций, где каждая функция является выражением в кембриджской польской записи. Условные выражения.

Огповп<>й структурой лля обеспечения альтернативных выполняемых последовательностей в программе па языке 113Р является услов- ное выражение. Его синтаксис следующий: <сои<> вариант, вариант, вариант, <т выражение ~о улов«анни)) где каждый из перечисленных вариантов — зто нара(прединат,, вл>ранение,). Функция сон<1 выполняется путем последовательного вычисления каждого прединатан и вычисления выражения, для первого предпката, вернувшего значение истина (1). Если все преликаты ложны, то выли>лняется вл>ране»ие по унопчанив.

Операции пад атомами. Обычно операции над атомами включают: тестовую функцию асов>, которая распознает указатель на слово списка и указатель на атом (путем проверки дескрпн>ора слова), фупкцшо пня>Ьегр, которая проверяет, является ли атом литеральным или числовым, функцию еф которая проверяет, являются лп два литеральных атома о>пп<м и тем же атомом (простой проверкой того, указывают лн об<> е< аргумента па олпу и ту же область памяти), фупкцик> депвуя>, генерирукнцун> шн>ый атом (и пе помещающую его в таблицу об Йхг), функцию >псегп, помс<пн<ощую ат<>м в таблицу и1> !твг, и фупкцшо геяиЬ, удал>пощую атом из таблицы о!> 1<>г.

Язык 1.1оР солержнт основные арифметические операции; +, —, *, ! — и некоторые другие. Их синтаксис такой же, как и у других операций языка 1!БР. Так, А + В ' С записывается как (+ й (* В С) ). Все арифметические операции являют- П.б. С)ВР 621 ся общими операциями и принимают аргументы как целого, так и вещественного типа и при необходимости осуществляют преобразование типов. Операция сравнения зегор проверяет, не равен ли нулю се аргумент, операции Вгеа Сегр и 1еззр представляют собой стандартные операции сравнения больше чем и меньше чем. Результатом этих операций является либо атом па1, представляющий ложь, либо атом Т, представляизщнй истину (любое значение, не равное щ1, обы чно представляет истину в языке ЫЯР).

В языке 1.!ЯР пет булева типа. Булевы операции апо', ог и пот представлены в'форме функций. Операция апо' обрабатывает произвольный список не вычисленных аргументов, вычисляя их все по очереди и возвращая значение щ 1, если один из ес аргументов оказывается равным щ1. Операция ог работает подобным жс образом. Операции над списками. Элементарные операции саг и сог возвращают, соответственно указатель саг и указатель сог заданного элемента списка.

Если список С является операндом этих опсраций, то 1саг С) возвращает указатель на первый элемент э гого списка, а (сог С) возвращает указатель на список, из которого удален первый элемент. Элементарная операция сопз получает в качестве операндов два указателя, отводит для нового элемента списка слово памяти, сохраняет два указателя в саги сот-полях слова и возвращает ук;юатсль на новос олово.

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

Аналогично, есяиС - (А В С) — список,то(саг 1) возврщцасгА,(саг(сог С)) — В,1саг(сог1сог С))) — С. Используя операции саг, ссг и сопз, любой список можно разбить па составные элементы и создать новый список из этих или других элементов, Элементарную операцию 11зт можно использовать в качестве замены длинных последовательностей операций сспм Операция 1а зС получает любое количество аргументов и конструирует из них список, возвращая указатель на получившийся список. Операция саоте позволяет записать в программе любой список или атом в виде литерала, как описано в разделе 6.1.7.

Элементарная операция ~ер1аса используется для замсная поля указателя саг в слове списка па новый указатель; гер1асо использустся для замены указателя со . Этн две опера~пш следует использовать осторожно, поскольку они действительно изменякат содержимое слова списка, а также возвращают значение, следовательно, имеют побочные эффек)пы. Из-за сложного способа связывания списков в Е1 ЯР эти побочные эффекты могут случайно повлиять и на другие списки помимо того, который модифицируется. Опсрация по11 проверяет, пуст ли данный список (равняется ли атому и ~1), операпню аррепо можно использовать лля соединения двух списков, а операция есва1 сравннвает два списка на равенство соответствующих элементов (вызывая себя рекурсивно для соответствующих пар элементов).

622 Приложение. Обзоры языков Операции над списками свойств. Основные функции обеспечивают вставку, удаление и доступ к свойствам списков свойств. Функция рцт используется для добавления пары инп свойстввгзначение свойства в список свойств. Функция деа возвращает текущее значение, ассоциированное с заданным именем свойства. Функция гепгргор удаляет пару «имя-значение» из списка свойств. Например, для добавления пары «нмя-значение» (аде. 40) в список свойств атома гпа'у следует записать: Грот 'вагу 'аде 40) Далее в програлтме значение свойства аде атома пга у можно получить через вызов функции тдет 'папу 'аде) Удаление свойства аде атолта пгв у выполняется с помощью вызова: Ггеаргор 'ивгу 'аде) Элементарные операции, которые определяют функции, также могут изменять списки свойств лля специальных имен свойств, таких как ехрг или 1ехрг (см. далее).

Ввод и вывод Ввод и вывод осуществляется просто через вызов функций, Функция геаг) считывает следующий атом с клавиатуры. В с~роках 14-15 листинга Н.8 показано, как можно открыть файл лапных с помощью функции орел и прочитать его содержимое с помощью вызова (геаг) указатель файла). Вызов (рщ па обаект) распечатает указанный объект в читаемом формате.

Определение функций Функция г)е(цп используе~ся для создания новых функций. Опа имеет следующий синтаксис тветцо иип функции(аргументаг) вагрвжечие) гле вргуненты являются формальными параметрами функции, а телом функции— единственное выражение (которое может быть послеловательностыо ргодп или другими сложными выполняемыми последовательностями). В БсЬеттте для определения функций можно использовать ситгтаксис Гееттле Гимп функции аргументы) вырвиение) В начале 60-х гг., когда был разработан первый вариант языка 115Р, определение функций основывалось на ) -выражениях, которые мы обсуждали в разделе 4.2.2. й;вьтражентгя можно использовать для определения функций гоеппе иип функции гтаповвгларанетрыгтело))) где пмя функции и имя каждого параметра — атомы, а тело может быть любым выражением, включающим элементарные операции или определенные программистом функции.

Действие объявления функции достаточно просто. Определения интерпретируемых функций обычно хранятся как пары «атрибут — значение» в списке свойств атома, представляющего имя функции. Для обычных функций, таких как определенные ранее, используется цмя атрибута ехрг, а связанное с пим значение являет- П,6. (.)8Р 623 ся указателем на списочную структуру, представляющую определение функции. Таким образом, выполнение ранее описанной операции т)ерт не эквивалентно выполнению следующей операции: (рцт 'ике функции 'ехрг '()апэца(паракетры)(тела))) Многие системы 1.1БР отводят специальную область в атоме (заголовочный блок) для определения функции, названной по этому атому, чтобы избежать необходимости поиска определения функции в списке свойств каждгяй раз, когда она вызывается.

Характеристики

Список файлов книги

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