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;