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

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


bb:redbook:104

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
bb:redbook:104 [2017/08/08 16:20]
prospero78 [5. Последние штрихи]
— (текущий)
Строка 1: Строка 1:
-===== 1.4 Hello, World ===== 
  
-==== 1. Первая программа ==== 
-По старой доброй традиции, в каждом языке программирования первой программой является программа выводящая на экран строку "Hello, World!" ("Привет, мир!"). И здесь, прежде чем будет получен необходимый результат необходимо выполнить несколько служебных действий. 
- 
-==== 2. Создание файла с текстом программы ==== 
-Для этого необходимо выполнить следующие действия: 
- 
-  * Мышкой нажать меню "Файл" 
-  * Выбрать пункт меню "Новый" 
- 
-Либо тоже самое через стандартную комбинацию клавиш: <Ctrl+N> В итоге должно получиться окно примерно следующего вида: 
- 
-{{  :bb:redbook:002.jpg  }} 
- 
-** Рис. 2 BlackBox после создания нового файла ** 
- 
-Сразу нужно отметить, что файлы создаваемые в **ББ** имеют особую структуру. Поэтому открывать их в простом текстовом редакторе, там их редактировать и сохранять — значит //испортить// такой файл. Дело в том, что **ББ** хранит в этих файлах служебные данные, необходимые для корректной работы **Компонентного Паскаля**. 
- 
-Дополнительная информация необходима для корректной сборки программ. В качестве такой информации выступают дата и время редактирования файла, какие модули требуются для корректной работы и т. д. **Компонентный Паскаль** — это язык //промышленного// программирования, за надёжность приходится платить вынужденным усложнением среды. Впрочем, едва ли когда-либо потребуется вмешиваться в работу среды. 
- 
-==== 3. Сохранение файла ==== 
-При сохранении файлов в ББ это происходит по принятым правилам. Куча набросанных файлов в каталоге очень скоро будет вызывать вопросы, а что и к чему относится. Для избежания подобного бардака в ББ принята иерархия подсистем. По сути, это отдельная папка с особой структурой, в которой хранится вся необходимая информация этой подсистемы. Подсистема вполне может быть отдельным проектом. 
- 
-Для правильного сохранения файла, необходимо выполнить следующие действия: 
- 
-  * Мышкой выбрать пункт меню "Файл" 
-  * Далее выбрать пункт меню "Сохранить" (если файл новый — будет запрошено имя файла) или "Сохранить как" (в любом случае будет запрошено новое имя существующего файла), либо использовать комбинацию клавиш **<Ctrl+S>**. 
- 
-{{  :bb:redbook:003.jpg  }} 
- 
-**Рис.3 Окно сохранения файла в BlackBox ** 
- 
-В появившимся диалоговом окне справа сверху есть кнопка для создания нового каталога. Вот его и нужно создать с именем "Test". Это будет наша подсистема. 
- 
-{{  :bb:redbook:004.jpg  }} 
- 
-**Рис.4 Создание подсистемы в BlackBox** 
-  
-Но этого ещё недостаточно. Мало создать такую подсистему, нужно ещё определить модуль программы в нужный подкаталог. Общепринятая практика сохранять текстовые файлы ББ в подсистеме в каталог с именем "Mod" (сокращение от "Module"). После этого, необходимо задать имя файла, например, "Hello". Расширение задавать необязательно, оно будет присвоено автоматически. 
- 
-{{  :bb:redbook:005.jpg  }} 
- 
- 
-** Рис.5 Правильно сохранённый файл в BlackBox ** 
-  
-И если всё сделано верно в заголовке окна должна появиться надпись "(Test)Hello". Обратите внимание на то, как отделена в //круглых// скобках часть "Test" — это как раз указание на то, что модуль "Hello" является частью подсистемы "Test". Точно также следует поступать и с остальными модулями. 
- 
-==== 4. Набор текста программы ==== 
-Набор текста осуществляется как и в любом текстовом редакторе. В ББ сделаны некоторые удобства по ускорению набора. Так например, достаточно нажать букву "m" и далее <F5>, и в текстовом редакторе будет отображена заготовка для буквы "m" (все эти заготовки можно настроить по своему вкусу, эта возможность описана во встроенной документации)(( Обратите внимание: в базовой сборке BlackBox этого компонента нет. Вам придётся устанавливать его самостоятельно )). 
- 
- 
-{{ :bb:redbook:f5.png }}  
- 
-  
-**Рис. 6 Автоподстановка для символа "m" по нажатию <F5> в BlackBox.** 
- 
-После получения шаблона необходимо посмотреть, что же нам выдал **ББ**. 
- 
-Ключевое слово **MODULE** задаёт имя модуля. Если имени модуля не будет, программа с точки зрения компилятора будет считаться с содержанием ошибки. Поэтому имя модуля нужно написать. И с учётом тех общепринятых требований что есть в **ББ** и **Компонентном Паскале** (**КП**), примем имя модуля TestHello. 
- 
-Ключевое слово **IMPORT** содержит имена модулей, которые будут использованы в ходе программы — импортированы. Если модуль "Log" сейчас будет использован (для вывода служебных сообщений в рабочий журнал — окно слева), то модуль "Math" — пока не потребуется (он необходим для математических вычислений). Если какие-то модули будут содержаться после ключевого слова **IMPORT**, но не будут использованы — ничего страшного не произойдёт. А вот если после **IMPORT** имени модуля нет, а он используется в тексте программы — **КП** посчитает, что программа содержит ошибку. 
- 
-Ключевое слово **BEGIN** обозначает начало текста программы в модуле. Именно отсюда, при обращению к модулю **ББ** запускает выполнение действий, которое упомянуто после **BEGIN**. 
- 
-Ключевое слово **END** обозначает окончание блока инструкций (команд части программы). Но поскольку это ключевое слово с точкой — у этого ключевого слова сейчас особый статус — это конец модуля. Поэтому между **END** и точкой необходимо вставить пробел и дописать тоже самое имя модуля, что и после ключевого слова **MODULE** — TestHello. 
-Если всё сделано правильно текст программы должен выглядеть так: 
- 
-**Hello.odc** 
-<code oberon2> 
-MODULE TestHello; 
- IMPORT  Log, Math; 
-  
-  
-BEGIN 
-END TestHello. 
-</code> 
-==== 5. Последние штрихи ==== 
-Программа скомпилирована, в рабочем журнале выведен текст: 
- 
- > компилируется "TestHello"     0 
- 
-Если бы были ошибки компиляции — ББ вывел бы их в рабочий журнал. Первая цифра означает размер получившегося модуля. **Всего 4 байта**. Если кто-то программировал на **Ассемблере** под **Windows**, должен знать, что минимальный размер программы равен примерно 1500 байтам. Как это возможно, что программа занимает всего 4 байта? ))) Это **Компонентный Паскаль**! 
-Вторая цифра означает сколько байт отведено для связи с внешним миром. В нашем случае — 0. 
-И всё же программа пока ничего не выполняет. Необходимо дополнить её до следующего вида: 
- 
-Hello.odc (v.2) 
- 
-<code oberon2> 
-MODULE TestHello; 
- 
-IMPORT Log, Math; 
- 
- 
-PROCEDURE Start*; 
-VAR 
-BEGIN 
- Log.String('Привет, мир!'); 
- Log.Ln 
-END Start; 
- 
-BEGIN 
-END TestHello. 
-</code> 
- 
-В этом варианте добавилось ключевое слово PROCEDURE. Пока не будем обращать на процедуру внимание, а обратим внимание на то, что она делает. Полезная работа процедуры Start начинается после ключевого слова BEGIN и заканчивается на "END Start;". В теле процедуры инструкция "Log.String" выводит заданную строку в скобках, а инструкция "Log.Ln" переводит позицию следующего печатаемого символа на новую строку (при этом сама она ничего не печатает). Если текст программы набран правильно, то после компиляции (<Ctrl+K>) в рабочем журнале будет добавлен следующий текст: 
- 
-  > компилируется "TestHello" 
-  > Start  теперь в символьном файле   32   0 
- 
-Теперь наша программа занимает объём целых 32 байта! Но стоит и этот вариант несколько доработать. Дело в том, что модуль без объяснений зачем он создан, и как его использовать — очень тяжело. поэтому в Компонентном Паскале предусмотрены комментарии. Дополним нашу программу необходимыми объяснениями: 
-<code oberon2> 
-MODULE TestHello; 
- (* это первая программа на языке 
- Компонентный Паскаль. Она ничего 
- толком не делает, кроме вывода строки 
- "Привет, мир!" *) 
- 
- IMPORT Log, Math; 
- 
- 
- PROCEDURE Start*; 
- VAR 
- BEGIN 
- Log.String('Привет, мир!'); 
- Log.Ln 
- END Start; 
- 
-BEGIN 
-END TestHello. 
-</code> 
-==== 6. Получите и распишитесь ==== 
-  
-Как же добиться исполнения программы? Посмотрите полезный код с ключевым словом **PROCEDURE**. Пока оставим объяснения, что это значит. Просто повторите. Для этого после текста программы необходимо вставить КОММАНДЕР. Это можно сделать двумя способами: 
- 
-  * Меню "Инструменты" -> пункт меню "Вставить коммандер" 
-  * Или одновременно нажать <Ctrl+Q>  
- 
-И после появившегося круглого значка дописать: 
- 
- > TestHello.Start 
- 
-Если всё получилось правильно окно текстового редактора должно выглядеть как на рисунке. С целью облегчения процедуры этот значок — КОММАНДЕР вставлен прямо здесь: 
-  
- 
-{{ :bb:redbook:f5b.jpg }} 
- 
-  
-При нажатии на круглый значок (КОММАНДЕР) произойдёт выполнение программы и в рабочем журнале появится текст: 
- 
- > Привет, мир! 
- 
-Ну что же. Можно поздравить читателя, всё получилось) 
-==== 7. Заключение ==== 
-В этой части получены первые практические результаты: 
- 
-  * Создана подсистема 
-  * Создан пустой модуль 
-  * Правильно назван и сохранён модуль 
-  * Получены первые знания по использованию главных ключевых слов 
-  * Программа была скомпилирована 
-  * Программа была снабжена комментариями 
-  * Был использован КОММАНДЕР, и программа была исполнена. 
- 
-Если в этой части есть непонятные места — их можно дополнить своими мыслями, ведь это — учебник открытый для всех). 
bb/redbook/104.1502198400.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)