dti2143 chapter 5
TRANSCRIPT
FUNCTIONCHAPTER 6
1
What is function?
A function is a section of a program that performs a specific task .
Solving a problem using different functions makes programming much simpler with fewer defects .
It’s a solution for a big project that split into small sub project.
Overview
Huge Book of 3000 pages
Same book published in
several volumes.Easily
manageable
Advantages of Functions
i. Problem can be viewed in a smaller scope
ii. Program development are much faster compared to the common structure
iii. Program becomes easier to maintain
Classification of Functions
1. Library functions
• defined in the language
• provided along with the compiler
Example: printf(), scanf() etc.
2. User Defined functions
• written by the user
Example: main() or any other user-defined function
More about Function..
Functions are used to perform a specific task on a set of values
Values can be passed to functions so that the function performs the task on these values
Values passed to the function are called arguments
After the function performs the task, it can send back the results to the calling function.
The value sent back by the function is called return value
A function can return back only one value to the calling function
Writing User-Defined Functions
int fnAdd(int iNumber1, int iNumber2)
{
/* Variable declaration*/
int iSum;
/* Find the sum */
iSum = iNumber1 + iNumber2;
/* Return the result */
return (iSum);
}
Return data type
Arguments (Parameters)
Function header
Can also be written as return isum;
Function Body
Example1: Writing User-Defined Functions
void fnDisplayPattern(unsigned int iCount)
{
unsigned int iLoopIndex;
for (iLoopIndex = 1; iLoopIndex <= iCount; iLoopIndex++) {
printf(“*”);
}
/* return is optional */
return;
}
Example: Writing User-Defined Functions
Example2 int fnAdd(int iNumber1, int iNumber2){
/* Return the result */Can also be written as return (iNumber1 + iNumber2);
}
=======================================================
Example3/* Function to display “UTHM.” */void fnCompanyNameDisplay(){
printf(“UTHM.”);}
Returning values• The result of the function can be given back to the calling
functions
• Return statement is used to return a value to the calling function
• Syntax:
return (expression) ;
• Example:
return(iNumber * iNumber);
return 0;
return (3);
return;
return (10 * i);
Function Terminologies
void fnDisplay() ;
int main(int argc, char **argv) {
fnDisplay();
return 0;
}
void fnDisplay() {
printf(“Hello World”);
}
Function Prototype
Function Call Statement
Function Definition
Calling Function
Called Function
Formal and Actual Parameters
• The variables declared in the function header are called as formal parameters
• The variables or constants that are passed in the function call are called as actual parameters
• The formal parameter names and actual parameters names can be the same or different
Functions – Exampleint fnAdd(int iNumber1, int iNumber2) ;
int main(int argc, char **argv) {
int iResult,iValue1, iValue2;
/* Function is called here */
iResult = fnAdd(iValue1, iValue2);
printf(“Sum of %d and %d is %d\n”,iValue1, iValue2, iResult);
return 0;
}
/* Function to add two integers */
int fnAdd(int iNumber1, int iNumber2)
{
/* Variable declaration*/
int iSum;
iSum = iNumber1 + iNumber2; /* Find the sum */
return (iSum); /* Return the result */
}
Actual Argument
Return value
Formal Argument
Types of Function in C Language
1. Function Definition2. Function Calls3. Function Prototypes
Element Of Functions
1. Function definitionsa) The first line
A function type A function name An optional list of formal parameters enclosed in
parenthesisEg: function_type function_name(formal parameters)
b) The body of the function The function body is the expression of the algorithm for
the module in C. The function body consist of variable declarations and
statements
Example of Function Definition
void print_menu(void)/* example of function definition. The first line specifies the type of the
function as void. This type of function will not return a value under its name. If a function is designed such that it does not return any value under its name, its type must be Void.*/
{printf(“THIS PROGRAM DRAWS A RECTANGLE OR A
TRIANGLE ON THE”);printf(“SCREEN.\n”);printf(“Enter 1 to draw a rectangle.\n”);printf(“Enter 2 to draw a triangle.”);} /*end function print_menu*/
2. Function Calls› A function call requires the name of the function
followed by a list of actual parameters (or arguments), if any enclosed in parentheses.
› If a function has no formal parameters in its definition, it cannot have any actual parameters in calls to it.
› In this case, in a function call, the name of the function must be followed by the function call operator, (). To indicate that it has no parameters
Eg1 : Function that has no parameters polynomial ()
The actual parameters may be expressed as constants, single variables or more complex expressions.
Eg2: Function that return value to yy=polynomial(x);
Eg3: Function that does not returns anything
polynomial (a,b,c)
Example Function that Return Value/* determine the largest of three integer quantities*/
#include <stdio.h>#include <conio.h>
int maximum (int x,int y){ int z; z=(x>=y)? x :y ; return(z);}
main(){ int a,b,c,d; /* read the integer quantities*/ printf("\na="); scanf("%d",&a); printf("\nb="); scanf("%d",&b); printf("\nc = "); scanf("%d",&c); /*calculate and display the maximum value*/ d=maximum(a,b); printf("\n\nmaximum =%d",maximum(c,d)); getch(); }
3. Function Prototypes› In general, all function in C must be declared› But function main, must not be declared.› Function prototype consist of
a) A function typeb) A function namec) A list of function parameters, the list of function
parameter types is written as (void) or (). If the function has more than one formal parameter, the parameter types in the list must be saparated by commas.
Eg format:function_type function_name(parameters);
Example of Function Prototype
Format: function_type function_name (parameters);
Example:void print_menu (void);double squared (double number);int get_menu_choice (void);
Function prototype can be placed in the source file outside function definition and in a function definition.
Outside Function Definition
Example of outside function definition:Global prototype
If a function prototype is global, any function in the program may use it because of this flexibility.
Global prototype will be place after the processor directives and before the definition or function main.
Inside Function Definition
Example of inside function definition: Local prototype The variables that are declared inside a function are
called as local variables Their scope is only within the function in which they
are declared These variables cannot be accessed outside the
function Local variables exist only till the function terminates
its execution The initial values of local variables are garbage values
Do and Don’t in Function
DODo use local variable whenever possible
Do limit each function to a single task
DON’TDon’t try return a value that has a type different from the function’s type
Don’t let functions get too long. If a function starts getting long, try to break it into separate smaller tasks.
Don’t have multiple return statements if they aren’t needed. You should try to have one returns when possible; however, sometimes having multiple return statement is easier and clearer.
Passing Arguments to a Function
1. List them in parentheses following the function name.
2. The number of arguments and the type of each arguments must match the parameter in the function header and prototype.
Example if a function is defined to take two type
int arguments, you must pass it exactly two int arguments.
Each argument cab be any valid C expression such as:› A constant› A variable› A mathematical or logical expression or
event another function( one with a return value)
• Example:X=half (third(square(half(y))));
How to solve it?a. The program first calls half(), passing it y as an
argument.b. When execution returns from half(), the program
calls square(), passing half()’s return values as the argument.
c. Then, half() is called again, this time with third()’s return values as an argument
d. Finally, half()’s return value is assigned to the variable x.
The following is an equivalent piece of code:
a= half(y);b=square(a);c= third(b);x= half(c);
Recursion
The term recursion refers to a situation in which a function calls itself either directly or indirectly.
Indirectly recursion:› Occurs when one functions and they can
be useful in some situations.› This type of recursion can be used to
calculated the factorial of a number and others situation.
/*Demonstrates function recursion. Calculate the factorial of a number*/
#include <stdio.h>unsigned int f,x;unsigned int factorial(unsigned int a);
main(){ puts ("Enter an integer value between 1 and 8:"); scanf("%d",&x);
if(x>8||x<1) { printf("Only values from 1 to 8 are acceptable!");}else{
f=factorial(x); printf("%u factorial equals %u\n",x,f);} return 0;}unsigned int factorial (unsigned int a){ if (a==1) return 1; else{ a *=factorial(a-1); return a; } }
Others examples..
Example – Finding the sum of two numbers using functions ( No parameter passing and no return)
#include <stdio.h>#include <conio.h>void fnSum();int main( int argc, char **argv ) {
fnSum();getch();
return 0;}void fnSum() {
int iNum1,iNum2,iSum;printf("\nEnter the two numbers:");scanf("%d%d",&iNum1,&iNum2);iSum = iNum1 + iNum2;printf("\nThe sum is %d\n",iSum);
}
Example – Finding the sum of two numbers using functions ( parameter passing )
#include <stdio.h>#include <conio.h>
void fnSum( int iNumber1, int iNumber2);int main( int argc, char **argv ) {
int iNumber1,iNumber2;printf("\nEnter the two numbers:");scanf("%d%d",&iNumber1,&iNumber2);fnSum(iNumber1,iNumber2);getch();return 0;
}void fnSum(int iNum1,int iNum2){
int iSum;iSum=iNum1 + iNum2;printf("\nThe sum is %d\n",iSum);
}
Example – Finding the sum of two numbers using functions ( parameter passing and returning value)
#include <stdio.h>#include <conio.h>
int fnSum( int iNumber1, int iNumber2);int main( int argc, char **argv ){
int iNumber1,iNumber2,iSum;printf("\nEnter the two numbers:");scanf("%d%d",&iNumber1,&iNumber2);iSum = fnSum(iNumber1,iNumber2);printf("\nThe sum is %d\n",iSum);getch();return 0;
}int fnSum(int iNum1,int iNum2){
int iTempSum;iTempSum=iNum1 + iNum2;return iTempSum;
}
Simple Example 1#include<stdio.h>#include<conio.h>
int addition (int a, int b){ int r; r=a+b; return (r);}
int main (){ int z; z = addition (5,3); printf("The result is %d",z); getch(); return 0;}
#include<stdio.h>#include<conio.h>
int subtraction (int a, int b){ int r; r=a-b; return (r);}
int main (){ int x=5, y=3, z; z = subtraction (7,2); printf("The first result is %d\n",z); printf("The second result is %d\n",subtraction (7,2)); printf("The third result is %d\n",subtraction (x,y)); z= 4 + subtraction (x,y); printf("The fourth result is %d\n",z); getch(); return 0;}
38
Thank you !
38