1 / 44

APS105

APS105. Functions (and Pointers). Modularity. Modularity Break a program into manageable parts (modules) Modules interoperate with each other Benefits of modularity:.  modularity/modules in C: functions. Functions. C pre-defined functions. main Math functions Sqrt () , fabs () , etc

sylvia
Download Presentation

APS105

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. APS105 Functions (and Pointers)

  2. Modularity • Modularity • Break a program into manageable parts (modules) • Modules interoperate with each other • Benefits of modularity: modularity/modules in C: functions

  3. Functions

  4. C pre-defined functions • main • Math functions • Sqrt(), fabs(), etc • I/O functions • printf() , scanf()

  5. Two Types of Functions • Commands • perform a process, but don’t return anything • Queries • evaluate something, return a result • Some languages: • commands: called procedures, subroutines • queries: called functions • C language: • commands: called functions • queries: called functions

  6. Defining a Function • Define a function that prints a blank line . • Note: this is called a "function definition"

  7. Incorporating a Function in a Program .

  8. Function Prototype • Sometimes must summarize a function • tell the compiler what it needs to know • eg., if function has parameters or return value • Function Prototype: • similar to a copy of the first line of the function definition • Example of a prototype: .

  9. Prototype Example: Declare main First .

  10. Parameters

  11. Functions with Parameters • Define a function that prints n blank lines . • Note: n is called a "parameter"

  12. Calling a Function with Parameters .

  13. When A Function is Called… • argument(s) is/are evaluated • control passes to the function • parameter(s) is/are assigned value(s) • the values of the argument(s) are copied • i.e., param gets a copy of the value of the arg • this method is called "call-by-value" • the only method used by C • other languages provide other methods • the function is executed • control passes back to the calling function

  14. Example of A Query Function • a function that returns the factorial of an int .

  15. Function Scope of Identifiers/Variables • An identifier/variable exists within its scope • if declared within a function • the scope is within the function • Implications: for a var declared within a func • can't be accessed outside that function • can re-use the identifier in multiple functions

  16. Example of Scope .

  17. Example of Multiple Parameters .

  18. Parameter Type Correspondence • Param and argument types needn't match • as long as they are "assignment compatible" • Example: .

  19. Returning

  20. Multiple Returns • A function can have multiple return statements • Example: a function that returns max value .

  21. Avoiding Multiple Returns • Example: a function that returns max value .

  22. No Return • Example: print n blank lines .

  23. Style: Returning Bool • Functions that return bool should be named: is<something> • Produces more readable code • Example: .

  24. isPerfectSquare .

  25. isPerfectSquare (cont'd) .

  26. isPerfectSquare (cont'd) .

  27. Pointers

  28. Swap • Example: a function to swap two values .

  29. Pointers • Need a way to refer to locations of things • not just a copy of a variable’s value • a pointer: • points to a variable • eg., like a house address points to a house • Example:

  30. Memory • RAM • random access memory • composed of memory chips • organized like a giant table of locations • Addresses • every location in table has an address • just like every house on a street • use the address to read/write a location • In C • addresses are stored in pointer variables • a pointer is a memory address Memory

  31. Understanding Pointers • Declaring a pointer variable int *p; • Declaring and assigning int *p; int x; x = 8; p = &x; Memory .

  32. Using Pointers • Declaring, assigning, and using a pointer int *p; int x; x = 8; p = &x; printf("%d\n",*p); // print what's at p .

  33. Pointers Example double x, y; double *p, *q; x = 3.6; y = 6.7; p = &x; q = &y; *p = 1.0; *q = *p + 1.0; Memory

  34. Pointers Example Again double x, y; double *p, *q; x = 3.6; y = 6.7; p = &x; q = &y; *p = 1.0; *q = *p + 1.0; p x q y

  35. Fixed Swap • Example: a function to swap two values .

  36. Functions that Return Pointers • Create a function called largeLoc • Takes addresses of two doubles • Returns the address of the larger value • Example usage: double x = 2.6; double y = 3.4; double *p; p = largeLoc(&x,&y); .

  37. largeLoc .

  38. Scope

  39. Scope of Internal Identifiers • Scope of an identifier: • the range within which it is recognized • an identifier is not recognized outside its scope • i.e., it cannot be used, or compiler will complain • Ex: for (int i = 1; ...; ...) • scope of i is within the for loop only • Scope of a function parameter: • only within the body of the function • Scope of a variable declared in a function • starts at the point of declaration • ends at the end of the block {} it was declared in • called an internal identifier

  40. Scope Example int foo(int x) { int y=5; for (int i=0;i<10;i++) { int z = 3; y *= z + x; } return y; }

  41. Overlapping Scope int i = 1; printf(“i = %d\n”,i); { int i = 2; printf(“i = %d\n”,i); } printf(“i = %d\n”,i); • What is the output?

  42. Scope of External Identifiers • External identifier • one that is declared outside of any function • ex: a function identifier/name is external • Example: int x; // x is an external identifier void main() { ... } • If external ident. declared before all func.s: • then it is called global

  43. Top-Down Modular Design • Functions and scope provide modularity • can build them independently and combine • Modularity eases large programs • break the problem into smaller & smaller parts • until the parts are small and manageable • make these into functions • combine them into the whole

  44. Ex: Goldbach’s Conjecture • Can an even number larger than 2 be expressed as the sum of two primes? .

More Related