Лекция 5. Стандартные типы данных

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

Группа Подгруппа Название Идентификатор
  Простой   Порядковый Короткий целый ShortInt
Байтовый Byte
Слово Word
Целый Integer
Длинный целый LongInt
Символьный Char
Булев Boolean
    Вещественный Вещественный Real
С одинарной точностью Single
С двойной точностью Double
С повышенной точностью Extended
Сложный Comp
Строковый String
    Структурный Массив Array
Множество Set
Файл File
Запись Record
Ссылочный Pointer
  Процедурный Процедура Procedure
Функция Function
Объектный Object

Рисунок 5.1 - Система типов языка Pascal.

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

5.1 Целые типы

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

Таблица 5.1.

Целый тип Диапазон значений Размер ячейки памяти
shortint -128...127 1 байт
byte 0...255 1 байт
word 0...65535 2 байта
integer -32728...32727 2 байта
longint -2147*106...2147*106 4 байта

Для целых чисел присуще 4 операции: +, -, *, / и две: div -деление нацело и выделение остатка mod. Также inc(x) - увеличивает значение на единицу x:=x+1 и dec(x)-уменьшает значение на единицу x:=x-1. Синтаксическая диаграмма представления в общем виде целого числа представлена на рисунке 5.1.

Рисунок 5.1. Синтаксическая диаграмма.

Большинство компиляторов для представления знака используют дополнительный код (или дополнение до двух).

Для того, чтобы получить представление числа –n в двоичной системе B = b1b2…bw:

— Берут логическое дополнение B, т. е. заменяют в каждом b значение на противоположное;

— Прибавляют единицу.

Например:

1 = 00000001 11111110 11111111 = -1

2 = 00000010 11111101 11111110 = -2

127 = 01111111 10000000 10000001 = -127

У отрицательных значений в старшем бите 1.

Дополнение до двух удобно тем, что при выполнении над ними операций целочисленной двоичной арифметики получается правильное представление

(-1) – 1 = -2

11111111 – 00000001 = 11111110.

Отметим, что строку битов 10000000 нельзя получить из положительного значения (-128), а 128 7 битами представить невозможно! Это необходимо учитывать при работе с типом shortint.

Альтернативное представление чисел со знаком – дополнение до единицы (обратный код). Где –n – простое дополнение n, но зато в этом случае есть два значения нуля.

5.2 Вещественные типы

Запись вещественного числа возможна в виде числа с фиксированной точкой, 157.34869, 0.01, 21.1Е-02 и т.д. Данные этого типа имеют две основные характеристики - диапазон значений и точность. Диапазон значений изменяется от плюс до минус приведенного значения в таблице 5.2.

Таблица 5.2.

Тип Точность Диапазон значений Размер точности
real вещественный 2.9*10-39..1.7*1038  
singl пониженная 1.5*10-45...3.4*1038  
double двойная 5.0*10-324...1.7*10308  
Extended повышенная 3.4*10-4932...1.1*104932  
Comp сложный -9.2*1018...9.2*1018  

Сложный тип Comp может представлять только целые значения в диапазоне от –263+1 до 263-1.

Рисунок 5.2 - Синтаксическая диаграмма представления вещественных чисел.

Над вещественными типами допустимы четыре арифметические операции (аналогично целым значениям). Все они дают вещественные результаты, если хотя бы один операнд вещественный (+, -, *, /), а также операции отношения (>, <, =, >=, <=, <>). Определены так же стандартные функции преобразования вещественных чисел в целые:

Trunc(x) - отбрасывает дробную часть от x.

Round(x) - вырабатывает целый результат путем округления до ближайшего целого.

5.3 Символьный тип.

Значениями символьного типа являются символы из множества ASCII кодов. Из 256 символов упорядоченных определенным образом, малые и заглавные буквы, цифры, символы и специальные знаки. Над значениями символьного типа char возможны операции сравнения с логическим результатом. Ord(x) - определяет номер аргумента x или символа. Ord('A')=65; Chr(x) - определяет литеру (символ), порядковый номер которого равен аргументу x. Chr(65)='A';

5.4 Ограничительные типы.

На основе стандартных типов программист может определить новые, собственные скалярные типы. Самое простое - это ограничение допустимого диапазона значений некоторого стандартного скалярного типа. Это определяется заданием минимального и максимального значений диапазона: 1..10, -100..100, 'а'..'z'. Допускается создание ограничительных типов из дискретных типов.

Var Bit: 0..7;

5.5 Перечислимые типы.

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

Type

Color=(Red, Yellow, Green);

Var

X,y:color;

Begin

Y:=Red;

If y>Yellow then x:=Green;

End.

Над значениями перечислимых типов определены операции сравнения (т. е. в порядке возрастания по списку).



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: