Notes
Outline
Functions
Functional Decomposition with Void Functions
Functional Decomposition with User-Defined Functions
Flow of Control in Function Calls
Function Parameters
Function Calls
Function Declarations and Definitions
Functional Decomposition
with void Functions
A void function does not return a function value, nor is it called from within an expression.
Any module can be coded as a function, it’s generally done to make the program easier to understand.
A void function looks like the main function except that the function heading uses void rather than int as the data type of the function and there is no return statement.
Example
Main
Print two lines of asterisks
Print “Welcome Home”
Print four lines of asterisks
Print 2 Lines
Print “**************”
Print “**************”
Print 4 Lines
Print “**************”
Print “**************”
Print “**************”
Print “**************”
Example Implementation
//*****************************************************
// Welcome program
// This program prints a “Welcome Home” message
//*****************************************************
#include <iostream>
using namespace std;
void Print2Lines();
void Print4Lines();
Example Implementation (Continued)
int main()
{
  Print2Lines();
  cout << “Welcome Home!” << endl;
    Print4Lines();
  return 0;
}
void Print2Lines()
{
  cout << “****************” << endl;
  cout << “****************” << endl;
}
Example Implementation (Continued)
void Print4Lines()
{
  cout << “****************” << endl;
  cout << “****************” << endl;
    cout << “****************” << endl;
  cout << “****************” << endl;
}
An Overview of
User-Defined Functions
When a function call is encountered, logical control is passed to the first statement in that function’s body. After the last statement of a function is executed, control returns to the point immediately following the function call.
Functions can have parameters, we could have written one function which has an input parameter which tells it how many lines of asterisks to print.
PrintLine Function with
Input Parameter
void PrintLines( int numLines )
// This function prints lines of asterisks, where
// numLines specifies how many lines to print
{
    int count;      // Loop control variable
    count = 1;
    while (count <= numLines)
    {
        cout << "***************" << endl;
        count++;
    }
}
Parameters and Arguments
The items listed in the call to a function are the arguments.
The variables declared in the function heading are the parameters.
Syntax and Semantics of
void Functions
A function call in a program results in the execution of the body of the called function.
Syntax Template
FunctionCall (to a void function)
FunctionName ( ArgumentList );
The parentheses are required even if the argument list is empty. Multiple arguments must be separated by commas.
ArgumentList
Expression , Expression …
Function Declarations
and Definitions
In C++, you must declare every identifier before it can be used. A function’s declaration must physically precede any function call.
Example from welcome program
#include <iostream>
using namespace std;
void Print2Lines();
void Print4Lines();
A function declaration announces to the compiler the name of the function, the data type of the function’s return value, and the data type of the parameters it uses.
Function Declarations
(Prototypes) and Definitions
FunctionPrototype (void function)
void FunctionName ( ParameterList );
ParameterList (in a function prototype)
DataType & VariableName  , DataType & VariableName …
FunctionDefinition (void function)
void FunctionName ( Parameter List )
{
Statement
    .
    .
    .
}
ParameterList (in a function definition)
DataType & VariableName , DataType & VariableName
    .
    .
        .
Modified Example
//*****************************************************
// Welcome program
//*****************************************************
#include <iostream>
using namespace std;
void PrintLines(int); function prototype
int main()
{
  PrintLines(2);
  cout << “Welcome Home!” << endl;
     PrintLines(4);
  return 0;
}
Modified Example
(continued)
void PrintLines( int numLines )
// This function prints lines of asterisks, where
// numLines specifies how many lines to print
{
    int count;      // Loop control variable
    count = 1;
    while (count <= numLines)
    {
        cout << "***************" << endl;
        count++;
    }
}
Modified Example
//*****************************************************
// Welcome program
//*****************************************************
#include <iostream>
using namespace std;
void PrintLines(int);  function prototype variable list
int main()
{
  PrintLines(2);
  cout << “Welcome Home!” << endl;
     PrintLines(4);
  return 0;
}
Modified Example
(continued)
void PrintLines( int numLines )
// This function prints lines of asterisks, where
// numLines specifies how many lines to print
{
    int count;      // Loop control variable
    count = 1;
    while (count <= numLines)
    {
        cout << "***************" << endl;
        count++;
    }
}
Modified Example
//*****************************************************
// Welcome program
//*****************************************************
#include <iostream>
using namespace std;
void PrintLines(int);
int main()
{
  PrintLines(2);
  cout << “Welcome Home!” << endl;
     PrintLines(4);
  return 0;
}
Modified Example
(continued)
void PrintLines( int numLines )   function definition
// This function prints lines of asterisks, where
// numLines specifies how many lines to print
{
    int count;      // Loop control variable
    count = 1;
    while (count <= numLines)
    {
        cout << "***************" << endl;
        count++;
    }
}
Modified Example
//*****************************************************
// Welcome program
//*****************************************************
#include <iostream>
using namespace std;
void PrintLines(int);
int main()
{
  PrintLines(2);
  cout << “Welcome Home!” << endl;
     PrintLines(4);
  return 0;
}
Modified Example
(continued)
void PrintLines( int numLines )   function definition
parameter list
// This function prints lines of asterisks, where
// numLines specifies how many lines to print
{
    int count;      // Loop control variable
    count = 1;
    while (count <= numLines)
    {
        cout << "***************" << endl;
        count++;
    }
}
Modified Example
//*****************************************************
// Welcome program
//*****************************************************
#include <iostream>
using namespace std;
void PrintLines(int);
int main()
{
  PrintLines(2); function call
  cout << “Welcome Home!” << endl;
     PrintLines(4); function call
  return 0;
}
Modified Example
(continued)
void PrintLines( int numLines )
// This function prints lines of asterisks, where
// numLines specifies how many lines to print
{
    int count;      // Loop control variable
    count = 1;
    while (count <= numLines)
    {
        cout << "***************" << endl;
        count++;
    }
}