1. Функции
  Използване на функции
   cout << sqrt(x);
* Входна стойност или стойност на параметъра: променлива, израз, константа
- различен брой на параметрите:
 main(), sqrt(x), pow(x,y)
- неявни параметри - за член-функции:
 harry.get_salary(), t.add_seconds(10)
- всеки параметър е от определен тип:
 fabs(x), getline(cin,s),
* Изходна стойност или стойност на функцията
- стойността има определен тип:
 sqrt(x), main(), c.get_center(), m.get_text(), getline(cin,s)

  Писане на функции
Да пресметнем стойността на влог с начална сума 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;
}

Параметри на функции
* Формални параметри  - параметри-променливи, декларират се при дефиницията на функцията
* Фактически параметри - изрази за инициализация на параметрите-променливи, задават се при извикване на функцията