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

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

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

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

Синтаксис определения подтипа следующий: зоотуре иня подтипа >з иня базового типа ограничение; как, например, в зобсуре вгарь5са1е >з >птерег гвпйе -20..20: щЬЬуре Ехесозтуе >з Еир1оуеейес15а1агтеб); Подтип не определяет новый юш, он просто определяет подмножество объектов ггат> ых, принадлежащих базовому типу. В частш>сти, для объектов тк>дтнпа можно использовать те же операции, которые использу>отса для объектов базового типа, а объекты разных подтипов одного об>цсго базового типа можно сме>вивать в качестве операндов одного выражения.

Производные типы. Производный тип похож па подтпп, но оп является новым типом, отличшям от базового, Синтаксис определения производного типа следу>ощи »': Гуре иня производного типа >з пвч иня базового типа; где базовый тип можно определить с ограничениями (и, таким образом, в дейс~ вительностн это будет полтин). Например, лпикяо записать: туре Иетегз >з пен тптерег> Гуре Е!Ьегз >з пен >птевег> Производный тип позволяет использовать все те же операции, что и базовый тип (или подтип).

Однако, поскольку производный тип отличается от базового, операции не могут применяться к смеси операндов базового и производного типов. Например (возвра>цаясь к приведенным ранее опрсделсниям производных типов), поскольку операция ч- определена для базового типа > пге0ег, следовательно, опа определена и для производных тицоп г)егегз и Е > Еегз. ПД, Аца 573 Однако если х, у и Š— переменные типа )пСедег, Месегз и !.1сегз соответственно, то ни одну пару, составленную из этих переменных, нельзя между собой складывать (то есть запись х + ~ некорректна).

Таким образом, используя производные типы, программист защищается от случайного сложения двух переменных, представляющих различные виды данных, хотя основное представление данных может быть одинаковым (в данном примере все переменные представлены целыми числами). Иерархия подтипов Ада Все типы элементарные скалярные дискретные перечисления символьные булевы другие перечисления целые числа целые со знаком целые без знака вещественные с плавающей точкой с фиксированной точкой обычные десятичные ссылки ссылки на объекты ссылки на подпрограммы составные массив строка другие массивы недискриминантные записи дискриминантные записи задачи защищенные Числовые типы и неограниченные типы в зту иерархию не входят.

П.1.2. Управление последовательностью действий Выполнение программ на языке Ас)а является операторно-ориентированным, и в агом язык Аг)а похож на РОСТКА)д и Разов!. Выражения Для обычных бинарных арифметических и логических операций и операций отношения используется инфиксная запись. Префиксная запись используется для унарных операций (~, - и пот), а для вызовов функций используется обычное мате- 574 Приложение.

Обзоры языков матическое префиксное представление инд функции(список аргуиентов). При отсутствии скобок приоритеты распределены в следующей последовательности (сначала перечислены операции с наивысшим приоритетом): ** (возведение в степень) * l вод ген аЬз пот (унарный+ и - ) Ь (бинарный+ и — ) у= «= »= тп пос тп апб ог хог апа Епеп ог е1зе Операции с одинаковым приоритетом ассоциативны слева направо. Обратите внимание нато, что в языке Ас)а присутствуют булевы операции, вычисляемые по укороченной схеме, апб Ецеп и ог е1 зе, которые вычисляют тттлько свой первый операнд, если его значения достаточно лля вычисления значения всего выражения. Операции тп и под тп используются для проверки, принадлежит ли значение конкретному диапазону или удовлетворяет ли конкретным ограничениям. е1ье — последовательность операторов епб т Гт в которой любая из частей е1 616 или е1де может быть опутцена.

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

Пре- дусмотрено три формы оператора цикла, а оператор ех1т позволяет осуществить прямой выход из цикла. Также предоставляется ограниченная форма оператора доЕо. Все основные управляющие операторы заканчиваются ключевым словом епб, за которым следуст ключсвос слово, определяющее оператор (например, епб 1(, епб 1оор), так что для объслн пения опсраторов в одну программную единицу реп- ко требуется специальная нара 0ед п-епб. Присваивание. Оператор присваивания языка Ас)а похож на оператор присва- ивания языка Рааса). Также возможно присваивание полного набора значений пе- ременной типа запись, если использовать один из следующих способов: Мурду := ("0ЕС",30.19641, му0ау :- (теаг -> 1964 моптм => 'беГ .

0ау => 301. Оператор т б. Оператор 11 имеет общую форму: т 1 булево внраиение гаеп — последовательность операторов е1вт 1 булево вирвиение Слеп — последоватетъность оператооов е1втт булево вырвиение Слеп П.1. Ас1а 575 Каждый вариант является либо одиночным значениелп либо диапазоном значений, которые может принимать выражение, записанное в заголовке оператора.

Таким образом, вариант — это литеральное значение или подмножество целых чисел (или значения другого перечисляемого типа), например: саве згабесече1 т'в ыьеп >гель => операторы: ыьеп 5орь ! Лыпто -> операторы; ньен 5ептог - операторы: епб саве: Лолжно выполняться следующее требование: либо варианты выбора охватывают весь диапазон возможных значений выражения, либо имеется завершающая конструкция ыпеп ас1тегз для явного описания действий для всех пе указанных значений выражения.

Таким образом, в процессе выполнения программы исключается возможность возникновения ошибки, которая появляется, если для вычисленного значения выражения в операторе сазе не определено никаких лействий. Если же для некоторых значений выражения пе должно производиться никаких действий, соответствующая часть оператора сазе может содержать ключевое слово пы11. Оператор цикла. Основной итерапионный оператор имеет форму 1оор — поспедоватепвноств операторов епб тоор Поскольку в заголовке оператора цикла не указаны условия его окончания, данная форма цикла будет выполняться бесконечно, пока он не будет прерван либо явным оператором ех 1, 0осо или гегыгп, либо по причине возникновения исключительной ситуации. Контролируемый итерационный процесс может быть организован с помощью форм оператора цикла ыпт1е или 1ог.

Оператор чят11е имеет синтаксис ыы1е бупево выраиение а оператор бог бывает двух видов: тог иня переиенной тп дискретный диапазон тог иня перененной тп гечегзе дискретный диапазон где дискретный диапазон может быть некоторым диапазоном перечисляемого или целого типов (например, 1..10, или г ге511 .. 0ыптог), Ключевое слово гечегзе означает, что итерация начинается с конечного значения диапазона, присвоенного данной переменной, и продолжает работать, пока не достигнет начального значения. Примеры циклов Гог приведены в листинге П.1. Важной особенностью цикла бог является то, что имя переменной, записанное в заголовке цикла, не объявляется как обычная локальная переменная (как в языке Разов!).

Вместо етого она неявно об ьявляется в момент ее появления в операторе бог и ее люжно использовать только внутри зтого цикла Как только цикл заканчиваетт свою работу, такан переменная исчезает, и ее больше нельзя использовать. Зта структура позволяет компилятору языка Лс1а осутцествить несколько важных оптимизаций цикла. Оператор ехт1. Оператор ехт1 имеет следующий внд: емто ыьеп бупево выраиение; 576 Приложение, Обзоры языков или просто ех1(. При выполнении указанного в операторе ех10 булева условия управление передается в конец самого внутреннего цикла, включающего этот оператор. Альтернативная возможность заключается в использовании меток для операторов циклов, в этом случае оператор ех1с Лолжен содержать метку цикла, из которого следует выйти, например: ею( Опсегспор ньен А(1.3) - 0: Оператор доге.

В языке А((а имеется оператор доге, но его использование строго ограничено. Вообще, оператор досо может перелать управление только лругому оператору внутри той же подпрограммы либо тому же или внешнему уровню вложенных операторов, Ввод-вывол. В языке Аг(а не предусмотрены встроенные возможности вволавывола. Эти действия управляются перегруженными функциями из стандартных пакетов. Например, пакет Тех( 10 содержит определения простых функций вволавывола текстовых значений, необходимых для написания простых программ на языке Аг(а. Функция дес(агд) считывает числовой или строковый аргумент со стандартного устройства ввода (клавиатуры).

Функция рог(агд) записывает в стандартный вы вол. Функция рцг(агд. Ю записывает значение параметра агд в поле длиной Тн символов. Функция лен ! 1пе записывает символ конца строки. Преобразование между строковыми и числовыми ланными также можно осуществить с помощью функций дег и рцс. Функция де((1п Зсщод, Оцс лцп)Ьег. оцт 1азГ) присваивает переменной лцяЬег числовое значение первых 1..1азт символов строки эгщлд. Аналогично,функция рог(оць зьг1лд. 1и лип)ьег) присваивает строке зсг(лд значение переменной лцяЬег. Функции дег и рог можно также использовать для файлов данных. Файлы определяются как11ппсес рг1нзсе в компоненте рг!часе пакета, объявленного какопределениереализации. Функциюорел(1п оцс Г|!е Туре, 1п Г(1е Мо()е, 1л Г(1е Маее) можно использовать для открытия файла Г11е агаве в одном из режимов (1л Г!1е, Оцс Г)1е.

Аррелс Г11е),определяемом вторым параметром,афункциюс1озе(1п оис Г11е 1уре) — для закрытия файла. Указания компилятору. Оператор ргарпа используется лля перелачи информации компилятору. Этот оператор не рассматривается как часть языка. То есть если из правильной программы упш|ить все такие указания, программа должна по-прежнему компилироваться и иметь ту же семантику, что и раньше. Олнако эти указания сообщают транслятору значимую информацию о том, как выполнять компиляцию для конкретного приложения. Обычно полобное указание записывается следующим образом: ргадна ннн прагны (паранетрн) где ннп прагны либо предопределено в языке, либо определено реализацией.

Некоторые указания управляют функциями компилятора, такими как генерирование листинга программы (ргадоа С15Т). Однако большинство указаний прелназначено для управления структурами времени выполнения конкретных подпрограмм, Например, ргадва !МЕ!МЕ(слнсок лодпрогранн) определяет, что вызовы перечисленных подпрограмм везде, тле возможно, лолжны быть заменены встроенными последовательностями колов. Прагма ргадяа ОРТ1М!7Е(Т!МЕ ог 5РАСЕ) определяет, что пол- П. Ц Ас~а 577 программа, в которой присутствует зто указание, должна быть скомпилирована таким образом, чтобы минимизировать время ее выполнения (ПМЕ) или необходимую для ее выполнения палтять (5РАСЕ).

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

Каждое исключение имеет свое имя. Существует небольшое число предопределенных исключений, таких как СОИ51РА! йТ ЕййОк (возникает, когда индекс выходит за обьявленный диапазон, когда при присваивании нарушается ограничение на диапазон значений и т. д.). Все остальные исключения объявляются следующим образом: иия исключения: ехсервиоп Обработчик исключений начинается с имен исключительных ситуаций, которые он обрабатывает, далее следует последовательность операторов, которые выполняют действия, необходимые для обработки исключения. Общий синтаксис обработчиков исключений следующий: ехсерттоп нпеп иня исключения ! . , ( иня исключения "> последовательность операторов.

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

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

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