Кстати, об операторах.
Вызов процедуры
		имя(аргументы);
		имя();
		имя(аргументы) – вызов функции в выражениях
Возврат из процедуры
		return;
		return выражение; 
Семантика
	– в процедуре может быть несколько операторов return
	– второй вид оператора допускается только в функции
	– тип выражения должен совпадать или приводиться к типу возвращаемого значения функции
Условный – традиционный
Код:
если выражение то
   операторы;
конец;
--------------------------------------------------------------
если выражение то
   операторы;
иначе
   операторы;
конец;
--------------------------------------------------------------
если выражение то
   операторы;
аесли выражение то
   операторы;
…
иначе
   операторы;
конец;
Семантика
	Выражение является булевским
	В многоветочном операторе булевские выражения являются взаимоисключающими
Поэтому выполняется только одна из веток аесли
Если все выражения ложны, то выполняется ветка иначе
Дейкстра
Синтаксис требует уточнения
Код:
if
| условие: операторы;
| условие: операторы;
…
| условие: операторы;
end;
Этот же оператор является переключателем – семантика Дейкстры.
	Условие – булевское выражение
	Условия в операторе не являются взаимоисключающими	
Поэтому выполняются те группы операторов, у которых условия истинны
Оператор позволяет задавать одиночный if:
Код:
if | условие: операторы;
end;
Обычный двухветочный if эквивалентен:
Код:
if | условие: операторы;
   |~условие: операторы;
end;
Вариант: представляется более подходящим; ветка иначе не является обязательной 
Код:
if
| условие: операторы;
| условие: операторы;
…
| условие: операторы;
else   
   операторы;   
end;
Семантика: если не выполняется ни одно из условий, то выполняется ветка else	
Цикл 
Цикл с предусловием
Код:
while выражение do
   операторы;
end;
Цикл с постусловием
Код:
repeat
   операторы;
until выражение end; 
	Вопрос: какой-то вариант цикла со счетчиком? Или типа foreach ?
Дейкстра --- требует принятия конкретного решения
Код:
do
| условие: операторы;
| условие: операторы;
…
| условие: операторы;
end;
Семантика: цикл выполняется, пока есть хотя бы одно истинное условие
вариант: представляется более подходящим; ветка иначе не является обязательной 
Код:
do
| условие: операторы;
| условие: операторы;
…
| условие: операторы;
else
  операторы;
end;
Семантика: если нет ни одного истинного условия, то выполняется ветка else и цикл завершается
Цикл while:
Код:
do 
| условие: операторы;
end;
цикл do while (repeat):
Код:
do   
| true: операторы;    ---- так нельзя по семантике Дейкстры…
| условие: 
end;
вариант: true можно пропускать вместе со скобками
Код:
do   
|операторы;       ---- так нельзя по семантике Дейкстры…
| условие: 
end;
Цикл Паук – упрощённый
Код:
do
|операторы;         – выполняются без условий ???
| условие: операторы;
| условие: операторы;
…
| условие: операторы;
|операторы;         – выполняются без условий ???
end;
Определение процедуры – независимая
Код:
   процедура (параметры) имя;      || функция (параметры): тип имя;
      Операторы;
   Конец имя;
Семантика
1.	тип может отсутствовать, тогда это процедура.
2.	Все объекты, объявленные внутри, являются локальными
3.	локальные объекты объявляются в любом месте по мере необходимости
----------------------- этого пока нет ---------------------------
Вопрос: 1. Локальная запись в процедуре – разрешено ?
 2. Локальные процедуры – разрешено ? 
----------------------------------------------------------------------
Параметры
	– тип параметра может быть любым:
1.	– базовые 
2.	– запись
3.	– массив
4.	– процедура
5.	– указатель на запись
–	Параметры-значения и параметры переменные;
–	Параметры значения могут быть только базовые; при вызове процедуры на месте параметра-значения разрешается задавать выражение, совместимое по типу с параметром
–	Параметры-переменные – любого типа
–	параметр-массив передаётся без указания размера 
–	параметры-переменные входной, выходной, переменный
–	
Возвращаемые значения 
– нельзя возвратить массив
	Внимание! 
Массив нельзя возвратить. Если разрешить возвратить массив, то разрешаются, как минимум  присваивания с массивами. 
Модули	
Код:
модуль имя
      Элементы модуля      
   начало
            операторы
   конец имя.
Оператор 
Код:
подключить модуль, модуль, …
Английское слово 
import
	Ключевое слово доступно
	Ключевое слово uses
Модуль определяет: 
- пространство имён
- единица трансляции-загрузки-выполнения
Программа = набор модулей
Пространство имён: 
- любые поименованные объекты – секция объявлений
- имена видны с момента объявления
- имена локальны в модуле по умолчанию
- имя можно явно объявить публичным (видимым в других модулях) – public
- доступ к публичным именам другого модуля определяется оператором import
Единица трансляции	
- модуль строится в процессе редактирования - трансляции не требуется 
- правильно построенный модуль может быть сразу выполнен
- оператор import определяет необходимые загружаемые модули
- выполнение начинается с операторов секции инициализации модуля
Вопрос: объявления констант и переменных в секции инициализации ?
Секция инициализации – это неименованная процедура, выполняемая первой. 
Объявленные в ней переменные являются локальными. 
В этой секции может стоять вызов любой процедуры-функции-метода, определённой в секции объявлений.
Один документ = один модуль
В документе перед, после и внутри модуля могут быть заданы узлы текста:
# Текст #
Вопрос, требующий решения: 
Формат сохранения самого модуля и сопутствующих данных (таблица имен ?)