1 / 30

Week 5 – Functions (1)

Week 5 – Functions (1). Outline. Why use functions? Functions in C Pre-defined functions User-defined functions Function prototypes Function definitions Function calls What about number, order and type of parameter? Functions that do not return a value Functions that return a value

osborn
Download Presentation

Week 5 – Functions (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Week 5 – Functions (1) PGT 106: Computer Programming

  2. Outline • Why use functions? • Functions in C • Pre-defined functions • User-defined functions • Function prototypes • Function definitions • Function calls • What about number, order and type of parameter? • Functions that do not return a value • Functions that return a value • Miscellaneous about functions • Sample application • Scope and mechanics of passing values to functions PGT 106: Computer Programming

  3. Why use functions? • Let say you want to print one row of number 8 and one row of number 9 #include <stdio.h> int main() { int iLoop1, iLoop2; //print one row of number 8 for(iLoop1=1; iLoop1<=10; iLoop1++) printf(“8"); printf("\n"); //go to new line //print one row of number 9 for(iLoop2=1; iLoop2<=10; iLoop2++) printf(“9“); printf("\n"); //go to new line return 0; } PGT 106: Computer Programming

  4. Why use functions? • It seems that you are doing the same thing twice!!(i.e. printing two rows of numbers) • This is wasting time and not flexible!! • So, need to use function PGT 106: Computer Programming

  5. Why use functions? #include <stdio.h> void fnDisplay(int); //function prototype int main() { fnDisplay(8); //function call fnDisplay(9); //function call return 0; } void fnDisplay(int value) //function definition { int iLoop; for(iLoop=1; iLoop<=10; iLoop++) printf("%d", value); printf("\n"); //go to new line } PGT 106: Computer Programming

  6. Functions in C • Functions can be created to execute small, frequently-used tasks • In C, there are predefined functions or sometimes called standard functions, and there are user-defined functions. • Predefined functions are already available functions that can be used, called library • The usage is like stdio.h, in which the library name must be #included at the top of the source code (preprocessor directive) PGT 106: Computer Programming

  7. Predefined Functions (Library) • Common libraries are stdio.h, math.h, string.h, and stdlib.h • stdio.hrelated functions: printf, scanf,etc • math.h related functions: sin, cos, exp, pow, sqrt, etc. • string.h related functions: strcmp, strcpy, strlen, etc. • stdlib.h related functions: abs, fabs PGT 106: Computer Programming

  8. Predefined Functions (Library)-example #include <stdio.h> #include <math.h> #include <string.h> void main() { string sName; int iVol1, iVol2, iN,iR, iKTemp, iLength; strcpy(sName, “Marina”); iVol2 = iVol1 * exp(iN * iR * iKTemp); iLength = strlen(“Mahathir”); } PGT 106: Computer Programming

  9. User-Defined Functions • What do we need to define and make use of user-defined functions? • Function prototypes • Function definitions • Function calls PGT 106: Computer Programming

  10. Function Prototypes • Function prototype is a declaration; indicates the function exists • Should have function name, return type and parameter • Argument name is not compulsory in function header • Function prototype hasthe following form: • <return_type> <function_name> (arg_type arg_name, ...); • int fnSum (int iNum1,int iNum2); • int fnSum (int,int); //is also acceptable semicolon PGT 106: Computer Programming

  11. Function Definitions • Function definition includes the body of a function • Function definition hasthe following form: • <return_type> <function_name> (arg_type arg_name, ...) { … statements … } • int fnSum (int iNum1,int iNum2) { int iAdd; iAdd = iNum1 + iNum2; return(iAdd); } • Notice that argument name is used in the function body • Unlike function prototype, argument name in function definition must be included in function header no semicolon function header PGT 106: Computer Programming

  12. Function Calls • Consists of a function name followed by an argument expression list enclosed in parentheses • Function call hasthe following form: • <function_name> (exp, exp ...) • exp is an expression– can be variable or constant • iResult = fnSum(x,y); PGT 106: Computer Programming

  13. Example of function in program //This program sums up two numbers #include <stdio.h> intfnSum(int, int);//function prototype int main() { intiX, iY, iResult; printf( “Enter x and y : ”); scanf(“%d %d”, &iX, &iY); iResult = fnSum(iX,iY); //function call printf(“Sum is : %d”, iResult); return 0; } intfnSum(int iNum1, int iNum2)//function definition { intiAdd; iAdd = iNum1+iNum2; return(iAdd);} } function header PGT 106: Computer Programming

  14. What about number, order and type of parameter? • Number, order and type of parameters in the argument list of a function call and function definition MUST match. • If function prototype and definition have three parameters then the function call must have three parameters. • If the types are int, float and double in the prototype, the types in the function call should be int, float and double, respectively. PGT 106: Computer Programming

  15. What about number, order and type of parameter?(e.g1) prototype void fnFunction2(intiN, double dX); function header void fnFunction2(intiN, double dX) function call fnFunction2 (iM, dY); • Note that there are two arguments for function prototype, function definition and function call; the first is int and the second is double. With these three we have met the number, order and type requirements. PGT 106: Computer Programming

  16. What about number, order and type of parameter?(e.g2) int fnSum(int, int);//function prototype int fnSum(int iNum1, int iNum2) //function definition fnSum(iX,iY);//function call • Refer to program in slide 13 • Number, order and type parameter are met because: there are two parameters, the parameters are listed in order i.e respectively and first parameter is int and second parameter is int. PGT 106: Computer Programming

  17. Functions that do not return a value //This program sums up two numbers #include <stdio.h> void fnSumPrint(int, int); //function prototype void fnFunction1(); //function prototype int main() { int iX,iY; fnFunction1(); //function call printf(“Enter x and y: ”); scanf(“%d %d”, &iX, &iY); fnSumPrint(iX,iY); //function call return 0; } void fnSumPrint(int iNum1, int iNum2) //function definition { int iAdd; iAdd = iNum1+iNum2; printf(“Sum is: %d”,iAdd); } void fnFunction1() { printf(“Welcome to this program\n”); } PGT 106: Computer Programming

  18. Functions that return a value //This program sums up two numbers #include <stdio.h> int fnSum(int,int);//function prototype int main() { int iX,iY,iResult; printf(“Enter x and y: ”); scanf(“%d %d”, &iX, &iY); iResult = fnSum(iX,iY);//function call printf(“Sum is : %d”,iResult); return 0; } int fnSum(int iNum1, int iNum2)//function definition { int iAdd; iAdd = iNum1+iNum2; return(iAdd); } PGT 106: Computer Programming

  19. Miscellaneous about functions • Function call used as logical expression int fnCalc(int,int);//function prototype int main(void) { int iNum1, iNum2; scanf(“%d %d”,&iNum1,&iNum2); if(fnCalc(iNum1,iNum2)>100)//function call used as logical expression printf(“result greater than 100”); else printf(“result less than 100”); return 0; } int fnCalc(int iN1,int iN2) { int iAnswer; iAnswer=iN1+iN2; return(iAnswer); } PGT 106: Computer Programming

  20. Miscellaneous about functions • Function call used in printf statement int fnCalc(int,int); //function prototype int main(void) { int iNum1,iNum2; scanf(“%d %d”,&iNum1,&iNum2); printf(“Sum = %d”,fnCalc(iNum1, iNum2));//function callreturns a //value and puts in printf return 0; } int fnCalc(int iN1,int iN2) { int iAnswer; iAnswer=iN1+iN2; return(iAnswer); } PGT 106: Computer Programming

  21. Miscellaneous about functions • Rules regarding naming convention for variables • iNum1 passes value to iN1, iNum2 passes value to iN2 • Better use different variable names for parameters in main AND parameters in function definition int fnCalc(int,int);//prototype function int main(void) { int iNum1,iNum2,iResult;//declare like this scanf(“%d %d”,&iNum1,&iNum2); iResult = fnCalc(iNum1,iNum2); //function call printf(“sum = %d“,iResult); return 0; } //function definition int fnCalc(int iN1,int iN2) //simply declare like this { int iAnswer; iAnswer=iN1+iN2; return(iAnswer); } PGT 106: Computer Programming

  22. Sample application • Write a C program that calculates and prints addition and subtraction of numbers. • Your program should have functions: • fnAdd : adds two numbers • fnSubtract : subtracts two numbers • fnPrintResult : prints results from calculation PGT 106: Computer Programming

  23. #include <stdio.h> int fnAdd(int,int); int fnSubtract(int,int); void fnPrintResult(int); int main() { int iNum1,iNum2,iAnswer; char cOp; printf(“Enter two numbers and operator:”); scanf(“%d %d %c”, &iNum1,&iNum2,&cOp); switch(cOp) { case ‘+’ :iAnswer=fnAdd(iNum1,iNum2);break; case ‘-’ :iAnswer=fnSubtract(iNum1,iNum2);break; default: printf(“Invalid operator”); } fnPrintResult(iAnswer); return 0; } int fnAdd(int iX,int iY) { int iSum; iSum = iX+iY; return(iSum); } int fnSubtract(int iX,int iY) { int iSub; iSub=iX-iY; return(iSub); } void fnPrintResult(int iAns) { printf(“Answer is %d”, iAns); } Sample application(cont) PGT 106: Computer Programming

  24. 1 /* Fig. 5.4: fig05_04.c 2 Finding the maximum of three integers */ 3 #include <stdio.h> 4 5 int fnMaximum(int, int, int); /* function prototype */ 6 7 int main()‏ 8 { 9 int iA, iB, iC; 10 11 printf( "Enter three integers: " ); 12 scanf( "%d %d %d", &iA, &iB, &iC ); 13 printf( "Maximum is: %d\n", fnMaximum( iA, iB, iC ) ); 14 15 return 0; 16 } 17 18 /* Function maximum definition */ 19 int fnMaximum(int iX, int iY, int iZ)‏ 20 { 21 int iMax = iX; 22 23 if ( iY > iMax )‏ 24 iMax = iY; 25 26 if ( iZ > iMax )‏ 27 iMax = iZ; 28 29 return iMax; 30 } 1. Function prototype (3 parameters)‏ 2. Function call 3. Function definition Program Output Enter three integers: 22 85 17 Maximum is: 85

  25. Scope and Mechanics of Passing Values to Functions • Scope refers to the region in which a declaration is active • File scope is also called global variable • declared at the top of a source file • declarations not placed in any functions • can be used by any statements that are being executed in the system • Function scope is also called local variable • declared in a block { … } • scope is within its block – lifetime while the block is executed PGT 106: Computer Programming

  26. Global Variable : Example • #include <stdio.h> int iGlobal = 3; //This is the global variable void fnChangeGlobal( ); int main(void) { printf("%d\n“, iGlobal); //Reference to global //variable in a function fnChangeGlobal(); printf("%d\n", iGlobal); return 0; } void fnChangeGlobal( ) { iGlobal = 5; } //Reference to global //variable in a function PGT 106: Computer Programming

  27. Global Variable : Example The output will be: 3 5 PGT 106: Computer Programming

  28. Local Variable : Example • #include <stdio.h> void fnChangeLocal(); int main(void) { int iLocal = 3; //This is a local variable printf("%d\n", iLocal); //Reference to local //variable in a function fnChangeLocal(); printf("%d\n", iLocal); return 0; } void fnChangeLocal() { int iLocal = 5; //This is another local variable printf("%d\n", iLocal); } PGT 106: Computer Programming

  29. Local Variable : Example The output will be: 3 5 3 PGT 106: Computer Programming

  30. End Week 5 – Functions (1) Q & A! PGT 106: Computer Programming

More Related