Для обработки ЭВМ данные представляются в виде величин и их совокупностей.
С понятием величины связаны такая важная характеристика, как ее тип.
Тип определяет:
возможные значения переменных, констант, функций, выражений, принадлежащих
к данному типу;
внутреннюю форму представления данных в ЭВМ;
операции и функции, которые могут выполняться над величинами,
принадлежащими к данному типу.
В языке Паскаль тип величины задают заранее. Все переменные, используемые
в программе, должны быть объявлены в разделе описания с указанием их типа.
Обязательное описание типа приводит к избыточности в тексте программ,
но такая избыточность является важным вспомогательным средством
разработки программ и рассматривается как необходимое свойство
современных алгоритмических языков высокого уровня.
В таблице приведены простые типы данных Турбо Паскаль, объем памяти,
необходимый для хранения одной переменной указанного типа, множество
допустимых значений и применимые операции.
Идентификатор
Длина (байт)
Диапазон
значений
Операции
Целые типы
integer
2
-32768..32767
+, -, /, *, Div, Mod, >=, <=, =, <>, <, >
byte
1
0..255
+, -, /, *, Div, Mod, >=, <=, =, <>, <, >
word
2
0..65535
+, -, /, *, Div, Mod, >=, <=, =, <>, <, >
shortint
1
-128..127
+, -, /, *, Div, Mod, >=, <=, =, <>, <, >
longint
4
-2147483648..2147483647
+, -, /, *, Div, Mod, >=, <=, =, <>, <, >
Вещественные типы
real
6
2,9x10-39 - 1,7x1038
+, -, /, *, >=, <=, =, <>, <, >
single
4
1,5x10-45 - 3,4x1038
+, -, /, *, >=, <=, =, <>, <, >
double
8
5x10-324 - 1,7x10308
+, -, /, *, >=, <=, =, <>, <, >
extended
10
3,4x10-4932 - 1,1x104932
+, -, /, *, >=, <=, =, <>, <, >
Логический тип
boolean
1
true, false
Not, And, Or, Xor, >=, <=, =, <>, <, >
Символьный тип
char
1
все символы кода ASCII
+, >=, <=, =, <>, <, >
Перечисляемый и интервальный тип относятся к типам, определяемым
пользователем и будут рассмотрены нами позже.
Дополнительные сведения о типах данных..
Порядковые типы, выделяемые из группы простых типов, характеризуются
следующими свойствами:
все возможные значения порядкового типа представляют собой
ограниченное упорядоченное множество;
к любому порядковому типу может быть применена стандартная
функция Ord, которая в качестве результата возвращает порядковый
номер конкретного значения в данном типе;
к любому порядковому типу могут быть применены стандартные
функции Pred и Succ, которые возвращают предыдущее и последующее
значения соответственно;
к любому порядковому типу могут быть применены стандартные функции
Low и High, которые возвращают наименьшее и наибольшее значения
величин данного типа.
В языке Паскаль введены понятия эквивалентности и совместимости типов.
Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется
одно из двух условий:
Т1 и Т2 представляют собой одно и то же имя типа;
тип Т2 описан с использованием типа Т1 с помощью равенства или
последовательности равенств. Например:
type
T1 = Integer;
T2 = T1;
T3 = T2;
Менее строгие ограничения накладываются на совместимость типов. Так,
типы являются совместимыми, если:
они эквивалентны;
являются оба либо целыми, либо действительными;
один тип - интервальный, другой - его базовый;
оба интервальные с общим базовым;
один тип - строковый, другой - символьный.
В Турбо Паскаль ограничения на совместимость типов можно обойти с
помощью приведения типов. Приведение типов позволяет рассматривать
одну и ту же величину в памяти ЭВМ как принадлежащую разным типам.
Для этого используется конструкция
Имя_Типа(переменная или значение)
Напрмер, Integer('Z') представляет собой значение кода символа 'Z'
в двухбайтном представлении целого числа, а Byte(534) даст значение 22,
поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte
занимает один байт, и в процессе приведения старший байт будет отброшен.
Знаете ли Вы, что абстракция через спецификацию - это прием программирования, позволяющий абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры. Абстракция через спецификацию позволяет абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры.