Типы данных.

 

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

Все переменные, используемые в программе должны быть описаны в разделе описания переменных VAR.

 

VAR<идентификатор> [,<идентификатор>,…]: <тип>;

[<идентификатор> [,<идентификатор>,…]: <тип>;…]

 

Например,

VAR A : Integer;

B, C: Real;

Здесь описана переменная А целого типа и две переменные В и С вещественного типа.

Тип, в свою очередь, может быть предварительно определен в разделе описания типов TYPE.

 

TYPE<идентификатор типа> = <тип> ;

 

Например,

TYPE I = Integer;

R = Real;

После такого описания типов описания переменных А, В и С могут быть следующими:

VAR A : I;

B, C: R;

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

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

 

TYPE <идент-тор типа> = (<идентификатор>

[,<идентификатор>,…]);

Интервальный тип определяет некоторое подмножество значений, которые может принимать данная переменная. Задаются наименьшее и наибольшее значения порядкового типа. Для каждого элемента выделяется один байт памяти.

 

TYPE <идентификатор типа> = <константа>. .<константа>;

В качестве констант могут использоваться значения любых простых типов кроме вещественных типов.

 

Например,

TYPE GR = (DS101, DS102, DS201, DS202, DS301, DS302);

SPEC = DS101. . DS302;

DIGIT = 0. .9;

VAR A : DIGIT;

B : SPEC;

D : 100. .200;

Строчный тип используется для описания строк длиной от 0 до 255 символов. Максимальная длина строки указывается в квадратных скобках. Если она не указана, максимальная длина полагается 255. Строковые переменные, как и строковые константы, занимают количество байтов, равное максимальной длине строки плюс 1 байт (нулевой), предназначенный для хранения текущей длины этой строковой переменной. Важной особенностью Турбо Паскаля является то, что к каждому символу строки возможен доступ по его номеру.

 

TYPE <идент-тор типа> = String[<максимальная длина>];

 

Например,

TYPE TString = String[100];

TS = String;

VAR S,S1 : Tstring;

S2 : String[20];

SS : TS;

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

TYPE<идентификатор типа> = ARRAY [<список типов индексов>]

OF<тип>;

<тип индексов> :: = <простой тип>

<простой тип>:: = <идентификатор типа>|<идентификатор>

[,<идентификатор>]| <константа>. .<константа>

 

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

 

Например,

TYPE T1 = ARRAY [-10 .. 20,1..30] OF BYTE;

T2 = ARRAY [0..50] OF BOOLEAN;

T3 = ARRAY [BYTE] OF INTEGER;

VAR A, B: T1;

C: T2;

Z: ARRAY[1..100] OF REAL;

MAS: T3;

Здесь в разделе описания типов приводятся три различных типа массивов. T1 – это тип двумерного массива, в котором номера строк могут принимать значения от –10 до 20, а номера столбцов – от 1 до 30. Элементами массива типа T1 должны быть целые числа без знака от 0 до 255. Тип T2 определяет одномерный массив с элементами логического типа, номера элементов могут быть от 0 до 50. Тип T3 определяет одномерный массив с элементами целого типа со знаком, при этом диапазон изменения индексов массива от 0 до 255. В разделе описания переменных определяются переменные А и В типа T1, С – типа Т2 и MAS – типа Т3. Помимо предварительного описания типа возможно определять массивы непосредственно в разделе описания переменных, как это сделано для переменной Z.

Обращение к элементам массивов осуществляется с помощью переменных с индексами. Число индексов в переменной с индексами равно числу измерений массива. Индексы могут задаваться целыми числами, простыми переменными, арифметическими выражениями. Если массивы имеют одинаковое описание, их можно копировать В:= А.

Например,

S := S + Z [I] ;

P := P * A [I] [J] ;

C[6] := TRUE ;

P := P * A[I,J] ;

R := B [I+5,J] ;

MAS [I] := MAS [I-1] * MAS [I] ;

Рассмотрим различные способы описания массивов.

 

Пусть требуется описать матрицу A, содержащую 10 строк и 50 столбцов, с элементами целого типа.

1) CONST N = 10;

M = 50;

TYPE TMATR = ARRAY [1..N, 1..M] OF INTEGER;

VAR A : TMATR;

2) TYPE TSTR = ARRAY [1..50] OF INTEGER;

TMATR = ARRAY [1..10] OF TSTR;

VAR A : TMATR;

3) VAR A : ARRAY[1..10,1..50] OF INTEGER;

4) VAR A : ARRAY[1..10] OF ARRAY[1..50] OF INTEGER;