Инструменты пользователя

Инструменты сайта


bb:lessons:first-module

Это старая версия документа!


Урок первый. Модуль, компиляция, вывод в журнал

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

Модуль

Весь каркас Блэкбокса строится из модулей. Модуль, это что-то вроде строительного кирпича, наподобие всем известных кирпичиков конструктора Лего:

Модули бывают разные - простые, сложные. А ещё у модулей есть интерфейс, благодаря которому их можно соединять друг с другом и так возводить очень сложные компонентные конструкции:

Кстати, компонент это более общее понятие, чем модуль. Компонентом можно назвать и модуль, и целый комплект модулей. Главное, что компонент - это часть расширяемой компонентной системы (расширяется она за счёт добавления новых компонентов). А модуль в Блэкбоксе это единица проектирования, разработки, компиляции и распространения, то есть, программирование в Блэкбоксе ведётся по-модульно. Вы строите архитектуру вашей системы из модулей, пишете исходный текст программы-модуля, компилируете в исполняемый модуль и его же распространяете.

Текст пустого программного модуля выглядит так:

MODULE MyModule;
END MyModule.

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

Компиляция

Откройте новый документ Ctrl+N, наберите в нём текст пустого модуля и нажмите Ctrl+K (или меню Dev, Compile):

Как видите, Блэкбокс запрашивает разрешения на создание подкаталога My\Sym. Далее он точно так же спросит про подкаталог My\Code. И этот момент надо рассмотреть поподробнее.

Имя нашего модуля MyModule. Это двойное имя, которое содержит название подсистемы My и название модуля в ней, Module. Внутри этой подсистемы Блэкбокс создаст ещё две папки, одна из которых Sym (для символьных файлов), а другая Code (для кодовых).

Символьные файлы нужны только для совместной компиляции разных модулей. Кодовые, они же исполняемые файлы, нужны только для загрузки и выполнения. После создания символьного и кодового файлов нашего модуля, компилятор завершит работу и выведет сообщение в журнал.

Если компилятор обнаружит ошибку в исходном тексте, то он просигнализирует об этом. Там, где найдена ошибка, появится маркер и в строке состояния (внизу главного окна) появится сообщение об ошибке. Можно дважды кликнуть по маркеру, чтобы его развернуть и прочитать сообщение.

Например, если в теле нашего пустого модуля написать что-то, непонятное компилятору, то он сгенерирует сразу два маркера.

На картинке первый из них развёрнут (его текст продублирован внизу экрана, в строке статуса) и означает, что после имени модуля и точки запятой компилятор ожидает только объявления раздела констант CONST, или раздела переменных VAR, или объявление процедуры PROCEDURE или же конец модуля END. Ничего из этого он не видит и поэтому сразу же выдаёт ошибку.

А второй маркер стоит после непонятного слова. Компилятор не понимает, что это слово означает, потому что его словарь не содержит этого слова. Компилятор понимает только специальные символы и особые зарезервированные слова (всё, что понимает компилятор, перечислено в Сообщении об Языке, см. меню Help, Contents, раздел Component Pascal, Language Report, пункт 3. Vocabulary and Representation)

bb/lessons/first-module.1415983769.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)