4. Выражения в Turbo Pascal 7
Выражение - это синтаксическая единица языка, определяющая способ вычисления некоторого значения. Выражения в языке Паскаль формируются в соответствии с рядом правил (см. [1]) из констант (в том числе и конструкторов множеств - см. п. 6.5), переменных (в том числе и компонент массивов - см. п. 6.1, полей записей - см. п. 6.4 - и полей объектов - см. п. 14), функций (стандартных и написанных самостоятельно), знаков операций и круглых скобок. В этом разделе будут рассмотрены все элементы выражений.
4.1. Переменные
Переменными называются параметры программы, значения которых могут изменяться в процессе ее выполнения.
Все используемые в программе переменные должны быть определены с указанием их типов. Переменные определяются:
- в разделе объявления переменных программы;
- в разделе объявления переменных подпрограммы;
- в разделе объявления переменных модуля;
- в заголовке подпрограммы.
Раздел объявления переменных начинается зарезервированным словом var, за которым следуют объявления конкретных переменных, состоящие из имени переменной (имен переменных, перечисленных через запятую, если они одного типа), двоеточия и типа переменной (переменных). Каждое объявление завершается точкой с запятой:
var
<список переменных 1>: <тип 1>;
<список переменных 2>: <тип 2> ;
. . .
<список переменных N>: <тип N>;
В разделе объявления переменных наряду с предопределенными типами можно использовать типы, объявленные перед этим в разделе объявления типов, а также новые, вводимые только для конкретных переменных.
В заголовке подпрограммы при определении переменных можно использовать лишь стандартные или ранее определенные типы.
Пример.
type |
|
Operat = (Plus, Minus, Mult, Divide); |
|
var |
|
X, Y, Z: Real; |
{предопределенный тип} |
I, J, K: Integer; |
{предопределенный тип} |
Operator: Operat; |
{ранее определенный тип} |
Digit: 0..9; |
{объявление нового типа} |
Переменные, объявленные не в подпрограмме, называются глобальными, т. к. они доступны во всех частях программы, в том числе и в подпрограммах, и размещаются в сегменте данных размером 65520 байтов.
Переменные, объявленные в подпрограмме, называются локальными, т. к. доступны только этой подпрограмме, и размещаются в стековом сегменте. По умолчанию стековый сегмент имеет размер в 16384 байта, однако с помощью ключа компилятора {$М} его можно изменять от 1024 до 65520 байтов.
Глобальные переменные постоянно находятся в памяти, локальные размещаются в стеке лишь на время выполнения подпрограммы, затем область стека освобождается.
В Turbo Pascal можно использовать абсолютные переменные, располагаемые в определенной области памяти.
Абсолютные переменные снабжаются директивой absolute и указанием на место размещения этой переменной. При этом возможны два варианта:
- указание абсолютного адреса в оперативной памяти заданием через двоеточие адреса сегмента и смещения;
- "привязка" переменной к адресу начала другой переменной.
Пример.
var |
|
Str: string[32]; |
{тип-строка, см. п. 6.2} |
StrLen: Byte absolute Str; |
{привязка к началу строки} |
CrtMode: Byte absolute $0040:$0049; |
{указание абсолютного адреса} |
|