Методические рекомендации по выполнению и защите направление подготовки бакалавров

Вид материалаМетодические рекомендации
Требования и рекомендации к оформлению текста программ
Неправильно | Правильно
Неправильно | Правильно
Неправильно | Правильно
Неправильно | Правильно
Операторные скобки.
Неправильно | Правильно
Перечень нормативно-технической документации, используемой при оформлении программных документов
Перечень нормативно-технической документации
Перечень нормативно-технической документации
Подобный материал:
1   2   3   4   5

Приложение 2



Требования и рекомендации к оформлению текста программ

(на примере языка C/C++)


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


Неправильно | Правильно

———————————————+—————————————-

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

ptr[0] = 0;

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];


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


#include

#define NAME_SIZE 256


int main()

{

...

}

При использовании отступов придерживаются следующих правил:


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


Неправильно | Правильно

———————————————+————————————————

printf( “Enter dimension: “ ); printf( “Enter dimension: “ );

scanf( “%d”, &dim ); scanf( “%d”, &dim );

ptr = new int [dim]; ptr = new int [dim];

ptr[0] = 0; ptr[0] = 0;


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


Неправильно | Правильно

——————————————+————————————————

if( f == NULL ) if( f == NULL )

printf( “No file\n” ); printf( “No file\n” );

else else

printf( “Start..\n” ); printf( “Start..\n” );


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


Неправильно | Правильно

——————————————+————————————————

if( ptr == NULL ) if( ptr == NULL )

return -1; return -1;

for( i=0; i

ptr[i] = i; ptr[i] = i;


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


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


int factorial( int n ) {

if( n > 1 )

return n * factorial( n-1 );

if( n < 0 ) {

fprintf( stderr, “Factorial error: negative argument\n” );

return -1; //Заведомо невозможный результат

}

return 1;

}


Второй подход показан на том же примере:


int factorial( int n )

{

if( n > 1 )

return n * factorial( n-1 );

if( n < 0 )

{

fprintf( stderr, “Factorial error: negative argument\n” );

return -1; //Заведомо невозможный результат

}

return 1;

}


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


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


Неправильно | Правильно

——————————————+—————————————————-

while(i++

move(a,b,ptr[base+off*i]); move( a, b, ptr[base + off*i] );


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


int a, size;

char *buf;

float lenght1, lenght2;

. . .

a = 1;

lenght1 = GetLength();

lenght2 = 0;

size = (int) lenght1;


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


1) определения переменных:


char str[80];

int counter = 0;


fgets( str, 79, infile);

counter++;


2) последовательности однотипных инструкций или директив:


#include

#include

#include


#define NAME_SIZE 256

#define MAX_LEN 3000


3) функции:


int main()

{

. . .

}


char *get_name(FILE *f)

{

. . .

}

4) любые логически завершенные блоки кода:


printf( “Enter size and delta: “ ); //Блок ввода данных

scanf( “%d”, &size );

scanf( “%f”, &delta );


for( i=0; i

{ a[i] -= delta;

b[i] += delta;

}


Имена. Типичной ошибкой начинающих является стремление давать всем переменным неосмысленные однобуквенные имена, например m, n, a, s, p и т.п. Это глубоко порочная практика, поскольку при этом теряется сам смысл понятия имя. Однобуквенные имена принято давать только индексам. Исключением являются случаи, когда количество переменных в процедуре очень мало (порядка 1–3 переменных) и смысл их хорошо понятен из контекста или комментариев. Пример – описанная выше функция factorial.

Все переменные, имеющие сколько-нибудь важное значение в программе, необходимо снабжать именами, в той или иной мере характеризующими их назначение, например, filename (имя файла), int_vector (целочисленный вектор), size (размер), sum (сумма), maximum (максимум) и т.п. При плохом знании английского языка можно использовать звуковые аналоги русским буквам, например nazv_faila, razmer, summa и т.п. Это не в полной мере соответствует представлению о “хорошем стиле”, но, несомненно, гораздо нагляднее использования совсем бессмысленных имен. Еще в большей мере сказанное относится к именам функций и классов. Такие имена часто делают довольно длинными для улучшения понимаемости их смысла, а отдельные компоненты имен начинают с большой буквы, например ObjectList, ArcSet и т.п. Имена функций при этом рекомендуется начинать с глагола, например GetPersonName, SetNewDate и т.п. Альтернативным способом выделения компонент в сложных названиях является использование символа подчеркивания, например add_record, copy_object и т.п.

Все сказанное вполне относится и к именам файлов с программами. Имена файлов должны нести обязательную смысловую нагрузку, поясняя свое “содержимое”. Например, заголовочный файл, содержащий описание класса vector логичнее всего назвать vector.h или vector_description.h, а файл, содержащий реализацию методов этого класса – vector.cpp или vector_implementation.cpp. Все современные операционные системы (UNIX, Windows 95/98/NT и т.д.) поддерживают длинные имена файлов, вследствие чего искусственно упрощать и укорачивать их нет необходимости. Более того, при разработке крупного продукта количество исходных файлов измеряется сотнями. В этой ситуации невозможно “помнить”, в каком файле что находится, а значит, длинные и понятные имена жизненно необходимы. Появляется также необходимость организации хранения файлов в виде дерева. В этом случае указанные в примере файлы могут храниться в отдельном подкаталоге vector и именоваться


vector\vector.h и vector\vector.cpp.


Комментарии. Время, потраченное на написание комментариев, многократно окупится при любых модификациях программы. Однако комментировать все подряд, включая очевидные действия, как в следующем примере, тоже не стоит:


size = 10; //Присвоить size значение 10

for( i=0; i

{ . . .

}

Такого рода комментарии только загромождают программу.


Комментировать следует:


1) заголовок файла, описывая содержимое данного файла;

2) заголовок функции, поясняя назначение ее аргументов и смысл самой функции;

3) вводимые переменные и структуры данных;

4) основные этапы и особенности реализуемых алгоритмов;

5) любые места, которые трудны для быстрого понимания, в особенности использование различных программных “трюков” и нестандартных приемов.


Приложение 3



ПЕРЕЧЕНЬ НОРМАТИВНО-ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ, ИСПОЛЬЗУЕМОЙ ПРИ ОФОРМЛЕНИИ ПРОГРАММНЫХ ДОКУМЕНТОВ


ГОСТ 19.001–77 ЕСПД. Общие положения.

ГОСТ 19.101–77 ЕСПД. Виды программ и программных документов.

ГОСТ 19.102–77 ЕСПД. Стадии разработки.

ГОСТ 19.103–77 ЕСПД. Обозначение программ и программных документов.

ГОСТ 19.104–78 ЕСПД. Основные надписи.

ГОСТ 19.105–78 ЕСПД. Общие требования к программным документам.

ГОСТ 19.106–78 ЕСПД. Требования к программным документам, выполненным печатным способом.

ГОСТ 19.201–78 ЕСПД. Техническое задание. Требования к содержанию и оформлению.

ГОСТ 19.202–78 ЕСПД. Спецификация. Требования к содержанию и оформлению.

ГОСТ 19.301–79 ЕСПД. Порядок и методика испытаний.

ГОСТ 19.401–78 ЕСПД. Текст программы. Требования к содержанию и оформлению.

ГОСТ 19.402–78 ЕСПД. Описание программы.

ГОСТ 19.404–79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению.

ГОСТ 19.501–78 ЕСПД. Формуляр. Требования к содержанию и оформлению.

ГОСТ 19.502–78 ЕСПД. Описание применения. Требования к содержанию и оформлению.

ГОСТ 19.503–79 ЕСПД. Руководство системного программиста. Требования к содержанию и оформлению.

ГОСТ 19.504–79 ЕСПД. Руководство программиста.

ГОСТ 19.505–79 ЕСПД. Руководство оператора.

ГОСТ 19.506–79 ЕСПД. Описание языка.

ГОСТ 19.508–79 ЕСПД. Руководство по техническому обслуживанию. Требования к содержанию и оформлению.

ГОСТ 19.604–78 ЕСПД. Правила внесения изменений в программные документы, выполняемые печатным способом.

ГОСТ 19.701–90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

ГОСТ 19.781–74 ЕСПД. Машины вычислительные. Математическое обеспечение. Термины и определения.

ГОСТ 19.781–90. Обеспечение систем обработки информации программное. Термины и определения.


Приложение 4



ПЕРЕЧЕНЬ НОРМАТИВНО-ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ,

ИСПОЛЬЗУЕМОЙ ПРИ ОФОРМЛЕНИИ ЧЕРТЕЖЕЙ


ГОСТ 2.102–68 ЕСКД. Виды и комплектность конструкторских документов.

ГОСТ 2.104–68 ЕСКД. Основные надписи.

ГОСТ 2.106–68 ЕСКД. Текстовые документы.

ГОСТ 2.109–73 ЕСКД. Основные требования к чертежам.

ГОСТ 2.113–75 ЕСКД. Групповые и базовые конструкторские документы.

ГОСТ 2.301–68 ЕСКД. Форматы.

ГОСТ 2.302–68 ЕСКД. Масштабы.

ГОСТ 2.303–68 ЕСКД. Линии.

ГОСТ 2.304–81 ЕСКД. Шрифты чертежные.

ГОСТ 2.305–68 ЕСКД. Изображения-виды, разрезы, сечения.

ГОСТ 2.306–68 ЕСКД. Обозначения графических материалов и правила их нанесения на чертежах.

ГОСТ 2.307–68 ЕСКД. Нанесение размеров и предельных отклонений. Единая система допусков и посадок. Поля допусков и рекомендуемые посадки.

ГОСТ 2.308–79 ЕСКД. Указания на чертежах допусков форм и расположения поверхностей.

ГОСТ 2.309–73 ЕСКД. Обозначение поверхностей шероховатости.

ГОСТ 2.310–68 ЕСКД. Нанесение на чертежах обозначений покрытий, термической и других видов обработки.

ГОСТ 2.311–68 ЕСКД. Изображение резьбы.

ГОСТ 2.312–72 ЕСКД. Условные изображения и обозначения швов сварных соединений.

ГОСТ 2.314–68 ЕСКД. Указания на чертежах о маркировании и клеймении изделий.

ГОСТ 2.315–68 ЕСКД. Изображения упрощенные и условные крепежных деталей.

ГОСТ 2.316–68 ЕСКД. Правила нанесения на чертежах надписей, технических требований и таблиц.

ГОСТ 2.317–69 ЕСКД. Аксонометрические проекции.

ГОСТ 2.318–81 ЕСКД. Правила упрощенного нанесения размеров отверстий.

ГОСТ 2.412–81 ЕСКД. Правила выполнения чертежей и схем оптических изделий.

ГОСТ 2.413–72 ЕСКД. Правила выполнения конструкторской документации изделий, изготовляемых с применением электрического монтажа.

ГОСТ 2.414–75 ЕСКД. Правила выполнения чертежей жгутов, кабелей и проводов.

ГОСТ 2.415–68 ЕСКД. Правила выполнения чертежей изделий с электрическими обмотками.

ГОСТ 2.416–68 ЕСКД. Условные изображения сердечников магнитопроводов.

ГОСТ 2.417–78 ЕСКД. Правила выполнения чертежей печатных плат.

ГОСТ 2.789–73 ЕСКД. Шероховатость поверхности. Параметры и характеристики.

ГОСТ 16093–81 ЕСКД. Резьба метрическая для диаметров от 1 до б00 мм. Допуски.

Р 50–77–88 Рекомендации. ЕСКД. Правила выполнения диаграмм.


Приложение 5



ПЕРЕЧЕНЬ НОРМАТИВНО-ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ,

ИСПОЛЬЗУЕМОЙ ДЛЯ ОФОРМЛЕНИЯ ЭЛЕКТРИЧЕСКИХ СХЕМ


ГОСТ 2.701–84 ЕСКД. Схемы. Виды и типы. Общие требования к выполнению.

ГОСТ 2.702–75 ЕСКД. Правила выполнения электрических схем.

ГОСТ 2.708–81 ЕСКД. Правила выполнения электрических схем цифровой вычислительной техники.

ГОСТ 2.710–81 ЕСКД. Обозначения буквенно-цифровые в электрических схемах.

ГОСТ 2.711–81 ЕСКД. Схема деления изделия на составные части.

ГОСТ 2.721–74 ЕСКД. Обозначения условные графические в схемах. Общего применения.

ГОСТ 2.722–68 ЕСКД. Обозначения условные графические в схемах. Машины электрические.

ГОСТ 2.72 3–68 ЕСКД. Обозначения условные графические в схемах. Катушки индуктивности, дроссели, трансформаторы и магнитные усилители.

ГОСТ 2.725–68 ЕСКД. Обозначения условные графические в схемах. Устройства коммутирующие.

ГОСТ 2.726–68 ЕСКД. Обозначения условные графические в схемах. Токосъемники.

ГОСТ 2.72 7–68 ЕСКД. Обозначения условные графические в схемах. Разрядники. Предохранители.

ГОСТ 2.728–74 ЕСКД. Обозначения условные графические в схемах. Резисторы. Конденсаторы.

ГОСТ 2.72 9–68 ЕСКД. Обозначения условные графические в схемах. Приборы электроизмерительные.

ГОСТ 2.730–73 ЕСКД. Обозначения условные графические в схемах. Приборы полупроводниковые.

ГОСТ 2.7 3 1–81 ЕСКД. Обозначения условные графические в схемах. Приборы электровакуумные.

ГОСТ 2.7 3 2–68 ЕСКД. Обозначения условные графические в схемах. Источники света.

ГОСТ 2.73 3–68 ЕСКД. Обозначения условные графические детекторов ионизирующих излучений в схемах.

ГОСТ 2.7 3 4–68 ЕСКД. Обозначения условные графические в схемах. Линии сверхвысокой частоты и их элементы.

ГОСТ 2.7 3 5–68 ЕСКД. Обозначения условные графические в схемах. Антенны.

ГОСТ 2.7 3 6–68 ЕСКД. Обозначения условные графические в схемах. Элементы пьезоэлектрические и магнитострикционные, линии задержки.

ГОСТ 2.7 3 7–68 ЕСКД. Обозначения условные графические в схемах. Устройства связи.

ГОСТ 2.7 41–68 ЕСКД. Обозначения условные графические в схемах. Приборы акустические.

ГОСТ 2.7 4 3–91 ЕСКД. Обозначения условные графические в схемах. Элементы цифровой техники.

ГОСТ 2.7 4 4–68 ЕСКД. Обозначения условные графические в схемах. Устройства электрозапальные.

ГОСТ 2.7 4 5–68 ЕСКД. Обозначения условные графические в схемах. Электронагреватели, устройства и установки.

ГОСТ 2.7 4 6–68 ЕСКД. Обозначения условные графические в схемах. Генераторы и усилители квантовые.

ГОСТ 2.7 47–68 ЕСКД. Обозначения условные графические в схемах. Размеры условных графических обозначений.

ГОСТ 2.752–71 ЕСКД. Обозначения условные графические в схемах. Устройства телемеханики.

ГОСТ 2.755–87 ЕСКД. Обозначения условные графические в схемах. Устройства коммутационные и контактные соединения.

ГОСТ 2.756–76 ЕСКД. Обозначения условные графические в схемах. Воспринимающая часть электромеханических устройств.

ГОСТ 2.759–82 ЕСКД. Обозначения условные графические в схемах. Элементы аналоговой техники.

ГОСТ 2.796–81 ЕСКД. Обозначения условные графические в схемах. Элементы вакуумных систем.

ГОСТ 2.797–81 ЕСКД. Правила выполнения вакуумных систем.


ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА


Методические рекомендации по выполнению и защите


НАПРАВЛЕНИЕ ПОДГОТОВКИ БАКАЛАВРОВ:

552800 – “Информатика и вычислительная техника”

Степень (квалификация): бакалавр техники и технологии


Ответственный за выпуск Е.Д. Кожевникова

Корректор М.Л. Демченко

Оператор компьютерной верстки А.А. Илюхин

____________________________________________________________________________________

НОУ “Современная Гуманитарная Академия”