CSE 295 Lecture 3 - Function
CSE 295 Lecture 3 - Function
1
Function
• Two types of function
– Library function
• scanf, printf, gets, puts, getch, sqrt etc.
– User defined function
2
Function Structure
ReturnType FunctionName (Parameter List)
{
//Declaration of Local Variables
//Doing some activities
//Return values accordingly
}
3
Function Prototype
• Prototype declares three attributes of a function
– Its return type
– Number of parameters
– Type of parameters
• Compiler need to know the type of data returned by the function
• Default int assumed
• Report illegal type conversions
• main does not require prototype
• Function with no parameters should contain the keyword void in prototype
4
Function Prototype
• Function prototype declares a function
– before its use
– prior to its definition
• Ends with semicolon
• Example:
– Function:
void myfunc(void)
{
}
– Prototype
void myfunc(void);
5
Function Arguments
• To take arguments a function must have special variables
• Argument:
– The value that is passed to a function
• formal parameter
– The variable that receive the value of the argument inside the function
• Local variables of a function can not have same name as formal parameters
6
Where to place the function?
• Above the main function
• Below the main function (but you have to use prototype then!)
7
Declaration Vs. Definition
• Declaration: specifies the type of the object
– Function prototype
• Definition: causes storage for an object to be created
– Function: which contains the body is definition
– It is legal to define a function fully before its use
• Eliminates need of separate prototype
8
A Normal Function
2.c9
Parameters
3.c
10
Parameters
4.c 11
Parameters
12
5.c
Parameterized Function
13
Return Types
14
6.c
Return Types
15
7.c
Return Types
8.c 16
Return
• If no return type specified: default int assumed
• when the return statement is encountered: the function returns the control to
the caller immediately
• return statement can be used without return value
– return ;
– Used mostly by void functions
• If the return value is not assigned to anything it is lost, but no harm done
17
Return
• More than one values cannot be returned
– return a, b;
• Reference can be used
– Discussed later
18
Function Scope
(Local and Global Variables)
19
global_variable1.c
Function Scope
(Local and Global Variables)
space
20
global_variable2.c
Function Scope
(Local and Global Variables)
21
global_variable3.c
Function Arguments
22
Task
• Write a program that takes the base and exponent as user input and
computes baseexponent. Your program must use a function baseExpo(int base,
int expo) that returns a double value to compute the result (baseexponent).
23
Function
• C program contains at least one function
• main() must be present exactly once in a program
• No limit on number of functions defined
• There can be function which is defined but not called
• There can be function which is declared but not defined
• One function can not be defined inside other function
• Two or more function can not have same name
• Function and variable name can not be same
• Minimal function is
– dummy(){}
24
Function Call
• Call by value
– Have no effect on the argument used to call
• Call by reference
– Address of an argument is copied into the parameter
• By default C uses call by value
25
Why call by reference?
Swap_code.c
26
Why call by reference? (2)
• What to do if we need to pass an array into the function?
Call_by_reference_1.c
Call_by_reference_2.c
27
Other tasks inside the function
• What other tasks can be done inside the function?
• We can do all the tasks what we can do inside the main, such as
– Scanning the inputs
– Calling another function etc.
Func_call_from_func.c
28
Question 1
29
question_1.c
Question 2
30
question_2.c
Some for practices
• Write a C program to check whether a number is prime, even/odd, or
perfect using functions.
• Write a C program to print all perfect numbers between given interval using
functions.
31
Recursive Function (Recursion)
32
Rec1_sum_of_numbers.c
33
Recursion
• Advantages
• Disadvantages
34
Factorial
• How to determine Factorial of a number using recursive function?
35
36
Rec2_Factorial.c
Fibonacci
• How to determine nth Fibonacci numbers using recursive function?
Fib(0)=0;
Fib(1)=1;
Fib(n)=Fib(n-1)+Fib(n-2).
37
38
Rec3_Fibonacci.c
Reference
• TEACH YOURSELF C by Herbert Schildt (3rd Edition)
– Chapter 1 (1.7-1.9)
– Chapter 7 (7.1-7.3)
39
Thank You
Acknowledgement: MB
40