Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция7-8_модульность.doc.doc
Скачиваний:
14
Добавлен:
12.02.2015
Размер:
81.92 Кб
Скачать

26

Лекции по дисциплине «Информатика и программирование» 2 семестр.

Автор – Шульга Т.Э.

    1. Основы модульного программирования

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

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

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

  • модуль - это независимый блок, код (текст) которого физически и логически отделен от кода других модулей;

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

  • работа программного модуля не должна зависеть:

  • от входных данных;

  • от того, какому программному модулю предназначены его выходные данные;

  • от предыстории вызовов программного модуля;

  • размер программного модуля желательно ограничивать одной - двумя страницами исходного листинга (50-100 строк исходного кода);

  • модуль должен иметь только одну входную и одну выходную точку;

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

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

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

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

  • идентификаторы переменных и модулей должны быть смысловыми, «говорящими»;

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

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

  • следует избегать использования языковых конструкций с неочевидной семантикой и программистских «трюков».

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

Подпрограммы

Простейшим видом модуля является подпрограмма.

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

Использование подпрограмм позволяет решить следующие задачи:

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

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

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

  • в общем случае уменьшает объем используемой памяти ЭВМ;

  • сокращает время отладки программы;

Существует два основных критерия создания подпрограммы.

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

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

  1. если программа длинная:очевидно, что объем незначительно увеличится, но сама программа станет более читабельной. (Это примерно похоже на программы дисциплины на темы).

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

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

Все подпрограммы имеют следующие свойства:

  1. Обмен данными между подпрограммами осуществляется чаще всего через так называемый механизм передачи параметров (аргументов). (Аналог аргументов математической функции)

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

  3. Главной называется программа (подпрограмма), которая вызывается операционной системой.

  4. После выполнения операторов подпрограммы управление передается на оператор программы, вызвавшей данную подпрограмму, следующий за вызовом.

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

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