- •1.2.5. Лексика, синтаксис и семантика языков программирования
- •2.1. Алфавит языка
- •2.2. Структура программы
- •2.3. Концепция типа для данных
- •2.4. Стандартные типы данных
- •2.5. Перечисляемые и ограниченные типы
- •2.6. Константы
- •2.7. Переменные
- •2.8. Инициализация переменных
- •3.1. Оператор присваивания
- •3.2. Операторы ввода и вывода
- •3.3. Выражения
- •3.4. Составной оператор
- •3.5. Условный оператор
- •3.6. Оператор варианта
- •3.7. Цикл с предусловием
- •3.8. Цикл с постусловием
- •3.9. Цикл с параметром
- •3.10. Операторы завершения цикла
- •3.11. Метки и операторы перехода
2.6. Константы
Тип констант в языке определяется по их виду: константы целого типа – это целые числа, не содержащие десятичной точки, константы действительного типа – действительные числа, логические константы – логические значения true и false, символьные константы – либо строки длиной в один символ, либо конструкции вида #K или ^K.
Языки Pascal, Object Pascal и Delphi позволяют использовать синонимы для обозначения констант, в этом случае текст программы содержит раздел описания констант. Он имеет следующий вид:
const
имя = константное выражение;
Константы и константные выражения могут использоваться непосредственно в тексте программы в любых операторах и выражениях. В константном выражении можно использовать константы, именованные константы, объявленные ранее, арифметические операции, значения перечисляемых типов, конструкторы множеств, ряд встроенных функций. Константные выражения вычисляются компилятором в процессе компиляции и заменяются в выполняемом файле вычисленными значениями. Значения строковых констант заключаются в апострофы. Если в текст нужно включить апостроф, то он повторяется дважды. В значение строковой константы можно включать как отображаемые, так и неотображаемые символы.
Типизированные константы в действительности являются переменными, инициализируемыми при объявлении. Типизированная константа объявляется выражением:
const
<имя>:<тип> = <константное выражение>;
В дальнейшем в тексте программы с типизированными константами можно обращаться как с обычными переменными, изменяя, когда требуется, их значения (соответствующая директива компилятора $J+ устанавливается по умолчанию).
2.7. Переменные
Переменная – идентификатор, обозначающий некоторую область в памяти, в которой хранится значение переменной. Это значение может изменяться в ходе выполнения программы. Раздел объявления переменных имеет вид:
var
<список идентификаторов переменных>: <тип>;
Можно указывать не одно, а множество объявлений переменных. Каждое объявление в списке может содержать список идентификаторов переменных, разделяемых запятыми, или один идентификатор. Указываемый в объявлении тип может быть одним из встроенных типов, типом, ранее определенным программистом, или непосредственным описанием вводимого программистом типа.
Переменные можно разделить на локальные и глобальные. Переменные, объявляемые в процедурах или функциях, являются локальными. Они существуют только во время выполнения соответствующей подпрограммы. Память для них выделяется только при вызове подпрограммы и освобождается при возврате в вызывающий модуль. Переменные, объявленные вне процедур или функций, являются глобальными.
Можно создавать динамические переменные, выделяя для них место в динамически распределяемой области памяти.
2.8. Инициализация переменных
Тип переменных определяется пользователем в разделе описания переменных. В откомпилированной программе для всех переменных отведено место в памяти, и всем переменным присвоены нулевые значения.
Инициализация переменных (задание начальных значений переменным) производится одновременно с их описанием. Для этого в стандарте языка Pascal используется конструкция вида имя переменной: тип = значение; которая должна быть размещена в разделе описания констант, например:
const
rWeight: real = 0.4;
В 32-разрядных версиях Delphi глобальные переменные можно инициализировать при объявлении. Инициализированная переменная получает присвоенное ей значение один раз – в начале выполнения программы. Потом же она хранит последнее присвоенное ей значение. Синтаксис инициализации:
var
имя: тип = значение;
Локальные переменные (описываемые в теле подпрограммы) подобным образом инициализировать нельзя. Но им можно присвоить начальные значения, используя локальные типизированные константы.