Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TEOPuR_u_TEXHOJIOruu_nPOrAMMuPOBAHuR / Методические_указания_к_курсовому_проектированию.doc
Скачиваний:
148
Добавлен:
30.03.2015
Размер:
669.7 Кб
Скачать

9. Текст программы

9.1. Структура листинга

Основная часть документа должна состоять из текстов одного ила нескольких разделов, которым даны наименования. Каждый из этих разделов реализуется одним из типов символической записи, например:

  • символическая запись на исходном языке;

  • символическая запись на промежуточных языках;

  • символическое представление машинных кодов и т. п.

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

Одним из важнейших факторов, влияющих на способность программы к развитию, является ее понимаемость. Одним из существенных факторов понимаемости программы, в свою очередь, является информативность исходного текста. Если исходный текст не является хорошо читаемым, т. е. написан без соблюдения определенного стиля и системы и представляет собой «мешанину» операторов и знаков препинания, то вносить изменения в него очень сложно даже автору. Такая программа, безусловно, не является информативной. Сложности модификации значительно возрастают по прошествии времени и при необходимости работать с чужой программой. Рассмотрим ряд требований и рекомендаций, позволяющих выработать хороший стиль оформления программ, повышающий ее информативность. Изложение будем вести на примере языка C/C++, хотя все, сказанное ниже, относится к любому алгоритмическому языку.

9.2. Количество операторов в строке

Для улучшения читаемости исходного текста программы рекомендуется писать не более одного оператора в строке, что вызвано особенностями человеческого восприятия текста. Кроме того, это облегчает пошаговую отладку в символьных отладчиках.

Не следует опасаться того, что программа слишком вырастет в длину, т. к. реальные программы и без того настолько длинны, что несколько «лишних» страниц (или даже десятков страниц) не меняют общую ситуацию. Выигрыш же в понимаемости с избытком покрывает увеличение длины.

Неправильно

Правильно

int *ptr; ptr = new int [100]; ptr[0] = 0;

int *ptr;

ptr = new int [100];

ptr[0] = 0;

Два оператора в строке вполне допустимы, если второй подчинен первому, причем является единственным подчиненным, например:

for( i=0; i < size; i++ ) m[i] = 0;

Использование двух и более операторов в строке не только допустимо, но и желательно, если это позволяет подчеркнуть некую систему в локальной последовательности операторов, например:

x1 = Tr1[0]; y1 = Tr1[1]; z1 = Tr1[2];

x2 = Tr2[0]; y2 = Tr2[1]; z2 = Tr2[2];

x3 = Tr3[0]; y3 = Tr3[1]; z3 = Tr3[2];

9.3. Отступы

Правильное использование отступов являются ключевым методом обеспечения читаемости. Идея состоит в том, что отступы зрительно показывают подчиненность (иерархию) операторов. При этом директивы препроцессора (#include, #define и т.д.), описания классов, структур, типов, глобальных данных и определения функций всегда имеют наивысший приоритет, т. е. начинаются с крайней левой позиции, например:

#include <stdio.h>

#define NAME_SIZE 256

int main()

{

...

}

Основные правила использования отступов таковы.

Правило 1. Операторы одного уровня иерархии должны иметь равный отступ:

Неправильно

Правильно

printf( "Enter dimension: " );

scanf( "%d", &dim );

ptr = new int [dim];

ptr[0] = 0;

printf( "Enter dimension: " );

scanf( "%d", &dim );

ptr = new int [dim];

ptr[0] = 0;

Правило 2. Подчиненные операторы должны быть сдвинуты вправо по отношению к управляющему оператору, образуя следующий уровень иерархии:

Неправильно

Правильно

if( f == NULL )

printf( "No file\n" );

else

printf( "Start..\n" );

if( f == NULL )

printf( "No file\n" );

else

printf( "Start..\n" );

Правило 3. Размер сдвига должен быть постоянным:

Неправильно

Правильно

if( ptr == NULL )

return -1;

for( i=0; i<dim; i++ )

ptr[i] = i;

if( ptr == NULL )

return -1;

for( i=0; i<dim; i++ )

ptr[i] = i;

Размер сдвига не должен быть ни слишком мал, ни слишком велик. Оптимальная величина составляет 2-5 пробелов. Наиболее часто для сдвигов используют табуляцию, устанавливая при этом для нее желаемый шаг. Последняя возможность поддерживается большинством интегрированных сред разработчика.