A good strategy for attacking a complex problem is to devise a clever
way of breaking up the problem into sub-problems, and the sub-problems
into smaller and smaller sub-problems until eventually they are
so small and trivial that they can be solved individually.
Of course how that can be done is in general not necessarily trivial.
Exactly the same is true in writing complex computer programs.
This strategy is often called top-down design.
C++ allows one to decompose a complex program into smaller sub-programs
called functions.
There are many good reasons for using functions: