Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Структурированные типы данных

В языке PASCAL 7.0 используются следующие структуриро­ванные типы:

■ массив;

■ запись;

■ множество;

■ файл.

Массив. Он представляет собой заранее известное количество однотипных компонентов, снабженных индексами. Массив может быть одномерным или многомерным. Чтобы задать тип-массив, необходимо использовать зарезервированное слово ARRAY, тип индексов массива и тип компонентов массива.

Например, тип одномерного массива целых чисел может быть задан следующим образом:

TYPE

MAS = ARRAY[1..1O] OF INTEGER;

VAR

Ml : MAS;

Тот же самый тип массива может быть задан и при определе­нии соответствующих переменных: VAR

М1 : ARRAY[1..1O] OF INTEGER;

Размерность массива может быть любой, компоненты тоже, только тип индексов должен быть обязательно порядковый и не Longint. В большинстве случаев при задании размеров массивов используются диапазоны.

В PASCAL 7.0 тип двумерных массивов описывается так же, как и одномерных. Различие состоит в том, что вы должны ука­зать диапазон для двух индексов .массива - положение каждого элемента массива A [I, J] определяется значением строки I и столбца J. Например, описание двумерного массива натуральных чисел размера N х М может быть задано следующей строкой: VAR MAS : ARRAY[1..N, 1..M] OF INTEGER;

Особым типом одномерных массивов являются строки. В PASCAL 7.0 последовательность символов, заключенная в апо­строфы, называется строкой и описывается типом STRING:

'ASEWQ', 'zxczxczxc', ' хи-хи' и т. д.

Строки, состоящие всего из одного символа, называются сим­вольными константами. У типа-строки может быть указан размер (от 1 до 255).

Для строк выполняются операции сравнения (>,> = ,<,<=) и конкатинации (+), например:

'viv' < 'viva',

'мото' + 'цикл' = 'мотоцикл'.

По сути строка длины К представляет собой массив из К+1 символьных переменных, где нулевой элемент хранит значение длины строки: STRING[K] = ARRAY[0..K] OF CHAR.

Для строк часто используется функция длины LENGTH(STR).

В версии 7.0 введен еще один тип строки - ASCIIZ-строка. В отличие от прочих строк каждая из них оканчивается на 0 и длина ее не ограничена. Например, задать тип ASCIIZ-строки можно следующим образом: VAR STR : PCHAR;

Запись. Она включает в себя несколько полей, тип которых может отличаться друг от друга. Для задания записи используется зарезервированное слово RECORD, затем следует задание типов полей с использованием двоеточия. Завершается каждое поле точ­кой с запятой. Конец описания записи определяется словом END. Например, для того, чтобы составить записи, соответствующие имени, фамилии и году рождения человека, можно использовать следующее задание:

TYPE

HUMAN = RECORD

NAME : STRING;

SURNAME : STRING;

DATA : INTEGER

END;

Доступ к полям записи осуществляется через имя переменной и имя поля, записываемого через точку:

GUSEVA.NAME

GUSEVA.SURNAME

GUSEVA.DATA

Обработка записей производится с помощью оператора WITH:

WITH <имя записи> DO <оператор>;

Множество. Множество в PASCAL 7.0 должно состоять из по­рядковых элементов, и их число не должно превышать 255. На­пример:

TYPE

NUM = SET OF '0'..'9';

М = SET OF ['.',',','!',':', ';','?', '-'];

Те же самые множества знаков препинания и цифр могут быть заданы с помощью описания переменных:

VAR

М : SET OF CHAR;

BEGIN

М = ['.',',','!',':', ';','?', '-'];

NUM = ['0'..'9'];

Для множеств используются следующие операции:

Операция

Назначение

+

Объединение множеств

*

Пересечение множеств

-

Разность множеств

=

Проверка на эквивалентность двух множеств

<>

Проверка на неэквивалентность двух множеств

<=

Проверка того, является ли левое множество подмноже­ством правого

=>

Проверка того, является ли правое множество подмно­жеством левого

IN

Проверка на принадлежность элемента данному множе­ству

Результатом работы операций объединения, пересечения и раз­ности является новое множество. Результат работы остальных опе­раций - логический.

Файл. Одним из типов данных в PASCAL является файловый тип, представляющий собой последовательность однотиповых компонентов, расположенных на внешнем носителе. Тип этих компонентов может быть любой, за исключением типа-файла. Размер файла не объявляется.

В PASCAL 7.0 имеется 3 категории файлов, работа с которыми отличается друг от друга:

■ текстовые (тип TEXT);

■ типизированные (FILE OF <тип>);

■ файлы без типа (FILE).

Например, можно объявить:

TYPE

NUM = FILE OF INTEGER;

YY = FILE;

VAR

F1, F2 : NUM;

F3 : TEXT;