Структура программы
Программа на языке И++ может содержаться в одном или нескольких файлах исходного текста (или кода).
Один и только один из файлов программы должен содержать тело программы - секцию кода, ограниченную ключевыми словами ВЫЧИСЛИТЬ и КОНЕЦ. Такой файл называется основным файлом программы и, обычно, имеет расширение ipp.
Другие файлы называются библиотеками и, обычно, имеют расширение ibl. Основной файл может подключать библиотеки с помощью ключевого слова ИСПОЛЬЗОВАТЬ. Также одни библиотеки могут подключать другие библиотеки. Файлы библиотек могут использоваться в разных программах.
Разделение исходного кода между основным файлом и библиотеками может происходить из разных соображений. Если библиотеки используются только в одной программе, то деление может быть по смысловым группам или просто для удобства редактирования небольших файлов. Библиотеки, используемые разными программами, обычно, предоставляют возможности по смысловым группам.
Компилятор языка И++ начинает обработку программы с основного файла, обнаруживает подключение библиотек и строит список всех исходных файлов программы. Обработки файлов библиотек как отдельных модулей программы не происходит. Это можно перефразировать так, что единицей компиляции в И++ является программа.
В основном файле все, что находится за пределами секции ВЫЧИСЛИТЬ...КОНЕЦ, называется областью объявлений. Файл библиотеки состоит целиком из области объявлений. В области объявлений допускается:
- подключение библиотек;
- объявление объектных типов, интерфейсов и синонимов типов;
- объявление и определение функций;
- определение методов объектных типов;
- объявление глобальных переменных;
- объявление глобальных констант;
- установка точности сравнения во времени компиляции;
- директивы компилятора.
В области объявлений основного файла (ipp) допускается также:
- задание имени программы с помощью ключевого слова ПРОГРАММА;
- задание имени группы программ с помощью ключевого слова ГРУППА_ПРОГРАММ;
- задание манифеста с помощью ключевого слова МАНИФЕСТ;
Объявления объектных типов, интерфейсов, а также определения функций и методов создают вложенные области, которые не являются областью объявлений. Все перечисленные выше действия запрещены вне области объявлений. В частности, действуют следующие важные запреты:
- нельзя объявлять вложенные объектные типы;
- нельзя объявлять вложенные функции;
- нельзя подключать библиотеки в объявлениях типов и телах функций и методов.
При объявлении объектных типов и интерфейсов область, заключенная между квадратными скобками [...], называется областью объявления типа. Только когда тип используется в программе, компилятор обрабатывает его область объявления.
В области объявления объектного типа допускается:
- объявление полей;
- переопределение значений по умолчанию для унаследованных полей;
- объявление методов;
- объявление методов, совмещенное с определением.
При совмещении объявления и определения метода, тело определения метода образует вложенную область, не являющуюся областью объявления типа.
В области объявления интерфейса допускается:
- объявление методов.
Т.к. методы интерфейсов - абстрактные, то определений для них не дается ни в области объявления интерфейса, ни за ее пределами.
Операторы, определяющие поток выполнения программы записываются в теле программы, функции или метода. Если программа, функция или метод принимают параметры, то тело начинается от закрывающейся круглой скобки до ключевого слова КОНЕЦ (для программы) или КОНЕЦ_ФУНКЦИИ (для функции или метода). Если параметров нет, то тело начинается сразу после ключевого слова ВЫЧИСЛИТЬ (для программы) или имени (для функции или метода).
В качестве передаваемых и получаемых программами параметров могут быть значения только инвариантного типа.
В теле программы, функции или метода допускается:
- объявление локальных переменных;
- объявление локальных констант;
- использование операторов;
- вызов функций и методов.
Проект программы объединяет файлы и настройки компиляции. Также проект содержит дополнительную информацию, используемую интегрированной средой разработки, например, папки файлов.
В проекте программы содержится настройка подключения модулей. Модули в каком-то смысле являются аналогами библиотек. Подключение модуля делает доступными объявления и определения функций, типов и т.д., которые в нем содержатся. Таким образом, набор используемых модулей является неотъемлемой частью программы.
В результате компиляции программы создается исполнимый код. Исполнимый код программы И++ записывается в файл с расширением ibx. Компиляция проекта программы может выполняться для разных конфигураций с созданием отдельного файла исполнимого кода для каждой конфигурации.