Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ШПОРЫ - ПРОГРАММИРОВАНИЕ СУПЕР.rtf
Скачиваний:
14
Добавлен:
25.09.2019
Размер:
1.21 Mб
Скачать

5. Нетипизированные файлы

­Нетипизированные файлы объявляются как файловые переменные типа FILE и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой ­ позволяет организовать высокоскоростной обмен данными между диском и памятью.

При инициации нетипизированного файла процедурами RESET или REWRITE можно указать длину записи нетипизированного файла в байтах. Напри­мер, так:

­var

­ f: filei

begin

­ assign(f, 'myfile.dat');

reset(f,512);

end.

6. Особенности работы с типами в tp. Явные преобразования типов

В TP предусмотрен принцип СТРОГОЙ ТИПИЗАЦИИ. Он гласит следующее: все применяемые в языке операции определены толь­ко над операндами совместимых типов!

ПРИВЕДЕНИЕ ТИПА ПЕРЕМЕННОЙ – конструкция, предназначенная для явного преобразования типа, которая не совершает никаких действий над переменной, а просто позволяет трактовать действия над одной переменной, как над переменной другого типа.

Тип (переменная):

var

SI:1..255;

begin

char(SI):=’A’;

end.

Использовать данную конструкцию можно везде, где допускается хранение значения этой переменной.

ПРИВЕДЕНИЕ ТИПА ЗНАЧЕНИЯ ВЫРАЖЕНИЯ – конструкция, позволяющая преобразовать тип произвольного выражения, которое записывается в круглых скобках после идентификатора.

Если ограничения на длину нет и если один дискретный тип преобразуется в другой дискретный тип, то это может привести к уменьшению или увеличению размера памяти по сравнению с исходным значением.

var

LI:longint;

I:integer;

begin

LI:=1234567;

I:=integer (LI+1);

{I=>-10616}

end.

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

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

1. Т1 и Т2 представляют собой один и тот же идентификатор типа.

2. Тип Т2 описан с использованием типа Т1 с помощью равенства вида:

type

T1 = real;

T2=T1;

T3= T2;

На самом деле такая строгое соответствие требуется только при передачи параметров в процедуры и функции, в остальных же случаях требование эквивалентности ослаблено, но более детально проработаны правила совместимости типов.

8. Совместимость типов.

1) СОВМЕСТИМОСТЬ ОПЕРАНДОВ ВЫРАЖЕНИЯ.

Оба типа операндов совместимы, если:

1. Оба типа эквивалентны

2. ~ являются либо целыми, либо вещественными

3. ~ один тип – ограниченный и его базовый – второй тип

4. ~ ограничены, но базовый тип один и тот же

5. ~ множественные, а их базовые типы - совместимые (результат выражения будет приводится к тому типу, диапазон которого шире)

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

2) СОВМЕСТИМОСТЬ ТИПОВ ПО ПРИСВАИВАНИЮ.

Оба типа совместимы, если:

1) Оба типа эквиваленты (но не файловые и не содержащие файловый в своем составе)

2) ~ дискретные (диапазон значений правой части – подмножество диапазона в левой)

3) ~ вещественные (диапазон значений правой части – подмножество диапазона в левой)

4) Тип левой части – вещественный, правой – целый.

5) Тип левой – строковый, правой – строковый/символьный

6) ~ совместимые множественные типы (множество правой части – подмножество диапазона в левой)

7) ~ объектовые (правая часть – потомок левой)

ЕСЛИ НИ ОДИН ПУНКТ НЕ ВЫПОЛНЯЕТСЯ – НА ЭТАПЕ КОМПИЛЯЦИИ/ВЫПОЛНЕНИЯ – СООБЩЕНИЕ ОБ ОШИБКЕ

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]