1.2. Подпрограммы и их аргументы

Для реализации алгоритма применяется метод процедурного (модульного) программирования либо метод структурного программирования. При модульном программировании главная программа состоит из вызовов подпрограмм.

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

Подставляемые функции. Одно из преимуществ второго подхода – экономия времени, расходуемого на вызов подпрограмм.

В Си++ можно превратить вызовы подпрограмм в генерацию кодов, составляющих эти подпрограммы, в местах вызова. Такие подпрограммы определяются модификатором inline и называются подставляемыми функциями. Например, вызов подпрограммы

inline int max(int a, int b)

{

return a > b ? a : b;

}

эквивалентен действию макрокоманды

#define max(a, b) ((a) > (b) ? (a) : (b))

в том смысле, что в обоих случаях оператор

x = max(y, z);

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

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

Значения параметров по умолчанию. При объявлении функции можно разместить константы, определяющие ее предполагаемые аргументы. Предполагаемый аргумент функции отделяется от объявления формального параметра знаком «=» (равно). Аргументы, заданные по умолчанию, должны быть последними в списке параметров. Например,

int f(int n, int a = 1, char *txt = 0);

- объявлена функция трех переменных, у которой значения переменной а и указателя txt определены по умолчанию. Рассмотрим функцию:

int f (int a, int b = 10)

{

return a + b;

}

Если ее вызвать с помощью оператора x = f(100), то переменная х примет значение, равное 110, а в случае x = f(100, 20); х будет равна 120. 

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