|
При записи операторов для указания связи между ними делают одинаковый отступ от начала строки (это действие также называют введением параграфов). Отступы, не оказывая влияния на логику программы, существенно улучшают ее читаемость. Это аналогично разделению текста на естественном языке на параграфы—логически связанные группы предложений. Правильно едеданные отступы выявляют структуру программы. Такое простое действие, как введение абзаца-в текст программы, может существенно повысить способность читателя к ее восприятию. Программа должна быть приятна для глаза. Примеры
Текст без отступов: IF (I<=1) THEN FACTORIAL := 1 ELSE BEGIN FACTORIAL : = 1; FOR J := 2 UNTIL I DO FACTORIAL := FACTORIAL * J END;
Текст с отступами:
IF (I< = 1) THEN
FACTORIAL := 1
ELSE
BEGIN
FACTORIAL := 1;
FOR J:= 2 UNTIL I DO
FACTORIAL := FACTORIAL * J
END;
Прежде всего отступы следует делать тогда, когда группа операторов заключена в одну из следующих пар:
ФОРТРАН
DO ... CONTINUE
АЛГОЛ
BEGIN ... END; •
ПЛ/1
DO; ... END; BEGIN; ... END; PROCEDURE; ... END;
Циклы — типичный случай использования отступов. Примеры таких циклов показаны ниже. ФОРТРАН:
DO 10 I = 1, 16 С = 0.0
DO 8 К = 1, 12 С = С + В(К) D(K) = SQRT(K*1.0) 8 CONTINUE
A(I) =.C 10 CONTINUE
ПЛЦ:
DO I = 1 ТО 16; С = 0.0;
DO К = 1 TO 12;
C=C+B(K); D(K) = SQRT(K)r END; A® = C; END;
АЛГОЛ W:
FOR I := 0 UNTIL 4 DO BEGIN
X(I) : = 0.0;
B(I) :=C(I); END;
Чтобы выделить символы, формирующие пару, пишите их, начиная с одной позиции. Операторы, заключенные между этими символами, обычно записываются со сдвигом на три позиции. Приведенные примеры вложенных циклов показывают, как отступы помогают определить начало и конец цикла.
Отступы делают не только при использовании циклов, их вводят и для лучшей группировки команд.
ПЛ/1:
IF (А<В) THEN DO;
С = А; А = В; В = С; END;
ФОРТРАН:
IF (A .LT. В) GO ТО 16 С = А А=В В = С 16 VAL = TAN(X)
Операторы, переход на которые определяется оператором IF, записываются с одинаковым отступом от начала строки.
Примеры, приведенные выше, показывают, какие операторы группируются оператором IF. Аналогичная группировка возможна при операторах IF„..THEN...ELSE.
ПЛ/1:
IF (А < В) THEN DO;
А = —А;
В = А*В; END; ELSE ' DO;
А = А*В;
В = —В; END;
Обычно используются последовательные отступы на три позиции. Этого расстояния вполне достаточно, чтобы указать абзац и сделать несколько уровней отступа.
Для выявления структуры программы используйте отступы.
При написании операторов ввода-вывода также можно делать отступы.
КОБОЛ:
READ имя файла AT END оператор. v WRITE имя записи
BEFORE ADVANCING идентификатор LINES AT END-OF-PAGE оператор
ПЛ/1:
GET FILE (SYSIN)
(PRICE, SALES.NUMBER); PUT FILE (SYSPRINT) EDIT
(TASK, NEW.RATE)
(SKIP(2), COL(4), A, F(7) );
Сложные операторы IF, которые содержат составные условия, легко читаются, если их надлежащим образом расположить. Один из вариантов — размещение в одной позиции слов IF, AND, OR, THEN и ELSE.
КОБОЛ:
IF (PARTS-NUMBER-PREFIX IN
MASTER-HISTORY-FILE IS LESS THAN CURRENT-NUMBER-PREFIX, OR CURRENT-DATE IS EQUAL TO ZERO), AND CURRENT-COST IN DETAIL-INVOICE-FILE IS GREATER THAN 10.00
THEN
(группа операторов, выполняемая, если условие истинно)
ELSE
(группа операторов, выполняемая, если условие ложно)
В языках, где описываются переменные, атрибуты следует располагать точно по позициям. КОБОЛ:
05 TOTAL-RECORD-COUNT PICTURE 9(03) VALUE ZERO. 05 FILLFR PICTURE X(04) VALUE SPACES.
05 TOTAL-PAGE-COUNT PICTURE 9(04).
05 FILLER PICTURE X(23) VALUE 'TOTAL COUNT OF J
RECORDS'.
■ ПЛ/1
DECLARE COST FIXED(5) INITIAL (O),
TAXES FIXED(5,2),
HEADINGS CHARACTERS) INITIAL('TOTAL COUNT OF
INSERTS');
При описании файлов для указания соподчинения используйте отступы. КОБОЛ:
01 NEW-PARTS-AREA,
05 NEW-SEQUENCE-NUMBER PICTURE 9(03). 05 NEW-PAY-NUMBER.
10 NEW-DEPT-CODE PICTURE 9(02).
10 NEW-EMPLOYEE-CODE PICTURE 9(03).
05 NEW-CHARGE-DEPT PICTURE X(05),
Для выявления структуры данных используйте отступы.
Аналогичным приемом можно воспользоваться при написании арифметических операторов: располагать в одной позиции все зна* ки равенства:
А = В+С
SIGN =BASE*COUNT
COST = PAY+BONUS
3-899
Это также улучшает читаемость программы.
Если операторы занимают несколько строк, то строки, начина" со второй, должны иметь такой отступ, чтобы находиться справа от знака равенства. Например,
SIG = В*В + C/DES — COS(A) + PLAT/TEST
Такая запись оператора лучше, чем следующая:
SIG = В*В + C/DES — COS(A) + PLAT/TEST
 Рис. 1.2. Использование отступов в ПЛ/1.
Языки АЛГОЛ W и ПЛ/1 допускают вложенные процедуры. Для понимания структуры программы нужно, чтобы уровни вложения процедур были аккуратно указаны. Один из способов сделать это — использование отступов. На рис. 1.2—1.4 показаны соответствующие примеры.
BEGIN HEAL X,Y; READ (X); Y : = X;
XF X=0 THEN WRITE (0) /EISE IF X<0 THEN WRITE! "ОШИБКА, INPUT ВНЕ ОБЛАСТИ ОПРЕДЕЛЕНИЯ") ELSE BEGIN $ >
WHILE ABS( (X-Y*T)/X) >. 000001 DO Y:=.5* (Y+X/Y); WRITE (Y) END END.
Рис. 1.3. Пример программы без комментариев и отступов.
⇐1.12. Скобки || Оглавление || 1.14. Выбор имен разделов⇒
|