Наука — Школе |
Ниже дано быстрое введение в работу в системе Блэкбокс. Инструкции ориентированы на использование русифицированной версии Блэкбокса в школе.
Запуск Блэкбокса производится двойным кликом по файлу BlackBox.exe или по соответствующему желтему ярлыку:
После запуска появится стандартная заставка:
в которой надо кликнуть по OK. После этого увидим примерно следующее (порядок меню соответствует анлоязычной версии):
Пустое окошко — "рабочий журнал" (Log), представляющий собой обычный документ в стандартном формате, используемом в Блэкбоксе (об этом формате см. здесь). Туда система пишет свои сообщения о компиляции и проч. Туда же удобно направлять простейший вывод. (Об использовании рабочего журнала см. здесь.)
Простейшая программа на Компонентном Паскале состоит из одного "модуля", состоящего из единственной выполняемой процедуры. Текст модуля может выглядеть так:
MODULE Привет;
IMPORT StdLog;
PROCEDURE Сделать*;
BEGIN
StdLog.String("Привет!")
END Сделать;
END Привет.
Смысл приведенного текста описан здесь.
Пара замечаний:
Слова, написанные большими буквами, являются служебными словами языка Компонентный Паскаль. Они должны быть написаны именно большими буквами (большие и маленькие буквы в Компонентном Паскале различаются). Остальные имена (StdLog, String, Привет, Сделать) — продукт творчества программистов. О том, как с удобством печатать служебные слова из больших букв, см. здесь.
Теперь воссоздадим эту программу в Блэкбоксе.
Для этого выполним в нем сначала команду меню Файлы --> Новый (в нерусифицированном варианте Files --> New). Получим новое пустое окошко, озаглавленное безымянный1 (untitled1). Скопируем в него приведенный выше текст модуля. К сожалению, форматирование (отступы) при этом может быть частично потеряно, и результат может выглядеть так:
Как уже говорилось, детали форматирования компилятору не важны. (О том, как с удобством форматировать отступы, см. здесь.)
Скопировав, выполним команду меню Разработка --> Компилировать (Dev --> Compile или просто Ctrl+K с латинским K; переключать на русскую клавиатуру не обязательно). В рабочем журнале появится примерно следующее:
Сообщение во второй строке означает, что модуль скомпилировался успешно (числа несут информацию о размере получившегося машинного кода — в данном случае 28 байт) и что модуля с таким именем в системе перед данной компиляцией еще не было (слово new).
После компиляции перевод модуля Привет на машинный язык хранится на диске в определенном месте (см. ниже), и Блэкбокс может выполнять процедуры из этого модуля. (Фактически, успешная компиляция модуля автоматически включает модуль в систему, тем самым ее "расширяя". Кстати, бОльшая часть Блэкбокса представляет собой подобные расширения небольшого ядра. Никакой жесткой грани между модулями Блэкбокса и модулями, добавляемыми программистами, нет.) Cкомпилированный файл имеет имя Привет.ocf и хранится — в соответствии с принятыми в Блэкбоксе соглашениями — в папке Code в первичной директории Блэкбокса. Если последняя была выбрана по умолчанию, то полный адрес файла C:\Program Files\BlackBox\Code\Привет.оcf.
Скомпилированные Блэкбоксом файлы не являются ни стандартными exe-, ни dll-файлами. Иначе важнейшие удобства Блэкбокса стали бы невозможны. Подробнее об этом здесь.
При вызове командой Ctrl+K компилятор считает, что текст модуля стоит в начале документа, т.е. ищет ключевое слово MODULE. До слова MODULE можно ставить правильные комментарии, заключенные в составные скобки (* и *), а также любые визуальные объекты. Кроме того, компилятор проигнорирует и все, что стоит после точки, оканчивающей модуль.
О том, как компилятор сообщает об ошибках компиляции, см. здесь.
Опишем простой и удобный способ выполнить процедуру из скомпилированного модуля. (Есть и другие способы.)
Поставим курсор в окошке с нашим модулем в самый конец текста после точки, закрывающей модуль (Ctrl+End).
Выполним команду меню Инстр --> Вставить
коммандер (Tools --> Insert Commander; с
клавиатуры Ctrl+Q).
Появится черный кружок с белым восклицательным знаком —
т.наз. коммандер
(см. картинку ниже).
После коммандера без пробелов напечатать Привет.Сделать (имя модуля, точка, имя вызываемой процедуры — это "ФИО" нашей процедуры в системе; роль фамилии играет имя модуля; важно следить за прописными и строчными буквами, т.к. в Компонентном Паскале они различаются).
Теперь кликнем мышкой по коммандеру. Это вызовет загрузку скомпилированного модуля в память и выполнение процедуры. Можно кликнуть еще пару раз — процедура выполнится еще дважды.
После первой загрузки модуль остается в памяти, причем он уже слинкован с остальными активными модулями (например, StdLog), поэтому дальнейшие обращения к нашему модулю происходят столь же эффективно, как и при статической компиляции. О перезагрузке модулей см. здесь.
После этого экран будет выглядеть примерно так:
Три идущих подряд цепочки символов Привет! соответствуют трем кликам по коммандеру — и трем выполнениям процедуры Сделать.
Сохранить документ в окошке безымянный1 можно в любом месте на диске обычным образом (выполните команду меню Файлы --> Сохранить как...; Files --> Save as...). Для простоты сохраним модуль прямо в той папке, в которой откроется диалог Файлы --> Сохранить как..., с именем Привет (ниже показан соответствующий диалог непосредственно перед кликом по Save):
Наука — Школе |