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

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

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

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

Напригиер, алгоритм перемножения двух чисел, представленных двоичным кодом, отличается от алгоритма перемножения десятичных чисел. Поэтому обычно в спецификации присутствует некоторое неформальное описание действия операции, Точная спецификация действия операции является частью реализации этой операции вместе с определением способа представления аргументов в памяти компьютера. Иногда бывает непросто представить точную спецификацию операции в виде математической функции. СуШествуют четыре основных фактора, затрудняюших определение многих операций в языках программирования. 1.

Невозможность определить действие операции для некоторых аргу,иентов. Операция, определенная на некоторой области, может фактически быть не определенной для некоторых элементов этой области (например, операция извлечения квадратного корня не определена для отрицательных целых чисел).

Иногда чрезвычайно трудно точно указать область, для которой не определена данная операции. В качестве примера можно привести множества чисел, которые вызывают переполнение или исчезновение значащих разрядов в арифметических операциях. 2. Неявные аргументы. Обычно при обращении к операции в программе ей передается некоторый набор явных аргументов, Однако в операции могут быть задействованы неявные аргументы — например, глобальные переменные или ссылки на другие нелокальные идентификаторы.

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

Такие неявные результаты называются побочными эффектами. Функция может не только возвращать некоторое значение, но и изменять значения переданных ей параметров, Побочные эффекты являются основной частью многих операций, в частности таких, которые модифицируют структуры данных. Наличие побочных эффектов затрудняет точное определение области значения операции. 4. Самоизменение (зависимость от предыстории).

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

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

Самоизменение посредством модификации локальных данных встречается достаточно часто; изменение собственного кола операции встречается реже, но все же возможно в таких языках, как А!ЯР. Подтипы. При описании нового типа данных часто возникает желание указать на его сходство с некоторым другим типом. Например, в язь1ке С определены типы 10Ц 5ПОГ1, 1Оод И СПаг, которые являются разновидностями целочисленного типа, Данные этих типов ведут себя сходным образом, и некоторые операции, в частности + и х, было бы логично определить аналогичным образом для всех этих типов. Если некоторый тип данных является частью более крупного класса, то он называется подтипом этого класса, а сам класс называется супертипом для исходного типа данных.

Например, в языке Рааса! можно создать подкласс целых чисел следующим образом: туре 5вг111отедег - 1..20; Этот подкласс состоит из целых чисел от 1 до 20 включительно. Предполагается, что все операции, определенные для супертипа, допустимы также и для подтипа. Каким образом можно формализовать эту ситуацию? В языках Рааса! и Ас!а поддиапазоны имеющихся в языке типов явным образом определены как части языка.

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

Способ представления Способ представления элементарных типов данных сильно зависит от аппаратной части компьютера, на котором будет выполняться программа. Например, для целочисленных и вещественных величин почти всегда используется двоичное представлениее (соответственно целочисленное или с плавающей точкой), которое обеспечивается аппаратной частью компьютера. Причина такого выбора достаточно очевидна; при использовании того способа представления, который обеспечивает- 192 Глава 5.

Элементарные типы данных ся аппаратной частью компьютера, элементарные операции для этого типа данных можно реализовать при помощи операций, определенных с помощью аппаратной части; если же использовать какой-то иной способ представления лаииых, те же операции прилется моделировать при помощи программ и они булут горазло менее эффективными.

Атрибуты элементарных типов данных определяются аналогичным образом. 1. Для повышения эффективности во многих языках атрибуты данных определяются компилятором. Атрибуты данных не сохраняются непосредственно в представлениях ланных во время выполнения программы. Такой метод характерен для языка С, в котором основными задачами являются эффективность использования памяти и скорость выполнения программы, 2. С другой стороны, атрибуты объекта данных могут в процессе выполнения программы содержаться в дескрипторе как часть самого объекта. Такой метод характерен лля языков, в которых главной целью является гибкость, а ие зффекгивность выполнения — например, в 1.1БР и Рго!од. Поскольку в большинстве случаев в аппаратной части компьютера непосредственно не прелусмотре н а возможность хра не н и я дескриптора, то сам и дескрипторы и операции нал объектами, которые снабжены дескрипторами, должны быть программно-моделируемыми.

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

Например, если целые числа хранятся в памяти с использованием аппаратного представления, тогда сложение и вычитание целых чисел реализовано посрелством арифметических операций, встроенных в аппаратную часть компьютера. 2. Как процедура или подпрограмма-хруикция. Например, операция извлечения квадратного корня, как правило, не представлена непосрелственно в аппаратной части компьютера.

Она может быть реализована как полпрограмма, вычисляющая квадратный корень некоторой величины, перелаваемой ей в качестве параметра. 3. Как встраиваемая последовательность кодов, Встраиваемая последовательность кодов также является программно-моделируемой реализацией операции. Но в отличие от предыдущего варианта использования подпрограммы, в ланном случае код этой подпрограммы копируется в выполняемую программу в том месте, тле в противном случае пришлось бы вызывать подпрограмму.

Например, функция, вычисляющая абсолютное значение (модуль) числа и определенная следующим образом: аьмх) - ы х<0 гьеэ -х еже х обычно реализуется как встраиваемая последовательность кодов: бд, Свойства типов и объектов 193 + извлекается иа памяти значение х; + если х > 0, то следующий оператор опускается; + выполняется присваиванис х = -х; + новое значение х сохраняется в памяти. Каждая из этих строк реализована при помощи соответствующей операции, встроенной в аппаратную часть компьютера, 5.1.3. Объявления При написании программы программист определяет имя и тип каждого объекта данных, ко~орый встречается в программе.

Также должны быть определены время жизни каждого объекта данных, то есть часть программы, в которой;пот объект используется, и те операции, которые применяются к;этому обьекту. Обьявление — это оператор програлямы, назначение которого яэаключается в том, чтобы сообщить транслятору информацшо об именах н типах объектов данных, используемых в программе. Размещение объявлений в программе (например, внутри подпрограммы или определении класса) задает время жизни объектов. Например, в языке С объявление Наат А, В: в начале подпроэ рам мы указывает, что во время выполнения этой подпрограммы потребуются два объекта данных типа Г) а а Ь.

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

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

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