Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 155

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 155 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1552019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Метки и две функции, 60 и КЕТОк)(, были включены в язык лля управления циклами. Функция 60 используется для передачи управления на метку внутри области видимости функции РКОС. Функция КЕТОКИ осуществляет выхол из функции РКОС. Функция РКОС имеет следующий общий вид: (РКОС (локальные переменные) выражение 1 выражение п Локальные переменные инициализируются нулевым указателем н1ь, принадлежат области видимости функции РКОС и существуют только во время ее выполнения. Если в функции РКОС есть глобальные имена, совпадающие с локальными, то глобальные имена маскируются (и становятся скрытыми).

Функция 60 передает управление своему параметру, являющемуся меткой внутри списка выражений функции РКОС. Функция КЕТСК)( имеет параметр, который становится значением, возвращаемым функцией РКОС. Заметим, что функция РК06 включена в современные версии языка Ь)ЯР только для обратной совместимости со старыми диалектами. Язык СОММОЗЧ ЫЯР имеет более удачные конструкции лля обеспечения возможностей функции РКОС. Например, в языке СОММОЯ Ь)ЯР есть конструкции 0011)(ЕЯ и 00ЬТЯТ для выполнения циклов, а также РК061, РК062 и РКОСЗ для создания последовательностей операторов.

Функция яетО в языке СОММОМ Ь!ЯР соответствует функции яет. языка Яспегпе, а функция 0еГС)ч является версией функции ОеГ1ие. Рассмотрим следующую итеративную версию функции лля определения приналлежности атома заданному списку. После итеративной версии приводится рекурсивная версия, аналогичная описанной в разделе 14.5.5, (0ЕГОХ Ьгегастче жеглЬег (асж 1яс) (РРОС () 1оор 1 (СОХО ((ИОЬЬ 1яс) (КЕТУК(Ч (Ч1Ь)) ((ЕООАЬ асж (САК 1яс)) (КЕТСК(Ч Т)) ) (ЯетО 1яг (с0к 1яг)) (СОТО 1оор 1) )) 6ОЗ 14.6. Язык СОММОг( ПЗР (0ЕГОИ гесигя1те телег (аст 1яс) (СОН0 (( НОЬ) 1яс) Х10) ((ЕОУА0 асв (САК 1яг)) Т) (Т (гесигязте метЬег аси(СОВ 1яс))) )) Заметим, что Т является в языке СОММОХ (.)БР версией булевского значения "истина", г)10 — это булевское значение 'ложь", АТОМ вЂ” предикат, определяющий, является лн параметр атомом, а нулевой список рассматривается н как список, и как атом. Рассмотрим итеративную н рекурсивную функции, вычисляющие длину списка: (0ЕГОИ Тсегасзте 1епдсЬ (1яс) (ГАРО (яилз) (ЕЕТО яив О) адайп ( СО'г) 0 ((АТОМ 1яс (КЕТОАИ яим))) ) (ЕЕТО яиш (ч 1 яиц) ) (ВЕТО 1яг (СРП 1яг)) (60 адаап) )) (0ЕГОИ гесигя1ие 1епдсп (1яс) (СОЛО ((И001 1яс) О) (Т (+ 1 (гесигяате 1епдгп (СОК 1яс)))) ) ) В некотором смысле языки Ызете и СОММОХ 1ЛЕР противоположны друг другу.

Язык Бсйеюе намного меньше по размерам и немного яснее, частично благодаря тому, что он использует исключительно статические области видимости. Язык СОММОХ (.(БР предназначался для коммерческого использования н впоследствии получил широкое распространение в приложениях, связанных с созданием искусственного интеллекта. Язык Бенете чаще используется в университетских курсах по функциональному програмлшрованию. Он также подходит лля изучения функционального программирования нз-за своих относительно малых размеров. Важным критерием при разработке языка СОММОМ (.)БР, сделавшим его очень большим по размеру, было желание совместить его с более ранними диалектами языка (.)ЕР.

14.7. Язык МЕ Язык М1. (Мйпег е( а)., 1990) — это функциональный язык программирования, использующий статический обзор данных, подобно языку Бс)зеше. Он значительно отличается от языка (.)БР и его диалектов, включая Бспеве. М). использует синтаксис, который более похож на синтаксис языка Разов!, чем на Е!БР. Язык МЬ содержнт объявления типов, использующие вывод типов. Это означает, что переменные не обязательно объявлять, и прн этом онн будут иметь строго определенный тип.

Тнп каждой переменной н выражения можно определить во время компиляции. Это совершенно отличается от язы- Глава 14. Функциональные языки программирования ка Бенеше, по сушеству. не имеюшего типов. Язык МЕ позволяет обрабатывать исключительные ситуации и объединять абстрактные типы данных в молули. Краткая история развития и основные свойства языка МЕ описаны в главе 2. В главе 4 рассмотрена идея вывода типов на примере языка МЕ. В языке МЕ имена могут связываться со значениями операторов объявления следующим образом: ча1 новое имя = выражение; Например: ча1 бфвгапое = г1ие * вреес(г Не подумайте.

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

Обычно операторы ча1 используются в выражениях 1ек, имеюших следующий обший вид: 1ек ча1 новое имя = выражения 1 1п выражение 2 вжй Например: 1ве ча1 р1 = 3.14159 дп рф * гас)1цв * гас(фцв аг В языке М(. есть списки и операции для работы со списками, хотя они выглядят иначе, чем в языке (.!БР. Язык МЕ также содержит перечислимые типы, массивы и кортежи, являющиеся записями. Объявление функции в языке МЕ имеет следуюший вид: гип имя функции (формальные параметры) = выражение; Например: гамп вс(ваге (х: 1пс) = х * х; Заметим, что объявление Еип вяцаге (х) = х * х; является неправильным, поскольку в этом случае компилятор не может определить тип переменной х. Так что функции, использующие арифметические операции, не могут быть полиморфными.

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

14.7. Язык Мл Конструкции ветвления потока управления в языке МЕ в действительности представляют собой условное выражение следующего вида: 1й Е сЬеп то выражение е1ве иначе выражение Выражение Е должно вычислять булевское значение. Из двух следующих за ним выражений вычисляется только одно. В языке МЕ нет приведения типов; типы операндов в операторе или присваивании просто должны совпадать для предотвращения синтаксических ошибок. 34.8. Язык Наз1сеИ Язык Найей (Тйошрзоп, 1996) похож на язык МЕ тем, что в нем используется аналогичный синтаксис, статический обзор ланных, строго определенные типы и тот же метод вывода типов. В отличие от языка М)., Найей является чисто функциональным языком; ои не имеет переменных и операторов присваивания, не допускает побочных эффектов и не имеет никаких императивных свойств.

Это отличает его от почти всех других языков программирования. Две следующие характеристики языка Найей отличают его от языка МЬ. Во-первых, он использует другой способ вычислений, называемый "ленивым" вычислением (1аху еча1цайоп), при котором подвыражения не вычисляются, пока не возникнет необходимость в их значениях. Во-вторых, язык Найей имеет метод определения списков, допускающий бесконечные списки. Такие списки называются полными списками (!В! сошргейепзюпз). Некоторые свойства язык Найей унаследовал от языка М !гапда (Тцгпег, 1986).

Код в этом разделе написан на версии 1.4 языка Найей. рассмотрим следующее определение функции, вычисляющей факториал. Заметим, что синтаксис определения функции и ее применения заключается в том, что имя функции приписывается рядом с параметрами: йасс О 1 гасе и = и * йасс (п — 1) Этот пример показывает, что определения функций могут содержать более одной строки, причем эти строки определяют версии функции для различных видов действительных параметров.

Соответствующее значение выражения, вычисляемого функцией и стоящего в правой части определения, выбирается путем сопоставления образцов фактических и формальных параметров. Формальные параметры, являющиеся константами. очевидно совпадают сами с собой в качестве фактических параметров. Имя в образце формального параметра соответствует фактическому параметру, не совпадающему с образцом константы. Соответствующее значение фактического параметра затем используется как значение имени в соответствующем выражении, стоящем в правой части определения. В приведенном выше примере функция определена частично, поскольку она не может вычисляться при отрицательных параметрах. Используя сравнение образцов, определим функцию для вычисления п-го числа Фибоначчн следующим образом: гзЬ О 1 ГЗЬ : = 1 Е1Ь (и + 2) Г1Ь (и + 1) + ГТЬ и Глава 14.

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

Тип файла
DJVU-файл
Размер
9,5 Mb
Тип материала
Высшее учебное заведение

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

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