Писане на функции
Да пресметнем стойността на влог с начална сума 10000 лв. след 10 години
при месечно начисляване на лихвата. Нека годишната лихва да е p%.
double future_value(double p)
{
double b = 1000*pow(1 + p/(12*100),
12*10);
return b;
}
Тип на резултата, име на функцията, тип на параметъра, име на парамeтъра.
#include <iostream>
#include <cmath>
using namespace std;
double future_value(double p)
{
double b = 1000*pow(1 + p/(12*100),
12*10);
return b;
}
int main()
{
cout << "Please enter the
interest rate in percent: ";
double rate;
cin >> rate;
double balance = future_value(rate);
cout << "After 10 years, the
balance is " << balance << "\n";
return 0;
}
Документиране на функции
Връщане на стойност
* Оператор return
#include <iostream>
#include <cmath>
using namespace std;
double future_value(double initial_balance,
double p, int nyear)
{ if (nyear < 0) return 0;
if (p < 0) returen 0;
double b = 1000*pow(1 + p/(12*100),
12*10);
return b;
}
int main()
{
cout << "Interest rate in
percent: ";
double rate;
cin >> rate;
double bal = future_value(10000,
rate, 10);
cout << "After 10 years, the
balance is " << bal << "\n";
return 0;
}
* Предикат - проверка дали точка лежи в кръг.
#include "ccc_win.cpp"
bool is_inside(Point p, Circle c)
/* PURPOSE:
tests whether a point lies inside a circle
RECEIVES: p - a point, c - a circle
RETURNS: true if p lies inside
c
*/
{ double dx = p.get_x() - c.get_center().get_x();
double dy = p.get_y() - c.get_center().get_y();
double r = c.get_radius();
return dx * dx + dy * dy <=
r * r;
}
int main()
{ Circle c(Point(1, 1), 2);
cwin << c;
Point m = cwin.get_mouse("Please
click inside the circle.");
if (is_inside(m, c))
cwin <<
Message(Point(3, 3), "Congratulations!");
else
cwin <<
Message(Point(3, 3), "You missed!");
return 0;
}
Параметри на функции
* Формални параметри - параметри-променливи, декларират се при
дефиницията на функцията
* Фактически параметри - изрази за инициализация на параметрите-променливи,
задават се при извикване на функцията