Presentation is loading. Please wait.

Presentation is loading. Please wait.

APS105 Functions (and Pointers) 1. Modularity –Break a program into manageable parts (modules) –Modules interoperate with each other Benefits of modularity:

Similar presentations


Presentation on theme: "APS105 Functions (and Pointers) 1. Modularity –Break a program into manageable parts (modules) –Modules interoperate with each other Benefits of modularity:"— Presentation transcript:

1 APS105 Functions (and Pointers) 1

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

3 Functions 3

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

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 5

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

7 Incorporating a Function in a Program. 7

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:. 8

9 Prototype Example: Declare main First.

10 Parameters 10

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

12 Calling a Function with Parameters. 12

13 When A Function is Called… 1)argument(s) is/are evaluated 2)control passes to the function 3)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 4)the function is executed 5)control passes back to the calling function 13

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

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 15

16 Example of Scope. 16

17 Example of Multiple Parameters. 17

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

19 Returning 19

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

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

22 No Return Example: print n blank lines. 22

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

24 isPerfectSquare. 24

25 isPerfectSquare (cont'd). 25

26 isPerfectSquare (cont'd). 26

27 Pointers 27

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

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: 29

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 AddressValue 00 123 20 30 …… 2 32 -2102 2 32 -17 Memory 30

31 Understanding Pointers Declaring a pointer variable int *p; Declaring and assigning int *p; int x; x = 8; p = &x; AddrValue 00 123 20 30 …… 2 32 -2102 2 32 -17 Memory. 31

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

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; AddrValue 00 10 20 30 40 50 …… 2 32 -20 2 32 -10 Memory 33

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; x y p q 34

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

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

37 largeLoc. 37

38 Scope 38

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 39

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

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? 41

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 42

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 43

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


Download ppt "APS105 Functions (and Pointers) 1. Modularity –Break a program into manageable parts (modules) –Modules interoperate with each other Benefits of modularity:"

Similar presentations


Ads by Google