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

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

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

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

В нашем случае наибольшим вариантом является переменная апц1е, состоящая из двух иелых чисел и олного вещественного. Во время выполнения программы метка должна указывать. какой из вариантов в ланный момент солержится в переменной 11цггге. Если значение варианта нужно вывести на экран, используется следующая последовательность команд: саве вуй19иге.тогв ог' с1гс1е: игусе1п('Это окружностьг ее диаметр равен:', ву11цггге.с)1авегег); Гг1ап91ег Ьед1п иг1се1п('Это треугольник' ); игзге1п('его стороны равны:', вуг19гтге.1еггя1г)е, ву119сге.г19)тся1г(е)) иг1ге1п('угол между сторонами равен:', вуб19оге. ап91е); аг гессапд1ег Ъед1п иг1ге1п ('Это прямоугольник'); игусе1п ('его стороны равны:', ву119иге.я1г(е1, ву21доге.я1с)е2) гесипв(е.

ккнт, кк)е2 сггс|евевегег гпкпц~е: Някк(е, пцмеле, апяге ( г ( — — Метка((пгп) сгктг Рис. 5.9. Разиеченнае объединение трек нарачетров форл|ы (разлгер асег яереиенных нреднотагается равным! Несмотря на то что при разработке языка Разов) была предпринята попытка рассмотреть, по крайней мере, возможность проверки типов вариантных записей, при разработке этого языка возникают две особые проблемы, делающие проверку типов пралтически невозможной.

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

Рассмотрим следующую последовательность команд: еу)ре с1"цге а сава в)заре ой сзгс1е: )с)1ажесег: геа1); ггзащ1е : (1ейсазс)е : 1пседег)! При такой структуре записи ни пользователь, ни система не могут определить текущий тип записи. Предположим, что значение переменной туй1сцге.с)1атегег равно : . з 3.

Не существует способа зашиты от неверных ссылок, например: ззсе:= жуй1сцге.1ейгезс)ег Такие ссылки редко бывают полезными, поскольку на данный момент в ячейке, отведенной переменной 1ейгв1с)е, находится значение с плавающей точкой. Вообще, мы можем в :анны время сослаться на переменные тугздиге.с)1атегег и туйзспге.1ейгазс)е и присвоить им значения. Иногда вариантные записи языка Рааса! используются лля того, чтобы обойти некоторые ограничения, введенные в этом языке.

Они предоставляют удобную лазейку в правилах проверки типов. Например, в языке Рааса! не разрешена арифметика указателей, но некоторые приложения требуют манипулирования значениями указателей. Так, сопутсгв>юшая система динамического управления памятью использует арифметику указателей лля вычисления адресов ячеек памяти, в которых будет производиться размещение объектов.

Для того чтобы обойти запреты арифметики указателей, программист может помешать указатели в вариант с целыми числами, а уже с этими числами обращаться так, как того требует поставленная задача. В языках С, Моди)а-2 и Аг)а описанное использование вариантных записей необязательно, поскольку в этих языках существуют лр> п|е л1етолы выполнения арифметических операций над указателями, или адресами. $.8.5. Объединения в языке Адез В языке Ада форма вариантных записей языка Риса! была расширена лля повышения их безопасности.

Были решены обе проблемы, связанные с использованием вариантных записей в языках Рааса! и Мог)и)а-2: в языке Ада изменить метку без изменения варианта невозможно и метка нужна во всех вариантных записях. Более того, в языке Ада следует проверять метку при любых ссылках на вариант. В языке Ада пользователь может задавать переменные, принадлежащие к типу вариантных записей и содержащие только один из возможных типов варианта.

Подобным способом пользователь может указать системе, когда возможна статическая проверка типов. Сами переменные, определенные таким образом, называются ограниченными вариантными переменными (сопзгга)пед чапаи! тат)аЫе). ° Глава 5. Типы данных 250 Метка ограниченной вариантной переменной интерпретируется как именованная константа. Неограниченные вариантные записи в языке Ада подобны их аналогам в языке Рааса), поскольку во время выполнения программы значения вариантов могут изменять свои типы. Однако тип варианта может меняться только при присвоении ему целой записи.

в том числе и метки. Подобный подход исключает возможность появления несовместимых записей, поскольку если вновь присвоенная запись является множеством констант, то значение метки и типа варианта можно статически проверить на совместимость. Если присваиваемой величиной является переменная, то ее совместимость обеспечивается в процессе присваивания, так что новое значение переменной наверняка будет совместимым.

Выше приводился пример вариантной записи на языке Рааса!. Затем эта же запись описывается на языке Ада: Фура ЯНАРЕ дв (С1КСЬЕ, ТКХАИСЬЕ, КЕСТАИСЬЕ); Фура СОЬОКЯ хв (КЕР, СНЕЕК, ВЬОЕ)) Фура Г1СРКЕ (ГОКМ : ЯНАРЕ) Ьв касокй Г1ЬЬЕР : ВООЬЕАИ! СОЬОК : СОЬОКЯ; савв ГОКМ Ев н)зеп С1КСЬЕ => Р1АМЕТЕК '. ГЬОАТ! итгеп ТК1АИСЬЕ > ЬЕГТ Я1РЕ : 1ИТЕСЕК) К1СТЙ Я1РЕ : 1НТЕСЕК! АНСЬЕ : ГЬОАТ; м)зеп КЕСТАНСЬЕ > 51РЕ 1 : 1НТЕСЕК) Я1РЕ 2 : 1НТЕСЕК) (св 7 епсз кесокйг Следующие два оператора объявляют переменные типа Г1СРКЕ: Г1СРКЕ 1 : Г1СОКЕ( Г1СРКЕ 2 : Г1СОКЕ(ГОКМ => ТК1АНСЬЕ); Переменная Г1СОКЕ 1 объявляется как неограниченная вариантная запись без начального значения.

Тип этой переменной может меняться при присваивании ей полной ~сметкой) записи: Г1СОКЕ 1:= (Г1ЬЬЕР => Фксе, СОЬОК => ВЬОЕ, ГОКМ => КЕСТАИСЬЕ, 51РЕ 1 => 12, 51РЕ 2 => 3)г Правая часть оператора присваивания представляет собой множество данных. Множество возможных типов обьявленной выше переменной Г1СОКЕ 2 ограничивается типом ТК1АБСЬЕ, кроме того, значение данной переменной не может измениться на другой вариант.

Форма размеченного объединения совершенно безопасна, поскольку она всегда позволяет выполнять проверку типов, хотя ссылки на поля неограниченных вариантов должны проверяться динамически. 5.8. Объединения 25з 5.8.6. Оценка Во многих языках объелинения — потенциально небезопасные конструкции. Это одна из причин того, что в языках РОЙТМАН, Разса1, С, С . и Моби!а-2 отсутствует строгая проверка типов: в этих языках невозможна проверка типов ссылок на объединения. С другой стороны, объединения прелоставляют некоторую гибкость программирования; в языке Разса1.

например, объединения позволяют использовать арифметику указателей. Более того. как показал опыт языка Ада, структуру объединения можно сделать безопасной. В большинстве других языков объединения приходится использовать осторожно. Существуют нелавно разработанные языки, не содержащие обьединений. В их число входят языки ОЬегоп, Мобц1а-3 и 3ача. Одним из объяснений этого факта может служить растущая забота о безопасности языков программирования.

5.8.7. Реализация объединений Размеченные объелинения реализуются простым использованием одинаковых адресов лля всех возможных вариантов. Наибольшему варианту выделяется достаточное количество памяти. Для ограниченных вариантов в языке Ада, в которых изменения не происхолят, можно использовать точное количество памяти. Метка размеченного объелинения хранится в структуре, подобной записи, вместе с соответствующим вариантом.

Во время компиляции в памяти должно содержаться полное описание каждого варианта. Это можно осуществить, связывая таблицы выбора с меткой в дескрипторе. Таблица выбора содержит элементы, соответствующие каждому варианту и указывающие на его дескриптор. Для шююстрации этой схемы рассмотрим следующий пример из языка Ада: Супе НОВЕ 1ТАО : ВООЕЕДК1 Дв кесске саве ТАО Дв и1зеп Ккце =-> ОООБТ : 1КТЕБЕК; ицеп ка1ве => вцж: ЕЕОЛТ епс саве; ц аг Возможная форма дескриптора этого типа показана на рис.

5.10. имя гип имя Рис. 5.10. Динииическид дескрингяор размеченного объединения 252 Глава 5. Типы данных 5.9. Множества Переменные множественного типа (зе! гуре) могут содержать неупорядоченную со-; пность отдельных величин, имеюших некоторый порядковый тип. называемый ба. вым типом (Ьазе !уре). Множественные типы данных часто используются для модевания множеств в математическом смысле этого термина. Примером может служить . -: чиз текста, для выполнения которого нужно обеспечить хранение и удобное использ зное таких небольших наборов символов, как знаки пунктуации илн гласные буквы. Прн разработке множественных типов возникает один специфический вопрос; каким .жно быть максимальное число элементов базового типа в множестве? 5.9.1.

Множества в языках Ройса! н Мод!за!а-2 Среди распространенных императивных языков программирования множества как - данных сушествуют только в языках Рааса( и Мог(ц!а-2. Опишем кратко множествен: с типы ланных в языке Рааса!. Максимальный размер множеств в языке Рааса! зависит от реачизации. Многие реазшш жестко их ограничивают, зачастую числом, значительно меньше 100. Причина - -эго ограничения заключается в том, что множества и операции нал ними наиболее -= эективно реализуются. если переменная множественного типа представляется в виде кн битов.

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

часто нельзя пе-=.-.ести на машины с меньшими размерами слов. Существование этих проблем является . елствием того, что максимальный размер базового множества не включается в струк- гу языка, а выбирается разработчиками средств реализации языка. В языке Рааса) есть некоторое количество операций иад множествами. в число кото-: х входит объединение, пересечение и проверка равенства множеств. Ниже приводится пример определения множественного типа и нескольких перемен.- х этого типа.

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

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

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

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