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

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

§  Программа должна разделяться на независимые части – модули

§  Модуль – независимый блок, код которого физически и логически отделен от кода других модулей.

§  Модуль выполняет только одну логическую функцию

§  Размер модуля не должен превышать 100 операторов.

§  Модуль имеет одну входную и одну (или несколько) выходных точек.

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

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

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

§  Идентификаторы всех переменных должны быть смысловыми.

§  Родственные группы идентификаторов должны начинаться с одинакового префикса.

§  Использовать только стандартные управляющие конструкции (выбор, цикл, выход, блок).

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

§  Не допускать вложенности условных операторов более 3-х уровней.

§  Избегать «трюков» с неочевидной семантикой.

В С++ уровень абстракции программы повышается с помощью группировки функций (как единственного вида подпрограмм) и связанных с ними данных в отдельные файлы (модули), компилируемые раздельно. Получившиеся в результате компиляции объектные модули объединяются в исполняемую программу с помощью компоновщика. Разбиение на модули уменьшает время перекомпиляции и облегчает процесс отладки, скрывая несущественные детали за интерфейсом модуля и позволяя отлаживать программу по частям (или разными программистами). Модуль содержит данные и функции их обработки. Другие модули пользуются для обработки данных функциями первого модуля. Чтобы использовать модуль, нужно знать только его интерфейс, а не детали реализации. Скрытие деталей реализации называется инкапсуляцией. Пример инкапсуляции – помещение фрагмента кода в функцию и передача всех необходимых ей данных в качестве параметров. Чтобы использовать такую функцию, надо знать только ее интерфейс, определяемый заголовком (имя, тип возвращаемого значения, типы и количество параметров). Интерфейсом модуля являются заголовки всех функций и описания доступных извне типов, переменных и констант. Описания глобальных программных объектов во всех модулях программы должны быть согласованы.

Модульность в С++ поддерживается с помощью директив препроцессора, пространств имен, классов памяти и раздельной компиляции.

Функции в С++

Функция – это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение. Функция начинает выполняться в момент вызова.

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

Типы функций:

·  активные (выполнение начато, но не закончено),