По старой доброй традиции, в каждом языке программирования первой программой является программа выводящая на экран строку «Hello, World!» («Привет, мир!»). И здесь, прежде чем будет получен необходимый результат необходимо выполнить несколько служебных действий.
Для этого необходимо выполнить следующие действия:
Либо тоже самое через стандартную комбинацию клавиш: <Ctrl+N> В итоге должно получиться окно примерно следующего вида:
Рис. 2 BlackBox после создания нового файла
Сразу нужно отметить, что файлы создаваемые в ББ имеют особую структуру. Поэтому открывать их в простом текстовом редакторе, там их редактировать и сохранять — значит испортить такой файл. Дело в том, что ББ хранит в этих файлах служебные данные, необходимые для корректной работы Компонентного Паскаля.
Дополнительная информация необходима для корректной сборки программ. В качестве такой информации выступают дата и время редактирования файла, какие модули требуются для корректной работы и т. д. Компонентный Паскаль — это язык промышленного программирования, за надёжность приходится платить вынужденным усложнением среды. Впрочем, едва ли когда-либо потребуется вмешиваться в работу среды.
При сохранении файлов в ББ это происходит по принятым правилам. Куча набросанных файлов в каталоге очень скоро будет вызывать вопросы, а что и к чему относится. Для избежания подобного бардака в ББ принята иерархия подсистем. По сути, это отдельная папка с особой структурой, в которой хранится вся необходимая информация этой подсистемы. Подсистема вполне может быть отдельным проектом.
Для правильного сохранения файла, необходимо выполнить следующие действия:
Рис.3 Окно сохранения файла в BlackBox
В появившимся диалоговом окне справа сверху есть кнопка для создания нового каталога. Вот его и нужно создать с именем «Книга». Это будет наша подсистема.
Рис.4 Создание подсистемы в BlackBox
Но этого ещё недостаточно. Мало создать такую подсистему, нужно ещё определить модуль программы в нужный подкаталог. Общепринятая практика сохранять текстовые файлы ББ в подсистеме в каталог с именем «Mod» (сокращение от «Module»). После этого, необходимо задать имя файла, например, «Привет». Расширение задавать необязательно, оно будет присвоено автоматически.
Рис.5 Правильно сохранённый файл в BlackBox
И если всё сделано верно в заголовке окна должна появиться надпись «(Книга)Привет». Обратите внимание на то, как отделена в круглых скобках часть «Книга» — это как раз указание на то, что модуль «Привет» является частью подсистемы «Книга». Точно также следует поступать и с остальными модулями.
Набор текста осуществляется как и в любом текстовом редакторе. В ББ сделаны некоторые удобства по ускорению набора. Так например, достаточно нажать букву «m» и далее <F5>, и в текстовом редакторе будет отображена заготовка для буквы «m» (все эти заготовки можно настроить по своему вкусу, эта возможность описана во встроенной документации)1).
Рис. 6 Автоподстановка для символа «m» по нажатию <F5> в BlackBox.
После получения шаблона необходимо посмотреть, что же нам выдал ББ.
Ключевое слово MODULE
задаёт имя модуля. Если имени модуля не будет, программа с точки зрения компилятора будет считаться с содержанием ошибки. Поэтому имя модуля нужно написать. И с учётом тех общепринятых требований что есть в ББ и Компонентном Паскале (КП), примем имя модуля КнигаПривет
.
Ключевое слово IMPORT
содержит имена модулей, которые будут использованы в ходе программы — импортированы. Если модуль Log
сейчас будет использован (для вывода служебных сообщений в рабочий журнал — окно слева), то модуль «Math» — пока не потребуется (он необходим для математических вычислений). Если какие-то модули будут содержаться после ключевого слова IMPORT
, но не будут использованы — ничего страшного не произойдёт. А вот если после IMPORT
имени модуля нет, а он используется в тексте программы — КП посчитает, что программа содержит ошибку.
Ключевое слово BEGIN
обозначает начало текста программы в модуле. Именно отсюда, при обращению к модулю ББ запускает выполнение действий, которое упомянуто после BEGIN
.
Ключевое слово END
обозначает окончание блока инструкций (команд части программы). Но поскольку это ключевое слово с точкой — у этого ключевого слова сейчас особый статус — это конец модуля. Поэтому между END
и точкой необходимо вставить пробел и дописать тоже самое имя модуля, что и после ключевого слова MODULE
— КнигаПривет
.
Если всё сделано правильно текст программы должен выглядеть так:
Привет.odc
MODULE КнигаПривет; IMPORT Log, Math; BEGIN END КнигаПривет.
Программа скомпилирована, в рабочем журнале выведен текст:
> компилируется "КнигаПривет" 4 0
Если бы были ошибки компиляции — ББ вывел бы их в рабочий журнал. Первая цифра означает размер получившегося модуля. Всего 4 байта. Если кто-то программировал на Ассемблере под Windows, должен знать, что минимальный размер программы равен примерно 1500 байтам. Как это возможно, что программа занимает всего 4 байта? ))) Это Компонентный Паскаль! Вторая цифра означает сколько байт отведено для связи с внешним миром. В нашем случае — 0. И всё же программа пока ничего не выполняет. Необходимо дополнить её до следующего вида:
Привет.odc (v.2)
MODULE КнигаПривет; IMPORT Log, Math; PROCEDURE Старт*; VAR BEGIN Log.String('Привет, мир!'); Log.Ln END Старт; BEGIN END КнигаПривет.
В этом варианте добавилось ключевое слово PROCEDURE
. Пока не будем обращать на процедуру внимание, а обратим внимание на то, что она делает. Полезная работа процедуры Старт
начинается после ключевого слова BEGIN
и заканчивается на «END Старт;». В теле процедуры инструкция «Log.String» выводит заданную строку в скобках, а инструкция «Log.Ln» переводит позицию следующего печатаемого символа на новую строку (при этом сама она ничего не печатает). Если текст программы набран правильно, то после компиляции (<Ctrl+K>) в рабочем журнале будет добавлен следующий текст:
компилируется "КнигаПривет" Старт теперь в символьном файле 32 0
Теперь наша программа занимает объём целых 32 байта! Но стоит и этот вариант несколько доработать. Дело в том, что модуль без объяснений зачем он создан, и как его использовать — очень тяжело. поэтому в Компонентном Паскале предусмотрены комментарии. Дополним нашу программу необходимыми объяснениями:
MODULE КнигаПривет; (* это первая программа на языке Компонентный Паскаль. Она ничего толком не делает, кроме вывода строки "Привет, мир!" *) IMPORT Log, Math; PROCEDURE Старт*; VAR BEGIN Log.String('Привет, мир!'); Log.Ln END Старт; BEGIN END КнигаПривет.
Как же добиться исполнения программы? Посмотрите полезный код с ключевым словом PROCEDURE
. Пока оставим объяснения, что это значит. Просто повторите. Для этого после текста программы необходимо вставить КОММАНДЕР. Это можно сделать двумя способами:
И после появившегося круглого значка дописать:
КнигаПривет.Старт
Если всё получилось правильно окно текстового редактора должно выглядеть как на рисунке. С целью облегчения процедуры этот значок — КОММАНДЕР вставлен прямо здесь:
Текст программы на рисунке расцвечен. Чтобы этого добиться, необходимо установить подсистему CPC и расширение к ней – Beautifier. Речь про это пойдёт позже, но если вам не терпится можете сходить на сайт Хельмута Цинна и скачать от туда. Как устанавливать, в таком случае – вам придётся разбираться пока самим.
При нажатии на круглый значок (КОММАНДЕР) произойдёт выполнение программы и в рабочем журнале появится текст:
Привет, мир!
Ну что же. Можно поздравить читателя, всё получилось)
В этой части получены первые практические результаты:
Если в этой части есть непонятные места — их можно дополнить своими мыслями, ведь это — учебник открытый для всех).