Типы данных языка Паскаль
Понятие типа является одним из фундаментальных понятий любого языка программирования. Объекты (константы, переменные, функции, выражения), которыми оперирует программа, относятся к определенному типу.
Тип – это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями [1].
Например, значения 1 и 2 относятся к целочисленному типу, их можно складывать, умножать и выполнять другие арифметические операции. Значения «монитор» и «Паскаль» носят лингвистический характер, они имеют свой набор допустимых операций. В большинстве широкоупотребительных языков могут использоваться только строго определенные, заранее известные типы. Pascal, наряду со стандартными типами, имеющимися в других языках высокого уровня, позволяет программисту образовывать собственные типы.
Все допустимые в языке Паскаль типы подразделяются на две большие группы: простые и сложные (структурированные).
Простые типы в свою очередь подразделяются на скалярные и ограниченные.
Скалярные типы подразделяются на стандартные и определенные пользователем.
Стандартные типы предлагаются пользователям разработчиками языка Паскаль. К ним относятся целочисленные, вещественные, литерные, булевские типы данных и указатели.
Целочисленные типыданных представляют собой значения, которые могут использоваться в математических выражениях. Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системе, для записи которой используется знак $. Характеристика целочисленных типов данных представлена в таблице 2.
Таблица 2 – Характеристика целочисленных типов данных
Тип | Диапазон | Требуемая память (байт) |
BYTE | 0..255 | |
SHORTINT | -128..127 | |
INTEGER | -32768..32767 | |
WORD | 0..65535 | |
LONGINT | -2147483648..2147483647 |
Очевидно, что использование переменной типа Byte по сравнению с типом Integer экономит память в два раза. Использование байтового типа целесообразно, если известно, что значение переменной не превысит 255. В арифметических и логических выражениях допустимо смешение типов byte иinteger.
Пример
Var Sort, Nomer: integer;
A, B, C: integer;
Gran: byte; Min, Max: byte;
Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях и занимают в памяти от 4 до 6 байт. Паскаль допускает представление вещественных значений с плавающей или фиксированной точкой. Вещественные десятичные числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть отделяется от дробной десятичной точкой. Если десятичная точка отсутствует, число считается целым. Вещественные десятичные числа с плавающей точкой представлены в экспоненциальном виде: mE+p, где m – мантисса (целое или дробное число с десятичной точкой), Е обозначает «10 в степени», p – порядок (целое число). Характеристика вещественных типов данных представлена в таблице 3.
Таблица 3 – Характеристика вещественных типов данных
Тип | Диапазон | Мантисса, знаков | Требуемая память (байт) |
REAL | 2.9*10Е-39..1.7*10Е38 | 11-12 | |
SINGLE | 1.5*10Е-45..3.4*10Е38 | 7-8 | |
DOUBLE | 5.0*10Е-324..1.7*10Е308 | 15-16 | |
EXTENDED | 1.9*10Е-4951..1.1*10Е4932 | 19-20 | |
COMP | -2Е+63+1..2Е+63-1 | 10-20 |
Эффективное использование типов SINGLE, DOUBLE, EXTEND, COMP возможно только при включенной директиве {$N+}. По умолчанию она находится в выключенном состоянии. Для решения инженерно-экономических задач достаточно значений типа REAL.
Пример
Var Res, Summa, Itog: real;
X, Y: real;
Булевский тип данных описывается идентификатором BOOLEAN. Переменные и константы этого типа могут принимать только одно из двух значений: TRUE (истина) или FALSE (ложь).
Пример
Var Sel1, Sel2: boolean;
A,B,C,D: boolean;
Выражения булевского типа занимают в памяти 1 байт и используются в логических выражениях и выражениях отношения, а также для управления порядком выполнения операторов программы.
Литерный (символьный) тип описывается стандартным идентификатором CHAR. Константы и переменные этого типа могут принимать одно из значений кодовой таблицы ASCII. Значение константы или переменной этого типа заключается в апострофы.
Например, Var Bukva, Znak, Simvol: char;
Bukva:=’A’; Znak:=’+’; Simvol:=’!’
Переменные символьного типа занимают в памяти 1 байт. Использование данных типа char в арифметических выражениях запрещено. К литерным значениям могут применяться операции сравнения, результат при этом зависит от номера литерной переменной или константы в кодовой таблице.
Кроме стандартных типов данных, Паскаль поддерживает скалярные типы, определенные пользователем. К ним относятся перечисляемый и интервальный типы. Данные этих типов занимают в памяти 1 байт, поэтому любой пользовательский тип не может содержать более 255 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память.
Перечисляемыйтип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.
Формат
Type <имя типа>=(<значение1, значение2, ..., значениеN>);
Var <идентификатор, ...>: < имя типа>;
Пример
Type Season =(Spring, Summer, Autumn, Winter);
Var S1, S2: Season;
Autumn: (September, October, Nowember);
В данном примере приведен явно описанный тип данных пользователя Season. Определены их значения – обозначения времен года. Переменные S1 и S2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание. Третий тип перечисления – анонимный (не имеет имени) и задается перечислением значений в разделе Var. Autumn является переменной этого типа и может принимать значения September, October, Nowember. Таким образом, может быть задан любой тип, но это не всегда приемлемо. Первый способ, безусловно, более понятен и больше соответствует характеру языка Pascal.
Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов, кроме вещественного. Значение первой константы должно быть обязательно меньше значения второй.
Формат
Type <имя типа> = <константа1> .. <константа2>;
Var <идентификатор>: < имя типа>;
Пример
Type Days = 1.. 31;
Var Work_d, Free_d: Days;
В этом примере переменные Work_d, Free_d имеют тип Days и могут принимать любые значения из диапазона 1 . . 31.
Выход из диапазона вызывает программное прерывание.
Можно определить интервальный тип, задав границы диапазона не значениями констант, а их именами:
Const Min = 1; Max = 31;
Type Days = Min .. Max;
Var Work_d, Free_d: Days;
Структурированные типы данных базируются на скалярных типах и могут содержать их различные комбинации. Они определяют упорядоченную совокупность скалярных элементов и характеризуются типом своих компонентов [1]. В языке Паскаль представлены следующие структурированные типы данных:
строка – последовательность символов, заключенная в апострофы;
массив – структурированный тип данных, состоящий из фиксированного количества элементов одного и того же типа, доступ к которым осуществляется по индексу;
множество – набор выбранных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое;
запись – совокупность фиксированного числа компонентов разного типа;
файл – последовательность компонентов одного типа и одной длины.
Еще двум структурированным типам – процедурному и типу object (объектному) – трудно поставить в соответствие данные в обычном представлении.
Рисунок 1– Набор основных типов языка Паскаль
Дата добавления: 2019-02-07; просмотров: 586;