Компонентный Паскаль/Hello, World
Первая программа
[править]По старой доброй традиции, в каждом языке программирования первой программой является программа выводящая на экран строку "Hello, World!" ("Привет, мир!"). И здесь, прежде чем будет получен необходимый результат необходимо выполнить несколько служебных действий.
Создание файла с текстом программы
[править]Для этого необходимо выполнить следующие действия:
- Мышкой нажать меню "Файл"
- Выбрать пункт меню "Новый"
Либо тоже самое через стандартную комбинацию клавиш: <Ctrl>+<N> В итоге должно получиться окно примерно следующего вида:
![](http://upload.wikimedia.org/wikibooks/ru/thumb/b/b0/002.png/220px-002.png)
Сразу нужно отметить, что файлы создаваемые в ББ имеют особую структуру. Поэтому открывать их в простом текстовом редакторе, там их редактировать и сохранять -- значит испортить такой файл. Дело в том, что ББ хранит в этих файлах служебные данные, необходимые для корректной работы Компонентного Паскаля.
Дополнительная информация необходима для корректной сборки программ. В качестве такой информации выступают дата и время редактирования файла, какие модули требуются для корректной работы и т.д. Компонентный Паскаль -- это язык промышленного программирования, за надёжность приходится платить вынужденным усложнением среды. Впрочем, едва ли когда-либо потребуется вмешиваться в работу среды.
Сохранение файла
[править]При сохранении файлов в ББ это происходит по принятым правилам. Куча набросанных файлов в каталоге очень скоро будет вызывать вопросы, а что и к чему относится. Для избежания подобного бардака в ББ принята иерархия подсистем. По сути, это отдельная папка с особой структурой, в которой хранится вся необходимая информация этой подсистемы. Подсистема вполне может быть отдельным проектом.
Для правильного сохранения файла, необходимо выполнить следующие действия:
- Мышкой выбрать пункт меню "Файл"
- Далее выбрать пункт меню "Сохранить" (если файл новый -- будет запрошено имя файла) или "Сохранить как" (в любом случае будет запрошено новое имя существующего файла), либо использовать комбинацию клавиш <Ctrl+S>.
![](http://upload.wikimedia.org/wikibooks/ru/thumb/b/b0/003.png/220px-003.png)
В появившимся диалоговом окне справа сверху есть кнопка для создания нового каталога. Вот его и нужно создать с именем "Test". Это будет наша подсистема.
![](http://upload.wikimedia.org/wikibooks/ru/thumb/d/d5/004.png/220px-004.png)
Но этого ещё недостаточно. Мало создать такую подсистему, нужно ещё определить модуль программы в нужный подкаталог. Общепринятая практика сохранять текстовые файлы ББ в подсистеме в каталог с именем "Mod" (сокращение от "Module"). После этого, необходимо задать имя файла, например, "Hello". Расширение задавать необязательно, оно будет присвоено автоматически.
![](http://upload.wikimedia.org/wikibooks/ru/thumb/2/20/005.png/220px-005.png)
И если всё сделано верно в заголовке окна должна появиться надпись "(Test)Hello". Обратите внимание на то, как отделена в круглых скобках часть "Test" -- это как раз указание на то, что модуль "Hello" является частью подсистемы "Test". Точно также следует поступать и с остальными модулями.
Набор текста программы
[править]Набор текста осуществляется как и в любом текстовом редакторе. В ББ сделаны некоторые удобства по ускорению набора. Так например, достаточно нажать букву "m" и далее <F5>, и в текстовом редакторе будет отображена заготовка для буквы "m" (все эти заготовки можно настроить по своему вкусу, эта возможность описана во встроенной документации).
![](http://upload.wikimedia.org/wikibooks/ru/thumb/1/18/006.png/220px-006.png)
После получения шаблона необходимо посмотреть, что же нам выдал ББ.
- Ключевое слово MODULE задаёт имя модуля. Если имени модуля не будет, программа с точки зрения компилятора будет считаться с содержанием ошибки. Поэтому имя модуля нужно написать. И с учётом тех общепринятых требований что есть в ББ и Компонентном Паскале (КП), примем имя модуля TestHello.
- Ключевое слово IMPORT содержит имена модулей, которые будут использованы в ходе программы -- импортированы. Если модуль "Log" сейчас будет использован (для вывода служебных сообщений в рабочий журнал -- окно слева), то модуль "Math" -- пока не потребуется (он необходим для математических вычислений). Если какие-то модули будут содержаться после ключевого слова IMPORT, но не будут использованы -- ничего страшного не произойдёт. А вот если после IMPORT имени модуля нет, а он используется в тексте программы -- КП посчитает, что программа содержит ошибку.
- Ключевое слово BEGIN обозначает начало текста программы в модуле. Именно отсюда, при обращению к модулю ББ запускает выполнение действий, которое упомянуто после BEGIN.
- Ключевое слово END обозначает окончание блока инструкций (команд части программы). Но поскольку это ключевое слово с точкой -- у этого ключевого слова сейчас особый статус -- это конец модуля. Поэтому между END и точкой необходимо вставить пробел и дописать тоже самое имя модуля, что и после ключевого слова BEGIN -- TestHello.
Если всё сделано правильно текст программы должен выглядеть так:
Hello.odc
MODULE TestHello;
IMPORT Log, Math;
BEGIN
END TestHello.
Для преобразования нашей программы к исполняемому виду необходимо нажать комбинацию клавиш <Ctrl>+<D> (либо сделать это через меню "Разработка"->"Компилировать и выгрузить").
![](http://upload.wikimedia.org/wikibooks/ru/thumb/e/e8/007.png/220px-007.png)
ББ задаст вопрос, поместить ли служебный файл в каталог "Sym". Необходимо согласиться. Каталог "Sym" выполняет служебную функцию, и вряд ли потребуется когда-либо программисту туда заглядывать. В этом каталоге создаются файлы с символическими ссылками на различные структуры текущего модуля, и при каждом преобразовании к машинному виду (компиляции) этот файл создаётся заново.
Последние штрихи
[править]Программа скомпилирована, в рабочем журнале выведен текст:
компилируется "TestHello" 4 0
Если бы были ошибки компиляции -- ББ вывел бы их в рабочий журнал. Первая цифра означает размер получившегося модуля. Всего 4 байта. Если кто-то программировал на Ассемблере под Windows, должен знать, что минимальный размер программы равен примерно 1500 байтам. Как это возможно, что программа занимает всего 4 байта? ))) Это Компонентный Паскаль!
Вторая цифра означает сколько байт отведено для связи с внешним миром. В нашем случае -- 0.
И всё же программа пока ничего не выполняет. Необходимо дополнить её до следующего вида:
Hello.odc (v.2)
MODULE TestHello;
IMPORT Log, Math;
PROCEDURE Start*;
VAR
BEGIN
Log.String('Привет, мир!');
Log.Ln
END Start;
BEGIN
END TestHello.
В этом варианте добавилось ключевое слово PROCEDURE. Пока не будем обращать на процедуру внимание, а обратим внимание на то, что она делает. Полезная работа процедуры Start начинается после ключевого слова BEGIN и заканчивается на "END Start;". В теле процедуры инструкция "Log.String" выводит заданную строку в скобках, а инструкция "Log.Ln" переводит позицию следующего печатаемого символа на новую строку (при этом сама она ничего не печатает). Если текст программы набран правильно, то после компиляции (<Ctrl>+<D>) в рабочем журнале будет добавлен следующий текст:
компилируется "TestHello"
Start теперь в символьном файле 32 0
Теперь наша программа занимает объём целых 32 байта! Но стоит и этот вариант несколько доработать. Дело в том, что модуль без объяснений зачем он создан, и как его использовать -- очень тяжело. поэтому в Компонентном Паскале предусмотрены комментарии. Дополним нашу программу необходимыми объяснениями:
Hello.odc (v.3)
MODULE TestHello;
(* это первая программа на языке
Компонентный Паскаль. Она ничего
толком не делает, кроме вывода строки
"Привет, мир!" *)
IMPORT Log, Math;
PROCEDURE Start*;
VAR
BEGIN
Log.String('Привет, мир!'); (*Вывод строки в Рабочий журнал(Log)*)
Log.Ln (*Переход на новую строку*)
END Start;
BEGIN
END TestHello.
Если программа скомпилирована без ошибок, то в рабочем журнале можно будет видеть, что размер программы остался те же 32 байта, и это правильно. Комментарии, заключённые между (* и *) никак не влияют на логику программы. Они нужны только программисту.
Получите и распишитесь
[править]![](http://upload.wikimedia.org/wikibooks/ru/thumb/1/17/008.png/220px-008.png)
Как же добиться исполнения программы? Для этого после текста программы необходимо вставить КОММАНДЕР. Это можно сделать двумя способами:
- Меню "Инструменты" -> пункт меню "Вставить коммандер"
- Одновременно нажать <Ctrl+Q>
И после появившегося круглого значка дописать:
TestHello.Start
Если всё получилось правильно окно текстового редактора должно выглядеть как на рисунке. При нажатии на круглый значок (КОММАНДЕР) произойдёт выполнение программы и в рабочем журнале появится текст:
Привет, мир!
Ну что же. Можно поздравить читателя, всё получилось)
Заключение
[править]В этой части получены первые практические результаты:
- Создана подсистема
- Создан пустой модуль
- Правильно назван и сохранён модуль
- Получены первые знания по использованию главных ключевых слов
- Программа была скомпилирована
- Программа была снабжена комментариями
- Был использован КОММАНДЕР, и программа была исполнена.
Если в этой части есть непонятные места -- их можно дополнить своими мыслями, ведь это -- ВикиУчебник открытый для всех).