chapter 6-functions
TRANSCRIPT
PRESENTED BY BIPLAV SARMA
FACULTY(IT)
Chapter 5Functions in C
05/03/2023Editted by Biplav Sarma
2
OUTLINE
What is a Function Why Use Functions Passing Values between Functions
Scope Rule of Functions Calling Convention Advanced Features of Functions
Function Declaration and Prototypes Call by Value and Call by Reference Recursion Conclusions
05/03/2023Editted by Biplav Sarma
3
Top-Down Design
Involves repeatedly decomposing a problem into smaller problems
Eventually leads to a collection of small problems or tasks each of which can be easily coded
The function construct in C is used to write code for these small, simple problems.
05/03/2023Editted by Biplav Sarma
4
WHAT IS A FUNCTON?
A function is a self-contained block of statements that perform a coherent task of some kind.
Every C program can be thought of as a collection of these functions.
There is no limit on the number of functions that might be present in a C program.
If a program contains only one function, it must be main( )
05/03/2023Editted by Biplav Sarma
5
Contd…
Divide and conquer Construct a program from smaller pieces or
components These smaller pieces are called modules
Each piece more manageable than the original program
05/03/2023Editted by Biplav Sarma
6
Benefits of functions
Divide and conquer Manageable program development
Software reusability Use existing functions as building blocks for new
programs Abstraction - hide internal details (library functions)
Avoid code repetition
05/03/2023Editted by Biplav Sarma
7
Function definition format
return-value-type function-name( parameter-list ){ declarations and statements}
Function-name: any valid identifier Return-value-type: data type of the result (default int)
void – indicates that the function returns nothing Parameter-list: comma separated list, declares
parameters A type must be listed explicitly for each parameter
unless, the parameter is of type int
05/03/2023Editted by Biplav Sarma
8
Contd…
return-value-type function-name( parameter-list ){ declarations and statements}
Declarations and statements: function body (block) Variables can be declared inside blocks (can be nested) Functions can not be defined inside other functions
Returning control If nothing returned
return; or, until reaches right brace
If something returned return expression;
05/03/2023Editted by Biplav Sarma
9
Example-Passing values to a function
/* Sending and receiving values between functions */#include<stdio.h>int calsum(int,int,int);void main( ){int a, b, c, sum ;printf ( "\nEnter any three numbers " ) ;scanf ( "%d %d %d", &a, &b, &c ) ;sum = calsum ( a, b, c ) ;printf ( "\nSum = %d", sum ) ;}int calsum (int x,int y,int z ){return ( x + y + z ) ;}
05/03/2023Editted by Biplav Sarma
10
EXAMPLE 2
/* Find the hightest value among 3 numbers using functions */
#include<stdio.h>int maximum(int,int,int);void main( )
{int a, b, c, m ;printf ( "\nEnter any three numbers " ) ;scanf ( "%d %d %d", &a, &b, &c ) ;m = maximum( a, b, c ) ;printf ( "\nMaximum Value = %d", m ) ;}
05/03/2023Editted by Biplav Sarma
11
Contd…
int maximum (int x,int y,int z ){int max=x;if(y>max)max=y;if(z>max)max=z;
return max;
}
05/03/2023Editted by Biplav Sarma
12
Function Prototypes
Function prototype Function name Parameters – what the function takes in Return type – data type function returns (default int) Used to validate functions Prototype only needed if function definition comes after use
in program The function with the prototype
int maximum( int, int, int ); Takes in 3 ints Returns an int
Promotion rules and conversions Converting to lower types can lead to errors
05/03/2023Editted by Biplav Sarma
13
Header Files
Header files Contain function prototypes for library functions <stdlib.h> , <math.h> , etc Load with #include <filename>
#include <math.h>Custom header files
Create file with functions Save as filename.h Load in other files with #include "filename.h" Reuse functions
05/03/2023Editted by Biplav Sarma
14
Calling Functions: Call by Value and Call by Reference
Used when invoking functionsCall by value
Copy of argument passed to function Changes in function do not effect original Use when function does not need to modify argument
Avoids accidental changesCall by reference
Passes original argument Changes in function effect original Only used with trusted functions
05/03/2023Editted by Biplav Sarma
15
Call by Value#include<stdio.h>/* CALL BY VALUE using functions */void main( ) {int a;void change(int);printf ( "\nEnter the number " ) ;scanf ( "%d", &a) ;printf ( "\nYou entered = %d",a ) ;change(a);printf ( "\nValue after change() %d",a ) ;}void change(int a){a=40;printf ( "\nValue of a in change()%d",a ) ;return;}
05/03/2023Editted by Biplav Sarma
16
Call by Value
05/03/2023Editted by Biplav Sarma
17
Call by Reference #include<stdio.h>void interchange(int *num1,int *num2){
int temp; temp = *num1; *num1 = *num2; *num2 = temp; printf("\\n During Call of Interchange:”);
printf("\nNumber 1 : %d",num1); printf("\nNumber 2 : %d",num2);
}int main() {
int num1=50,num2=70; printf("\nNumber 1 : %d",num1); printf("\nNumber 2 : %d",num2); interchange(&num1,&num2); printf("\nNumber 1 : %d",num1); printf("\nNumber 2 : %d",num2);
return(0);}
05/03/2023Editted by Biplav Sarma
18
Call by Reference
05/03/2023Editted by Biplav Sarma
19
Basic Difference
Call by Value Call by Reference
Duplicate Copy of Original Parameter is Passed
Actual Copy of Original Parameter is Passed
No effect on Original Parameter after modifying parameter in function
Original Parameter gets affected if value of parameter changed inside function
05/03/2023Editted by Biplav Sarma
20
Header Files
In order to call upon functions compiled in separate files, you need to include their definition as a declaration or a prototype for simplicity, if you have functions in several files, each
of which call upon some of the same functions, you can place the prototypes in a single file, called a header file all other shared definitions and declarations can go here as well
05/03/2023Editted by Biplav Sarma
21
Contd…
A header files typically only contain definitions and declarations, not executable code consider as an example a calculator program that has its’
functions split into multiple files: a main function in one file which calls upon stack operations in a file stack.c a parsing operation to get tokens from a string in the file getop.c a function to get char input in the file getch.c a header file contains prototypes and common declarations called
calc.h
05/03/2023
22
Commonly Used Header Files
Editted by Biplav Sarma
Header File Contains Function Prototypes for:<stdio.h> standard input/output library functions
and information used by them<math.h> math library functions<stdlib.h> conversion of numbers to text, text to
numbers, memory allocation, random numbers, and other utility functions
<time.h> manipulating the time and date<ctype.h> functions that test characters for certain
properties and that can convert case<string.h> functions that manipulate character strings
05/03/2023Editted by Biplav Sarma
23
Example: Finding hypotenuse of a Triangle
#include <stdio.h>#include <stdlib.h>#include <math.h>int main ( ){ float side1, side2, hypotenuse ; printf(“Enter the lengths of the right triangle sides: “) ; scanf(“%f%f”, &side1, &side2) ; if ( (side1 <= 0) || (side2 <= 0) { exit (1) ; } hypotenuse = sqrt ( (side1 * side1) + (side2 * side2) ) ; printf(“The hypotenuse = %f\n”, hypotenuse) ; return 0 ;}
05/03/2023Editted by Biplav Sarma
24
Recursion
In C, it is possible for the functions to call themselves. A function is called ‘recursive’ if a statement within the body of a function calls the same function.
Sometimes called ‘circular definition’, recursion is thus the process of defining something in terms of itself.
05/03/2023Editted by Biplav Sarma
25
Example: Finding factorial of a number
#include<stdio.h>rec(int);void main( ){int a, fact ;printf ( "\nEnter any number " ) ;scanf ( "%d", &a ) ;fact = rec ( a ) ;printf ( "Factorial value = %d", fact ) ;}
05/03/2023Editted by Biplav Sarma
26
Contd…
int rec ( int x ){int f ;if ( x == 1 )return ( 1 ) ;elsef = x * rec ( x - 1 ) ;return ( f ) ;}
05/03/2023Editted by Biplav Sarma
27
Displaying Fibonacci series
#include <stdio.h> int fibonaci(int i) { if(i == 0) { return 0; } if(i == 1)
{ return 1;
} return fibonaci(i-1) + fibonaci(i-2); }
05/03/2023Editted by Biplav Sarma
28
Contd…
int main() { int i; for (i = 0; i < 10; i++) {
printf("%d\t%n", fibonaci(i)); } return 0; }
05/03/2023Editted by Biplav Sarma
29
Summary
To avoid repetition of code and bulky programs functionally related statements are isolated into a function.
Function declaration specifies what is the return type of the function and the types of parameters it accepts.
Function definition defines the body of the function. Variables declared in a function are not available to
other functions in a program. So, there won’t be any clash even if we give same name to the variables declared in different functions.
05/03/2023Editted by Biplav Sarma
30
Contd…
Pointers are variables which hold addresses of other variables.
A function can be called either by value or by reference.
Pointers can be used to make a function return more than one value simultaneously.
Recursion is difficult to understand, but in some cases offer a better solution than loops.
Adding too many functions and calling them frequently may slow down the program execution.
05/03/2023Editted by Biplav Sarma
31
THANKS