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

Указатели

Стандартный тип-указатель (POINTER) состоит из неограни­ченного множества значений, указывающих на однотипные эле­менты. Пустой указатель NILL принадлежит всем типам указате­лей и не указывает ни на один элемент.

Над указателями возможны только операции проверки на ра­венство и неравенство. Тип-указатель необходим для динамиче­ских структур данных. С помощью его становится доступен физи­ческий адрес размещения в памяти элементов.

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

TYPE

MA = ARRAY[ 1..45] OF INTEGER;

POINT = MA;

Процедурные типы

В PASCAL 7.0 процедуры и функции допустимо использовать в качестве переменных. Объявление такого процедурного типа на­поминает объявление процедуры или функции: пишется слово PROCEDURE или FUNCTION, за которым в круглых скобках следует список формальных параметров. Для функций необходи­мо еще указывать тип возвращаемого в основную программу ре­зультата, т. е. самой функции. Например:

TYPE

Р1 = PROCEDURE;

Р2 = PROCEDURE(VAR X, Y : INTEGER);

F1 = FUNCTION (VAR A, B : CHAR) : INTEGER;

VAR

SUM: P1;

RES : Р2;

KODE : F1;

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

■ они не должны иметь имена стандартных процедур и функ­ций;

■ они не должны объявляться внутри других процедур и функций;

■ они не должны быть описаны с директивами INLINE и INTERRUPT;

■ они должны иметь директиву FAR или компилироваться с ключом компилятора {$F+}.

Объекты

Объектно-ориентированное программирование является одним из самых современных направлений в создании программного обеспечения. В основе этого понятия лежит понятие объекта, ко­торый включает в себя не только данные, но и методы обработки этих данных. PASCAL 7.0 дает широкие возможности по объект­но-ориентированному программированию. К сожалению, из-за ограниченного объема они остаются за рамками нашей книги. В одной из ближайших книг мы подробно рассмотрим методы и алгоритмы объектно-ориентированного программирования.

Преобразование типов данных

При использовании различных типов данных часто встает во­прос об их совместимости. Мы различаем идентичные типы, со­вместимые типы и типы, совместимые для присваивания.

Идентичность типов подразумевает, что истинно одно из сле­дующих утверждений:

ТР1 и ТР2 - один и тот же тип;

ТУРЕ ТР1 = ТР2 или ТУРЕ ТР2 = ТР1.

Например, определение

TYPE

ТР1 = CHAR;

ТР2 = ТР1;

ТРЗ = CHAR; дает идентичные типы ТР1, ТР2, ТРЗ и CHAR, a

VAR

Ml : ARRAY [ 1..7] OF CHAR;

M2 : ARRAY [ 1..7] OF CHAR; не дает идентичность Ml и M2, хотя их значения одного типа.

Совместимость типов данных дает возможность использовать в программах различные отношения и операции. Для того чтобы типы были совместимыми, необходима истинность одного из сле­дующих утверждений:

■ ТР1 и ТР2 - идентичные типы;

■ ТР1 и ТР2 - целые типы;

■ ТР1 и ТР2 - вещественные типы;

■ ТР1 и ТР2 - типы-диапазоны одного и того же типа или один из них имеет другой тип;

■ один тип вещественный, другой - целый;

■ ТР1 и ТР2 - типы-множества с совместимыми базовыми ти­пами;

■ один тип - строка, другой - строка или символ;

■ один тип - POINTER, другой - любой тип-указатель;

■ ТР1 и ТР2 - процедурные типы с идентичным числом и ти­пом параметров и идентичным типом результата для функ­ции;

■ один тип - PCHAR, другой - массив символов с нулевым символом в последнем элементе массива (при наличии клю­ча компилятора {$Х+});

■ ТР1 и ТР2 - указатели, привязанные к величинам идентич­ных типов.

Совместимость для присваивания, т. е. ТР1:= ТР2, возможна, если выполняется одно из условий:

■ ТР1 и ТР2 идентичны, не являются файловыми типами и не содержат компонентов файлового типа;

■ ТР1 и ТР2 - совместимые порядковые или вещественные типы, и значения ТР1 находятся в границах интервала воз­можных значений ТР2;

■ ТР1 и ТР2 - строки;

■ ТР1 - вещественный, и ТР2 - целый;

■ ТР1 - строка, и ТР2 - символ;

■ ТР1 и ТР2 - совместимые типы-множества, и все значения ТР1 попадают в ТР2;

■ ТР1 и ТР2 - совместимые указатели;

■ ТР1 и ТР2 - совместимые процедурные типы;

■ ТР1 и ТР2 - объектные типы, и ТР1 - потомок ТР2;

■ ТР1 и ТР2 - указатели на объектные типы и ТР1 указатель на потомка ТР2;

■ один тип - PCHAR, другой - массив символов с нулевым символом в последнем элементе массива (при наличии клю­ча компилятора {$Х+});

■ ТР1 типа PCHAR, и ТР2 - строковая константа.

В ряде случаев, если переменные имеют один размер, возмож­но преобразования типов.