0% found this document useful (0 votes)
133 views132 pages

Chapter 6 Functions: For Educational Purpose Only. Not To Be Circulated Without This Banner

This document discusses functions in C++. It covers defining and calling functions, function prototypes, and passing arguments into functions through parameters. The key points are: - Programs can be broken up into smaller manageable functions. - A function definition contains the code that makes up the function, while a function call executes the function. - Function prototypes declare functions without defining them, allowing functions to be called before they are defined. - Arguments passed during a function call are received as parameters inside the function definition. The values of arguments can be accessed and used within the function.

Uploaded by

dbhansali57
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
133 views132 pages

Chapter 6 Functions: For Educational Purpose Only. Not To Be Circulated Without This Banner

This document discusses functions in C++. It covers defining and calling functions, function prototypes, and passing arguments into functions through parameters. The key points are: - Programs can be broken up into smaller manageable functions. - A function definition contains the code that makes up the function, while a function call executes the function. - Function prototypes declare functions without defining them, allowing functions to be called before they are defined. - Arguments passed during a function call are received as parameters inside the function definition. The values of arguments can be accessed and used within the function.

Uploaded by

dbhansali57
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 132

Chapter 6 Functions

For Educational Purpose only. Not to be circulated without this banner.

Starting Out with C++, 3rd Edition

6.1 Focus on Software Engineering:


Breaking Up Your Programs
Programs may be broken up into many
manageable functions.
For Educational Purpose only. Not to be circulated without this banner.

Starting Out with C++, 3rd Edition

6.2 Defining and Calling Functions


A function call is a statement that causes a
function to execute. A function definition contains
the statements that make up the function.
For Educational Purpose only. Not to be circulated without this banner.
The line in the definition that reads void
main(void) is called the function header.

Starting Out with C++, 3rd Edition

Figure 6-1
Return Type

Parameter List (This one is empty)

Name
Body
For Educational Purpose only. Not to be circulated without this banner.
void main(void)
{
cout << Hello World\n;
}

Starting Out with C++, 3rd Edition

Calling a Function
Function Header
void displayMessage()
For Educational
Purpose
Function
Callonly. Not to be circulated without this banner.
displayMessage();

Starting Out with C++, 3rd Edition

Program 6-1
#include <iostream.h>

For

//******************************************
// Definition of function displayMessage. *
// This function displays a greeting.
*
//******************************************
void displayMessage()
{
cout << "Hello
fromonly.
the function
Educational
Purpose
Not to bedisplayMessage.\n";
circulated without
}

this banner.

void main(void)
{
cout << "Hello from main.\n";
displayMessage();
cout << "Back in function main again.\n";
}

Starting Out with C++, 3rd Edition

Program Output
Hello from main.
Hello from the function displayMessage.
Back in function main again.
For Educational Purpose only. Not to be circulated without this banner.

Starting Out with C++, 3rd Edition

Figure 6-2
void displayMessage()
{
cout << Hello from the function displayMessage.\n;
}
void main(void)
For Educational
Purpose only. Not to be circulated without this banner.
{
cout << Hello from main.\n;
displayMessage();
cout << Back in function main again.\n;
}

Starting Out with C++, 3rd Edition

Program 6-2
//The function displayMessage is repeatedly called from a loop
#include <iostream.h>

For

//******************************************
// Definition of function displayMessage. *
// This function displays a greeting.
*
//******************************************
void displayMessage()
{
cout << "Hello from the function displayMessage.\n";
Educational
Purpose only. Not to be circulated without
}

this banner.

void main(void)
{
cout << "Hello from main.\n";
for (int count = 0; count < 5; count++)
displayMessage();
// Call displayMessage
cout << "Back in function main again.\n";
}

Starting Out with C++, 3rd Edition

Program Output
Hello from main.
Hello from the function displayMessage.
Hello from the function displayMessage.
Hello from the function displayMessage.
For Educational Purpose only. Not to be circulated without this banner.
Hello from the function displayMessage.
Hello from the function displayMessage.
Back in function main again.

10

Starting Out with C++, 3rd Edition

Program 6-3
// This program has three functions: main, first, and second.
#include <iostream.h>
//*************************************
// Definition of function first.
*
// This function displays a message. *
//*************************************

For Educational Purpose only. Not to be circulated without this banner.


void first(void)
{
cout << "I am now inside the function first.\n";
}

11

Starting Out with C++, 3rd Edition

Program continues
//*************************************
// Definition of function second.
*
// This function displays a message. *
//*************************************

void second(void)
{
cout << "I am now inside the function second.\n";
}

For Educational Purpose only. Not to be circulated without this banner.


void main(void)
{
cout << "I am
first();
//
second(); //
cout << "Back
}

starting in function main.\n";


Call function first
Call function second
in function main again.\n";

12

Starting Out with C++, 3rd Edition

Program Output
I am starting in function main.
I am now inside the function first.
I am now inside the function second.
For Educational
Purpose only.
to be circulated without this banner.
Back in function
mainNot
again.

13

Starting Out with C++, 3rd Edition

Figure 6-3
void first(void)
{
cout << I am now inside function first.\n;
}

For

void second(void)
{
Educational
Purpose
only.
Not to
be circulated
without
cout <<
I am now
inside
function
second.\n;
}

this banner.

void main(void)
{
cout << I am starting in function main.\n;
first();
second();
cout << Back in function main again.\n
}

14

Starting Out with C++, 3rd Edition

Program 6-4
// This program has three functions: main, deep, and deeper

#include <iostream.h>
//**************************************
// Definition of function deeper.
*
//Educational
This function
displays
a to
message.
* without this banner.
For
Purpose
only. Not
be circulated
//**************************************
void deeper(void)
{
cout << "I am now inside the function deeper.\n";
}

15

Starting Out with C++, 3rd Edition

Program continues
//**************************************
// Definition of function deep.
*
// This function displays a message.
*
//**************************************
void deep()
{
cout << "I am now inside the function deep.\n";
deeper(); //Purpose
Call function
deeper
For Educational
only. Not
to be circulated without
cout << "Now I am back in deep.\n";
}
void main(void)
{
cout << "I am starting in function main.\n";
deep();
// Call function deep
cout << "Back in function main again.\n";
}

this banner.

16

Starting Out with C++, 3rd Edition

Program Output
I am starting in function main.
I am now inside the function deep.
I am now inside the function deeper.
For Educational
Not to be circulated without this banner.
Now I amPurpose
back inonly.
deep.
Back in function main again.

17

Starting Out with C++, 3rd Edition

Figure 6-4
void deep(void)
{
cout << I am now inside function deep.\n;
deeper();
cout << Now I am back in deep.\n;
}

For

void deeper(void)
{
Educational cout
Purpose
Notinside
to befunction
circulated
without this
<< Ionly.
am now
deeper.\n;
}

banner.

void main(void)
{
cout << I am starting in function main.\n;
deep();
cout << Back in function main again.\n
}

18

Starting Out with C++, 3rd Edition

6.3 Function Prototypes


A function prototype eliminates the need to place a
function definition before all calls to the function.
Here is a prototype for the displayMessage
For Educational Purpose only. Not to be circulated without this banner.
function in Program 6-1
void displayMessage(void);

19

Starting Out with C++, 3rd Edition

Program 6-5
// This program has three functions: main, first, and second.
#include <iostream.h>
// Function Prototypes
void first(void);
void second(void);

For

void main(void)
{
Educational
Purpose only. Not to be circulated
cout << "I am starting in function main.\n";
first();
// Call function first
second(); // Call function second
cout << Back in function main again.\n";
}

without this banner.

Program Continues on next slide

20

Starting Out with C++, 3rd Edition

Program 6-5 Continues


// Definition of function first.
// This function displays a message.
void first(void)
{
cout << I am now inside the function first.\n;
}

For

// Definition of function second


// This function
message.
Educational
Purposedisplays
only. Nota to
be circulated without this
void second(void)
{
cout << I am now inside the function second.\n;
}

banner.

21

Starting Out with C++, 3rd Edition

Program 6-5 Output


I am starting in function main.
I am now inside the function first.
I am now inside the function second.
Back in function main again.
For Educational Purpose only. Not to be circulated without this banner.

22

Starting Out with C++, 3rd Edition

6.4 Sending Information Into a Function


When a function is called, the program may send
values (arguments) into the function.
Arguments are passed into parameters.

For Educational Purpose only. Not to be circulated without this banner.


void displayValue(int num)
{
cout << The value is << num << endl;
}

23

Starting Out with C++, 3rd Edition

Program 6-6
// This program demonstrates a function with a parameter.
#include <iostream.h>
// Function Prototype
void displayValue(int)

For

void main(void)
{
Educational
Purpose only. Not to be circulated without this
cout << "I am passing 5 to displayValue.\n";
displayValue(5);
//Call displayValue with argument 5
cout << "Now I am back in main.\n";
}

banner.

Program Continues to next slide

24

Starting Out with C++, 3rd Edition

Program 6-6
//*********************************************
// Definition of function displayValue.
// It uses an integer parameter whose value is displayed.
//*********************************************

*
*

void displayValue(int num)


{
cout << The value is << num << endl;
}

For Educational Purpose only. Not to be circulated without this banner.

25

Starting Out with C++, 3rd Edition

Program Output
I am passing 5 to displayValue.
The value is 5
Now I am back in main.
For Educational Purpose only. Not to be circulated without this banner.

26

Starting Out with C++, 3rd Edition

Figure 6-5
displayValue(5);

For Educational
Purpose only. Not num)
to be circulated without this banner.
void displayValue(int
{
cout << The value is << num << endl;
}

27

Starting Out with C++, 3rd Edition

Program 6-7
// This program demonstrates a function with a parameter.
#include <iostream.h>
// Function Prototype
void displayValue(int);
void main(void)
{
cout << "I am passing several values to displayValue.\n";
For Educational
Purpose
to be circulated
this5 banner.
displayValue(5);
//only.
CallNot
displayValue
with without
argument
displayValue(10); // Call displayValue with argument 10
displayValue(2); // Call displayValue with argument 2
displayValue(16); // Call displayValue with argument 16
cout << "Now I am back in main.\n";
}
Program continues on next slide

28

Starting Out with C++, 3rd Edition

Program 6-7 Continued


//*********************************************************
// Definition of function displayValue.
*
// It uses an integer parameter whose value is displayed. *
//*********************************************************

void
displayValue(int
num)
For
Educational
Purpose only.
Not to be circulated without this banner.
{
cout

<< "The value is " << num << endl;

29

Starting Out with C++, 3rd Edition

Program Output
I am passing several values to displayValue.
The value is 5
The value is 10
For Educational
The valuePurpose
is 2 only. Not to be circulated without this banner.
The value is 16
Now I am back in main.

30

Starting Out with C++, 3rd Edition

Program 6-8
// This program demonstrates a function with three parameters.
#include <iostream.h>
// Function prototype
void showSum(int, int, int);

void main(void)
For
Educational Purpose only. Not to be circulated without this banner.
{

int value1, value2, value3;


cout << "Enter three integers and I will display ";
cout << "their sum: ";
cin >> value1 >> value2 >> value3;
showSum(value1, value2, value3); // Call showSum with
// 3 arguments
}

31

Starting Out with C++, 3rd Edition

Program continues
//************************************************************
// Definition of function showSum.
*
// It uses three integer parameters. Their sum is displayed. *
//************************************************************
void showSum(int num1, int num2, int num3)
{
For Educational
Purpose
Not to<<beendl;
circulated
cout << (num1
+ num2only.
+ num3)
}

without this banner.

32

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter three integers and I will display their sum: 4
8 7 [Enter]
19
For Educational Purpose only. Not to be circulated without this banner.

33

Starting Out with C++, 3rd Edition

Figure 6-6
showSum(value1, value2, value3);

For Educational
Purpose
only. Notnum1,
to be circulated
without
this banner.
void
showSum(int
int num2,
int num3)
{
cout << num1 + num2 + num3 << endl;
}

34

Starting Out with C++, 3rd Edition

6.5 Changing the value of a Parameter


When an argument is passed into a
parameter, only a copy of the arguments
value is
passed.
to the parameter
For Educational
Purpose
only.Changes
Not to be circulated
without this banner.
do not affect the original argument. This is
called passed by value.

35

Starting Out with C++, 3rd Edition

Program 6-9
// This program demonstrates that changes to a function parameter
// have no effect on the original argument.
#include <iostream.h>
// Function Prototype
void changeThem(int, float);

For

void main(void)
{
int whole Purpose
= 12;
Educational
only. Not to be circulated without this banner.
float real = 3.5;
cout << "In main the value of whole is " << whole << endl;
cout << "and the value of real is " << real << endl;
changeThem(whole, real);
// Call changeThem with 2 arguments
cout << "Now back in main again, the value of ";
cout << "whole is " << whole << endl;
cout << "and the value of real is " << real << endl;
}

36

Starting Out with C++, 3rd Edition

Program continues
//**************************************************************
// Definition of function changeThem.
*
// It uses i, an int parameter, and f, a float. The values of *
// i and f are changed and then displayed.
*
//**************************************************************

For
Educational
Purpose
void
changeThem(int
i, only.
floatNot
f) to be circulated without this banner.
{
i = 100;
f = 27.5;
cout << "In changeThem the value of i is changed to ";
cout << i << endl;
cout << "and the value of f is changed to " << f << endl;
}

37

Starting Out with C++, 3rd Edition

Program Output
In main the value of whole is 12
and the value of real is 3.5
In changeThem the value of i is changed to 100
Forand
Educational
Purpose
Not to be
without this banner.
the value
of f isonly.
changed
to circulated
27.5
Now back in main again, the value of whole is 12
and the value of real is 3.5

38

Starting Out with C++, 3rd Edition

Figure 6-7

For Educational Purpose only. Not to be circulated without this banner.

39

Starting Out with C++, 3rd Edition

6.6 Focus on Software Engineering: Using


Functions in a Menu-Driven Program
Functions are ideal for use in menu-driven programs.
When the user selects an item from a menu, the program
can call the appropriate function.
For Educational Purpose only. Not to be circulated without this banner.

40

Starting Out with C++, 3rd Edition

Program 6-10
// This is a menu-driven program that makes a function call
// for each selection the user makes.
#include <iostream.h>
// Function Prototypes
void adult(int);
For Educational Purpose only.
void child(int);
void senior(int);

Not to be circulated without this banner.

void main(void)
{
int choice, months;

41

Starting Out with C++, 3rd Edition

Program continues

For

cout.setf(ios::fixed | ios::showpoint);
cout.precision(2);
do
{
Educational
only. NotClub
to be
circulated Menu\n\n";
without this
cout <<Purpose
"\n\t\tHealth
Membership
cout << "1. Standard adult Membership\n";
cout << "2. child Membership\n";
cout << "3. senior Citizen Membership\n";
cout << "4. Quit the Program\n\n";
cout << "Enter your choice: ";
cin >> choice;

banner.

42

Starting Out with C++, 3rd Edition

Program continues

For

if (choice != 4)
{
cout << "For how many months? ";
cin >> months;
}
switch (choice)
{
case 1:
adult(months);
Educational Purpose only. break;
Not to be circulated without this banner.
case 2:
child(months);
break;
case 3:
senior(months);
break;
case 4:
cout << "Thanks for using this ";
cout << "program.\n";
break;

43

Starting Out with C++, 3rd Edition

Program continues
default:
cout << "The valid choices are 1-4. ";
cout << "Try again.\n";
}
} while (choice != 4);
}
//***********************************************************
// Definition of function adult. Uses an integer parameter, mon.
*
// mon holds the number of months the membership should be
*
For
Purpose
only.
to bemembership
circulatedfor
without
this banner.
//Educational
calculated for.
The cost
of Not
an adult
that many
*
// months is displayed.
*
//******************************************************************

void adult(int mon)


{
cout << "The total charges are $";
cout << (mon * 40.0) << endl;
}

44

Starting Out with C++, 3rd Edition

Program continues
//********************************************************************
// Definition of function child. Uses an integer parameter, mon.
*
// mon holds the number of months the membership should be
*
// calculated for. The cost of a child membership for that many
*
// months is displayed.
*

//*************************************************************
void
child(intPurpose
mon)
For
Educational
only. Not to be circulated without this banner.
{
cout << "The total charges are $";
cout << (mon * 20.0) << endl;
}

45

Starting Out with C++, 3rd Edition

Program continues
//*******************************************************************
// Definition of function senior. Uses an integer parameter, mon.
*
// mon holds the number of months the membership should be
*
// calculated for. The cost of a senior citizen membership for
*
// that many months is displayed.
*

For Educational Purpose only. Not to be circulated without this banner.


//************************************************************
void senior(int mon)
{
cout << "The total charges are $";
cout << (mon * 30.0) << endl;
}

46

Starting Out with C++, 3rd Edition

Program Output with Example Input


Health Club Membership Menu
1. Standard adult Membership
2. child Membership
3. senior Citizen Membership
4. Quit the Program
Enter your choice: 1

For Educational
For how many Purpose
months 12 only. Not to be circulated without this banner.
The total charges are $480.00
Health Club Membership Menu
1. Standard adult Membership
2. child Membership
3. senior Citizen Membership
4. Quit the Program
Enter your choice: 4
Thanks for using this program.

47

Starting Out with C++, 3rd Edition

6.7 The return Statement


The return statement causes a function to
end immediately.
For Educational Purpose only. Not to be circulated without this banner.

48

Starting Out with C++, 3rd Edition

Program 6-11
// This program demonstrates a function with a return
statement.

#include <iostream.h>
// Function prototype
void halfway(void);
For Educational Purpose only. Not to be circulated without this banner.
void main(void)
{
cout << "In main, calling halfway...\n";
halfway();
cout << "Now back in main.\n";
}
49

Starting Out with C++, 3rd Edition

Program continues
//*********************************************************
// Definition of function halfway.
*
// This function has a return statement that forces it to *
// terminate before the last statement is executed.
*
//*********************************************************

For
Educational
Purpose only. Not to be circulated without this banner.
void
halfway(void)
{
cout << "In halfway now.\n";
return;
cout <<"Will you ever see this message?\n";
}

50

Starting Out with C++, 3rd Edition

Program Output
In main, calling halfway...
In halfway now.
Now back in main.
For Educational Purpose only. Not to be circulated without this banner.

51

Starting Out with C++, 3rd Edition

Program 6-12
// This program uses a function to perform division. If division
// by zero is detected, the function returns.
#include <iostream.h>
// Function prototype.
void divide(float, float);
void main(void)
{
For
Educational Purpose
float num1, num2;

only. Not to be circulated without this banner.

cout << "Enter two numbers and I will divide the first\n";
cout << "number by the second number: ";
cin >> num1 >> num2;
divide(num1, num2);
}

52

Starting Out with C++, 3rd Edition

Program continues
//****************************************************************
// Definition of function divide.
*
// Uses two parameters: arg1 and arg2. The function divides arg1 *
// by arg2 and shows the result. If arg2 is zero, however, the
*
// function returns.
*
//****************************************************************

Forvoid
Educational
Purpose
to be circulated without this banner.
divide(float
arg1, only.
floatNot
arg2)
{
if (arg2 == 0.0)
{
cout << "Sorry, I cannot divide by zero.\n";
return;
}
cout << "The quotient is " << (arg1 / arg2) << endl;
}

53

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter two numbers and I will divide the first
number by the second number: 12 0 [Enter]
Sorry, I cannot divide by zero.
For Educational Purpose only. Not to be circulated without this banner.

54

Starting Out with C++, 3rd Edition

6.8 Returning a value From a Function


A function may send a value back to the
part of the program that called the function.
For Educational Purpose only. Not to be circulated without this banner.

55

Starting Out with C++, 3rd Edition

Figure 6-10

For Educational Purpose only. Not to be circulated without this banner.

56

Starting Out with C++, 3rd Edition

Program 6-13
// This program uses a function that returns a value.
#include <iostream.h>
//Function prototype
int square(int);
main(void)
Forvoid
Educational
Purpose only. Not to be circulated without this banner.
{

int value, result;


cout << "Enter a number and I will square it: ";
cin >> value;
result = square(value);
cout << value << " squared is " << result << endl;
}

57

Starting Out with C++, 3rd Edition

Program continues
//****************************************************
// Definition of function square.
*
// This function accepts an int argument and returns *
// the square of the argument as an int.
*
For Educational Purpose only. Not to be circulated without this banner.
//****************************************************
int square(int number)
{
return number * number;
}

58

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter a number and I will square it: 20 [Enter]
20 squared is 400
For Educational Purpose only. Not to be circulated without this banner.

59

Starting Out with C++, 3rd Edition

Figure 6-11
result = square(value);
20
For Educational Purpose
only.square(int
Not to be circulated
without this banner.
int
number)
{
return number * number;

60

Starting Out with C++, 3rd Edition

6.9 Returning Boolean Values


Function may return true or false
values.
For Educational Purpose only. Not to be circulated without this banner.

61

Starting Out with C++, 3rd Edition

Program 6-15
// This program uses a function that returns true or false.
#include <iostream.h>
// Function prototype
bool isEven(int);
void main(void)
{
int val;

For Educational Purpose only. Not to be circulated without this banner.


cout << "Enter an integer and I will tell you ";
cout << "if it is even or odd: ";
cin >> val;
if (isEven(val))
cout << val << " is even.\n";
else
cout << val << " is odd.\n";
}

62

Starting Out with C++, 3rd Edition

Program continues
//*********************************************************************
// Definition of function isEven. This function accepts an
*
// integer argument and tests it to be even or odd. The function
*
// returns true if the argument is even or false if the argument is
*
// odd.
*
// The return value is bool.
*
//*********************************************************************
bool isEven(int number)
{
bool status;

For Educational Purpose only. Not to be circulated without this banner.


if (number % 2)
status = false; // The number is odd if there's a remainder.
else
status = true; // Otherwise, the number is even.
return status;
}

63

Starting Out with C++, 3rd Edition

Program Output
Enter an integer and I will tell you if it is even or
odd: 5 [Enter]
5 is odd.
For Educational Purpose only. Not to be circulated without this banner.

64

Starting Out with C++, 3rd Edition

6.10 Local and Global Variables


A local variable is declared inside a
function, and is not accessible outside the
function.
For Educational
Purpose only. Not to be circulated without this banner.
A global variable is declared outside all
functions and is accessible in its scope.

65

Starting Out with C++, 3rd Edition

Program 6-16
// This program shows that variables declared in a function
// are hidden from other functions.
#include <iostream.h>
void func(void);

// Function prototype

For Educational Purpose only. Not to be circulated without this banner.


void main(void)
{
int num = 1;
cout << "In main, num is " << num << endl;
func();
cout << "Back in main, num is still " << num << endl;
}

66

Starting Out with C++, 3rd Edition

Program continues
//*********************************************************
// Definition of function func.
*
// It has a local variable, num, whose initial value, 20, *
// is displayed.
*
//*********************************************************

For
Educational
Purpose only. Not to be circulated without this banner.
void
func(void)
{
int num = 20;
cout << "In func, num is " << num << endl;
}

67

Starting Out with C++, 3rd Edition

Program Output
In main, num is 1
In func, num is 20
Back in main, num is still 1
For Educational Purpose only. Not to be circulated without this banner.

68

Starting Out with C++, 3rd Edition

Figure 6-8
Function main
This num variable is only
visible in function main.
For Educational Purpose only. Not to be circulated without this banner.
Function func
This num variable is only
num = 20
visible in function func.
num = 1

69

Starting Out with C++, 3rd Edition

Program 6-17
// This program shows that a global variable is visible
// to all the functions that appear in a program after
// the variable's declaration.
#include <iostream.h>

For

void func(void); // Function prototype


int num = 2;
// Global
Educational
Purpose
only.variable
Not to be circulated

without this banner.

void main(void)
{
cout << "In main, num is " << num << endl;
func();
cout << "Back in main, num is " << num << endl;
}

70

Starting Out with C++, 3rd Edition

Program continues
//*****************************************************
// Definition of function func.
*
// func changes the value of the global variable num *
//*****************************************************

For Educational Purpose only. Not to be circulated without this banner.


void func(void)
{
cout << "In func, num is " << num << endl;
num = 50;
cout << "But, it is now changed to " << num << endl;
}

71

Starting Out with C++, 3rd Edition

Program Output
In main, num is 2
In func, num is 2
But, it is now changed to 50
For Educational
Purpose
only.
Back in main,
num
is Not
50 to be circulated without this banner.

72

Starting Out with C++, 3rd Edition

Program 6-18
// This program shows that a global variable is visible
// to all the functions that appear in a program after
// the variable's declaration.
#include <iostream.h>
void func(void); // Function prototype

For Educational Purpose only. Not to be circulated without this banner.


void main(void)
{
cout << "In main, num is not visible!\n";
func();
cout << "Back in main, num still isn't visible!\n";
}

73

Starting Out with C++, 3rd Edition

Program continues
int num = 2; // Global variable

For

//*****************************************************
// Definition of function func
*
// func changes
theonly.
value
global variable
*
Educational
Purpose
Notoftothe
be circulated
withoutnum.
this banner.
//*****************************************************
void func(void)
{
cout << "In func, num is " << num << endl;
num = 50;
cout << "But, it is now changed to " << num << endl;
}

74

Starting Out with C++, 3rd Edition

Program Output
In main, num is not visible!
In func, num is 2
But, it is now changed to 50
For Educational
Purpose
only.
Notisn't
to bevisible!
circulated without this banner.
Back in main,
num
still

75

Starting Out with C++, 3rd Edition

Global Variables are Initialized to


Zero by Default
Unless you explicitly initialize numeric
global variables, they are automatically
initialized
to zero.
For Educational
Purpose
only. Not to be circulated without this banner.
Global character variables are initialized to
NULL, or ASCII code 0.

76

Starting Out with C++, 3rd Edition

Program 6-19
// This program has an uninitialized global variable.
#include <iostream.h>
int globalNum; // Global variable. Automatically set to zero.
void main(void)
For
{ Educational Purpose only. Not to be circulated without
cout << "globalNum is " << globalNum << endl;
}

this banner.

77

Starting Out with C++, 3rd Edition

Program Output
globalNum is 0

For Educational Purpose only. Not to be circulated without this banner.

78

Starting Out with C++, 3rd Edition

Local and Global Variables with the


Same Name
If a function has a local variable with the
same name as a global variable, only the
local variable
can Not
be toseen
by the function.
For Educational
Purpose only.
be circulated
without this banner.

79

Starting Out with C++, 3rd Edition

Program 6-20
// This program shows that when a local variable has the
// same name as a global variable, the function only sees
// the local variable.
#include <iostream.h>

For

// Function prototypes
void texas();
Educational
Purpose only.
void arkansas();

Not to be circulated without this banner.

int cows = 10;


void main(void)
{
cout << "There are " << cows << " cows in main.\n";
texas();
arkansas();
cout << "Back in main, there are " << cows << " cows.\n";
}

80

Starting Out with C++, 3rd Edition

Program continues
//******************************************
// Definition of function texas.
*
// The local variable cows is set to 100. *
//******************************************
void texas(void)
{
int cows = 100;

For Educational Purpose only. Not to be circulated without this banner.


cout << "There are " << cows << " cows in texas.\n";
}

81

Starting Out with C++, 3rd Edition

Program continues
//******************************************
// Definition of function arkansas.
*
// The local variable cows is set to 50.
*
//******************************************

For Educational Purpose only. Not to be circulated without this banner.


void arkansas(void)
{
int cows = 50;
cout << "There are " << cows << " cows in arkansas.\n";
}

82

Starting Out with C++, 3rd Edition

Program Output
There are 10 cows in main.
There are 100 cows in texas.
There are 50 cows in arkansas.
For Educational
Purpose
only.are
Not10
to be
circulated without this banner.
Back in main,
there
cows.

83

Starting Out with C++, 3rd Edition

Program 6-21
// This program has local and global variables. In the function
// ringUpSale, there is a local variable named tax. There is
// also a global variable with the same name.
#include <iostream.h>
void ringUpSale(void); // Function prototype

For Educational Purpose only. Not to be circulated without this banner.


// Global Variables
const float taxRate = 0.06;
float tax, sale, total;
void main(void)
{
char again;

84

Starting Out with C++, 3rd Edition

Program continues

For

cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
do
{
ringUpSale();
cout << "Is there another item to be purchased? ";
cin >> again;
} while (again == 'y' || again == 'Y');
Educational
Purpose only. Not to be circulated without this banner.
tax = sale * taxRate;
total = sale + tax;
cout << "The tax for this sale is " << tax << endl;
cout << "The total is " << total << endl;

85

Starting Out with C++, 3rd Edition

Program continues
//******************************************************************
// Definition of function ringUpSale.
*
// This function asks for the quantity and unit price of an item. *
// It then calculates and displays the sales tax and subtotal
*
// for those items.
*
//******************************************************************

void ringUpSale(void)
{ Educational Purpose only. Not to be circulated without this banner.
For
int qty;
float unitPrice, tax, thisSale, subTotal;
cout << "Quantity: ";
cin >> qty;
cout << "Unit price: ";
cin >> unitPrice;
thisSale = qty * unitPrice; // Get the total unit price

86

Starting Out with C++, 3rd Edition

Program continues

sale += thisSale;

For

// Update global variable sale

tax = thisSale * taxRate;


// Get sales tax for these items
subTotal = thisSale + tax; // Get subtotal for these items
cout << "Price for these items: " << thisSale << endl;
Educational Purpose only. Not to be circulated without this banner.
cout << "tax for these items: " << tax << endl;
cout << "subTotal for these items: " << subTotal << endl;

87

Starting Out with C++, 3rd Edition

Program Output with Example Input


Quantity: 2 [Enter]
Unit Price: 20.00 [Enter]
Price for these items: 40.00
tax for these items: 2.40
subTotal for these items: 42.40
Is there another item to be purchased? y [Enter]
Quantity: 3 [Enter]
For Educational Purpose only. Not to be circulated without this banner.
Unit Price: 12.00 [Enter]
Price for these items: 36.00
tax for these items: 2.16
subTotal for these items: 38.16
Is there another item to be purchased? n [Enter]
The tax for this sale is 4.56
The total is 80.56

88

Starting Out with C++, 3rd Edition

Be Careful With Global Variables


It is tempting to make all your variables
global. But dont do it!
Using Purpose
global variables
cancirculated
cause problems.
For Educational
only. Not to be
without this banner.
It is harder to debug a program that uses global
variables

89

Starting Out with C++, 3rd Edition

6.11 Static Local Variables


If a function is called more than once in a
program, the values stored in the functions
local variables
do Not
nottopersist
between
For Educational
Purpose only.
be circulated
without this banner.
function calls.
To get a variable to keep its value even
after the function ends, you must create
static variables
90

Starting Out with C++, 3rd Edition

Program 6-22
// This program shows that local variables do not retain
// their values between function calls.
#include <iostream.h>
// Function prototype
Forvoid
Educational
Purpose only. Not to be circulated without this banner.
showLocal(void);
void main(void)
{
showLocal();
showLocal();
}

91

Starting Out with C++, 3rd Edition

Program continues
//***********************************************************
// Definition of function showLocal.
*
// The initial value of localNum, which is 5, is displayed. *
// The value of localNum is then changed to 99 before the
*
// function returns.
*
//***********************************************************

For Educational Purpose only. Not to be circulated without this banner.


void showLocal(void)
{
int localNum = 5; // Local variable
cout << "localNum is " << localNum << endl;
localNum = 99;
}

92

Starting Out with C++, 3rd Edition

Program Output
localNum is 5
localNum is 5

For Educational Purpose only. Not to be circulated without this banner.

93

Starting Out with C++, 3rd Edition

Program 6-23
//This program uses a static local variable.
#include <iostream.h>
void showStatic(void); // Function prototype
void main(void)
{
for (int count = 0; count < 5; count++)
showStatic();
}
//*************************************************************
// Definition of function showStatic.
*
// statNum is a static local variable. Its value is displayed *
// and then incremented just before the function returns.
*
//*************************************************************

For Educational Purpose only. Not to be circulated without this banner.

void showStatic(void)
{
static int statNum;
cout << "statNum is " << statNum << endl;
statNum++;
}

94

Starting Out with C++, 3rd Edition

Program Output
statNum is 0
statNum is 1
statNum is 2
For Educational
only. Not to be circulated without this banner.
statNum Purpose
is 3
statNum is 4

95

Starting Out with C++, 3rd Edition

Program 6-24
// This program shows that a static local variable is only
// initialized once.
#include <iostream.h>
void showStatic(void); // Function prototype
void main(void)
For Educational
Purpose only. Not to be circulated without this banner.
{

for (int count = 0; count < 5; count++)


showStatic();
}

96

Starting Out with C++, 3rd Edition

Program continues
//***********************************************************
// Definition of function showStatic.
*
// statNum is a static local variable. Its value is displayed
// and then incremented just before the function returns.
*
//***********************************************************

For Educational Purpose only. Not to be circulated without this banner.


void showStatic()
{
static int statNum = 5;
cout << "statNum is " << statNum << endl;
statNum++;
}

97

Starting Out with C++, 3rd Edition

Program Output
statNum is 5
statNum is 6
statNum is 7
For Educational
only. Not to be circulated without this banner.
statNum Purpose
is 8
statNum is 9

98

Starting Out with C++, 3rd Edition

6.12 Default Arguments


Default arguments are passed to parameters
automatically if no argument is provided in
the function
For Educational
Purposecall.
only. Not to be circulated without this banner.
A functions default arguments should be
assigned in the earliest occurrence of the
function name. This will usually mean the
function prototype.
99

Starting Out with C++, 3rd Edition

Program 6-25
// This program demonstrates default function arguments.
#include <iostream.h>
// Function prototype with default arguments
void displayStars(int = 10, int = 1);
void main(void)
For{Educational Purpose only. Not to be circulated without this banner.
displayStars();
cout << endl;
displayStars(5);
cout << endl;
displayStars(7, 3);
}

100

Starting Out with C++, 3rd Edition

Program continues
//**************************************************************
// Definition of function displayStars.
*
// The default argument for cols is 10 and for rows is 1.
*
// This function displays a rectangle made of asterisks.
*
//**************************************************************
void displayStars(int cols, int rows)
{
For Educational
Purpose
only.
Notcontrols
to be circulated
// Nested loop.
The outer
loop
the rows
// and the inner loop controls the columns.
for (int down = 0; down < rows; down++)
{
for (int across = 0; across < cols; across++)
cout << "*";
cout << endl;
}
}

without this banner.

101

Starting Out with C++, 3rd Edition

Program Output
**********
*****
For Educational Purpose only. Not to be circulated without this banner.
*******
*******
*******

102

Starting Out with C++, 3rd Edition

Default Argument Summary


The value of a default argument must be a constant (either
a literal value of a named constant).
When an argument is left out of a function call (because it
has a default value), all the arguments that come after it
For Educational Purpose only. Not to be circulated without this banner.
must be left out too.
When a function has a mixture of parameters both with
and without default arguments, the parameters with default
arguments must be declared last.

103

Starting Out with C++, 3rd Edition

6.13 Using Reference Variables as


Parameters
When used as parameters, reference
variables allow a function to access the
parameters
changes
to banner.
For Educational
Purposeoriginal
only. Not argument,
to be circulated
without this
the parameter are also made to the
argument.

104

Starting Out with C++, 3rd Edition

Example:
void doubleNum(int &refVar)
{
refVar *= 2;
For}Educational Purpose only. Not to be circulated without this banner.
// The variable refVar is called
// a reference to an int

105

Starting Out with C++, 3rd Edition

Program 6-26
// This program uses a reference variable as a function
// parameter.
#include <iostream.h>
// Function prototype. The parameter is a reference variable.
void doubleNum(int &);
void main(void)
For Educational Purpose only. Not to be circulated without this banner.
{
int value = 4;
cout << "In main, value is " << value << endl;
cout << "Now calling doubleNum..." << endl;
doubleNum(value);
cout << "Now back in main. value is " << value << endl;
}

106

Starting Out with C++, 3rd Edition

Program continues
//************************************************************
// Definition of doubleNum.
*
// The parameter refVar is a reference variable. The value
*
// in refVar is doubled.
*
For
Educational Purpose only. Not to be circulated without this banner.
//************************************************************
void doubleNum (int &refVar)
{
refVar *= 2;
}

107

Starting Out with C++, 3rd Edition

Program Output
In main, value is 4
Now calling doubleNum...
Now back in main. value is 8
For Educational Purpose only. Not to be circulated without this banner.

108

Starting Out with C++, 3rd Edition

Program 6-27
// This program uses reference variables as function
// parameters.
#include <iostream.h>
// Function prototypes. Both functions use reference variables
// as parameters
void doubleNum(int &);
void getNum(int &);

For Educational Purpose only. Not to be circulated without this banner.


void main(void)
{
int value;
getNum(value);
doubleNum(value);
cout << "That value doubled is " << value << endl;
}

109

Starting Out with C++, 3rd Edition

Program continues
//*************************************************************
// Definition of getNum.
*
// The parameter userNum is a reference variable. The user is *
// asked to enter a number, which is stored in userNum.
*
//*************************************************************
void
getNum(int
&userNum)
For
Educational
Purpose
only. Not to be circulated without this banner.
{

cout << "Enter a number: ";


cin >> userNum;
}

110

Starting Out with C++, 3rd Edition

Program continues
//************************************************************
// Definition of doubleNum.
*
// The parameter refVar is a reference variable. The value
*
// in refVar is doubled.
*
For
Educational Purpose only. Not to be circulated without this banner.
//************************************************************
void doubleNum (int &refVar)
{
refVar *= 2;
}

111

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter a number: 12 [Enter]
That value doubled is 24
For Educational Purpose only. Not to be circulated without this banner.

112

Starting Out with C++, 3rd Edition

Reference Argument Warning


Dont get carried away with using reference
variables as function parameters. Any time
you allow
a function
tobealter
a variable
For Educational
Purpose
only. Not to
circulated
without this banner.
thats outside the function, you are creating
potential debugging problems. Reference
variables should only be used as parameters
when the situation demands them.
113

Starting Out with C++, 3rd Edition

6.14 Overloaded Functions


Two or more functions may have the same
name as long as their parameter lists are
different.
For Educational
Purpose only. Not to be circulated without this banner.

114

Starting Out with C++, 3rd Edition

Program
6-28
#include <iostream.h>
// Function prototypes
int square(int);
float square(float);
void main(void)
{
int userInt;
For Educational
Purpose
float userFloat;

only. Not to be circulated without this banner.

cout.precision(2);
cout << "Enter an integer and a floating-point value: ";
cin >> userInt >> userFloat;
cout << "Here are their squares: ";
cout << square(userInt) << " and " << square(userFloat);
}

115

Starting Out with C++, 3rd Edition

Program continues
// Definition of overloaded function square.
// This function uses an int parameter, number. It returns the
// square of number as an int.

int square(int number)


{
return number * number;
For}Educational Purpose only. Not

to be circulated without this banner.

// Definition of overloaded function square.


// This function uses a float parameter, number. It returns the
// square of number as a float.

float square(float number)


{
return number * number;
}

116

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter an integer and floating-point value: 12
4.2 [Enter]
Here are their squares: 144 and 17.64

For Educational Purpose only. Not to be circulated without this banner.

117

Starting Out with C++, 3rd Edition

Program
6-29
// This program demonstrates overloaded functions to calculate
// the gross weekly pay of hourly-paid or salaried employees.
#include <iostream.h>
// Function prototypes
void getChoice(char &);
float calcWeeklyPay(int, float);
float calcWeeklyPay(float);
void main(void)
For{ Educational Purpose
char selection;
int worked;
float rate, yearly;

only. Not to be circulated without this banner.

cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
cout << Do you want to calculate the weekly pay of\n";
cout << (H) an hourly-paid employee, or \n;
cout << (S) a salaried employee?\n;

118

Starting Out with C++, 3rd Edition

Program continues
getChoice(selection);
switch (selection)

{
case H :
case h :

For

cout << How many hours were worked? ;


cin >> worked;
cout << What is the hour pay rate? ;
cin >> rate;
cout << The gross weekly pay is ;
cout <<
calcWeeklyPay(worked,
rate);
Educational Purpose
only.
Not to be circulated
without
break;
case S :
case s : cout << What is the annual salary? ;
cin >> yearly;
cout << The gross weekly pay is ;
cout << calcWeeklyPay(yearly);
break;
}
}

this banner.

119

Starting Out with C++, 3rd Edition

Program continues
//***********************************************************
// Definition of function getChoice.
*
// The parameter letter is a reference to a char.
*
// This function asks the user for an H or an S and returns *
// the validated input.
*
//***********************************************************

void getChoice(char &letter)


For Educational
Purpose only. Not to be circulated without this banner.
{
do
{
cout << Enter your choice (H or S): ;
cin >> letter;
} while (letter != H && letter != h &&
letter != S && letter != s);
}

120

Starting Out with C++, 3rd Edition

Program continues
//***********************************************************
// Definition of overloaded function calcWeeklyPay.
*
// This function calculates the gross weekly pay of
*
// an hourly-paid employee. The parameter hours hold the
*
// hourly pay rate. The function returns the weekly salary. *
//***********************************************************

void calcWeekly(int
hours,
payRate)
For Educational
Purpose only.
Not tofloat
be circulated
without this banner.
{
return hours * payRate;
}

121

Starting Out with C++, 3rd Edition

Program continues
//***********************************************************
// Definition of overloaded function calcWeeklyPay.
*
// This function calculates the gross weekly pay of
*
// a salaried employee. The parameter holds the employees *
// annual salary. The function returns the weekly salary.
*
//***********************************************************

void calcWeekly(float
For Educational
Purpose only. annSalary)
Not to be circulated without this banner.
{
return annSalary / 52.0;
}

122

Starting Out with C++, 3rd Edition

Program Output with Example Input


Do you want to calculate the weekly pay of
(H) an houly-paid employee, or
(S) a salaried employee? H[Enter]
How many hours were worked? 40[Enter]
What is the hour pay rate? 18.50[Enter]
The gross weekly pay is 740.00

For Educational Purpose only. Not to be circulated without this banner.

Program Output with Other Example Input


Do you want to calculate the weekly pay of
(H) an houly-paid employee, or
(S) a salaried employee? S[Enter]
What is the annual salary? 48000.00[Enter]
The gross weekly pay is 923.08

123

Starting Out with C++, 3rd Edition

6.15 The exit() Function


The exit() function causes a program to
terminate, regardless of which function or
controlPurpose
mechanism
For Educational
only. Notistoexecuting.
be circulated without this banner.

124

Starting Out with C++, 3rd Edition

Program 6-30
// This program shows how the exit function causes a program
// to stop executing.
#include <iostream.h>
#include <stdlib.h> // For exit

Forvoid
Educational
Purpose only.
Not to beprototype
circulated without this banner.
function(void);
// Function
void main(void)
{
function();
}

125

Starting Out with C++, 3rd Edition

Program continues
//***********************************************************
// This function simply demonstrates that exit can be used *
// to terminate a program from a function other than main. *
//***********************************************************

For Educational Purpose only. Not to be circulated without this banner.


void function(void)
{
cout << "This program terminates with the exit function.\n";
cout << "Bye!\n";
exit(0);
cout << "This message will never be displayed\n";
cout << "because the program has already terminated.\n";
}

126

Starting Out with C++, 3rd Edition

Program Output
This program terminates with the exit function.
Bye!
For Educational Purpose only. Not to be circulated without this banner.

127

Starting Out with C++, 3rd Edition

Program 6-31
// This program demonstrates the exit function.
#include <iostream.h>
#include <stdlib.h> // For exit
void main(void)
{
char response;

For Educational
Purpose only. Not to be circulated without this banner.
cout << "This program terminates with the exit function.\n";
cout << "Enter S to terminate with the EXIT_SUCCESS code\n";
cout << "or f to terminate with the EXIT_FAILURE code: ";
cin >> response;

128

Starting Out with C++, 3rd Edition

Program continues
if (response == 'S')
{
cout << "Exiting with EXIT_SUCCESS.\n";
exit(EXIT_SUCCESS);
}
else
{
For Educational
Purpose only. Not to be circulated without this banner.
cout << "Exiting with EXIT_FAILURE.\n";
exit(EXIT_FAILURE);
}
}

129

Starting Out with C++, 3rd Edition

Program Output with Example Input


This program terminates with the exit function.
Enter S to terminate with the EXIT_SUCCESS code
or f to terminate with the EXIT_FAILURE code: s [Enter]
Exiting with EXIT_SUCCESS.

Program Purpose
Output With
Other
Example
For Educational
only. Not
to be
circulatedInput
without this banner.
This program terminates with the exit function.
Enter S to terminate with the EXIT_SUCCESS code
or f to terminate with the EXIT_FAILURE code: f [Enter]
Exiting with EXIT_FAILURE.

130

Starting Out with C++, 3rd Edition

6.16 Stubs and Drivers


Stubs and drivers are very helpful tools for
testing and debugging programs that use
functions.
For Educational
Purpose only. Not to be circulated without this banner.
A stub is a dummy function that is called
instead of the actual function it represents.
A driver is a program that tests a function
by simply calling it.
131

Starting Out with C++, 3rd Edition

For

// Stub for the adult function.


void adult(int months)
{
cout << "The function adult was called with " << months;
cout << " as its argument.\n";
}
// Stub for the child function.
void child(int months)
{
cout << "The function child was called with " << months;
Educational
only. Not to be circulated without this
cout << " Purpose
as its argument.\n";
}
// Stub for the senior function.
void senior(int months)
{
cout << "The function senior was called with " << months;
cout << " as its argument.\n";
}

banner.

132

Starting Out with C++, 3rd Edition

You might also like