Cтраница 4
Выбор структуры данных неоднозначен. Возможны различные варианты ее. Каждому варианту обычно соответствует свой метод решения задачи, более или менее сложный, а соответственно и разные по сложности и наглядности программы. Поэтому следует стремиться к выбору более целесообразной, оптимальной структуры данных. [46]
Для того, чтобы программа меньше подвергалась исправлениям при изменении ее констант, следует замещать переменными те из констант; которые могут измениться в ходе эксплуатации и модернизации. Перед использованием таких переменных в программе им необходимо присвоить значение, равное заменяемой константе. Присвоение может осуществляться, как обычным оператором присваивания, так и другими, имеющимися в языке средствами, например, в PL / I это можно осуществить с помощью атрибута INITIAL; кроме того, могут быть использованы и препро-цессорные средства ОС ЕС. При замене констант на переменные, следует обратить внимание на мнемоничность заменяющих идентификаторов, иначе наглядность программы может уменьшиться. [47]
Важным, но часто пренебрегаемым аспектом программирования для вычислительных машин является проверка диапазонов. Введение ограничений перекладывает тяжесть этой проверки с программиста на компилятор. Ограничения, в частности ограничения целого типа, следует применять всюду, где это только возможно. В самом деле, целый тип редко встречается в хорошо написанной программе на языке Паскаль, поскольку очень редко бывает так, что диапазон значений переменной целого типа совершенно непредсказуем. Использование определений ограниченных типов улучшает наглядность программы, так как указывая диапазон значений, которые может принимать г. еремен-ная, вы сообщаете тому, кто изучает вашу программу, некоторую информацию об этой переменной. [48]
Из-за малого количества регистров транслятор не производит их распределения между различными объектами, значения которых должны размещаться в регистрах, - эту задачу должен решать сам программист. В связи с этим ссылка на регистры производится, вообще говоря, путем непосредственного указания их номеров. Однако такой способ может вызвать определенные трудности при составлении программы, поскольку до окончания этой работы иногда неясна потребность в регистрах, что затрудняет их предварительное распределение для тех или иных целей. Кроме того, использование номеров регистров для ссылки на их содержимое значительно ухудшает наглядность программы и затрудняет ее понимание. Например, в записи на автокоде ВЕКТОР ( 2) число 2 означает вовсе не номер ( индекс) компоненты массива ВЕКТОР, как это обычно принято при использовании переменных с индексами, а номер регистра, в котором хранится значение индекса. [49]
В главе 3 излагаются рекомендации по разработке алгоритма, представления данных и набора тестов, начиная с анализа условия задачи. Описывается метод пошаговой разработки программы и ее тестового набора. Излагаются методы обоснования алгоритма и его описания на разных этапах разработки. Рассматриваются вопросы выбора представления обрабатываемых данных. Описываются вопросы, возникающие на этапе кодирования алгоритма. Рассматриваются дисциплина структурного программирования и другие средства повышения наглядности программ. Даются рекомендации по выбору и обоснованию набора тестов. Описываются средства повышения эффективности программ. [50]