Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
bb:redbook:105 [2017/08/08 16:34] 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. Заключение ==== | ||
- | В этой части освещены не все вопросы правильного оформления кода, но те правила, | ||