dti2143 chapter 5

38
FUNCTION CHAPTER 6 1

Upload: alish-al-shahab

Post on 17-May-2015

1.262 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Dti2143 chapter 5

FUNCTIONCHAPTER 6

1

Page 2: Dti2143 chapter 5

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.

Page 3: Dti2143 chapter 5

Overview

Huge Book of 3000 pages

Same book published in

several volumes.Easily

manageable

Page 4: Dti2143 chapter 5

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

Page 5: Dti2143 chapter 5

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

Page 6: Dti2143 chapter 5

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

Page 7: Dti2143 chapter 5

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

Page 8: Dti2143 chapter 5

Example1: Writing User-Defined Functions

void fnDisplayPattern(unsigned int iCount)

{

unsigned int iLoopIndex;

for (iLoopIndex = 1; iLoopIndex <= iCount; iLoopIndex++) {

printf(“*”);

}

/* return is optional */

return;

}

Page 9: Dti2143 chapter 5

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.”);}

Page 10: Dti2143 chapter 5

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);

Page 11: Dti2143 chapter 5

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

Page 12: Dti2143 chapter 5

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

Page 13: Dti2143 chapter 5

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

Page 14: Dti2143 chapter 5

Types of Function in C Language

1. Function Definition2. Function Calls3. Function Prototypes

Page 15: Dti2143 chapter 5

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

Page 16: Dti2143 chapter 5

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*/

Page 17: Dti2143 chapter 5

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 ()

Page 18: Dti2143 chapter 5

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)

Page 19: Dti2143 chapter 5

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(); }

Page 20: Dti2143 chapter 5

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);

Page 21: Dti2143 chapter 5

Example of Function Prototype

Format: function_type function_name (parameters);

Example:void print_menu (void);double squared (double number);int get_menu_choice (void);

Page 22: Dti2143 chapter 5

Function prototype can be placed in the source file outside function definition and in a function definition.

Page 23: Dti2143 chapter 5

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.

Page 24: Dti2143 chapter 5

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

Page 25: Dti2143 chapter 5

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.

Page 26: Dti2143 chapter 5

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.

Page 27: Dti2143 chapter 5

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)

Page 28: Dti2143 chapter 5

• 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.

Page 29: Dti2143 chapter 5

The following is an equivalent piece of code:

a= half(y);b=square(a);c= third(b);x= half(c);

Page 30: Dti2143 chapter 5

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.

Page 31: Dti2143 chapter 5

/*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; } }

Page 32: Dti2143 chapter 5

Others examples..

Page 33: Dti2143 chapter 5

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);

}

Page 34: Dti2143 chapter 5

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);

}

Page 35: Dti2143 chapter 5

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;

}

Page 36: Dti2143 chapter 5

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;}

Page 37: Dti2143 chapter 5

#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;}

Page 38: Dti2143 chapter 5

38

Thank you !

38