Чтобы легче было понимать и корректировать текст программ можно ее фрагменты выделять в отдельные подпрограммы.

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

Такие фрагменты записывают ниже функции main() после ее последней фигурной скобки.

Им дают название, оснащают входящими и возвращаемыми аргументами и возвращаемым значением самой функции.

Пример.

Вывести в окно сообщений текст, в зависимости от кода, передаваемого в подпрограмму.


int main()

{

   cout << "Строка из функции с арг. 1= " << get_string(1) << ", то же но с арг. 2 = " << get_string(2);

}

// объявление функции, принимает аргумент arg - целое число.

// возвращает строковое значение.

string get_string(int arg)

{

   string sresult;

   if (arg == 1)   // если arg равно 1

   {

      sresult = "строка 1";  // то присвоить переменной sresult это значение.

   }

   else if (arg == 2) // если же arg равно 2

   {

      sresult = "строка 2";

   }

   else  // если же ни 1 ни 2, то при любом другом значении

   {

      sresult = "строка N";  // присвоить переменной sresult это значение.

   }

   return sresult;  // вернуть в качестве значения функции содержимое переменной sresult.

}


В подпрограмму могут передаваться сразу несколько переменных (аргументов). Тогда они пишутся через запятую.


Пример.

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


double my_func(int a, int b, double c)

{

   return 10;

}


Функции могут возвращать значения через аргументы, у которых стоит знак '&'.

Это называется ссылка.


Пример.

Передать в функцию множитель Value.

Получить из функции ширину и высоту.


int main()
{
    int h,w;
    myfunc(h,w,2);
    cout « h « "x" « w ;   // результат 2000x2000;
}

int myfunc(int &Height, int &Width, int Value)
{
        Height = 2000;
        Width = 1000  * Value;
        return 0;
}



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