Download presentation
Presentation is loading. Please wait.
Published byLeon Arnold Modified over 8 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.