Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
###Cpp_лкц1_1.09_11_#дляБАК#29_01_12.doc
Скачиваний:
40
Добавлен:
29.04.2019
Размер:
6.42 Mб
Скачать

Часть I. Структурное программирование

twelve drummers drumming, eleven pipers piping, ten lords a-leaping.

nine ladies dancing, eight maids a-miIking, seven swans a-swimming.

six geese a-laying. five gold rings;

four calling birds, three french hens, two turtle doves

and a partridge in a pear tree.

Первый шаг в написании программы — записать на естественном языке (возможно, с применением обобщенных блок-схем), что именно и как она должна делать. Если вы не можете сформулировать алгоритм по-русски, велика вероятность того, что он плохо продуман (естественно, я не имею в виду, что надо «проговаривать» все на уровне отдельных операторов, например, «изменяя индекс от 1 до 100 с шагом 1...»). Такое описание алгоритма полезно по нескольким причинам: оно помогает в деталях продумать алгоритм, найти на самой ранней стадии некоторые ошибки, разбить программу на логическую последовательность блоков, а также обеспечить комментарии к программе.

Если алгоритм можно разбить на последовательность законченных действий (а к этому надо стремиться!), каждое законченное действие оформляется в виде функции. Каждая функция должна решать только одну задачу (не надо объединять два коротких независимых фрагмента в одну функцию). Размер функции может варьироваться в широких пределах, все зависит от того, какой размер имеет законченный фрагмент кода, выделяемый в функцию. Желательно, чтобы тело функции помещалось на 1-2 экрана: одинаково сложно разбираться в программе, содержащей несколько необъятных функций, и в россыпи из сотен подпрограмм по несколько строк каждая.

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

Необходимо тщательно выбирать имена переменных. Правильно выбранные имена могут сделать программу в некоторой степени самодокументированной. Неудачные имена, наоборот, служат источником проблем. Не увлекайтесь сокращениями, они ухудшают читаемость, и часто можно забыть, как именно было сокращено то или иное слово. Общая тенденция состоит в том, что чем больше область видимости переменной, тем более длинное у нее имя. Перед таким именем часто ставится префикс типа (одна или несколько букв, по которым можно определить тип переменной). Для счетчиков коротких циклов, напротив, лучше обойтись однобуквенными именами типа i. j или к. Имена макросов предпочтительнее записывать заглавными буквами, чтобы отличать их от других объектов программы. Не рекомендуется использовать имена, начинающиеся с символа подчеркивания, имена типов, оканчивающиеся на _t, а также идентификаторы, совпадающие с именами ресурсов стандартной библиотеки C++.

Переменные желательно инициализировать при их объявлении, а объявлять как можно ближе к месту их непосредственного использования. С другой стороны, удобно все объявления локальных переменных функции располагать в начале блока так, чтобы их было просто найти. При небольших размерах функций оба эти пожелания достаточно легко совместить.