2. Процедури, променливи, рекурсия
Процедури
* Функция, която не връща стойност се нарича процедура.
* Процедура за отпечатване на обект от тип 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;
}

Постъпково прецизиране, създаване на кода, проиграване

Рекурсия
* Функцията  n!  (n факториел),  n! = 1.2.3.4...n
 

n n!
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
#include <iostream>
using namespace std;
long factorial(int n)
{  if (n == 0) return 1;
   else
   {  long result = n * factorial(n - 1);
      return result;   }
}
int main()
{  cout << "Please enter a number: ";
   int n;
   cin >> n;
   cout << n << "! = " << factorial(n) << "\n";
   return 0;
}