1 / 83

CNG 140 C Programming (Lecture set 5)

CNG 140 C Programming (Lecture set 5). Spring 2006-2007 http://www. ceng. metu.edu.tr/~bozyigit/cng140 Chapter 6 Functions: Part I. Objectives. Function and Parameter Declarations Returning a Value Case Study: Calculating Age Norms Standard Library Functions

tayten
Download Presentation

CNG 140 C Programming (Lecture set 5)

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. CNG 140C Programming(Lecture set 5) Spring 2006-2007 http://www.ceng.metu.edu.tr/~bozyigit/cng140 Chapter 6 Functions: Part I

  2. Objectives • Function and Parameter Declarations • Returning a Value • Case Study: Calculating Age Norms • Standard Library Functions • Common Programming and Compiler Errors CNG 140 C Programming, 20062

  3. Function and Parameter Declarations • A function that is called into action by its reference in another function is a called function • A function that calls another function is referred to as the calling function CNG 140 C Programming, 20062

  4. Function and Parameter Declarations (continued) CNG 140 C Programming, 20062

  5. Function and Parameter Declarations (continued) CNG 140 C Programming, 20062

  6. Function Prototypes • The declaration statement for a function is referred to as a function prototype • Declares the data type of the value that will be directly returned by the function • Declares the data type of the values that need to be transmitted to the called function when it is invoked • returnDataType functionName(argument data types); • Function prototypes allow the compiler to check for data type errors • If the function prototype does not agree with data types specified when the function is written, an error message (typically TYPE MISMATCH) will occur CNG 140 C Programming, 20062

  7. Calling a Function • Arguments: items enclosed in parentheses in a function call statement • Other terms used as synonyms for arguments are actual arguments and actual parameters • Pass by value: when a function receives copies of the values in each argument and must determine where to store them before it does anything else • Also referred to as call by value CNG 140 C Programming, 20062

  8. Calling a Function (continued) CNG 140 C Programming, 20062

  9. Calling a Function (continued) CNG 140 C Programming, 20062

  10. Function Header Line • Function header: identifies the data type of the return value, provides the function with a name, and specifies the number, order, and type of values expected by the function • Function body: operates on the passed data and returns, at most, one value • The argument names in the header line are known as parameters or formal parameters and formal arguments CNG 140 C Programming, 20062

  11. Function Header Line (continued) CNG 140 C Programming, 20062

  12. Function Header Line (continued) CNG 140 C Programming, 20062

  13. Function Header Line (continued) • main() must adhere to the rules required for constructing all C functions • Some programmers prefer to put all called functions at the top of a program and make main() the last function listed • Each C function is a separate and independent entity with its own parameters and variables • Nested functions are not permitted • The function’s prototype, along with pre- and postconditions should provide all the information necessary to call the function successfully CNG 140 C Programming, 20062

  14. Function Header Line (continued) Ends with a semicolon Does not end with a semicolon CNG 140 C Programming, 20062

  15. Placement of Statements • All preprocessor directives, variables, named constants, and functions, except main(), must be either declared or defined before they can be used • Basic (good) programming structure: preprocessor directives symbolic constants function prototypes can be placed here int main() { function prototypes can be placed here variable declarations; other executable statements; return value; } CNG 140 C Programming, 20062

  16. Returning a Value • From its side of the return transaction, the called function must provide: • Data type of the returned value, which is specified in the function’s header line • Actual value being returned, which is specified by a return statement CNG 140 C Programming, 20062

  17. Returning a Value (continue) CNG 140 C Programming, 20062

  18. Returning a Value (continue) • To return a value, use a return statement • return (expression); //or, return expression; • The expressionis evaluated first; its value is then automatically converted to the return value’s data type as specified in the function’s header line before being sent back to the calling function • Failure to exactly match the return value with the function’s declared data type can lead to undesired results • Return value is converted to the data type declared in the function’s header line CNG 140 C Programming, 20062

  19. Problem 6.4 • Input two numbers • Find the maximum of two float numbers and output it • The maximum is found using a function CNG 140 C Programming, 20062

  20. Returning a Value (continue) CNG 140 C Programming, 20062

  21. Notes on Function • Functions cannot be nested. • Every function needs a prototype to be declared before being defined and used. • Every definition starts with type of the returned value, has formal parameter list within parentheses followed by its body within braces. • A function whose protoype is placed in the main() is called from within main(), • If a function prototype is placed before the main(), it can be called from any function within the source program file. CNG 140 C Programming, 20062

  22. Returning a Value (continue) printf("The Celsius equivalent is %5.2f\n", tempConvert(fahren)); Value is automatically converted to float (it may also generate a compiler warning message, in case mismatch interpretation) CNG 140 C Programming, 20062

  23. Example Exercise -1 • Write a C program main() that inputs three values: • First one an an integer • Second one as a floating-point • Third one as double precision number • Pass them as parameters to function named as check() to be output. • Hint: • first define the function prototype, • then function definition with proper function header, • then the main program that inputs the parameter values and pass them as parameters to the function CNG 140 C Programming, 20062

  24. A good program structure Preprocessor directives Symbolic constants Function prototypes Function definitions (not preferred!) Int main() { Function prototype, for those only called by main() Variable declarations executable statements and function calls Return value } Function definitions (preferred!) CNG 140 C Programming, 20062

  25. Example Exercise -2 /* Program structure starts with definitions and prototypes */ #include <stdio.h> void check(int, float, double); /* function prototype */ CNG 140 C Programming, 20062

  26. Example Exercise -3 /* Main function*/ int main() { /* Declarations*/ int first; float second; double third; /*Executable statements*/ printf ( "Enter an integer, a floating point and double precision number: " ); scanf ( "%d %f %lf", &first, &second, &third ); check(first, second, third); /*function call*/ return 0; } CNG 140 C Programming, 20062

  27. Example Exercise -4 /* Function Definitions */ void check(int num1, float num2, double num3) { printf ( "\nThe integer is %d", num1 ); printf ( "\nThe floating point number is %f", num2 ); printf ( "\nThe double precision number is %lf", num3); return; } CNG 140 C Programming, 20062

  28. Function Stubs-1 • A stub is the beginning or a small part of a final function, used as a placeholder until the final function is completed float findMax(float x, float y) { printf("In findMax()\n"); printf("The value of x is %f\n", x); printf("The value of x is %f\n ", y); return 1.0; } • A stub must compile and link with its calling module • Stub should display a message that it has been entered successfully and the value(s) of its received arguments CNG 140 C Programming, 20062

  29. Function Stubs-2 • Stub may be used to for incremental program development which allows coding and testing along the program development cycle…. • This is more appropriate for relatively larger programs, or programs developed by a team… CNG 140 C Programming, 20062

  30. Functions with Empty Parameter Lists • The prototype for a function with empty parameter list requires either writing the keyword void or nothing between the parentheses following the function’s name • int display(void); • int display(); • A function with an empty parameter list is called by its name with nothing written in the parentheses following the function’s name • display(); CNG 140 C Programming, 20062

  31. Exercises-1 • Write a function named distanceBetweenTwoPoints or DBTwoPoints that accept the floating point coordinates of two points (x1, y1) and (x2, y2) and compute the distance d between these two points to be returned to the calling function. • Write a main() function that allows input of any two points in the Cartesian coordinates system and compute the distance between them and prints it using the DBTP function… CNG 140 C Programming, 20062

  32. Exercises-2 /* Description: 6.2 Exercise 2b: find the distance between two points in a Cartesian Coordinates System */ #include <stdio.h> #include <math.h> float dbTwoPoints(float, float, float, float); /* function prototype needed by the main() */ CNG 140 C Programming, 20062

  33. Exercises-3 /* Function main() */ int main() { float x1, x2, y1, y2, distance; printf("\nPlease enter a value for x1 and y1: "); scanf("%f %f", &x1, &y1); printf("\nPlease enter a value for x2 and y2: "); scanf("%f %f", &x2, &y2); distance= dbTwoPoints (x1, y1, x2, y2); printf("\nThe distance between the points is: %f\n", distance); return 0; } CNG 140 C Programming, 20062

  34. Exercises-4 /* Function dbtp definition accepts rectangular coordinates of two points (x1, y1) and (x2,y2), computes the distance between them and returns it the calling function. The arguments and the return value are all floating point */ float dbTwoPoints (float x1, float y1, float x2, float y2) { float distance; distance= sqrt(pow((x2-x1),2) + pow((y2-y1),2)); return distance; } CNG 140 C Programming, 20062

  35. Exercise-1 • Write a function that accepts the coefficients a, b, and c of a second degree polynomial and the value of the variable x and returns its computed value y to the calling program: y=ax2+bx+c CNG 140 C Programming, 20062

  36. Exercise-2 /* Description: 6.2 Exercise 7b: function main */ #include <stdio.h> float polyTwo ( float, float, float, float); int main () { float a, b, c, x, result; printf ( "\nEnter a, b and c a coefficients of 2nd degree poly: " ); scanf ( "%f %f %f", &a, &b, &c ); printf ( "\nEnter variable value x: " ); scanf ( "%f", &x ); result = polyTwo ( a, b, c, x ); /*call the function*/ printf ( "\nThe result = %f", result ); return 0; } CNG 140 C Programming, 20062

  37. Exercise-3 /* Description: 6.2 Exercise 7b: Function definition */ float polyTwo ( float a, float b, float c, float x ) { float y; y = a*x*x + b*x + c; return y; } CNG 140 C Programming, 20062

  38. Problem solving • Once a problem statement is given, a program development cycle starts: • It starts with a pseudo code description or a firs level structure diagram • In this step the problem is divided into high level main components, with their relationships • The first level components may be further subdivided into lower level components • With this approach it becomes possible for a team of people to work on individual components for the solution of a given problem… CNG 140 C Programming, 20062

  39. Case Study: Calculating Age Norms • Problem statement: Relating a child’s height and weight to age norms. • A given a particular children population in a certain age group one can come with a height norm and weight norm for a given age group: CNG 140 C Programming, 20062

  40. Case Study: Calculating Age Norms CNG 140 C Programming, 20062

  41. Requirements Specification • A fairly common procedure in child development is to establish normal ranges for height and weight as they relate to a child’s age • These normal ranges are frequently referred to as age norms • In this case study, we develop a program for calculating both the expected height of a child between the ages of 6 and 11 and the deviation of this height norm to an actual child’s height CNG 140 C Programming, 20062

  42. Requirements Specification (continued) CNG 140 C Programming, 20062

  43. Requirements Specification (continued) CNG 140 C Programming, 20062

  44. Requirements Specification (continued) CNG 140 C Programming, 20062

  45. Requirements Specification (continued) CNG 140 C Programming, 20062

  46. Requirements Specification (continued) CNG 140 C Programming, 20062

  47. Requirements Specification (continued) CNG 140 C Programming, 20062

  48. Standard Library Functions • The standard library consists of 15 header files • Before using these functions, you must know • The name of each available function • The arguments required by each function • The data type of the result (if any) returned by each function • A description of what each function does • How to include the library containing the desired function • #include <header-file-name> CNG 140 C Programming, 20062

  49. Mathematical Library Functions CNG 140 C Programming, 20062

  50. Mathematical Library Functions (continued) CNG 140 C Programming, 20062

More Related