- •Составитель а.М. Сулейманова
- •Содержание
- •Список литературы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 лабораторная работа типы данных языка турбо паскаль
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Понятие типа данных
- •2.2. Простые типы
- •2.3. Строки
- •2.4. Cтруктурированные типы данных
- •Манипуляции над элементами массива
- •2.5. Совместимость типов
- •2.6. Приведение типов
- •3. Порядок выполнения работы
- •4. Требования к отчету
- •5. Контрольные вопросы
- •6. Варианты заданий
- •Вариант 4
- •Вариант 5
- •Список литературы
2.5. Совместимость типов
В Turbo Pascal различают два вида совместимости типов: совместимость в выражении и совместимость по присваиванию. Совместимость первого вида позволяет операндам разных типов присутствовать в одном выражении. Правила второго вида совместимости (которые менее строги) определяют, в каких случаях справа и слева от оператора присваивания могут фигурировать выражения разных типов.
2.5.1. Совместимость в выражении. Два типа данных считаются совместимыми в выражении, если соблюдается хотя бы одно из следующих условий.
• Типы идентичны.
• Оба типа принадлежат вещественным типам (возможно, разным).
• Оба типа принадлежат целочисленным типам (возможно, разным).
• Один тип представляет собой поддиапазон другого.
• Оба типа представляют собой поддиапазоны одного и того же третьего (базового) типа.
• Оба типа представляют собой множества с совместимыми базовыми типами.
• Один тип является строковым, а второй – строковым либо символьным.
• Один тип является нетипизированным указателем (POINTER), второй – любым другим ссылочным типом.
2.5.2. Совместимость по присваиванию. Выражение считается совместимым по присваиванию с переменой, если соблюдается одно из следующих условий.
• Типы идентичны и ни один из них не является файлом или принадлежит иному структурированному типу, компонентами которого являются файлы.
• Оба принадлежат совместимым порядковым типам, и при этом возможные значения выражения принадлежат диапазону значений, допустимых для переменной.
• Оба принадлежат вещественным типам, и при этом возможные значения выражения принадлежат диапазону значений, допустимых для переменной.
• Переменная относится к одному из вещественных типов, выражение – одному из целочисленных типов, и при этом все возможные значения выражения принадлежат диапазону значений, допустимых для переменной.
• Переменная принадлежит строковому типу, а выражение –символьному.
• Оба принадлежат совместимым множественным типам и при этом возможные значения выражения принадлежат диапазону значений, допустимых для переменной.
• Оба являются совместимыми типами указателей.
Если переменная и выражение совместимы по присваиванию, данное выражение может быть присвоено переменной и при этом ошибки зафиксировано не будет.
2.6. Приведение типов
Бывают случаи, когда без использования в операторе присваивания переменных разных типов не обойтись. Тогда можно применить допускаемый Turbo Pascal прием, известный как приведение типов переменных. Предположим, в некоторой программе раздел описания переменных выглядит так:
var
х:type1;
y:type2;
После того как переменные Х и Y в программе получат некоторые значения, допустимы такие операторы присваивания:
x:=tуре1(у);
y:=tуре2(х);
В первом операторе значение переменной Y (типа type2) трактуется как принадлежащее типу type1 и присваивается переменной Х (т.е. тип 2 приводится к типу tуре1). В этом случае данные типа tуре2 рассматриваются как данные tуре1, к которым просто можно обратиться с помощью идентификатора Y. Второй оператор проделывает то же со значением переменной X, которое присваивается переменной Y.
Конкретизируем пример. Предположим, что type1 – это Char, а type2 – Byte. Известно, что для переменных этих типов требуется один байт памяти, поэтому при преобразовании из одного типа в другой данные в этом случае ни расширяются, ни сокращаются. Для переменных X и Y допустимы операторы присваивания:
x:=byte(у);
y:=char(х);
Здесь первый оператор присваивает переменной X (принадлежащей типу Char) значение переменной Y (типа Byte), представляя его при этом тоже как принадлежащее типу Char. А второй оператор приводит тип Char к типу Byte.
При приведении типов преобразуемый тип и тип, к которому происходит преобразование, должны быть перечислимыми или указателями.
Помимо приведения типов переменных, Turbo Pascal допускает приведение типов значений:
tуре(ехрression);
Здесь expression – выражение, принадлежащее некоторому типу, которое данный оператор позволяет трактовать как принадлежащее типу Туре (т.е. выражение Expression здесь приводится к типу Туре), например:
Byte(‘F’);
Здесь выражение 'F' приводится к типу Byte (т.е. символ преобразуется в соответствующий код). Еще пример:
Char(77);
В этом случае целочисленное значение (являющееся частным случаем выражения) 77 преобразуется в символ, соответствующий данному коду. Несколько примеров приведения типов можно видеть в табл.17.
Таблица 17
Примеры приведения типов
Дейтвие |
Результат |
Boolean(0) |
False |
Boolean(1) |
True |
Char(57) |
‘9’ |
Integer(‘9’) |
57 |
При приведении типов значений может иметь место как расширение, так и сокращение размера исходного значения. В случае расширения значения его знак всегда сохраняется.
Разумеется, приведение типов возможно для данных не только стандартных, но и созданных пользователем типов.