Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1_Бaзовые элементы языка.doc
Скачиваний:
60
Добавлен:
24.08.2019
Размер:
174.59 Кб
Скачать

Пользовательские типы переменных

К ним относятся переменные перечисляемого и интервального типов. Переменная типа «перечисление» задается перечислением значений, которые она может принимать.

Форма описания этих переменных:

Type <имя типа> = (список значений);

Var <идентификатор 1,...> : <имя типа>;

или

Var <идентификатор> : (список значений);

Пример:

Type Sezon = (Zima, Vesna, Leto, Osen);

Var S1,S2 : Sezon;

или

Var S1,S2 : (Zima, Vesna, Leto, Osen);

Здесь S1, S2 - переменные типа «перечисление», которые могут принимать любое из заданных значений.

Следует отметить, что описание типа перечисляемой переменной одновременно вводит упорядочение ее значений. Так, для данного примера Zima < Vesna < Leto < Osen (в операциях сравнения).

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

Форма описания этих переменных:

Type <имя типа> = <константа 1>..<константа 2>;

Var <идентификатор 1,...> : <имя типа>;

или

Var <идентификатор 1,...> : <константа 1>..<константа 2>;

Здесь <константа 1>, <константа 2> - соответственно константы, определяющие левую и правую границы значений, которые может принимать интервальная переменная. Значение первой константы должно быть обязательно меньше значения второй. Эти константы могут быть целого, символьного или перечисляемого типов.

Пример:

Type Dni = 1..31;

Var D1, D2 : Dni;

В этом примере переменные D1 и D2 имеют тип Dni и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание.

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

Пример:

Const Min=1; Max=31;

Type Dni = Min..Max;

Var D1, D2 : Dni;

Арифметические выражения

Арифметические выражения строятся из числовых констант, переменных, стандартных функций и операций над ними. Для обозначения операций используются символы: + сложение, - вычитание, * умножение и / деление.

В Турбо Паскале определены следующие операции:

  • унарные  not, @;

  • мультипликативные  *, /, div, mod, and, shl, shr;

  • аддитивные  +, -, or, xor;

  • отношения  =, <>, <, >, <=, >=,in.

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

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

Y

21

(а + b) * с

sin(t)

а > 2

not Flag and (а = b)

NIL

[1, 3..7] * set1

В Турбо Паскале определены следующие логические операции:

not - логическое НЕ;

and - логическое И;

or - логическое ИЛИ;

хоr - исключительное ИЛИ. 

Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл. 3.2.

Таблица 2. Логические операции над данными типа INTEGER (поразрядно)

Операнд 1

Операнд 2

not

and

or

xor

1

-

0

-

-

-

0

-

1

-

-

-

0

0

-

0

0

0

0

1

-

0

1

1

1

0

-

0

1

1

1

1

-

1

1

0

К логическим операциям в Турбо Паскале обычно относятся и две сдвиговые операции над целыми числами:

i shl j - сдвиг содержимого i на j разрядов влево; освободившиеся младшие   разряды заполняются нулями;

i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие   разряды заполняются нулями.

В этих операциях i и j - выражения любого целого типа.

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

Пример 1. Программа вводит два целых числа и печатает результат применения к ним логических операций. Для выхода из программы ввести Ctrl-Z и Enter.

var

n,m : integer; begin

while not EOF do

begin

Write('n,m='); ReadLn(n,m);

WriteLn( not= , not n, not m);

WriteLn(‘ and= , n and m);

WriteLn(‘ or = , n or m) ;

WriteLn(‘ xor= , n xor m);

WriteLn( ' shl= ,n shl m);

WriteLn( ' shr= , n shr m);

end

end.

В программе организуется ввод двух произвольных целых чисел и печать результата применения к ним всех логических операций. Для выхода из программы следует нажать Ctrl-Z и Enter.

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

Таблица 3. Логические операции над данными типа Boolean

Операнд 1

Операнд 2

not

and

or

xor

True

-

False

-

-

-

False

-

True

-

-

-

False

False

-

False

False

False

False

True

-

False

True

True

True

False

-

False

True

True

True

True

-

True

True

False

Операция отношения IN применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Операция дает TRUE, если левый операнд принадлежит множеству, например:

var с: char;

type digit = set of ' 0 '..' 9 ' ;

begin

if с in digit then .......