Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ОАиП.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

Совместимость типов

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

  • Оба типа одинаковые.

  • Оба типа вещественные.

  • Оба типа целочисленные.

  • Один тип является поддиапазоном другого.

  • Оба типа являются отрезками одного и того же основного типа.

  • Оба типа являются множественными типами с совместимыми базовыми типами.

  • Один тип является строковым типом, другой — строковым типом или типом pchar.

  • Один тип — pointer, другой — любой тип указателя.

  • Один тип — pchar, другой — символьный массив с нулевой базой вида array [0 .. X] of char (только при разрешении расширенного синтаксиса директивой {$X +}).

  • Оба типа являются указателями идентичных типов (только при разрешении расширенного синтаксиса директивой {$X+}).

  • Оба типа являются процедурными с идентичными типами результатов, одинаковым числом параметров и соответствием между параметрами.

Совместимость по присваиванию

Этот вид совместимости требуется при присваивании значений, например в операторе присваивания или при передаче значений в подпрограмму.

Значение типа T1 является совместимым по присваиванию с типом T2 (то есть допустим оператор T1 := T2 ), если выполняется одно из следующих условий.

  • T1 и T2 — тождественные типы (кроме файловых или типов, содержащих элементы файлового типа).

  • T1 и T2 — совместимые порядковые типы, при этом значения типа T2 попадают в диапазон возможных значений T1.

  • T1 и T2 — вещественные типы, при этом значения типа T2 попадают в диапазон возможных значений T1.

  • T1 — вещественный тип, а T2 — целочисленный.

  • T1 и T2 — строковые типы.

  • T1 — строковый тип, а T2 — символьный ( char ).

  • T1 и T2 — совместимые множественные типы, при этом все значения типа T2 попадают в диапазон возможных значений T1.

  • T1 и T2 — совместимые типы указателей.

  • T1 — тип pchar, а T2 — строковая константа (только при разрешении расширенного синтаксиса директивой {$X+} ).

  • T1 — тип pchar, а T2 — символьный массив с нулевой базой вида array [0 .. n] of char (только при разрешении расширенного синтаксиса директивой {$X+}).

  • T1 и T2 — совместимые процедурные типы.

  • T1 представляет собой процедурный тип, а T2 — процедура или функция с идентичным типом результата и соответствующими параметрами.

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

С увеличением объема программы становится невозможным удерживать в памяти все детали. Естественным способом борьбы со сложностью любой задачи является ее разбиение на части. В Паскале задача может быть разделена на более простые и понятные фрагменты — подпрограммы, после чего программу можно рассматривать в более укрупненном виде — на уровне взаимодействия подпрограмм.

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

Следующим шагом в повышении уровня абстракции программы является группировка подпрограмм и связанных с ними данных в отдельные файлы ( модули ), компилируемые раздельно. Разбиение на модули уменьшает время перекомпиляции и облегчает процесс отладки, скрывая несущественные детали за интерфейсом модуля и позволяя отлаживать программу по частям (при этом, возможно, разным программистам).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]