0% found this document useful (0 votes)
8 views26 pages

Lecture-Functions

Uploaded by

babugosha80
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
Download as pptx, pdf, or txt
0% found this document useful (0 votes)
8 views26 pages

Lecture-Functions

Uploaded by

babugosha80
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 26

CSC113-Programming Fundaments

Week 10

Ms. Noor-ul-Huda
Lecturer
Department of Computer Science
College of Computer Science and Information Systems
noor.huda@iobm.edu.pk
C Functions
Objectives
•Create functions
•Function prototypes
•Parameters
• Pass by value or reference
• Sending a reference

•Return values
•Math functions
Intro
Why:
◦ Divide and conquer
◦ Reuse abstractions
◦ Don’t rebuild the bridge

What:
◦ Used prepackaged functions
◦ printf, scanf, rand()
◦ Create our own
◦ main
◦ Pass parameters
◦ Accept return values
Functions
What is a Function?
A function is a block of code that performs a specific task.
It is a modular approach to break down a large program into smaller,
manageable pieces.
Types of Functions
There are two types of functions in C programming:

1.Library Functions: are the functions which are declared in the C header files
such as scanf(), printf(), gets(), puts(), ceil(), floor() etc.
2.User-defined functions: are the functions which are created by the C
programmer, so that he/she can use it many times. It reduces the
complexity of a big program and optimizes the code.
Math
#include <math.h>
Use any math function
If c1 = 13.0, d = 3.0 and f = 4.0, then the statement
printf( "%.2f", sqrt( c1 + d * f ) );
©1992-2013 BY PEARSON EDUCATION, INC. ALL RIGHTS RESERVED.
©1992-2013 BY PEARSON EDUCATION, INC. ALL RIGHTS RESERVED.
Create your function
Choose a name
◦ Function should perform a single well defined task
◦ If you can’t find a concise descriptive name, you may have too many jobs for the function

Define a contract
◦ Inputs
◦ Arguments – choose type
◦ None should be noted as void
◦ Will the function change the parameter’s value?
◦ Output
◦ Only one ; by convention, 0 means good

Write prototype
◦ Looks like function header but has ;
◦ int square( int y );
◦ Tells compiler what is valid input and output
◦ Forces type conversion
Write body
Call the function
Sample Function
#include <stdio.h>
int square ( int y ); // function prototype
// function main begins program execution
int main ( void )
{ int x; // counter
for ( x = 1; x <= 10; x++ ) {// loop 10 times and calc square of x each time
printf ( "%d ", square ( x ) ); // function call
}
puts (""); // add a blank line
}
// square function returns the square of its parm
int square ( int y ) // y is a copy of the x sent
return
•return serves two purposes:
– It tells the computer the value to return as the result
– It tells the computer to leave the function immediately and return the calling
function (or the main program).

•Void return:
– Ex: void printit ( int x );
– You can still return to leave, but without a value
Prototypes
Looks like function header but has ;
int square( int y );
Forces type conversion
Tells compiler what is valid input and output
Placement
◦ Applies to all functions appearing within the top level braces (or all if outside all
braces)
◦ Can put into its own .h file and then include without <>
◦ #include “myfunctions.h” (no semicolon)

No Overloading
• Every function name can have only one contract
Where do the variables
live?
On Stack: (lives and dies with function)
◦ Local – created in the function – automatic – on stack
◦ Argument – same as local

On Heap: (lives with program life)


◦ Use keyword static
◦ static int x = 1;
◦ When you return to the function it will retain old value
◦ Global
◦ declare outside a function block
Function Call Stack
Pile like one of dishes
◦ Access from the top
◦ Call a function – push it on the stack
◦ Execute function
◦ Push on other functions from within function
◦ Variables created in the stack
◦ Finish executing a function – pop it off the stack
◦ supports the creation, maintenance and destruction of each called function’s
automatic variables (local variables, parameters)
CREDIT TO DEITEL – C HOW TO PROGRAM 7TH ED ©1992-2013 BY PEARSON EDUCATION, INC. ALL
RIGHTS RESERVED.
CREDIT TO DEITEL – C HOW TO PROGRAM 7TH ED ©1992-2013 BY PEARSON EDUCATION, INC. ALL
RIGHTS RESERVED.
What Are Reference Parameters?
Reference parameters do not copy the value of the parameter.
Instead, they give the function being called a copy of the address at which the
data is stored. This way, the function works with the original data.
We call this passing by reference because we are making references to the
parameters.
Write SquareInPlace with
Reference Parm
tell the main program about the change in y by placing ( *) between the data
type and variable name:
int squareInPlace (int *y)
{ *y = *y * *y;
return 0;}
Send an address instead of the variable contents using (&) before variable
name:
int number = 6;
squareInPlace (&number);
printf(“%d”, number);
Passing Reference Parameters
Any data
number 4.0 y intended for y
in the
function goes
to the
location of
number in the
main
program
When to Use Value and
Reference Parameters
•We use value parameters when:
– We are not going to change the parameters’ value
– We may change it but the main program should not know about it

•When we are simply printing the value


– We use reference parameters when:
– We are going to change the parameter’s value and the main program MUST
know about it.
– We are reading in a new value
Recursion – Function
calls itself
Method for repetition
Need a stopping condition
Need to call with some way to reach the stop eventually
Pushes copies of itself onto the stack (memory use)
©1992-2013 BY PEARSON EDUCATION, INC. ALL RIGHTS RESERVED.
©1992-2013 BY PEARSON EDUCATION, INC. ALL RIGHTS RESERVED.
©1992-2013 BY PEARSON EDUCATION, INC. ALL RIGHTS RESERVED.
Summary
Create a function
◦ <return type> <function name> (<type> <var> …)

Call a function (can call it recursively)


◦ <function name> (<var>…)

Pass by reference
◦ Argument accepts address: *<var name>
◦ Caller sends address: &<var name>

Variable life
◦ Local vs global

You might also like