TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Преобразование типов. Совместимость типов

Повторение

Найти ошибки в следующей программе и объяснить, какие правила языка Паскаль здесь нарушены:

Program mistake_2;
Type month = (january, february, marth, april, may, june, jule, august, september, october, november, december);
winter = december..february;
spring = marth..may;
Var m : month; k : 1..12;
Begin
Write('Введите месяц'); Readln(m);
If m>spring Then m := june;
For k := Ord(january) To Ord(m) Do m := succ(m);
Writeln(m);
End.

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

Рассмотрим такую ситуацию, пусть заданы типы Т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.

Содержание 

На главную страницу
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz