Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
bb:redbook:105 [2017/08/08 16:33] prospero78 [4. Типичная ошибка при использовании точки с запятой] |
— (текущий) | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ===== 1.5 Оформление модуля ===== | ||
| - | |||
| - | ==== 1. Подробнее о оформлении модуля ==== | ||
| - | |||
| - | Давайте вернёмся к тексту программы **Hello.odc**: | ||
| - | |||
| - | <code oberon2> | ||
| - | MODULE TestHello; | ||
| - | (* это первая программа на языке | ||
| - | Компонентный Паскаль. Она ничего | ||
| - | толком не делает, | ||
| - | " | ||
| - | IMPORT Log, Math; | ||
| - | |||
| - | |||
| - | PROCEDURE Start*; | ||
| - | VAR | ||
| - | BEGIN | ||
| - | Log.String(' | ||
| - | Log.Ln | ||
| - | END Start; | ||
| - | |||
| - | BEGIN | ||
| - | END TestHello. | ||
| - | </ | ||
| - | |||
| - | Вне фокуса внимания в этом примере остался разбор мелких важных деталей в оформлении кода. Аккуратно оформленный и опрятный код не только позже облегчит понимание самого кода, но и позволит его упростить, | ||
| - | |||
| - | ==== 2. Заглавные буквы ==== | ||
| - | В **Компонентном Паскале** заглавные буквы используются только для // | ||
| - | <code oberon2> | ||
| - | s := мКонст.макс_длин_массива | ||
| - | </ | ||
| - | Опа! Приятный сюрприз! В **Компонентном Паскале** можно использовать для определения имён модулей, | ||
| - | |||
| - | ==== 3. Точка с запятой ==== | ||
| - | Это важная синтаксическая единица языка. Точно также // | ||
| - | - Не ставят после ключевых слов: **IMPORT**, **TYPE**, **VAR**, **BEGIN** — после этих ключевых слов может ничего не идти, но как правило, | ||
| - | - Не ставят точку с запятой перед ключевым словом **END**. А зачем? Если есть ключевое слово **END** — и так понятно, | ||
| - | - После последнего **END** ставится точка, а не точка с запятой. Это особый случай, | ||
| - | |||
| - | <code oberon2> | ||
| - | MODULE TestHello; | ||
| - | (* это первая программа на языке | ||
| - | Компонентный Паскаль. Она ничего | ||
| - | толком не делает, | ||
| - | " | ||
| - | IMPORT Log, Math; | ||
| - | |||
| - | |||
| - | PROCEDURE Start*; | ||
| - | VAR | ||
| - | BEGIN | ||
| - | Log.String(' | ||
| - | Log.Ln | ||
| - | END Start; | ||
| - | |||
| - | BEGIN | ||
| - | END TestHello. | ||
| - | |||
| - | Ха-ха! А здесь у меня будет анекдот **жирными буквами**с бородой. И это не является ошибкой! Он очень смешной)) | ||
| - | # | ||
| - | </ | ||
| - | |||
| - | **Рис. 1 Добавление любой информации после END.** | ||
| - | ==== 4. Типичная ошибка при использовании точки с запятой ==== | ||
| - | Заключается она в том, что этой самой точки с запятой попросту нет. Вот тут **КП** откажется компилировать текст, но не бросит программиста, | ||
| - | |||
| - | {{ : | ||
| - | Рис. 2 Подсветка места ошибки. | ||
| - | |||
| - | Место ошибки будет отмечено серым квадратом с диагональным перечёркиванием. После устранения ошибки, | ||
| - | |||
| - | | ||
| - | |||
| - | Рис. 3 Причина ошибки в КП. | ||
| - | |||
| - | FIXME | ||
| - | |||
| - | Не правда ли, очень удобно? | ||
| - | |||
| - | ==== 5. Именование процедур и переменных ==== | ||
| - | Как действуют правила относительно ключевых слов, также действуют правила относительно именования процедур и переменных. Пока не производился разбор процедуры Start, но уже полезно знать, что процедуры именуются с большой буквы. Так, например, | ||
| - | |||
| - | Что касается переменных, | ||
| - | |||
| - | |||
| - | ==== 6. Размещение инструкций ==== | ||
| - | |||
| - | Часто можно встретить код, представленный ниже | ||
| - | |||
| - | Hello.odc (v3.1): | ||
| - | <code oberon2> | ||
| - | MODULE TestHello; | ||
| - | (* это первая программа на языке | ||
| - | Компонентный Паскаль. Она ничего | ||
| - | толком не делает, | ||
| - | " | ||
| - | IMPORT Log, Math; | ||
| - | |||
| - | |||
| - | PROCEDURE Start*; | ||
| - | VAR | ||
| - | BEGIN | ||
| - | Log.String(' | ||
| - | END Start; | ||
| - | |||
| - | BEGIN | ||
| - | END TestHello. | ||
| - | </ | ||
| - | | ||
| - | |||
| - | Два вызова процедур из модуля " | ||
| - | |||
| - | ==== 7. Размещение комментариев ==== | ||
| - | Код без каких-либо комментариев является дурным тоном. Код, в котором комментариев столько, | ||
| - | |||
| - | Правильный комментарий должен содержать пояснения неочевидных операций, | ||
| - | |||
| - | <code oberon2> | ||
| - | PROCEDURE GetCoordX(): | ||
| - | (* эта процедура возвращает координату Х *) | ||
| - | BEGIN | ||
| - | RETURN x | ||
| - | END Start; | ||
| - | </ | ||
| - | |||
| - | Зачем вставлять этот комментарий, | ||
| - | |||
| - | ==== 8. Отступы в коде и подсветка ==== | ||
| - | Практически везде по тексту модуля используются отступы. Отступы не являются требованием языка, как это сделано в **python**. **КП** прекрасно скомпилирует модуль и без отступов. Но всё-таки с отступами текст выглядит более аккуратно и ухожено. Не говоря уже о том, что такой текст легче воспринимается для понимания кода. Подсветка текста и выравнивание может быть сделана автоматически через: | ||
| - | |||
| - | > Меню " | ||
| - | |||
| - | (Подсистема Cpc может быть скачана и установлена с сайта Цинна. О такой возможности будет рассказано отдельно) | ||
| - | |||
| - | Код будет отформатирован на столько, | ||
| - | |||
| - | Если читатель обратил внимание, | ||
| - | |||
| - | Сделаны лишь два исключения: | ||
| - | - Комментарии выделяются курсивом | ||
| - | - Экспортируемые процедуры и переменные подсвечиваются жирным. | ||
| - | |||
| - | ==== 9. Заключение ==== | ||
| - | В этой части освещены не все вопросы правильного оформления кода, но те правила, | ||