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

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


bb:lessons:first-module

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
bb:lessons:first-module [2016/04/07 21:29]
prospero78 [Компиляция]
bb:lessons:first-module [2020/10/29 07:08] (текущий)
Строка 1: Строка 1:
 ====== Урок первый. Модуль, компиляция, вывод в журнал ====== ====== Урок первый. Модуль, компиляция, вывод в журнал ======
 +
 +[[bb:lessons|]]
  
 В этом уроке вы узнаете: как выглядит строительный блок компонентного каркаса, что происходит при компиляции и посмотрите, как делается вывод информации в бортовой журнал.  В этом уроке вы узнаете: как выглядит строительный блок компонентного каркаса, что происходит при компиляции и посмотрите, как делается вывод информации в бортовой журнал. 
  
 ===== Модуль ===== ===== Модуль =====
-Весь каркас **Блэкбокса** строится из модулей. Модуль, это что-то вроде строительного кирпича, наподобие всем известных кирпичиков конструктора Лего:+ 
 +Весь каркас Блэкбокса строится из модулей. Модуль, это что-то вроде строительного кирпича, наподобие всем известных кирпичиков конструктора Лего:
 {{ :bb:lessons:lego_color_bricks.jpg?nolink |}} {{ :bb:lessons:lego_color_bricks.jpg?nolink |}}
  
Строка 12: Строка 15:
  
  
-Кстати, //компонент// это более общее понятие, чем //модуль//. Компонентом можно назвать и модуль, и целый комплект модулей. Главное, что компонент - это //часть расширяемой компонентной системы// (расширяется она за счёт добавления новых компонентов). А модуль в **Блэкбоксе** это //единица проектирования, разработки, компиляции и распространения//, то есть, программирование в Блэкбоксе ведётся по-модульно. Вы строите архитектуру вашей системы из модулей, пишете исходный текст программы-модуля, компилируете в исполняемый модуль и его же распространяете.+Кстати, компонент это более общее понятие, чем модуль. Компонентом можно назвать и модуль, и целый комплект модулей. Главное, что компонент - это //часть расширяемой компонентной системы// (расширяется она за счёт добавления новых компонентов). А модуль в Блэкбоксе это //единица проектирования, разработки, компиляции и распространения//, то есть, программирование в Блэкбоксе ведётся по-модульно. Вы строите архитектуру вашей системы из модулей, пишете исходный текст программы-модуля, компилируете в исполняемый модуль и его же распространяете.
  
 Текст пустого программного модуля выглядит так: Текст пустого программного модуля выглядит так:
-<code oberon2> +<code>MODULE MyModule;
-MODULE MyModule;+
 END MyModule. END MyModule.
 </code> </code>
-В **Компонентном Паскале** операторы разделяются точкой с запятой и только в конце модуля ставится точка.+В Компонентном Паскале операторы разделяются точкой с запятой и только в конце модуля ставится точка.
  
 ===== Компиляция ===== ===== Компиляция =====
  
-Откройте новый документ **<Ctrl+N>**, наберите в нём текст пустого модуля и скомпилируйте нажатием **<Ctrl+K>**/ (или меню //Dev, Compile//):+Откройте новый документ //Ctrl+N//, наберите в нём текст пустого модуля и скомпилируйте нажатием //Ctrl+K// (или меню //Dev, Compile//):
 {{:bb:lessons:bb_first_compile.png?nolink |}} {{:bb:lessons:bb_first_compile.png?nolink |}}
  
  
-Как видите, **Блэкбокс** запрашивает разрешения на создание подкаталога //My\Sym//. Далее он точно так же спросит про подкаталог //My\Code//. И этот момент надо рассмотреть подробнее.+Как видите, Блэкбокс запрашивает разрешения на создание подкаталога //My\Sym//. Далее он точно так же спросит про подкаталог //My\Code//. И этот момент надо рассмотреть подробнее.
  
-Имя нашего модуля ''MyModule''. Это двойное имя, которое содержит название подсистемы //My// и название модуля в ней, //Module//. Внутри этой подсистемы **Блэкбокс** создаст ещё две папки, одна из которых //Sym// (для символьных файлов), а другая //Code// (для кодовых). Подробнее о подсистемах вы можете узнать в [[http://oberoncore.ru/_media/blackbox/tut-tot.ru.pdf|учебнике]].+Имя нашего модуля **MyModule**. Это двойное имя, которое содержит название подсистемы //My// и название модуля в ней, //Module//. Внутри этой подсистемы Блэкбокс создаст ещё две папки, одна из которых //Sym// (для символьных файлов), а другая //Code// (для кодовых). Подробее о подсистемах вы можете узнать в [[http://oberoncore.ru/_media/blackbox/tut-tot.ru.pdf|учебнике]].
  
 Сохранять документы с исходными текстами следует в папке //Mod// вашей подсистемы, эту папку придётся создать вручную.  Сохранять документы с исходными текстами следует в папке //Mod// вашей подсистемы, эту папку придётся создать вручную. 
Строка 40: Строка 42:
 Например, если в теле нашего пустого модуля написать что-то, непонятное компилятору, то он сгенерирует сразу два маркера.{{:bb:lessons:bb_error_compile.png?nolink |}} Например, если в теле нашего пустого модуля написать что-то, непонятное компилятору, то он сгенерирует сразу два маркера.{{:bb:lessons:bb_error_compile.png?nolink |}}
  
-На картинке первый из них развёрнут (его текст продублирован внизу экрана, в строке статуса) и означает, что после имени модуля и точки запятой компилятор ожидает только объявления раздела констант ''CONST'', или раздела переменных ''VAR'', или объявление процедуры ''PROCEDURE'' или же конец модуля ''END''. Ничего из этого он не видит и поэтому сразу же выдаёт ошибку.+На картинке первый из них развёрнут (его текст продублирован внизу экрана, в строке статуса) и означает, что после имени модуля и точки запятой компилятор ожидает только объявления раздела констант CONST, или раздела переменных VAR, или объявление процедуры PROCEDURE или же конец модуля END. Ничего из этого он не видит и поэтому сразу же выдаёт ошибку.
  
-А второй маркер стоит после непонятного слова. Компилятор //не понимает//, что это слово означает, потому что его словарь не содержит этого слова. Компилятор понимает только специальные символы и особые зарезервированные слова (всё, что понимает компилятор, перечислено в Сообщении об Языке, см. меню //Help, Contents//, раздел //Component Pascal, Language Report//, пункт //3. Vocabulary and Representation//)+А второй маркер стоит после непонятного слова. Компилятор не понимает, что это слово означает, потому что его словарь не содержит этого слова. Компилятор понимает только специальные символы и особые зарезервированные слова (всё, что понимает компилятор, перечислено в Сообщении об Языке, см. меню //Help, Contents//, раздел //Component Pascal, Language Report//, пункт //3. Vocabulary and Representation//)
 ===== Вывод в журнал ===== ===== Вывод в журнал =====
  
Строка 79: Строка 81:
  
 В заключение стоит отметить, что возможности модуля //Log// всегда можно изучить, открыв его интерфейс. Для этого выделите слово //Log// и скомандуйте в меню //Info, Client Interface// или правой кнопкой мыши (ПКМ) и во всплывшем меню выберите //Interface//. В заключение стоит отметить, что возможности модуля //Log// всегда можно изучить, открыв его интерфейс. Для этого выделите слово //Log// и скомандуйте в меню //Info, Client Interface// или правой кнопкой мыши (ПКМ) и во всплывшем меню выберите //Interface//.
 +
 +
 +[[bb:lessons:second-basictypes|]]
bb/lessons/first-module.1460053744.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)