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

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

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

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

то это читабельности может только навредить. Глава б. Типы данных 5.7.3. Операции над записями Р1СТОКЕ 15 Х(20) Р1СТОКЕ 15 Х(15) Р1СТОКЕ 15 Х(20) Р1СТОКЕ 1Я 9(10) Р1СТОКЕ 15 99. 01 ООТРОТ-КЕСОКО. 02 МАМЕ. 05 Г'КЯТ 05 М1000Е 05 ЕАБТ 02 ЕМР)ОТЕЕ-)ЧОМВЕК 02 ОКОЯЯ-РАг' 02 НЕТ-РАУ Р1СТОКЕ 15 Х(20). РРСТВКЕ 1Я Х(15). Р1СТОРЕ 1Я Х(20).

Р1СТВКЕ 15 9(10). Р1СТОКЕ 15 999Ч99. Р1СТОКЕ 15 999Ч99. Оператор МОЧЕ СОККЕЯРОИ01ИО 1(ЧРОТ-КЕСОКР ТО ООТРОТ-КЕСОКО скопирует поля Г1КЯТ, М100ЬЕ, ЬАЯТ и ЕМР'ОУЕЕ-МОМВЕК из входной записи (1МРОТ-КЕСОК0) в выходную (ООТРОТ-КЕСОКО). 5.7.4. Оценка В языках программирования записи часто являются полезными типами данных.

Структура типов записей проста, а их использование надежно. Единственным не совсем читабельным аспектом записей является возможность использования в языках СОВ01 и Р(Л эллиптических ссылок. Записи и массивы тесно связаны между собой структурными формами. поэтому интересно их сравнить. Массивы используются в том случае, если все величины ланных принадлежат к одному типу и обрабатываются одинаково. Эта обработка выполняется легко, если в структуре существует систематический способ упорядочения элементов массивов.

Подобная обработка хорошо подлержнвается использованием динамической индексации в качестве метода адресации. 245 Обычной операцией над записями является присваивание. В большинстве случаев типы обеих частей оператора присваивания должны совпадать. Язык Ада позволяет сравнивать записи для выяснения их равенства или неравенства. Помимо этого записи языка Ада могут инициализироваться набором литералов. В языке СОВОГО для перемешения записей предусмотрен оператор МОЧЕ ..'.)ККЕБРОЫ01))О.

Этот оператор выполняет копирование поля заданной записи- источника в целевую запись, при этом необходимым условием является назичие в целевой записи поля с тем же именем. Этот оператор часто полезен в приложениях обработки данных, в которых входные записи после некоторых изменений перемешаюзся в выхолные файлы. Поскольку входные записи часто содержат большое количество полей с теми же именами и залачами, что и выходные записи (причем порядок полей не обязательно совпадает), то операция МОЧЕ СОККЕ5РОИОТИО помогает сэкономить большое количество операторов. Рассмотрим следующие структуры языка СОВОГО: 01 1)(РОТ-КЕСОКР.

02 Ь)АМЕ. 05 ЬАЯТ 05 М100ЬЕ 05 Г1КБТ 02 ЕМР1ОУЕЕ-ИОМВЕК 02 НООКЯ-ИОККЕО Записи используются в том случае, если совокупность данных неоднородна, и различные поля не обрабатываются однотипно. Часто также требуется обрабатывать поля записи в опрелеленной последовательности. Имена полей подобны литеральным, или постоянным, индексам, и поскольку они статичны, то обеспечивают крайне эффективный лоступ к самим полям.

Динамические индексы также могут использоваться для дастина к полям записи, но такой подход сделает невозможным проверку типов, и, кроме того. он выполняется мелленнее. Записи и массивы представляют собой продуманные и эффективные методы удовлетворения двух различных, но родственных требований к структурам данных. 5.7.5. Реализация записей Поля записей солержатся в смежных ячейках памяти.

Однако, поскольку размеры полей не обязательно совпадают, метод доступа, используемый для массивов, для записей не подходит. Вместо этого. с каждым полем связывается относительный адрес, указываюший величину смешения от начала записи. На рис. 5.8 показана общая форма статического лескриптора записи. Динамические дескрипторы записей не обязательны. Поле 1 Поле л Рис.

5.8. Статический дескриптор записи 5.8. Объединения Обьединением (ип1оп) называется переменная, которая может содержать в различные периоды выполнения программы значения различных типов. Для того чтобы понять, ллл чего нужны объединения, рассмотрим таблицу констант компилятора, используемую ллл хранения констант, обнаруживаемых в компилируемой программе. Отдельное поле каждой позишш таблицы предназначено для хранения значения константы. Про)1положич.

что в конкретном компилируемом языке константы могут быть целочисленными, булевскнми н числами с плавающей точкой. Если рассматривать компиляцию с точки зрения у правления таблицей, было бы удобно, чтобы одна ячейка, или поле таблицы, сод~-. каш значение любого из указанных трех типов. В таком случае к значениям всех коис1ои. мо;кно было бы обрашаться одинаково. Такой тип ячейки памяти является в нскоз ором смысле объелинением трех типов величин, которые могут в ней содержаться. 2Я6 Глава 5.

Типы данных 5.8Л. Вопросы разработки улин из основных вопросов разработки. порождаемый проблемой проверки объели-:-чых типов, уже рассматривался в главе 4. Другим фундаментальным вопросоч явля=. синтаксическое представление объединения. В некоторых случаях объединения яв--:тся всего лишь частью структур записей, а в некоторых — нет. Итак. с объелинен-: . и типами связаны следующие основные вопросы разработки. ° Следует ли требовать выполнения проверки типов? Отметим, что любая полобная проверка типов должна быть линамической. ° Следует ли включать обьединения в записи? 5.8.2.

Свободные объединения В языках ГОйТКАН, С и С++ прелусмотрены конструкции объединений, в которых -:.- языковой полдержки проверки типов, В языке ГОйТВА)Ч для залания объединений :тользуется оператор ея()1чдьенсе, а в языках С и С++ — конструкция цпдог.. Объ:."нения в этих языках носят названия свободных (згее цпюпз), поскольку при их ис-:льзовании программисты совершенно освобожлаются от выполнения проверки типов. 5.8.3.

Размеченные объединения языка АЕФОЕ 68 Для выполнения проверки типов объединений требуется, чтобы каждое обьелинение :. =ержало указатель типа. Такой указатель называется меткой ((аз). а объелиненне, согржашее метку, — размеченным объединением (д)зсг)ш(па(еб цп(оп). Первым языком, -гиченившим размеченные объединения, был язык АЕОО).

68. Рассмотрим слелуюший --.нчер; цпдоп (дпс, гва1) Ег1, Ег2 :- этом примере указывается, что переменные 1г1 и Ег2 принадлежат к типу цпдоп. °:торый может быть типом дпв или гва1. Несмотря на то что таким переменным мож-. присваивать значения обоих указанных типов, ссылаться на эти переменные совсем -: так просто. Рассмотрим следующий фрагмент программы: цпдоп ( дпс, го*1 ) 1 г 1; зпс соцпг; 1 := 33г соопс := Ег1) )=есь выполнение первою оператора присваивания разрешено, а второго — нет. по- "ольку система не может статически проверить тип переменной 1г1, Компилятор не ' ггкет гарантировать, что переменная 1г1 действительно булет содержать целое значе—,м.

Для решения проблемы обращения к таким переменным в языке АЕООЕ 68 прелу;чотрены операторы согласования (соп(опп((у с!ацзез). Рассмотрим, например. слез)юший фрагмент программы: ипдоп (зпв, гва1) Ег1) дпе соцпг) гва1 яцаг 247 5.8. Объвдииаина саве гг1 хп (впг 1п"ча1): соцпс := 1псча1, (геа1 геа1ча1): воп:= геа1ча1 евао Оператор саве выполняет присваивание, допустимое в данный момент, т.е. именно то присваивание, в котором тип значения переменной 1г1 совпадает с типом целевой переменной (соопг или сца). Следовательно, разные типы обрабатываются по-разному.

Правильный выбор осуществляется путем проверки метки типа, сохраняемого системой поддержки выполнения программ лля ланной переменной, Взятые в скобки операторы, предваряющие операторы присваивания, указывают телуший тип переменной 1г1, а следующий за ними илентификатор представляет собой средство для обращения к переменной 1г1. Например, оператор (1пс 1пгча1) указывает, что если в данный момент значение переменной г1 принадлежит к типу 1пв, то выполняется заданный оператор: таким образом переменная 1пгча1 ссылается на текущее значение переменной 1г1.

Итак, переменные 1пгча1 и геа1ча1 представляют собой согласованные с типом объединения средства обращения к его значениям. Указанный метод является безопасным способом реализашш размеченных объединений, поскольку он позволяет выполнять статическую проверку типов в программе пользователя и динамическую проверку меток системы. лля того чтобы избежать ошибочного использования значений. Фиктивные переменные 1пгча1 и геа1ча1 можно рассматривать как неявно обьявленные переменные.

областями видимости которых является оператор, следующий за их определениями. 5.8.4. Типы объединения в языке Рпзсп! Впервые концепция интеграции размеченных объединениГ» и структур записей в единое целое была реализована в языке Рааса!. Затем зта интеграция была использована в языках Мода)а-2 и А»)а. Во всех этих языках размеченное объединение называется вариантом записи (гесогй чапап(). или вариантной частью записи. Метка — это доступная пользователю переменная, принадлежащая записи и хранящая тип варианта. Пример записи в языке Рааса), содержащей вариантную часть, приводится ниже. Суре вЛаре = (с1гс1е, гг1апо1е, гессап»)1е) ( со1огв = (гес(, »)гееп, Ь1се)) ~1яцге геоогс! 1111е»(: Ьоо1еаг») со1ог ; со1огв) саве Еогв»: вцаре ог с1гс1е: (с(1ав»егег: геа1) ) г 1ап»»1е» (1е1» в1с(е: 1пге»»ег» г1»)Ьгв1с(е: 1пгедег; ап»)1е: геа1); гестас»)1е» (в1с(е1: 1псейег) в1»(е2 : 1пгедег) а» чаг л»у11»)цге: 11»)цге) Глава 5.

Типы данных Структура вариантных записей показана на рис. 5.9 (предполагается, что лля хранения пелых и вещественных значений требуется одинаковый объем памяти). Переменная е состоит из метки 1огв и памяти, достаточной для хранения наибольшего варианта переменной 11циге.

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

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

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

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