
- •Оглавление
- •Урок-лекция №1
- •Алфавит и классификация данных языка Паскаль
- •1Program {начинается цифрой}
- •3.14Е5 - 3.14 умножить на 10 в степени 5;
- •Пользовательские типы переменных
- •Арифметические выражения
- •Стандартные функции
- •Оператор присваивания
- •Процедура ввода данных
- •Процедура вывода данных
- •Форматы вывода данных
- •Структура программы
- •Контрольные вопросы
Пользовательские типы переменных
К ним относятся переменные перечисляемого и интервального типов. Переменная типа «перечисление» задается перечислением значений, которые она может принимать.
Форма описания этих переменных:
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 .......