1.11. Упорядочение списков по алфавиту

Языки программирования включают много списков имен переменных, причем порядок расположения имен в списке определяется самим программистом. Рассмотрим два типа списков: списки имен переменных при объявлении типа переменных и списки параметров процедуры.

1} В некоторых трансляторах ошибка указывается стрелкой под строкой,— шм. ред.

Упорядочивание имен в списке облегчает поиск имени. Приведем в качестве примера два списка: ФОРТРАН:

1) INTEGER BETA, Z, КЕР, COST, PRICE, DOBT 2) REAL I, AMOUNT, SIZE, K, BETS

Предположим, вы хотите выяснить тип переменной BETS (целая или действительная). Тогда вам придется просмотреть оба списка полностью. Если списки очень длинные, как это обычно бывает в больших программах, то процесс поиска может оказаться затруднительным и отнимет много времени. Если же имена в списках упорядочены по алфавиту, то задача становится относительно простой. " -~.

INTEGER BETA, COST, DOBT, КЕР, PRICE, Z

REAL AMOUNT, BETS, I, K, SIZE

Необязательно упорядочивать имена всех переменных одного типа в одном операторе объявления типа. Часто бывает удобнее объединять логически связанные переменные.

INTEGER BUFFI, BUFF2, CHAR, TERMTR INTEGER COST, PRICE, TAX

Нижеследующая таблица показывает, что можно упорядочить по алфавиту: , ?>арсэ*

ФОРТРАН

Списки имен в операторах описания Списки параметров

ПЛ/1

Списки имен в операторах описания Списки параметров

КОБОЛ

Имена файлов

Переменные рабочей области Списки параметров

АЛГОЛ W

Списки имен в операторах описания Списки параметров

Упорядочение по алфавиту можно провести и в списках аргументов операторов вызова процедур. Например,

CALL SUBI (А, В, СТАХ, X, Z)

Но так как аргументы оператора вызова должны соответствовать списку параметров процедуры или подпрограммы, то не всегда возможно полное упорядочение имен в списке. Кроме того, не* которые программисты предпочитают функциональное уйорядочение, например располагать сначала выходные аргументы, потом входные.

Упорядочением по алфавиту можно воспользоваться и при перечислении подпрограмм или процедур. Упорядочив подпрограммы или процедуры, можно быстрее найти нужное имя. Подпрограммы на ФОРТРАНе— это отдельные программы, и упорядочить их довольно просто. Нетрудно расположить в алфавитном порядке и процедуры на языке ПЛ/1.

' Упорядочивайте списки по алфавиту.

ФОРТРАН

Когда в большой программе, написанной на ФОРТРАНе, операторы не пронумерованы последовательно, трудно найти нужный номер. Так как нумерация операторов произвольна, то после отладки программы можно перенумеровать все операторы, чтобы упорядочить их номера. Это может сделать программа. Программа перенумерации должна уметь нумеровать с любого желаемого номера и обеспечивать любое приращение. (См. разд. "Проекты" в конце главы.)

В языках ФОРТРАН й БЕЙСИК для меток используются числа. Если программа или подпрограмма, написанная на этих языках, состоит из двух отдельных логических блоков, тб желательно зарезервировать первые одну или две цифры метки для идентификации блока, а остальные — для нумерации операторов внутри блока. Например, пусть имеются три различных блока, тогда для первого блока можно использовать метки, начиная с 1000-й, для второго — начиная с 2000-й, для третьего — с 3000-й.

КОБОЛ

В КОБОЛе упорядочить по алфавиту имена параграфов нелегко, так как порядок следования параграфов влияет на логику программы. Чтобы иметь возможность независимого выбора имени, добавляйте к мнемоническим именам параграфов номера их порядка следования. Например, если параграфам присвоены такие имена

TEST-LOOP

RUN-ERROR

REPORT-OUT то для указания относительного расположения параграфа в программе замените эти имена на следующие:

TEST-LOOP-600

RUN-ERROR-610

REPORT-OUT-620

Используемые номера должны предусматривать включение новых параграфов.

ПЛ/1

В процедурно-ориентированных языках, подобных ПЛ/1, могут быть вложенные процедуры. В таком случае упорядочение по ал-^ фавиту ограничивается порядком вложения. Одно из предложений, облегчающих нахождение вложенных процедур, — это использование имен внешних процедур как префикса или > суффикса имен вложенных процедур. Например,

ПЛ/1:

SCAN: PROCEDURE

SCANXHECK: PROCEDURE

SCANXHECK. TRACE: PROCEDURE

END SCANXHECK TRACE; SCANXHECK-TRAP: PROCEDURE

END SCANXHECK-TRAP; . END SCANXHECK; SCAN.DEBIT: PROCEDURE

END SCAN;

Здесь SCAN — имя внешней процедуры — используется как префикс для имен внутренних процедур.,

Другой способ упорядочивания, обеспечивающий, однако, меньше информации, — нумерация меток. Например, если имя процедуры— SCAN, то меткам в этой же процедуре присвоены значения SCAN010, SCAN020 и SCAN030. При использовании для нумерации лексикографических меток всегда оставляйте интервалы для внесения изменений, чтобы это не нарушило всей нумерации.

Упорядочение по алфавиту — одна из предпосылок- легкой читаемости программы, второй является аккуратность. Так, списки должны быть организованы в столбцы. Обратите внимание, насколько труднее читать список

OCOMMON ALPHA,BETA,CHI,DELTA,EPSIL,ETA,GAMMA,

1I0TA,KAPPA,LAMBDA,MU,NU,0MEGA,0MICR,PHI,PI,

2PSI,RHO,SIGMA,TAU по сравнению со следующим:

OCOMMON ALPHA, BETA, CHI, DELTA, EPSIL, ETAr

1 GAMMA, IOTA, KAPPA, LAMBDA, MU, NU,

2 OMEGA, OMICR, PHI, PI, PSI, RHO,

3 SIGMA, TAU

Чтобы расположить информацию в виде столбцов, программист должен отвести под каждое имя место, соответствующее максимальному числу символов в именах переменных списка. Подобное расположение должно использоваться во всех списках данных, включая списки ввода-вывода.

1.10. Размещение операторов || Оглавление || 1.12. Скобки


Услуги