Смекни!
smekni.com

НН Трушин Информатика (стр. 15 из 37)

Существуют две принципиальные разновидности циклических структур. Циклическая структура "пока" (цикл с предусловием) обеспечивает повторение действия пока логическое условие имеет значение "истина". Как только значение условия становится "ложь", выполнение действия прекращается и управление передается следующей алгоритмической структуре.

Циклическая структура "до" (цикл с постусловием) обеспечивает выполнение действия один раз даже при начальном значении условия "ложь". Количество повторений действия в циклах "пока" и "до" заранее неизвестно, однако возможен вариант цикла, в котором количество повторений задается счетчиком.

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

5.2.4.5. Принципы модульного программирования

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

а) б)

в) г)

Рис. 5.1. Базовые алгоритмические структуры: а – следование; б) – разветвление;

в – цикл с предусловием; г – цикл с постусловием.

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

• повышается надежность программы, так как относительно малый размер модуля (порядка 100 операторов языка программирования) позволяет провести более полное тестирование программы;

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

• модульное построение программы позволяет выполнять ее на ЭВМ с небольшим объемом оперативной памяти (при этом используется оверлейная структура программы).

Модульная программа может иметь одну из следующих основных структур: монолитно-модульную, модульно-последовательную, модульноиерархическую (рис. 5.2).

Монолитно-модульная структура включает в себя большой модуль, реализующий основную часть функций программы. Из этой части имеется небольшое число обращений к другим модулям небольшого размера. Преимущества модульного программирования в этом случае проявляются не в полной мере.

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

Модульно-иерархическая структура включает в себя модули, относящиеся к нескольким уровням подчиненности. Модули верхних уровней управляют работой модулей нижних уровней. Здесь реализуется принцип вертикального управления, когда принятие основных решений выносится на более высокий уровень. При этом становится понятной логика алгоритма и упрощается внесение изменений в программу. Такая структура позволяет решать очень сложные задачи.

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

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

Основные недостатки восходящего проектирования: сложность объединения отдельных модулей; трудность исправления ошибок, допущенных на ранних стадиях проектирования.

Нисходящее (сверху вниз, аналитическое) проектирование начинается с постановки задачи и развивается далее путем разбиения ее на подзадачи. При этом считается, что если каждая подзадача решена правильно, а полученные

Рис. 5.2. Основные виды модульных структур программ: а – монолитно-модульная;

б – модульно-последовательная; в – модульно-иерархическая.

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

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

Реальная стратегия разработки алгоритмов и программ в большинстве случаев представляет собой разумное сочетание нисходящего и восходящего способов проектирования, называемое встречным проектированием.

5.2.4.6. Программирование в стандартизованном стиле

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

Программирование в стандартизованном стиле включает в себя правила размещения фрагментов текста программы, составления комментариев, выбора идентификаторов (имен), обеспечения наглядности логической структуры программы.

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

- заголовочных комментариев;

- объявлений данных;

- внутренних процедур и функций; -основного текста.

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

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

- идентификатор (имя) модуля;

- функциональное назначение модуля;

- используемый математический метод;

- описание входных и выходных данных;

- перечень вызываемых подпрограмм (модулей);

- описание внешних эффектов;

- принятые ограничения и допущения;

- сведения о разработчике;

- дата разработки;

- описание внесенных изменений.

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

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

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

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

• сокращению подлежит не более трех первых слов из описания назначения объекта;

• в аббревиатуру всегда включаются начальные буквы слов;

• аббревиатура должна содержать от 6 до 15 букв; согласные буквы всегда важнее гласных; начало слова всегда важнее его конца.

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

Правила обеспечения наглядности логической структуры программ состоят в следующем:

• использовать дополнительные пробелы для выделения составных частей операторов;

• не располагать на одной строке текста программы более одного оператора;

• использовать дополнительные скобки для пояснения структуры выражений;

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

Соблюдение перечисленных правил облегчает чтение текста программы, поиск и исправление ошибок, модификацию программы.

5.2.5. Отладка и тестирование программ

Разработка программ для ЭВМ – это трудоемкий и сложный процесс, редко проходящий без ошибок. Основная цель этапа отладки – это выявление и устранение ошибок в программе. По существующим оценкам на отладку программист затрачивает от 20 до 40% времени, отводимого на разработку программы. Для больших программных комплексов со сложным алгоритмом работы продолжительность отладки может быть еще больше. Причинами ошибок, возникающих в процессе программирования, могут быть:

• неправильная постановка задачи;

• неправильная разработка алгоритма;

• неправильное программирование алгоритма; нарушение правил записи операторов программы; неудачный выбор исходных данных и многие другие.