Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция4 ЯП КБ.doc
Скачиваний:
5
Добавлен:
22.08.2019
Размер:
457.73 Кб
Скачать

  1. Типы данных

Тип данных – это некоторый класс объектов данных вместе с набором операций для создания и работы с ними. В каждом языке имеется набор встроенных элементарных типов данных.

Дополнительно можно определять новые типы данных.

Основные элементы спецификации типа данных:

  • Атрибуты, характеризующие объекты данных заданного типа;

  • Значения, которые могут принимать объекты данных заданного типа;

  • Операции, которые допустимы над объектами данных заданного типа.

Текущие значения атрибутов объекта данных хранятся в дескрипторе (описателе) данных.

Дескриптор может быть частью объекта данных или храниться в отдельной области памяти.

Под реализацией типа данных понимают:

  • Способ представления объектов данных этого типа в памяти компьютера во время выполнения программы;

  • Способ представления операций, определенных для этого типа данных (комбинация аппаратных и программных средств, реализующих конкретные алгоритмы и процедуры над представлениями объектов данных заданного типа в памяти).

Синтаксис типа данных – это набор синтаксических конструкций для представления основных элементов спецификации типа данных. Атрибуты объектов данных обычно представлены синтаксически через объявления или определения типов. Значения представляются литералами или именованными константами. Вызов операций осуществляется с помощью специальных символов, встроенных процедур и функций.

    1. Элементарные типы данных

Элементарными типами данных называются типы данных, не определяемые в терминах других типов. Простейшие – скалярные типы данных. У каждого объекта только один атрибут.

Пример скалярных типов: числовой, логический, символьный и указательный тип данных.

      1. Числовые типы

  • Целый тип;

  • Вещественный тип с плавающей точкой;

  • Десятичный тип с фиксированной точкой.

Целый тип

В языках поддерживается несколько целых типов.

Пример: язык Ada – SHORT INTEGER, INTEGER и LONG INTEGER, язык С – int, short, long и char.

Спецификация. Множество чисел целого типа образует ограниченное упорядоченное подмножество бесконечного множества целых чисел, определенного в математике.

Операции над целочисленными объектами данных:

  • Арифметические операции:

  • Бинарные операции (БинОп): сложение, вычитание, умножение, деление, деление по модулю.

Спецификация имеет вид:

БинОп: integer1integer2integer3,

где символом  обозначен знак операции;

  • Унарные операции (УнарОп): операция отрицания, операция определения абсолютного значения.

Спецификация имеет вид:

УнарОп: integer1integer2;

  • Битовые операции (БитОп): побитовое логическое И, побитовое логическое ИЛИ, сдвиг битов влево, сдвиг битов вправо.

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

Спецификация имеет вид:

БитОп: integer1integer2integer3;

  • Операции сравнения (СравнОп): равно, не равно, больше, меньше, больше или равно, меньше или равно.

Спецификация имеет вид:

СравнОп: integer1integer2Boolean;

  • Операция присваивания (ПрисвОп) – это операция, изменяющая связывание объекта данных со значением.

Спецификация определяется одним из двух способов:

  • Установить значение, содержащееся в объекте данных integer1, равным значению, содержащемуся в объекте данных integer2, но не возвращать явный результат (изменение значения объекта integer1 является побочным эффектом данной операции).

ПрисвОп: integer1integer2void;

  • Установить значение, содержащееся в объекте данных integer1, равным значению, содержащемуся в объекте данных integer2, а также создать и вернуть новый объект данных integer3, содержащий копию значения integer2.

ПрисвОп: integer1integer2integer3.

Первый способ характерен для языка Pascal, а второй способ – для языка С.

Реализация. Целочисленный тип данных реализуется при помощи аппаратного представления целых чисел и элементарных арифметических операций и операций сравнения, реализованных аппаратно.

Рис. 1.3. Три способа представления в памяти целых чисел.

Вещественный тип с плавающей точкой

Включен практически во все ЯП.

Спецификация. Вещественные числа с плавающей точкой определяются одним атрибутом (real или float). Множество значений определяется точностью и диапазоном.

Точность определяется числом разрядов мантиссы, а диапазон значений – диапазоном изменения экспоненты (от 10-38 до 10+38 для чисел обычной точности и от 10-308 до 10+308 для чисел удвоенной точности).

В некоторых ЯП точность может быть задана программистом количеством значащих цифр в десятичном представлении.

Некоторые числа, например, 0.1 или , не могут быть точно представлены вещественными числами с плавающей точкой, т. к. они не могут быть представлены конечным набором двоичных цифр.

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

Операция проверки равенства двух вещественных чисел может быть запрещена разработчиком языка из-за проблемы округления.

В большинстве ЯП определены встроенные функции, такие как max, sqrt, sin.

Реализация. С помощью аппаратного представления.

Область памяти для хранения вещественного числа с плавающей точкой разделяется на две части: мантиссу и экспоненту.

Используется формат, определяемый стандартом IEEE Standard 7754: 32 бита для представления чисел обычной точности и 64 бита для представления чисел удвоенной точности.

Рис.1.4. Формат вещественных чисел с обычной (а) и двойной (б) точностью.

Десятичный тип с фиксированной точкой

Используется в коммерческих приложениях, чтобы избежать ошибок округления.

Спецификация. Десятичное число с фиксированной точкой представляется как последовательность десятичных цифр фиксированной длины с десятичной точкой, разделяющей целую и дробную часть числа. Местоположение десятичной точки задается явно.

Пример: Язык PL/1 – объявление переменной x

DECLARE X FIXED DECIMAL (10.2);

Реализация. Число хранится как целое, причем каждая десятичная цифра представляется двоичным четырехразрядным числом. Положение десятичной точки задается атрибутом, называемым масштабным коэффициентом.

Арифметические операции и операции сравнения моделируются программно.

Комплексный тип

Обычно включен в ЯП, ориентированные на решение научно-технических задач, в которых используются комплексные числа. (FORTRAN)

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

Реализация. Хранится как пара вещественных чисел, расположенных в смежных областях памяти.

Операции над комплексными числами моделируются программно.

Рациональный тип

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

Спецификация. Рациональное число имеет вид упорядоченной пары целых чисел неограниченной длины, представляющих его числитель и знаменатель.

Реализация. Хранится в виде двух связанных списков, представляющих его числитель и знаменатель.

Рис.1.5. Рациональное число 3/2

Операции над рациональными числами моделируются программно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]