Для реализации алгоритма применяется метод процедурного (модульного) программирования либо метод структурного программирования. При модульном программировании главная программа состоит из вызовов подпрограмм.
При структурном программировании сначала разрабатывают схему, состоящую из блоков, а затем производят детализацию каждого блока.
Подставляемые функции. Одно из преимуществ второго подхода – экономия времени, расходуемого на вызов подпрограмм.
В Си++ можно превратить вызовы подпрограмм в генерацию кодов, составляющих эти подпрограммы, в местах вызова. Такие подпрограммы определяются модификатором 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.
Второе правило при определении параметров по умолчанию заключается в том, что при перегрузке функции вызываемая подпрограмма должна быть однозначно определена.