Вычисления
В операторной части должен быть минимум литеральных констант (т.е. значений, которые сами себя обозначают: 25, 3.14, ‘*’, ‘Файла с таким именем не существует’). Если константа используется хотя бы два раза, опишите ее в разделе констант и используйте именованную константу.
const KolStud= 25;
pi= 3.14;
FileError= ‘Файла с таким именем не существует’;
Даже если константа используется один раз, но имеет выраженный смысл, сделайте ее именованной. Тем самым Вы убьете сразу двух зайцев. Программу будет проще читать (осмысленное имя вместо литерального значения, о смысле которого надо каждый раз догадываться). Программу будет проще модифицировать (вместо того, чтобы рыскать по всему тексту в поисках литерала, достаточно изменить одно определение именованной константы).
Не меняйте счетчик цикла с помощью присваивания (хотя Паскаль это дозволяет)!
Не используйте инициализацию переменных по умолчанию. Во-первых, Вы попадете в зависимость от конкретной реализации (разные реализации относятся к инициализации по- разному). Во-вторых, Вы рискуете перепутать переменные, описанные в разных частях программы. Инициализация может выполняться по-разному для переменных, описанных в главной программе, в процедуре, в интерфейсе модуля и в его реализации. Локальные переменные процедур, как правило, не инициализируются. Если в ходе работы над программой Вы перенесете некий фрагмент из главной программы в процедуру, отсутствие явной инициализации породит ошибку.
В выражении пробелы можно использовать для выделения старшинства операций:
a:= b + c*d
Следует помнить, что сам Паскаль пробелы игнорирует. Поэтому если Вы с помощью пробелов старшинство операций выделите неверно, то Паскаль это «съест», а себя Вы запутаете.
a:= b+c * d
Если выражение не помещается на одной строке, то прерывать его следует на знаке операции таким образом, чтобы эта строка без продолжения содержала бы синтаксическую ошибку:
if (a<b) and (c<d) and
(x=y) and (z>f)
Цель такой разбивки строк – лишняя страховка от ошибок при редактировании текста. Если в ходе редактирования случайно будет потеряна первая строка, на вторую строку транслятор почти наверняка выдаст сообщение об ошибке. А вот первая строка м. оказаться синтаксически правильной
if (a<b) and (c<d)
Тогда при случайной потере второй строки транслятор ошибки не выдаст. Надо позаботиться о том, чтобы выдал.
Если длинное выражение стоит в операторе присваивания, то после переноса продолжать его надо правее знака присваивания:
a:= b + c + d + e + f + g +
h + i + j + k
В операторе присваивания после знака присваивания перед выражением следует вставить пробел:
a:= b+c
Финальные замечания
Программа должна быть оформлена в одном стиле. Если в каких-то правилах допускается вариативность, то в конкретной программе должен применяться всюду какой-то один вариант.
Очень полезна выработка «личных стандартов». Если в каких-то правилах допускается вариативность, выберите для себя какой-то один вариант и всегда используйте только его. Это упрощает как написание программ (не надо каждый раз думать и принимать решение), так и их чтение.
Еще раз повторю. Главная цель оформления программы – представить ее в виде максимально удобном для чтения, максимально понятном.
