Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_теория и практикум.doc
Скачиваний:
11
Добавлен:
20.08.2019
Размер:
861.7 Кб
Скачать

Типизированная константа множества.

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

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

Пример:

Type Propisnoy = Set of ‘A’..’Z’;

Strochny = Set of ‘a’..’z’;

Const PropBukw : Propis =[‘A’..’Z’];

StrochnBukw : Stroch =[‘a’, ’e’, ‘l’, ‘c’, ‘u’];

Simvol : Set of char = [‘’..’/’, ‘:’..’?’, ‘[‘..’^’, ‘{‘..’~’];

Преобразование типов

Тип переменной позволяет не только установить длину ее внутреннего представления, но и контролировать те действия, которые осуществляются над ней в программе. Контроль за использованием переменных еще на этапе компиляции программы – важное преимущество Турбо Паскаля перед другими языками программирования, в которых допускается автоматическое преобразование типов. Фактически именно та вольность, с какой, например, PL/1 преобразует по умолчанию различные типы данных, послужила объектом наиболее сильной его критики.

Неявные преобразования типов

В Паскале почти невозможны неявные (автоматические) преобразования типов. Исключение сделано только в отношении констант и переменных типа Integer, которые разрешается использовать в выражениях типа Real.

Пример:

Var X : Integer;

Y : Real;

Y:=X+2 - правильно, хотя справа от знака присваивания стоит целочисленное выражение, а слева – вещественная переменная. Компилятор сделает необходимые преобразования автоматически.

X=2.0 – неверно, так как автоматическое преобразование типа Real в тип Integer в Паскале запрещено.

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

Разумеется, запрет на автоматическое преобразование типов еще не означает, что в языке программирования Паскаль нет средства преобразования данных. Эти средства есть, но их нужно использовать явно. Для преобразования данных существуют встроенные функции, которые получают в качестве параметра значения одного типа, а возвращают результат в виде значения другого типа.

В частности, для преобразования Real в Integer имеются две встроенные функции:

Round округляет Real до ближайшего целого,

Trung усекает Real путем отбрасывания дробной части.

X:=Y/X – нельзя,

X:=round(Y/X) – можно.

Ord преобразует Char в Integer,

Chr преобразует Integer в Char.

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

Var simvol : char;

Begin readln (simvol);

Writeln (simvol, ‘=’, ord(simvol));

End.

Явные преобразования типов

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

В языке программирования Паскаль выражение 1/2 всегда имеет значение 0.5 и поэтому оператор X:=1/2 для целого Х просто недопустим. В то же время

Var Y : Real;

--------------

Y : = 1 div 2;

самим фактом использования операции целочисленного деления div программист свидетельствует, что он сознательно отбрасывает дробную часть.

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

Еще две функции для целого типа:

Dec (X[,N]) – уменьшение значения X на N; если N не задан, то на 1,

Inc (X[,N]) – увеличение.

Над символами и строками символов (тип string) применима единственная операция – сцепление строк (+).

Var slovo: string;

Begin

Slovo:= ‘turbo’ + ‘-‘ + ‘pascal’;

Writeln (slovo);

End.

Пример: А,В, С – типа integer.

А = В and С < 0 где ошибка?

Надо (А = В) and (С < 0) так как логические операции имеют более высокий приоритет, чем операции отношения:

  1. not

  2. * / div mod and chr chi

  3. + - or xor

  4. = <> < > <= >= in.

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