Язык программирования Перфолента.Net - Официальный сайт

 Язык программирования Перфолента.Net - Официальный сайт.

Поиск   
Главная :: О проекте :: Контакты :: Обратная связь :: Благодарности :: ВходГость

   >   >   >   > 



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

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


Бумажная перфолента в прошлом служила для записи программы.

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

Уровень 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
        КонецПеречисления

Делегат.

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

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

        Делегат Процедура ОбработчикСобытияБезПараметров()

 

 

 

 




К началу статьи


Предыдущая статья:
Массивы. Создание массивов, заполнение данными, обращения к элементам и другие операции с массивами.

Следующая статья:
Условный оператор Если

Вернуться в раздел:
Синтаксис языка Перфолента
  Поддержи проект!

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

  Новости:
      04.01.2025 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.15.0_CE
      23.09.2024 Опубликована новая статья: "Конструируем класс. Делегаты."
      30.08.2024 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.14.0
      24.05.2024 Обновлён справочный раздел сайта
      01.07.2023 Новая версия 0.4.13.0 языка программирования Перфолента.Net
       Все новости