32 Глава 3. Структурированные программы
Определение 3.2. (Константа) Константа в ЯП — это некото-
рое имя, которое представляет некоторый зафиксированный элемент
предметной области.
Мы будем считать, что в нашем ЯП есть константа 0, представляющая
число 0.
Определение 3.3. (Операция) Операция в ЯП — это некоторое (мо-
жет быть частичное) отображение предметной области в себя, ко-
торое имеет фиксированное имя в ЯП.
Практически во всех ЯП есть операции, соответствующие арифмети-
ческим функциям +, −, ×, /.
В нашем ЯП мы введем только одну операцию — succ, которая бу-
дет означать прибавление единицы: succ (0) = 1, succ (3) = 4. Как мы
увидим, все остальные операции можно определить через succ, и можно
написать любую программу, используя только эту операцию. Заметим,
что операция succ определена для любого элемента нашей предметной
области.
Кроме того, нам потребуется какой-то способ для запоминания про-
межуточных результатов вычисления. Для этого используется следую-
щий элемент ЯП — переменные. Каждая переменная имеет некоторое
имя. Мы будем считать, что всевозможные имена переменных составля-
ют некоторое счетное множество V. Кроме того, мы будем для удобства
полагать, что
1. разные переменные имеют разные имена;
2. разные имена обозначают разные переменные.
Эти ограничения введены только для удобства изложения, в реальных
ЯП они могут не выполняться. Обычно мы будем в качестве имен пе-
ременных использовать буквы конца латинского алфавита, возможно, с
индексами: x, y
1
, v
u
и т.д.
В семантике реальных языков программирования переменной обыч-
но считают некоторую область памяти, связанную с ее именем. Мы же
будем отождествлять переменную и ее имя.
Часто нам будут встречаться последовательности однотипных пе-
ременных (а так же и других объектов), например, x
1
, x
2
, . . . , x
n
или