12. Параметри на функция, странични ефекти, процедури.  Параметри псевдоними.

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

Процедури
* Функция, която не връща стойност се нарича процедура.
* Процедура за отпечатване на обект от тип Time
#include <iostream>
#include <iomanip>
using namespace std;
#include "ccc_time.cpp"

void print_time(Time t)
/* PURPOSE:  Print a time in the format h:mm:ss
   RECEIVES: t - the time to print
*/
{  cout << t.get_hours() << ":";
   if (t.get_minutes() < 10) cout << "0";
   cout << t.get_minutes() << ":";
   if (t.get_seconds() < 10) cout << "0";
   cout << t.get_seconds();
}

int main()
{  Time liftoff(7, 0, 15);
   Time now;
   cout << "Liftoff: ";
   print_time(liftoff);
   cout << "\n";

   cout << "Now: ";
   print_time(now);
   cout << "\n";
   return 0;
}

Параметри-псевдоними
* Параметър-псевдоним не е нова променлива, а псевдоним на съществуваща променлива в извикващата функция.
#include <iostream>
using namespace std;
#include "ccc_empl.cpp"

void raise_salary(Employee& e, double by)
/* PURPOSE:  Raise an employee salary
   RECEIVES: e - employee receiving raise
             by - the percentage of the raise
*/
{  double new_salary = e.get_salary() * (1 + by / 100);
   e.set_salary(new_salary);
}

int main()
{  Employee harry("Hacker, Harry", 45000.00);
   raise_salary(harry, 5);
   cout << "New salary: " << harry.get_salary() << "\n";
   return 0;
}