- •Кафедра прикладной математики лекция № 16. Тема: «структурированные типы данных»
- •1. Пользовательские типы.
- •1.1. Перечисляемый тип.
- •1.2. Интервальный тип (диапозон).
- •2. Структурированные типы данных.
- •3. Тождественность и совместимость типов.
- •4. Массивы.
- •4.1. Объявление массива.
- •4.2. Действия над массивами.
- •4.3. Действия над элементами массива.
- •4.4. Многомерные массивы.
- •5. Строковый тип данных.
- •5.1. Строковые выражения.
- •5.2. Строковые процедуры и функции.
- •6. Множественный тип данных.
- •6.1. Операции над множествами.
- •Пример 3.
- •7. Запись.
- •7.1. Оператор with.
- •7.2. Записи с вариантами.
- •Контрольные вопросы
- •Задачи для самостоятельной работы
- •Лекция № 16 по курсу «информатика»
2. Структурированные типы данных.
Структурированные типы данных определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов. В языке Pascal допускаются следующие структурированные типы данных: строки, массивы, множества, записи, файлы, указатели, процедурные типы и объекты.
3. Тождественность и совместимость типов.
Для того чтобы в результате выполнения программы не получилось путаницы с величинами различного типа, например, когда цена корзины с продуктами равна расстоянию от дома до магазина, умноженному на количество этажей дома, в котором живете, от программиста требуется знать и правильно применять понятия тождественности и совместимости типов величин, участвующих в операциях – операндах. Два типа являются тождественными, если они описаны вместе или если их определения используют один и тот же идентификатор типа.
Тождественность типов требуется только для переменных фактических и формальных параметров при вызове процедур и функций. Совместимость типов играет важнейшую роль в выражениях и операциях сравнения и в операторах присваивания.
В операции сравнения два типа являются совместимыми, если соблюдаются хотя бы одно из следующих условий:
оба типа являются одинаковыми;
оба типа являются вещественными типами;
оба типа являются целочисленными;
оба типа являются поддиапазоном другого;
оба типа являются поддиапазоном одного и того же основного типа;
оба типа являются множественными типами с совместимыми базовыми типами;
оба типа являются строковыми типами с одинаковым числом компонентов;
один тип является строковым, а другой тип – строковым или символьным типом;
один тип является указателем, а другой тип – любым типом указателей.
Пример:
‘a’>’b’ {допустимо, так как оба значения относятся к типу char};
‘a’>5 {ошибка, так как сравниваемые значения имеют разные типы}.
В операциях присваивания два типа являются совместимыми, если соблюдается хотя бы одно из следующих условий:
оба типа тождественны, и ни один их них не является файловым или структурным типом, содержащим компоненты с файловым типом на одном из своих уровней;
оба типа являются совместимыми скалярными типами, и значения второго типа попадают в диапазон возможных значений первого;
оба типа относятся к вещественным типам, и значения второго типа попадают в диапазон возможных значений первого;
первый тип является вещественным, второй – целочисленным;
оба типа являются строковыми;
первый тип является строковым, второй – литерным;
оба типа относятся к совместимым множественным типам, и все члены значения второго типа попадают в диапазон возможных значений первого типа;
оба типа относятся к совместимым типам «указатель».
Пример:
var A,B,:integer;
C:real;
. . . . . . . . . . . . .
A:=B; {правильно}
C:=B; {правильно}
A:=C; {ошибка}