Структура программы на языке Перфолента.Net

Материал из ТХАБ.РФ
Версия от 14:55, 9 июня 2020; Тест (обсуждение | вклад) (Блоки кода уровня методов:)

Перейти к: навигация, поиск

Программа это текст, структурированный по определенным для заданного языка правилам. В этой статье рассмотрена структура программы на языке Перфолента.

Программа на языке Перфолента — это обычный текст, написанный по определенным правилам. Различные части этого текста имеют различное назначение и обычно оформляются отдельными блоками, которые мы будем называть блоками кода. Блоки кода могут быть вложенными в другие блоки кода, образуя древовидную структуру программы. Уровней вложенности может быть довольно много, однако необходимо знать правила вложенности одних типов блоков в другие.

Уровень 1, Блок кода 1

Уровень 1, Блок кода 2


Уровень 2, Блок кода 1
Уровень 2, Блок кода 2
Уровень 3, Блок кода 1
Уровень 3, Блок кода 2

Уровень 1, Блок кода 3


Уровень 2, Блок кода 1

Уровень 1, Блок кода 4


В языке Перфолента определено ограниченное количество типов блоков кода, каждый из которых имеет собственное назначение и возможность вложения в другие типы блоков. Разделим блоки кода по возможным уровням вложенности. Возможность вложения определяется следующей последовательностью:

Уровень классов


Уровень методов
Уровень блочных операторов
Уровень операторов

Уровень блочных операторов может отсутствовать или быть многократно вложенным.


Блоки кода уровня классов:

Программа, Модуль, Класс, Структура, Интерфейс, Перечисление – все эти блоки являются специализированными классами. Блоки кода уровня класса могут быть вложены в другие блоки уровня класса. Существуют исключения, которые будут описаны для каждого типа блоков отдельно, например, в блок Перечисление другие блоки включать нельзя.

Текст программы


Программа
Модуль 1
Класс 1 (вложенный)
Класс 1
Класс 2


Блоки кода уровня методов:

Процедура, Функция, Оператор, Свойство (полное), Событие (полное), Конструктор, Завершитель, Деструктор, Получить, Установить, Добавить, Удалить, Вызвать – блоки кода уровня методов могут быть вложены в блоки уровня классов. Какие именно блоки уровня методов можно включать в определенный тип блока уровня класса будет описано позже.

Класс 1
----Конструктор
----Процедура 1
----Процедура 2
----Функция 1

Блоки кода уровня блочных операторов:

Если, Цикл, Для, Для Каждого, Пока, Попытка, Использовать, Блокировка – блоки кода уровня блочных операторов могут быть вложены в блоки уровня методов. Блочные операторы могут быть вложены в другие блочные операторы.

Процедура 1    //метод
----Если условие Тогда    //блочный оператор
--------Цикл    //вложенный блочный оператор
------------Перем А=1    //вложенный оператор

Блоки кода уровня операторов:

Перем, Конст, Присвоить, Массив и т.д., операторы определяются отдельным сводом правил. Блоки кода уровня операторов могут быть вложены в блоки уровня методов и в блоки уровня блочных операторов.

Оператор 1

Оператор 2

Оператор Н


Рассмотрим пример программы демонстрирующий все описанные выше правила:

//Уровень классов
Программа ОбразецСтруктурыПрограммы
       //Уровень методов
       Процедура Старт
               //Уровень операторов и блочных операторов
               Для Инд=1 По 10
                       //Уровень операторов и блочных операторов
                       ВыводСтроки "Уровень 4"
               КонецЦикла
       КонецПроцедуры
КонецПрограммы
//Уровень классов
Класс Кошка
       //Уровень методов
       Конструктор
               //Уровень операторов и блочных операторов
               Родитель.Конструктор
       КонецКонструктора
       //Уровень методов
       Процедура ПервыйМетод 
               //Уровень операторов и блочных операторов
               ЭтотКласс.ВторойМетод
       КонецПроцедуры
       //Уровень методов
       Свойство ЦветФона тип Целое
               //Уровень методов
               Получить
                           //Уровень операторов и блочных операторов
                           Возврат ЦветФона
               КонецПолучить
               //Уровень методов
               Установить(НовЗнач тип Целое)
                           //Уровень операторов и блочных операторов
                           ЦветФона=НовЗнач
               КонецУстановить
       КонецСвойства
       //Уровень классов (вложенный класс)
       Класс МозгКошки
               //Уровень методов
               Конструктор
                           //Уровень операторов и блочных операторов
                           Родитель.Конструктор
               КонецКонструктора
       КонецКласса
КонецКласса
//Уровень классов
Перечисление Элементы тип Целое
       //Уровень методов
       ПервыйЭлемент = 1
       ВторойЭлемент = 2
КонецПеречисления
//Уровень классов
Структура АиБ
       //Уровень методов
       Поле А тип Цел32
       Поле Б тип Бит64
КонецСтруктуры

Особенности разных типов блоков кода уровня классов.

Класс

Блок Класс является шаблоном, который используется для создания объектов (экземпляров класса) во время выполнения программы. Класс может содержать различные члены, такие как методы, поля, свойства и события. Члены класса могут быть как экземплярными, так и общими для класса. Общие для класса члены существуют в единственном экземпляре и доступны всем созданным объектам этого класса. Экземплярные члены существуют отдельно в каждом объекте, созданном как экземпляр этого класса. Переменные могут содержать ссылки на созданные объекты. Данные объектов (экземпляров класса) хранятся в «куче» (общей памяти компьютера).

Классы могут быть вложенными в другие классы, а также в модули, структуры и интерфейсы.

       Класс МозгКошки
               Поле Вес тип Целое
               Конструктор
                           Родитель.Конструктор
               КонецКонструктора
       КонецКласса

Модуль

Блок Модуль является специализированным классом, все члены которого являются общими для класса, т.е. экземпляры этого класса создавать нельзя. Если Модуль отмечен атрибутом Глобальный, то все его члены видны из любой части программы.

Модули не могут быть вложенными.

       Модуль МоиМетоды
               Процедура МояПроцедура1
               КонецПроцедуры
               Процедура МояПроцедура2
               КонецПроцедуры
               Функция МояФункция1 тип Целое
               КонецФункции
       КонецМодуля

Программа

Блок Программа является специализированным блоком Модуль. Блок кода Программа имеет смысл для консольных и оконных приложений. Основное назначение этого блока - содержать метод Старт, который является точкой входа в приложение.

Блок Программа может существовать только в одном экземпляре и не может быть вложенным.

       Программа МояПрограмма
               Процедура Старт
                              //Код  программы
               КонецПроцедуры
       КонецПрограммы

Интерфейс

Блок Интерфейс является специализированным классом, экземпляры объектов которого создавать нельзя, но можно заставить другие классы реализовывать все члены, заданные в этом интерфейсе.

Блок Интерфейс может быть вложен в классы, модули и структуры.

       Интерфейс МойИнтерфейс
               Процедура Проц1
               Процедура Проц2
               Функция Функ1 тип Целое
       КонецИнтерфейса

Структура

Блок Структура является специализированным классом, экземпляры которого не являются ссылочными и создаются в стеке приложения, а не в «куче» (общей памяти компьютера).

Блок Структура может быть вложен в классы, модули и интерфейсы.

       Структура АиБ
               Поле А тип Цел32
               Поле Б тип Бит64
       КонецСтруктуры

Перечисление

Блок Перечисление задает пары Имя-Значение. Перечисление позволяет обращаться к значениям по их именам.

Блок Перечисление может быть вложен в классы, модули, структуры и интерфейсы.

       Перечисление Элементы тип Целое
               ПервыйЭлемент = 1
               ВторойЭлемент = 2
       КонецПеречисления

Ссылки