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

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

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

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

Он будет описан позже. Заметим, что символ в=» обозначает не присваивание, а операцию унификации, которая предписывает ассоциировать новую копию идентификатора Х со значением 7. Это можно продемонстрировать, опустив ключевое слово ча1. В ответ на ввод Х = 8 М1.

выведет на печать строку чд) тт = Гв)ве: Ьоо1 означающую, что унификация текущего значения Х (то есть 7) со значением 8 ложна и поэтому возвращается значение 1а1ее. Определяемые пользователем типы Пользовательские типы можно определить с помощью оператора бататуре: бататуре идентификатор = внраиение типа Например, тип й песет оп (направление) можно определить так: — бвса1уре йгесттоп - ногти ! едет ! воось 1 нев1; соп еавт ; бтгесттоп соп ногти : й гесттоп соп воотп : й гес1топ соп неве : й гесттоп что создает четыре константы типа й гесттоп. Мы создали тип, похожий на перечисляемый тип в С н Разса!.

Оператор — ча1 ненптгесттоп - ногти; устанавливает тип Мен0т гесЬ топ как тип й гесЬ1оп со значением погтЬ. Это определение пользовательских типов можно распространить на типы дан- ных с древовидной структурой. Например, - баьатуре муйгесттоп = йг от йгесттоп, бвсатуре муй гесттоп СОП б1Г бтгесттоп -т Муй гесттоп создает тип Муй гест1оп, состоящий из функции выбора й г. Объекты типа Муй гост топ задаются как кортежи (то есть б1 г т погтп) ), например; - Чд) Яеабтп9 = бтг1погтп): ча1 Яеаб~пр - йг ногти .

'уй гесСтоп 628 Приложение, Обзоры языков Без кортежа получим значение направления: - на) Меча)еабчпр = погтп: на1 МеиНеаю па - погтп бтгессчоп Компоненты типов данных похожи на вызовы функций: - на1 Меиотгестчоп - бчг(Меинеабчпр): на1 Меиочгестчоп - бтг пагтп : Нубчгессчап Сила типов данных заключена в возможности создавать произвольные древовидные структуры данных. Например, иа рис. П.2 изображено дерево, состоящее из узлов Мио)Ептгу и СЬагЕптгу.

Спецификация булет иметь следующий вид: бататуре Тгее - Еер)у ) МоаЕптгу ог тпс * Тгее * Тгее ) Сла Ептгу ог зтгтпр * Тгее: бататуре Тгее соп Слаг Ептгу : зтгчпр * Тгее -т Тгее соп ЕарЕу . Тгее соп МмпЕптгу , чпт * Тгее * Тгее -и Тгее Ь)апчЕп)гу Рис. П.2. Древовидный тип данных языка МЕ Она означает, что тип данных Тгее саста то из трех частей: СЬа гЕп т гу, МопЕпСгу и Гарту. Структура рис. П.2 задается следующим образом: - на1 Меитгее-ноеЕпЕгу(7,МоиЕптгу(5.Еерту,МоаЕптгуЧА.Гарту.Еерйу)), - СлагЕптгу СА". МоаЕптгуЧЗ. Гарту Еерту))); на) МеиТгее " МиаЕпт гу (7.МоеЕпсгу(5,Еирту,вапЕптгу14,Еноту,Еерсу)), СпагЕптгуСА",МаиЕптгу(З,Еноту.Еирту))) Тгее Доступ к компонентам типов данных можно продемонстрировать с помощью следующей программы: бататуре оЬ)ест - рачг ог нт * чпм Тип СгеатеРачг(а, Ы - ратг(а.

Ы; топ сгеатетио(а,ь.с б) - сгеатерачг(а. ы :. сгеатерачг(с.б):: ц; Топ РгтптГчгзмрачгтх.у)::т) = ргтпмх) ) РгтптГчгзмх) = рппм "Еггог Чп"): Топ РюптТЬч гб(х;:у) - РюптГчгзму) ) РгчпттпчгбЧх) - ргюм "Еггог Чп"): г).7, мь 629 Выполнение операции та1 х = Сгеа(етыо(1.2.3.4); приводит к следующему результату: уа1 х =. (ра1г (1.2).ра>г (3.4)1: оо)ес( 1>в( а выполнение следующих операторов; Рыл(Г>гв((х): Рг>л(Таге(к); приводит к выводу 1 3 П.7.2. Управление последовательностью действий Выражения Арифметические выражения.

Арифметические выражения используют следую- щий порядок старшинства для выражении: Унарный минус Мультилликативные операторы Аддитивные операторы *. б Шт,нов Можно использовать полный набор арифметических операций сравнения: =, <>,, <ть < и >, Булевы выражения. Булевы выражения можно создавать, комбинируя следующие преднкатьс ал()а1зо, оге!зе и пот. Предикат ал()а!ао аналогичен предикату ап(), но разработан для «ленивого» вычисления: правый операнд вычисляется только в том случае, если левый принимает значение истина. Аналогично правый операнд опсрац>ш оге1 зе вычисляется, только если левый принимает значение ложь.

Строковые выражения. Конкатенация строк определяется знаком гс "аЬс' х "Ое(" = "аЬсве(". Пустая строка задается символами "". Выражение > Т, В М1. нет концепции условного опералтора, так как зто анцлика- тивный язык. Вместо него используется условное выражение (как в языке С): >( выражение (Ьел в случае истины е1ве в случае лжи Поскольку каждое выражение должно быть правильно определено, часть е1ае не является необязательной, как в операторах >)других языков, Выражение ыы1е. Выражение иЬ>1е задается следующим образом: ыш1е выражение, Оо выражение, и имеет очевидную иптсрпретацшо: выражение, выш>лпяется до тех пор, пока ис- тинно выражение,.

Однако как выражение, может изменить свое значение, если учи- тывать аппликатинную природу выполнения программ на языке М1? Выражение, должно изменить ассоциацию переменной н локальном окружении. Также в язы- ке М1. имеется понятие ссьыочной переменной, значение которой можно изменять.

Списочные выражения. Функции Ь>)(Ь) лля головы сш(ока Ь и (1(Е) для хвоста списка Ь осуществляют операции, подобные саг и саг в языке 1.1ор. Операция сола языка 115Р в языке М1.задается двойным двоеточием: .. Например, Ь()(Ь): 11(() = С 630 Приложение. Обзоры языков В языке МВ также существует операция объединения, которая соединяет два списка, [1,2]([3,4] = [1,2.3,4],Заметим,чтодляоперациих:: у,если химееттип ' а, у должен быть типа ' а 1)зС, в то время как лля объединения х(у обе переменные должны быть типа 'а 1) зС.

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

Последовательное выполнение можно смоделировать выполнением последовательности (выражение,; выражение, .. . выражение„) Каждое выражение вычисляется в порядке его задания. Определение функций Функции определяются следующим образом: Гцп инп функции (паранетри) - выражение; где выражение — ато то выражение, которое следует вычислить. Параметры функции задаются в обычном контексте. Однако в отличие от других языков тип параметра можно опустить, если он выводим из контекста, Например, сумму двух чисел можно определить так: - ( цп и цап С ( а и п(, Ь и пС ) тпС = а+Ь; па1 вцппс - Гп , ппС * ппС -и |пС Здесь указывается, что функция зипп С получает в качестве параметров два целых () пс) значения, возвращает также целочисленное значение (1пс), а имя саппс имеет тип ГцпсС1оп с сигнатурой и пС * ) пС вЂ” а ) пС.

Любая нз приведенных ниже спецификаций ) пс однозначно определяет два лругих типа, так что следующие записи эквивалентны: - Гцп пцппС(а. Ь) ппС - апЬ; Гцп вцюС(а Ьипп) = апЬ: - Гцп пцпп С(а:1пп. Ь) = а+Ь: Олнако необходимо задать хотя бы одну спецификацию ) пс, поскольку запись - Гцп пцж1С(а. Ь) - а+Ь неоднозначна, из нее пе ясно, какой тип подразумевается — 1пС или геа1. Такой простой синтаксис позволяет определять мощные полнморфные функции. Рассмотрим функцию, которая перемешивает список путем перемещения головы списка в его конец. Она соединяет хвост списка со списком, состоящим только из его первого члена: - Гцг внц(Г1е(х) - С1(х) ф [Ьа(х)]; на1 ппц(Г1е = Гп 'а 1пп( -и а 1пвС П.7.

Айь 631 - еьиг(1е(11.2.3]): уа) 1С - 12,3,1] . !пг 1!е( Функция вью ТО е оперирует с любым списком типа ' а и возврап(ает список того же типа. Однако когда ььпТТ1 е применяется к конкретному списку [1. 2,3], возвращается специальный тип )пс 11зц В языке М] предусмотрена некоторая разновидность операции сопоставления с образцом для определения функций, как описано ранее в разделе ВА.2.

Можно определить собственную операцию соединения следующим образом: (ип аррепп(а. Ы - !( а-п(1 гпеп Ь е!ее Ье(е) :: еррепе((1(а),Ь); Данную конструкцию можно рассматривать как две отдельных области, в которых определена функция арреп(]. Если а — пустой список и! 1, то возвращается значение Ь. Если а не пуст, то осуществляется другая операция. Язык М] позволяет определить отдельнь)е обласги для функции: Срп ерр(п11,Ы - Ь ! арр(а.Ь) " ПС(а) :. арр(11(а).Ь); Для области, где первый аргумент и!1, значением является Ь, в других случаях значением будет Ь()(а):: арр(С1(а) .Ь).

Истинная сила операции сопоставления с образцом заключается в возможности доступа к компонентам сложных типов данных. Рассмотрим структуру, приведенную на рис. П.2. Объект Х типа Тгее определяется следующими компонентами; ЯпвЕпггу * Тгее * Тгее Сьаг(пггу * Тгее Евр(у Предположим, что мы хотим построить функцию 1азь, которая имела бы доступ к самому правому компоненту рисунка. Ее можно определить так: Тпп 1ае((яивЕпсгу(1,Т1,Т2))- !Г Т2 Еврьу Еьеп ~ Т Т1-Еврсу гпеп КивЕп(гу(1.11.12) е!ее 1ает(11) е)зе 1аеЫТ2) ! 1ае((СПагЕп(гу(С.П))- чт Т1«Евр(у Спер СПагЕп(гу(С,Т1) е1ее 1ае((11) ! 1а51(Евргу) - (аргу; где каждая подобласть функции ]азс рекурсивно выбирает самое правое поддерево, Когда мы применяем эту функцию к переменной )(енТгее, которую мы предварительно задали как структуру, изображенную на рисунке, мы получаем )(пвЕпсгу с целым компонентом 3; - 1ае((яепТгее).

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

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

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