Преобразование типов. Совместимость типов
Рассмотрим такую ситуацию, пусть заданы типы Т1 и Т2, а также описаны переменные р1 и р2 следующим образом:
Var p1 : T1; p2 : T2;
Возникает вопрос, когда можно записать р1 := р2?
Чтобы ответить на этот вопрос, рассмотрим совместимость простых типов по присваиванию.
Операция р1 := р2 является допустимой, если истинно одно из следующих утверждений:
Т1 и Т2 - тождественные типы.
Типы являются тождественными, если они описаны одним и тем же идентификатором или происходят от одного и того же идентификатора.
Например,
Type
T1 = Real;
T2 = Real;
T3 = T1;
T4 = (red, gren, blue, black, white);
T5 = (red, gren, blue, black, white);
T6 = T4;
Здесь Т1, Т2 и Т3 - идентичные типы, Т4, Т5 - не идентичны, поскольку (red, gren, blue, black, white) не являются идентификатором типа, Т4, Т6 являются идентичными. Т2 является поддиапазоном типа Т1.
Например,
Type
T1 = Real;
T2 = Integer;
(множество целых чисел входит в диапазон вещественных чисел).
Т1 и Т2 - являются отрезками одного и того же типа.
Например,
Type
T1 = 1..100;
T2 = -3..20;
week = (d1, d2, d3, d4, d5, d6, d7);
working_week = (d1..d5).
Совместимость по присваиванию станет более понятна, если вспомнить, что переменные в памяти занимают определённое число байт.
Так, переменная типа Integer занимает 2 байта, типа - Real 6 байтов, а в большее число ячеек всегда можно поместить меньшее, а наоборот не всегда.
Совместимость типов необходима также в выражениях и операциях сравнения.
Program Example;
Var a : Byte;
b : Integer;
c : Longint;
Begin
Writeln('Введите 2 числа:(Byte, Integer)');
Readln(a, b);
c:=a + b;
Writeln(c);
End.
Контрольные вопросы
- Классификация типов данных
- Порядковые типы
- Целые типы
- Символьные типы
- Перечислимые типы
- Ограниченные типы
- Вещественные типы
- Примеры использования
- Способы преобразования типов, примеры
- Совместимость типов, примеры
Задания для самостоятельной работы
Используя среду программирования Delphi осуществить вычисления следующих выражений
- 7,3*10,5+7,3*15+2,7*10,5+15*2,7
- (32+62)/25
- (42- )2
Тема 2.2.1. Операторы языка Паскаль.
Операторы языка. Простые и составные операторы. Операторы ввода и вывода. Оператор присваивания. Составной оператор.
После изучения темы студент должен
знать:
- Основные операторы;
- Оператор ввода-вывода;
- Оператор присваивания;
- Составной оператор;
Уметь
- Составлять программы линейной структуры.
Операторы - это синтаксические конструкции, предназначенные как для записи алгоритмических действий по преобразованию данных, так и для задания порядка выполнения других действий.
Набор операторов составляет минимальное множество конструкций, необходимых для наглядного и однозначного представления алгоритмов в стиле структурного программирования.
Язык содержит следующие операторы:
§ Оператор ввода и вывода
§ Оператор присваивания
§ Оператор процедуры
§ Оператор перехода
§ Составной оператор
§ Оператор варианта
§ Оператор цикла с постусловием
§ Оператор цикла с предусловием
§ Оператор цикла с параметром
§ Оператор над записями
§ Пустой оператор
Первые три оператора считаются простыми операторами, остальные структурными. Последнее означает, что в состав этих операторов могут входить другие операторы. Операторы входящие в структурные, в свою очередь могут быть структурными. «Глубина вложенности » операторов не ограничивается.
Любому оператору может предшествовать метка. В этом случае метка отделяется от оператора символом ‘:’. Метки можно использовать для передачи управления на помеченные операторы из других точек программы.
Помимо перечисленных операторов , язык Pascal содержит два оператора специального вида:
§ Машинный код
§ Ассемблерный оператор
С помощью оператора первого вида можно включать в программу фрагменты, составленные из команд центрального процессора. Ассемблерный оператор позволяет записывать отдельные части Pascal-программ с использованием языка ассемблера.