Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программа. Программа состоит из одного или нескольких модулей



Программа состоит из одного или нескольких модулей. Модуль определяет независимую часть программы.

ОПИСАНИЕ-МОДУЛЯ::= [ЗАГОЛОВОК-МОДУЛЯ] СПИСОК-ОПИСАНИЙ

ЗАГОЛОВОК-МОДУЛЯ::= module ИМЯ-МОДУЛЯ [ (ОПИСАНИЯ-АРГУМЕНТОВ) ];

ИМЯ-МОДУЛЯ::= ИДЕНТИФИКАТОР

Аргументы, описанные в круглых скобках, являются формальными параметрами модуля. Структура ОПИСАНИЙ-АРГУМЕНТОВ определена в разд. 6.3.1.

СПИСОК-ОПИСАНИЙ::= ОПИСАНИЕ (; ОПИСАНИЕ)*

ОПИСАНИЕ::=

ИМПОРТ-МОДУЛЯ | ОПИСАНИЕ-ТИПА |

ОПИСАНИЕ-ГЛОБАЛЬНЫХ-ПЕРЕМЕННЫХ |

ОПРЕДЕЛЕНИЕ-ПРЕДИКАТА | СПЕЦИФИКАЦИЯ-ПРЕДИКАТА |

ОПИСАНИЕ-ФОРМУЛЫ | ОПРЕДЕЛЕНИЕ-КЛАССА |

ОПИСАНИЕ-СООБЩЕНИЯ | ОПРЕДЕЛЕНИЕ-ПРОЦЕССА

ОПИСАНИЕ-ФОРМУЛЫ (см. разд. 6.9) определяет функцию или предикат; они встречаются в предусловиях, постусловиях и формулах. Три последние альтернативы ОПИСАНИЯ используются для задания процессов; см. разд. 6.10.


ИМПОРТ-МОДУЛЯ::=

import ИМЯ-МОДУЛЯ [ (АРГУМЕНТЫ)] [ as ЛОКАЛЬНОЕ-ИМЯ-МОДУЛЯ ]

ЛОКАЛЬНОЕ-ИМЯ-МОДУЛЯ::= ИДЕНТИФИКАТОР

Имена модулей, встречающиеся в описаниях данного модуля, должны быть определены конструкцией ИМПОРТ-МОДУЛЯ. Если импортируемый модуль имеет формальные параметры, то в круглых скобках задается соответствующий набор фактических параметров. Конструкция АРГУМЕНТЫ определена в разд. 6.3.3. Правила подстановки фактических параметров на место формальных те же самые, что и для вызова предиката. ЛОКАЛЬНОЕ-ИМЯ-МОДУЛЯ используется в теле модуля как эквивалент ИМЯ-МОДУЛЯ (АРГУМЕНТЫ).

ОПИСАНИЕ-ГЛОБАЛЬНЫХ-ПЕРЕМЕННЫХ::=

ОПИСАНИЕ-ПЕРЕМЕННЫХ | ОПИСАНИЕ-ПЕРЕМЕННЫХ-С-ИНИЦИАЛИЗАЦИЕЙ

Глобальные переменные обычно определяют внешние параметры задачи. В нижеследующих определениях предикатов эти переменные считаются аргументами. Они используются в теле предиката, но не упоминаются в заголовке.

ОПИСАНИЕ-ПЕРЕМЕННЫХ::=

ИЗОБРАЖЕНИЕ-ТИПА-ПЕРЕМЕННОЙ ИМЯ-ПЕРЕМЕННОЙ (, ИМЯ-ПЕРЕМЕННОЙ)*

ОПИСАНИЕ-ПЕРЕМЕННЫХ-С-ИНИЦИАЛИЗАЦИЕЙ::=

ИЗОБРАЖЕНИЕ-ТИПА-ПЕРЕМЕННОЙ ОПРЕДЕЛЕНИЕ-ПЕРЕМЕННОЙ

(, ОПРЕДЕЛЕНИЕ-ПЕРЕМЕННОЙ)*

ОПРЕДЕЛЕНИЕ-ПЕРЕМЕННОЙ::= ИМЯ-ПЕРЕМЕННОЙ = ВЫРАЖЕНИЕ |

ИМЯ-ПЕРЕМЕННОЙ

Тип выражения должен быть совместим с типом переменой, которой присваивается значение переменной.

Модуль определяет совокупность имен и обозначаемых ими объектов: предикатов, типов, переменных, полей структур, конструкторов и распознавателей объединений, процессов, классов и сообщений. Объекты, представленные описаниями модуля, определяют область глобальных имен. Каждое описание предиката определяет автономную систему локализации имен: параметров, меток и локальных переменных. В описании предиката одно имя не может использоваться для двух разных объектов. Если глобальное имя используется в определении предиката, то это имя не может определяться в качестве имени метки, локальной переменной или параметра.

Следующей областью локализации являются конструкции: изображение подтипа, определение массива, элемент агрегата вида “итерация выражений”. Переменные, определенные в каждой из этих конструкций, локализованы в конструкции и недоступны вне нее. Класс также определяет независимую область локализации. Поля класса доступны префиксацией объекта класса (см. разд. 6.6).

Исполнение программы начинается исполнением предиката с именем main. Рекомендован предикат со следующими параметрами: main(seq(string)argv: int ret_code). Параметр argv поставляет массив входных аргументов при исполнении программы. Параметру ret_code присваивается значение кода выхода.

Для вывода информации используется оператор print, аргументы которого - выражения и массивы.





Дата публикования: 2014-11-18; Прочитано: 409 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...