Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_TP.doc
Скачиваний:
10
Добавлен:
22.12.2018
Размер:
1.4 Mб
Скачать

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

В Турбо Паскале тип определен статически. Иногда для решения конкретных задач возникает необходимость преобразования значения переменной в эквивалентное значение другого типа.

Способы преобразования типов.

1-неявные

2-использование стандартных функций

3-явные.

1 – допускается в присваивании с учетом совместимости по присваиванию.

2 – Турбо Паскаль содержит группу стандартных функций для преобразования типов. Эти функции можно рассматривать как операции, операндом которых является значение одного типа, а результатом – значение другого.

3 – эта конструкция носит название приведения типа переменной.

{тип (переменная);}

VAR A:REAL;

BEGIN BYTE (A):=10;

VAR S:0..225;

BEGIN

S:=’A’; {ГРУБАЯ ОШИБКА}

CHAR(S):=’A’;

TYPE DAYS=(MON..SUN);

VAR ADAY:DAYS;

NUM:BYTE;

BEGIN

DAYS(NUM):=MON;

ADAY:=DAY(NUM);

NUM:=BYTE(SUN);

Эквивалентность типов.

В Турбо Паскале принят принцип именной эквивалентности, при которой выполняется одно из следующих условий:

  1. T1 и T2 (какие-то типы) представляют собой один и тот же идентификатор типа

  2. Тип Т2 описан с помощью равенства TYPE T2=T1

А) TYPE T1=BYTE;

T2=T1;

T3=T2;

T1 и T2 – эквивалентны

VAR D1, D2, D3 : T1

Они все эквивалентны.

Б) TYPE A1=ARRAY[1..10];

VAR A, B : ARRAY [1..5] OF BYTE;

D1, D2: A1;

D1D2, остальные нет.

Эквивалентность типов учитывает и необходима в случае передачи параметров при вызове процедур и функций, то есть типы фактических и формальных параметров должны совпадать.

PROCEDURE A1(X,Y);

VAR

END;

A1(A,B);

X, Y – формальные они должны быть

A, B – фактические эквивалентны

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

1 – типы эквивалентны;

2 – оба целые или вещественные;

3 – 1 тип ограниченный, а его базовым является другой:

TYPE T1=BYTE;

T2=0..100;

4 – оба типы множества

5 – оба массивы с одинаковым числом элементов, включая упакованные.

6 – один строковый тип, а другой или символьный, или строковый, или упакованный.

Основы ввода/вывода.

Любая программа обладает возможностью обмена информацией с устройствами в/в:

READ и WRITE.

READ(X1,…,X2);

FOR I:=1 TO 10 DO

READ (A[I]) READLN(A[I])

READLN; {ПЕРЕХОД НА НОВУЮ СТРОКУ ПРИ ВВОДЕ ДАННЫХ}

Замечания:

  • в отличии от других процедур READ и WRITE могут вызываться с различным числом параметров и иметь различные типы;

Ввод :

  • числовые значения вводимых данных вводятся с экрана, отделяясь хотя бы одним пробелом;

  • ввод данных осуществляется в соответствии с описанными типами (исключение – тип REAL; можно вводить целое);

  • при вводе символьных данных возможно не отделять пробелами последующие данные;

Вывод:

  • при отсутствии формата для действительного числа. Оно вызывается в форме числа с плавающей точкой;

  • в операторе WRITE могут стоять арифметические выражения или встроенные функции;

  • WRITELN; если без параметров осуществляется переход на новый строку или вывод пустых строк.