CS221 - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

CS221

Description:

Program execution always begins with function main ... marked as such by having an ampersand(&) beside their type in the parameter list ... – PowerPoint PPT presentation

Number of Views:27
Avg rating:3.0/5.0
Slides: 32
Provided by: ryanmck
Category:
Tags: ampersand | cs221

less

Transcript and Presenter's Notes

Title: CS221


1
CS221
  • User Functions

2
Functions
  • Every C program must have a function called
    main
  • Program execution always begins with function
    main
  • Any other functions are subprograms that must be
    explicitly called

3
Return Values
  • In C, a value-returning function returns in its
    identifier one value of the type specified in its
    heading and prototype (called the return type)
  • In contrast, a void-function cannot return any
    value in its identifier

4
Example
  • Write a void function called DisplayMessage(),
    which you can call from main(), to describe the
    pollution index value it receives as a parameter
  • Your city describes a pollution index
  • less than 35 as Pleasant,
  • 35 through 60 as Unpleasant,
  • and above 60 as Health Hazard

5
  • parameter
  • void DisplayMessage(int index)
  • if(index lt 35)
  • cout ltlt Pleasant
  • else if(index lt 60)
  • cout ltlt Unpleasant
  • else
  • cout ltlt Health Hazard

6
The Rest of the Program
  • include ltiostreamgt
  • void DisplayMessage(int) // Prototype
  • using namespace std
  • int main()
  • int pollutionIndex
  • cout ltlt Enter air pollution index
  • cin gtgt pollutionIndex
  • DisplayMessage(pollutionIndex) // Call
  • return 0
  • argument

6
7
Return Statement
  • return // No value to return
  • Return without a value valid only in the body
    block of a void function
  • Causes control to leave the function and
    immediately return to the calling block, leaving
    any subsequent statements in the function body
    unexecuted

8
Void Functions Stand Alone
  • include ltiostreamgt
  • void DisplayMessage(int)// Prototype
  • using namespace std
  • int main() argument
  • DisplayMessage(15) // Function call
  • cout ltlt Good Bye ltlt endl
  • return 0


8
9
Value-Returning FunctionsCalled as Part of an
Expression
  • include ltiostreamgt
  • int Square(int) // Prototypes
  • int Cube(int)
  • using namespace std
  • int main()
  • cout ltlt The square of 27 is
  • ltlt Square(27) ltlt endl
  • cout ltlt The cube of 27 is
  • ltlt Cube(27) ltlt endl
  • return 0
  • function calls

9
10
Rest of Program
  • int Square(int n) // Header and body
  • return n n
  • int Cube(int n) // Header and body
  • return n n n

11
Use Void or Value-Returning Functions?
  • - If it must perform Input or Output, use a void
    function
  • - If there is only one answer returned, a
    value-returning function is appropriate
    (especially if the return value will be
    immediately used in an expression by the caller)
  • - If several answers are returned to the caller
    using reference parameters, a void function
    should be used

12
Parameter List
  • A parameter list is the means used for functions
    to share information with one another

13
Parameters
  • Parameters can be passed to a function either by
    value or by reference

14
Pass-by-value
incoming
value of argument
CALLING BLOCK
FUNCTION CALLED
15
Pass-by-reference
CALLING BLOCK
FUNCTION CALLED
outgoing
changed value of argument
OR,
16
Pass-by-reference
OR argument has no value yet when call occurs
CALLING BLOCK
FUNCTION CALLED
outgoing
new value of argument
17
Data Flow Determines Passing-Mechanism
  • Parameter Data Flow Passing-Mechanism

Incoming / in / Pass-by-value Outgoi
ng / out / Pass-by-reference Incoming
/outgoing Pass-by-reference /
inout /
17
18
Default Parameter Type
  • All C simple types are value parameters by
    default
  • Reference parameters are marked as such by having
    an ampersand() beside their type in the
    parameter list

19
Passing By Value (typical)
Main Function Code Main Function Memory int
main() int A 15 myFunc( A )
When created, a variable has a name, memory
address, and contents.
Other Function Code Other Function Memory void
myFunc( int Z ) Z 9
20
Passing By Value (typical)
Main Function Code Main Function Memory int
main() int A 15 myFunc( A )
Other Function Code Other Function Memory void
myFunc( int Z ) Z 9
On a function call, the function gets a COPY of
any pass-by-value parameters at a different
memory location.
21
Passing By Value (typical)
Main Function Code Main Function Memory int
main() int A 15 myFunc( A )
Other Function Code Other Function Memory void
myFunc( int Z ) Z 9
Changes the function makes to its copy of the
value parameter do not effect the original.
22
Passing By REFERENCE
Main Function Code Main Function Memory int
main() int A 15 myFunc( A )
When created, a variable has a name, memory
address, and contents.
Other Function Code Other Function Memory void
myFunc( int Z ) Z 9
23
Passing By REFERENCE
Main Function Code Main Function Memory int
main() int A 15 myFunc( A )
Other Function Code Other Function Memory void
myFunc(int Z ) Z 9
On a function call, the function gets the MEMORY
ADDRESS of any pass-by-reference parameters.
24
Passing By REFERENCE
Main Function Code Main Function Memory int
main() int A 15 myFunc( A )
Other Function Code Other Function Memory void
myFunc(int Z ) Z 9
Changes the function makes to the reference
parameter effect the original.
25
Use of Reference Parameters
  • Reference parameters should be used when the
    function is to assign a value to, or change the
    value of, a variable from the calling block
    without an assignment statement in the calling
    block

26
Using a Reference Parameter
  • Is like giving someone the key to your home
  • The key can be used by the other person to change
    the contents of your home!

27
Additional Terms
  • Pass-by-reference is also called . . .
  • pass-by-address, or
  • pass-by-location
  • Can you explain why?

28
Example of Pass-by-Reference
  • We want to find 2 real roots for a quadratic
    equation with coefficients a,b,c. Write a
    prototype for a void function named GetRoots()
    with 5 parameters. The first 3 parameters are
    type float. The last 2 are reference parameters
    of type float.

29
  • void GetRoots(float a, float b, float c, float
    r1, float r2)
  • Now write the function definition using this
    information
  • This function uses 3 incoming values a, b, c from
    the calling block. It calculates 2 outgoing
    values root1 and root2 for the calling block.
    They are the 2 real roots of the quadratic
    equation with coefficients a, b, c.

// Prototype
30
void GetRoots(float a, float b, float c,
float r1, float r2) float temp //
Local variable temp b b - 4.0 a
c r1 (-b sqrt(temp)) /(2.0 a) r2
(-b - sqrt(temp)) /(2.0 a) return
Function Definition
30
31
  • include ltiostreamgt
  • include ltfstreamgt
  • include ltcmathgt
  • void GetRoots(float a, float b, float c, float
    r1, float r2)// Prototype
  • using namespace std
  • void main()
  • ifstream myInfile
  • ofstream myOutfile
  • float a, b, c, first, second
  • int count 0
  • ...... // Open files
  • while(count lt 5)
  • myInfile gtgt a gtgt b gtgt c
  • GetRoots(a, b, c, first, second) // Call
  • myOutfile ltlt a ltlt b ltlt c ltlt first ltlt second
    ltlt endl
  • count

31
Write a Comment
User Comments (0)
About PowerShow.com