Подпрограмма – отдельная синтаксическая единица программы, имеющая имя. Впоследствии действия, сосредоточенные в подпрограмме, могут быть многократно выполнены путем указания ее имени в программе.
Функция – подпрограмма, возвращающая значение определенного типа. В тех случаях, когда нет возвращаемого значения, тип функции в языке C++ определяется как void. Функции могут иметь набор входных параметров, которые могут передаваться как по значению, так и по ссылке.
В любой программе на C++ описание функции main() обязательно, так как выполнение программы начинается именно с нее. В олимпиадном программировании во избегании проблем с тестирующими системами тип функции main должен быть определен как int, при этом по завершении выполнения программы функция main должна возвращать 0. В теле пользовательских функций допустимо вызывать иные функции, которые описаны ранее (выше).
Приведем пример описания функции с именем builtin_popcount, которая в качестве входного параметра будет принимать целое число типа long long и возвращать целое число типа int, соответствующее количеству единичных бит двоичного представления своего аргумента:
В последствии данная функция многократно может использоваться в теле функции main или в теле иной функции, описанной ниже, например следующим образом:
Приведем пример программы, демонстрирующей использование функций:
Использование функций позволяет выносить логические части программы в отдельный программный код. Это делает программу более наглядной, а также позволяет быстрее находить ошибки в коде. Правилом хорошего тона считается оформление повторяющегося кода в виде отдельной функции. Даже, когда повторений нет, но часть кода имеет осмысленную логическую единицу, то имеет смысл описывать данную часть программы в отдельной функции.