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

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

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

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

уа! ~ 1 = Чпв(п(гу (З,Евр(у.Евр(у) : ТгЕе Выражение аз. Иногда бывает полезно в определении образца иметь возможность доступа к целому образцу. Это действие можно осуществить с помощью выражения аз. Например, Топ А5гегг(Е ае "а"::Ь) = Е1(0 АШ е((а) = Е2(а) вызовет: 1) Е] с аргументом Е, если это список с первым элементом "а" .

2) функппю Е2 в противном случае. Рекурсивные функции. Язык М] допускает рекурсивные функции, но, как н в большинстве других языков, косвенная рекурсия создает некоторые проблемы. 632 Приложение. Обзоры языков Если А вызывает В, а В вызывает А, какую из функций следует объявлять в первую очередь? В языке Рааса! ата проблема разрешается с помощью объявления гогыа гб. Поскольку в М1 выполняется статическая проверкатипов,тотипфункции должен быть известен до того, как функция появится в выражении.

Косвенная рекурсия осуществляется с помощью выражения апб, которое приводит к тому, что все функции объявляются одновременно: тцп первая рекурсивная функция апб вторая рекурсивная функция апб последняя рекурсивная функция- ...: ВаСД-а)в)аСД Функция рг1пс осуществляет простой вывод. Управляющую последовательность 1п можно использовать)(ля завершения строки вывода. Функция орел 1п(г(1епаюе) открывает файл для ввода и возвращает указатель на дескриптор файла, имеющий тип тпзсгеапх Функция тпрцс((т1е рсг, и) считывает и символов из файла и возвращает строКу З(Г)пд, Функция епт) ог з1геаю(Г11е рьг) возвратцает значение истина, если достигнут конец файла. Исключения Язык М1 позволяет пользователям определять исключения.

Исключение определяется следующим образом: ехсерттоп иия исключения а генерируется так: гатзе иня исключения Исключения можно обрабатывать с помощью оператора )тапб1е: выражение Лапб1е обработчик Если операция гатзе инициируется внутри выражения или из любой функции, вызываемой пз выражения, то запускается обработчик. Он имеет формат; обработчик(образец,) = выражение, обработчик(образец,> -> выражение, обработчик(образец„) => выражение„ Например, исключеп ие лтуеггог, порожденной оператором газ зе юуеггог(2), можно обработать следующим образом: юуеггог(1) -> выражение, юуеггог(2) => выражение, Стандартные функции Функции ввода-вывода; + иве иня файла считывает указанный файл как программу.

+ рщ пт(х) печатает злементарный объект х, + орел то("иня файла" ) открываетуказанный файл и возвращаетуказательтипа тттзтгсаш на открытый файл. + тпрыб(тт1е р(г, з)2Е) возвращает строку длиной Зт2Е, состоящую из послЕ- дующих з(те символов открытого файла )т!е рбг. П.7. (ч>Ь 633 + ЕП>] ОГ 5(леал>(т>1е р(г) возвращает значение истина, если достигнут конец файла. Другие функции: + №! возвращает т-й компонент кортежа, + П(>(115[) возвращает первый элемент списка. + 51(1>5[) возвращает список, состоящий из элементов списка 1>55, начиная со второго и заканчивая последним.

+ ехр1осе(5[г1пд ча1) преобразует строку 5[г1пд ча1 в список односимвольных строк. + 1вр1 осе(1! 55) получает список строк 1> 55 и возвращает строку. Например, функция)ар!осе(["а", "Ьс"]) возвращаетаЬс. + 5>ге(5[г) возвращает количество символов в строке 55г. + огщх) возвращает целое значение символа х. + сПг(! ) возвращает символ, представленный целым числом !. + >пс(!) эквивалентно 1:=!5+1 для ге( 1и[ 1, а (]ес(>) эквивалентно 1:=!>-1 для гет 1ПС >. Абстракции и инкапсуляция Структуры. М[. включает концепцию пакетов, которые называются структурами [5тгнсьцге) и имеют следующий синтаксис: этгостоге идентификатор 5(гост элемент, эленент, эленент„ еп>) где каждый элемент является объявлением типа, значения пли функции.

Например, простой пакет, который определяет функции для создания нового списка, добавления элемента в список, удаления элемента из списка и вычисления размера списка, можно описать следующим образом; - 5(гнссоге [155!тел = э!гост = ча1 Меч[15( = пт!. = Гоп аоо([ ],у>- у п1! адщх.у> = х 9 [у] = (ол эые(х) = >( х=[ ] тпеп 0 е15е 1-чае(51(х>): - (оп Ое!ете(х> = т!(х> - епо; результирующая сигнатура будет иметь вид этгос(оге [>55!тел; 5>д ча1 лей.~э( ; 'а 1тэт ча1 ась 'а 1155 * 'а -т 'а !155 ча1 Пе!ете : 'а !>55 -ч 'а 1~55 ча1 5>те .

а !155 -ч >лт е>к) Заметим, что структура полиморфна и может быть использована для создания списков любого типа (обозначенного как ' а) в снгнатуре. б34 Приложение. Обзоры языков Объявление ореп ореп иня структуры создает динамическую область видимости для структуры и добавляет сигнатуру структуры в текуцгую среду, исключая необходимость явного именования структуры, как в приведенном списке целых переменных: - ореп ста111еш. преп щас!тея ча1 абб = тп 'а 11ас * 'а — т 'а 1тас ча) и ае - гп : 'а 1яат -я 1пс ча1 бе1еге = тп, 'а 1таг -т 'а 1тяг ча1 йеыстас = ! ]: 'а 1тас - ча1 а - йеы!152, ча) а = ! ]: 'а )тяс - ча1 Ь - абйа.з).

ча) Ь = ЕЗ] : тпт 1т51 - ча) с = и ге!Ь): ча1 с = 1 тпт Сигнатура структуры определяет интерфейс подобно пакетам языка Ас]а или классам языка С++. Можно определить новую структуру, которая будет являться ограничением на более общую структуру. Например, можно определить списки )пЬ, которые будут ограничены списками целых величин и не будут содержать функцию бе1е ге, определяя эту новую сигнатуру при помощи объявления и дпагыге: атдпатоге !пг!та15тд = ащ чд1 йенс!51 , тпс 1151: ча) абб тпт 1151 * тпт -т тпс 1)51' ча1 а)ге : 1пт )тат -ч тпг епб, Можно определить вновь созданную структуру так, чтобы оиа выглядела, как исходная струкгура Ь) аг! Геп), только ограниченная до сигнатуры 1пЫ 5Ь5 ) д, испол ь- зуя альтернативную форму структуры: атгостоге 1пСГта1: 1птггат5!д - Шаг!теш.

В этом месте можно вызвать йеыЬ15Ь и абб для создания новых целых списков, но бе!еге не является частью кашей новой ограниченной среды; - ча1 т = !от!тат.йеыстат. ча1 1 = ! ] тпт 1тат - 1птгтат.абб!т,7), ча) ~1 - Г)] : тпт !тат - !птстат.бе1ете!т); Еггог опЬоопб чаг!аые ог сопасгиссог ш раси 10шибка несаязанная переменная ипи конструктор: бе1ете а 1пгйтас бе1ете) Абстракция. Использование объявления 5)дпаьцге для создания ограничений на структуру является одним из способов сокрытия имен функций, как в предыду- щем примере было скрыто имя функции бе]есе в структуре! ЬЬЬ15ц Реализации Ятапс]агг] М!. (Нью-Джерст!) также включает конструкцию аЬаггасЬ)оп; аоатгасттоп тип абстракции : ситнатура абстракции - опредепение структуры которая выполняет такую же функцию.

Аналогично для создания новыхтиповдан- ных можно использовать аьясуре иия типа данных ытсп обчяапения епб П.8. Рааса) 635 поскольку конструкторы объектов данных не экспортируются из определения типа, что обеспечивает истинную абстракцию. Массивы. МЕ реализует массивы как структуры: + орел Аггау добавляет функции массивов в текущую среду. + аггау(в.

и) возвращаетмассивсдиапазономизменения индексовотОдо (в-1), все элементы которого инициалнзированы как и. + зиЬ (а т ) возвращает значение аГ(]. + ирОа1е(а. 1. ча) ) присваивает элементу ай!] значение ча). П.8. Рааса! Пример с пояснениями В листинге П.10 приведена версия на Рааса! программы, которую мы уже рассматривали при изучении языков С и РОСТКА(х(. В этой программе считывается массив целых чисел, распечатываются значения его элементов, а затем вычисляется и распечатывается сумма всех значений элементов массива.

Если входной файл залтр(е.йа1а содержит 3 12 14 16 4 1.2 1.4 1.6 1 О то в результате работы программы будет напечатано: 12.00 14.00 16.00 лив = 42,0000 1,20 1 40 1.60 1.00 лив - 5.2000 Листинг П.10. Пример суммирования элементов массива на языке Рааса) 1 ргачгав вюп(1лриц лисриц юо)е), 2 соплг и ге = 99: 3 ЬурЕ уЕГдлг - аГГау 11. ЛИ 2Е] ОТ ГЕа!; 4 чаг 1пп)е Ьеы. 5 а Чесглг, б 1,1: )пгелег: 7 Типсыьп ливану: Чесллг, и; 1лгезег): геа). 8 чаг Ьевр: геа); 9 и 1плелег: 10 (Тели функции 5ив) 11 Ье91п 12 гевр .= О: 13 Таг 1 ;= 1 Го и Ьл Ьевл:= Гевл + ч П ]: 14 лив :- гевр 15 ело .(еил) 16 Ье9лп (ог вачл) 17 гелем1пп)е, вывр)е.бага'): 18 вп|!е пол (еьг(юби)е)) оо 19 Ье91п 20 геллм лг1)е, 1); 21 Тлг ) = 1 га 1 до 22 Ье91П продолжение Л 636 Приложение.

Обзоры языков Листинг П.10 (продолженне) 23 геас(апм1е, а(>1>: 24 ею (е (а(01: 10: 2 > 25 ела. 26 ью(е>п: 21 ига(е1п('ааа - ', ааа>(аж> 0.4>: 28 геао>э(~птые> 20 ево 30 ево, Строка 1. 0>а>п — это имя программы. Файл >при0 ссылается на стандартный файл ввода (обычно это клавиатура), сотряс — на стандартный файл вывода (обычно это экран монитора), а >п1>1е — на файл данных, который используется внутри программы, Здесь необходимо упоминать только файлы, используемые в программе. Строка Х Определяется новый тип данных >>ес0ог, который представляет собой массив вещественных чисел с диапазоном изменения индекса от 1 до 99.

И верхняя, и нижняя границы массива всегда должны указываться. Строки 4-6. Оператор ааг определяет глобальные переменные, используемые в программе. В данном случае >пг>1е — это текстовый файл, содержащий входные данные. Файлы >прщ и ои(рос объявлять не требуется. Строка 7. Объявляется функция ьца>.

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

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

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