While not EOF do
Begin
NIL
Sin(t)
Const
MaxReal = MaxInt div SizeOf(real);
NumChars = ord('Z') - ord('a') + 1;
Ln10 = 2.302585092994;
Ln10R = 1 / Ln10;
Переменная - это именованный объект, который в процессе выполнения программы может принимать различные значения.
Типы переменных можно представить двумя группами: простые и сложные. К сложным типам относятся: массивы, строкисимволов, записи, множества и файлы. Простые типы состоят из двух групп: скалярные и пользовательские. К скалярным относятся: целые, вещественные, символьные и логические, а к пользовательским - интервальные и перечисляемые. Переменные скалярного типа могут принимать только значения, совпадающие с константами соответствующих типов.
При объявлении переменных следует знать, что:
· каждая переменная программы должна быть объявлена;
· объявления переменных помещают в раздел, который начинается словом var;
· инструкция объявления переменной выглядит так: ИмяПеременной:Тип;
· в имени переменной можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква);
· основными числовыми типами языка Turbo Pascal являются: integer (целый), real (дробный);
· после инструкции объявления переменной рекомендуется указывать назначение переменной.
Пример 1. Объявите переменные, необходимые для вычисления значения функции у = х2.
Var х: real; { аргумент функции }
у: real; { значение функции }
Пример 2. Объявите переменные, необходимые для пересчета веса из фунтов в килограммы.
Var funt: real; { вес в фунтах }
kg: real; { вес в килограммах }
Пример 3. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей, карандашей и линейки.
Var CenaTetr: real; {цена тетради }
KolTetr: integer; { количество тетрадей }
CenaKar: real; { цена карандаша }
KolKar: integer; { количество карандашей }
CenaLin: real; { цена линейки }
Suirana: real; { стоимость покупки }
Пользовательские типы переменных
К ним относятся переменные перечисляемого и интервального типов. Переменная типа «перечисление» задается перечислением значений, которые она может принимать.
Форма описания этих переменных:
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
(а + b) * с
а > 2
not Flag and (а = b)
[1, 3..7] * set1
В Турбо Паскале определены следующие логические операции:
not -логическоеНЕ;
and -логическоеИ;
or -логическоеИЛИ;
хоr -исключительноеИЛИ.
Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл. 3.2.
Таблица 2. Логические операции над данными типа INTEGER (поразрядно)
Операнд 1 | Операнд 2 | not | and | or | xor |
- | - | - | - | ||
- | - | - | - | ||
- | |||||
- | |||||
- | |||||
- |
К логическим операциям в Турбо Паскале обычно относятся и две сдвиговые операции над целыми числами:
i shl j - сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями;
i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.
В этих операциях i и j - выражения любого целого типа.
С помощью программы примера 1 можно вывести на экран результат применения логических операций к двум целым числам.
Пример.Программа вводит два целых числа и печатает результат применения к ним логических операций. Для выхода из программы ввести Ctrl-Z и Enter.
var n,m : integer;