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

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

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

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

В случае оюибки переход на ЕИО ИЕИЕ!ИЕ (Р05(0) 5РЯИ("01") Рй05(0)) : Г(ВАО) Проверяет строку на наличие тогь«о нулей и единиц 5РАИ вЂ” строка из нупеи и единиц Р05(О) — первая позиция, РК05(0) — последняя 5И = 5!УЕ(ИЕИЕ!ИЕ) ИЕИЕ!ИЕ РО5(0) ОКЯММАК . РЯС!ИОКОМЕ Р05(5И) .5(ОК) Г(ИОТОК) Строка проверяется на соответствие траикатике через РО5(5И) Если сравнение не проюло.

переход в последнюю позицию Если успеюно, печатается ответ. Совпавюая часть присваивается РА(!ИойОМЕ ООТРОТ="МАТСИ " РА! 1ИОКОМГ й ООР) 5И = 5И - 1 :(ИЕХТ) ООТРОТ = "!МРКОРЕК !КРОТ " ИЕЬЕ!ИЕ (ЕООР) 5ТЯКТ ЕООР ИЕХТ ОК ИОТОК ВЯО ЕИО Ввод: Вывод: 11011 МАТСН: 11011 11011101 МАТСН: 11011 11211 !МРЙОРЕЛ )ИРЬТ; 11211 Ссылка. Г). Е. Ог!Вито!б "А Ь)з(огу а1 бзе ЯИОВО! ргодгагппцпд !апдоаде", АСМ Нтвгогу ОГРгодгагпттпд Салдиадев Сои уегелсе, Еаз Апде1ез, СА (диле 1978) (я)ОРЕхтИ Иобсев (13)8 (Аидов( 19?8)), 275-308.

Пример выполнения Здесь запятая, разделяющая предикаты, является логической операцией И Кто есть для истинности всего отношения все предикаты должны быть истинными). 372 Глава 8, управление последовательностью действий Перезапись элементов Переэипись элементов является ограниченной формой операции сопоставления с образцом, которая широко применяется в языках программирования.

Пусть заданы стРока а>аз, а„и пРавило пеРезаписи а =з )1, если а = ап тогда говоРЯт, что строка а, ... а, ~!) ., а.представляет перезипись элементов строки а1а~ .. а.. Сопоставление запроса языка Рго!ой с правилом в базе данных является формой перезаписи (с подстановкой; см. раздел 8А.З). Перезапись элементов уже рассматривалась нами в разделе 3 3.1 в связи с НФБ- грамматиками и синтаксическим разбором. Генерирование вывода цепочки в языке с заданной НФБ-грамматикой является просто формой процесса перезаписи. Например, если задана грамматика А — ~ОВ)1  — ~ ОА можно сгенерировать цепочку 001 посредством следующего вывода: А=~ ОВ ОВ ~ ООА ООА =~ 001 Используется правило А а ОВ Используется правило  — а ОА Используется правило А — > 1 В языке МБ перезапись элементов используется как форма определения функции.

Например, функция вычисления факториала в языке М!. может быть определена довольно просто: тип тастоюа11п, шт) - 11 и-1 Хьвп 1 в1зв п*тас1сюа11п-1); Здесь область определения функции РасОогаа1 состоит из двух частей: при и = 1 возвращается значение 1, при всех остальных положительных целых возврашаемое значение задается выражением п*1001ог1 а11п - 1). Два варианта разделяются оператором 10. Эту функцию можно рассматривать как две отдельные функции— константа 1 для множества (1) и значение п*уасХогза1 (п - 1) для всех остальных целых чисел (то есть (и ! и > 1) ). Вместо того чтобы использовать оператор 11 для разделения области определения, можно использовать перезапись элементов для указания каждого отдельного случая в определении функции: тип гасы!)- 1 ! тас1Й 1п1) = я." тасс!я -!) Здесь каждая подобласть определения отделяется символом ).

Язык М!. заменяет вызов функции на соответствухагдее определение. Сила языка Рго1ой заключается в построении отношений, которые могут быть логически выведены из известного набора фактов. Эти отношения могут быть построены из других отношений, как, например, Вгапсрагепс01 (дед или бабка): Вгаппрагеп10ПХ, у) — РагептОПХ. 7), Рагеп10П7. у). Эта запись обозначает, что отношение Вгапх)рагеп101 определяется (что обозначается символом -) как два отношения Рагеп101 таких, что существует некоторый объект 7, являющийся родителем У, но для него самого родителем является Х.

Таким образом, выполнение Вгапх)рагеп101(Х, Магу> приведет к тому, что Х будет либо 8111, либо Апп, а выполнение Вгапдрагеп10(1У. Лорп) приведет к ошибке, поскольку в нашей базе данных не содержится соответствующего факта. 8.4. Последовательность вычисления неарифметических выражений 373 Вкачестведругогопримерарассмотримфункцию1еп9(йязыкаМ! опаявляется композицией перезаписи элементов и более обшей операции сравнения с образцом: уцп 1епОСП(п11)- О 1 1епйтн(а;:у) = 1ч1епйтщу): п!1 обозначает пустой список, а:: — операцию конкатенации списка. То есть а:: Пх с. 01 = !а.Ь. с, 01.

В дашюм случае, сели область определения функции 1епОСМв пустой список, тогда значение будет равно О. Иначе если область является списком, состоящим хотя бы из одного элемента (а), тогда значение функции будет равно 1 плюс длина остатка списка. Язык М! автоматически сопоставляет аргумент функции 1епОСП и присваивает голову списка переменной а, а хвост — переменой у. Эта возможность становится очень важной, когда речь заходит о полиморфизм е в языке М 1. !Раздел 7.3).

8.4.3. Унификация База данных языка !Хго)ой состоит из фиктов, таких как Ра гепГОПЯпп. Зовя), и привил, таких как ОгапцрагепСОПХ. у).- РагепСОП Х. 2). Рагеп(0((2, у) Выражение, содержащее одну или более переменных, например 6гапбрагепСОС ( Х,,) ойп ), называется зипрогом и представляет собой неизвестное отношение. ! Более точное описание такого запроса мы дадим в разделе 8А.5 при обсуждении прин- пипа резолюции, управляющего выполнением программы на языке Рго108.) Основной особенностью языка Рго108 является использование операции сравнения с образцом для выяснения, разрешается ли запрос каким-либо фактом из базы данных или факт может быть выведен путем применения правил, содержащихся в базе данных, к другим фактам и правилам.

В языке Рго!ой используется операция унификиции — подстановки переменных в о~ношения — для определения (путем сравнения с образцом), имеется ли для данного запроса корректная подстановка, согласующаяся с правилами и фактами базы данных. Рассмотрим приведенное выше отношение РагепГОП Допустим, мы хотим разрешить запрос: Расеи(ОП Х. Магу) - Рагепгоу(Золп, у). В данном случае отношение-факт РагепООт(ООПП, Иагу) является решением для обеих частей запроса. Говорят, что экзелтляр Рагеп(0т(Оойп, Иагу) унифицирует Рагеп10!(Х, Иагу) и РагепСОт(Лойп.

у) подстановкой Оояп вместо Х, и Иагу вместо у, поскольку оба эти отношения после соответствующей подстановки выдают этот факт. Об унификапии можно рассуждать как о расширении общего свойства подстановки. Подстановка. Подстановка является одним из первых принципов, которые изучаются в программировании.

Подстановка — это основной принцип, лежащий в основе передачи параметров и создания макрорасширений. Например, рассмотрим макрос языка С': ()пеппе нунасго(А,В,С) рюпгу("Вшагу ХОХОХО 1з Жц)п". А, В. С. 4*(А)г2*(В)+(С)) рг1п(Г печатает выходнуто строку. Функция печатает свой первый строковый аргумент, используя встроенные коды для определения, в какое место выходной строки поместить значения последующих аргументов. Последовательность символов ХС обозначает, по нвло печатать следующий аргумент в списке квк целый.

Символы Хп обозначают конец строки. 374 Глава В. Управление последовательностью действий Данная строка означает, что когда в программе на языке С используется купи с го(,, ), первый фактический параметр пуаэсга заменяет параметр А, второй фактический параметр заменяет параметр В, третий — С Тоесть записыпупхзсга(1. О. 1) равносильна следующей; рг?пгг("В~лагу ХОХО ХО В ФО)п", 1 О. 1, 4*(1)ь2*(ОРЦ1)) Поскольку стра ковьш параметр функции рг? пг У также является подстановкой, то предыдущая запись равносильна следующей: ршпгГ("Вхпагу 101 14 5)п") Подставляемые параметры не обязательно должны быть целыми числами.

Любил строка может быть подставлена в макрорасширение вместо А, В н С. Таким образам, макрос луп?эрго(Х е У,772, Мучэг+ 3) эквивалентен следующей записи: рг~пгг("В~лагу ХОХОЖО м ХО)п". Х+У. 7!2. Мучат + 3. 4 * (Х + У) + 2 * (7!2) + Г Учаг + 3И Важно помнить, что мы подставляем произвольное выражение вместо одной переменной в определении макроса. Давайте расширим эту задачу до двух следующих макроподстановок: пупасго(Х ч У,7/2. ?), пупасго(?. ?, Мучаг + 3): Символы? представляют неизвестные подстановки. Возможно ли, чтобы оба эти макрооператора представляли одинаковые вычисления? Это и есть основной принцип, лежащий в основе унификации. Если мы примем, что 0 представляет Мучаг + 3 в первом макрорасширении, а А и В представляют Х + У и 7/2 соответственно — во втором, тогда аба макрооператора будут представлять одинаковые вычисления.

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

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

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