Функция и подпрограмма возвращают значение, но в то время как функция не может изменить значение аргументов, поступающих IN на своем пути OUT, подпрограмма может. Кроме того, вам нужно определить имя переменной для исходящего значения, где для функции вам нужно только определить входящие переменные. Например, функция:
double multi(double x, double y)
{
double result;
result = x*y;
return(result)
}
будет иметь только входные аргументы и не будет нуждаться в выходной переменной для возвращаемого значения. С другой стороны, та же операция, выполняемая с помощью подпрограммы, будет выглядеть следующим образом:
double mult(double x, double y, double result)
{
result = x*y;
x=20;
y = 2;
return()
}
Это будет делать то же самое, что и функция, то есть возвращать произведение x и y, но в этом случае вы (1) должны определить результат как переменную и (2) вы можете изменить значения x и у на обратном пути.