SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Outline
Introduction
Program Modules in C
Math Library Functions
Functions
Function Definitions
Function Prototypes
Header Files
Calling Functions: Call by Value and Call by
Reference
Random Number Generation
Recursion
Example Using Recursion: The Fibonacci Series
Recursion vs. Iteration
 Divide and conquer
◦ Construct a program from smaller pieces or
components
◦ Each piece more manageable than the original
program
 Functions
◦ Modules in C
◦ Programs written by combining user-defined functions with
library functions
 C standard library has a wide variety of functions
 Makes programmer's job easier - avoid reinventing the wheel
 Function calls
◦ Invoking functions
 Provide function name and arguments (data)
 Function performs operations or manipulations
 Function returns results
◦ Boss asks worker to complete task
 Worker gets information, does task, returns result
 Information hiding: boss does not know details
 Math library functions
◦ perform common mathematical calculations
◦ #include <math.h>
 Format for calling functions
FunctionName (argument);
 If multiple arguments, use comma-separated list
◦ printf( "%.2f", sqrt( 900.0 ) );
 Calls function sqrt, which returns the square root of its
argument
 All math functions return data type double
◦ Arguments may be constants, variables, or
expressions
 Functions
◦ Modularize a program
◦ All variables declared inside functions are local variables
 Known only in function defined
◦ Parameters
 Communicate information between functions
 Local variables
 Benefits
◦ Divide and conquer
 Manageable program development
◦ Software reusability
 Use existing functions as building blocks for new programs
 Abstraction - hide internal details (library functions)
◦ Avoids code repetition
 Function definition format
return-value-type function-name( parameter-list )
{
declarations and statements
}
◦ Function-name: any valid identifier
◦ Return-value-type: data type of the result (default int)
 void - function returns nothing
◦ Parameter-list: comma separated list, declares
parameters (default int)
 Function definition format (continued)
return-value-type function-name( parameter-list )
{
declarations and statements
}
◦ Declarations and statements: function body (block)
 Variables can be declared inside blocks (can be nested)
 Function can not be defined inside another function
◦ Returning control
 If nothing returned
 return;
 or, until reaches right brace
 If something returned
 return expression;
1. Function prototype
(3 parameters)
2. Input values
2.1 Call function
3. Function definition
Program Output
1 /* Fig. 5.4: fig05_04.c
2 Finding the maximum of three integers */
3 #include <stdio.h>
4
5 int maximum( int, int, int ); /* function prototype */
6
7 int main()
8 {
9 int a, b, c;
10
11 printf( "Enter three integers: " );
12 scanf( "%d%d%d", &a, &b, &c );
13 printf( "Maximum is: %dn", maximum( a, b, c ) );
14
15 return 0;
16 }
17
18 /* Function maximum definition */
19 int maximum( int x, int y, int z )
20 {
21 int max = x;
22
23 if ( y > max )
24 max = y;
25
26 if ( z > max )
27 max = z;
28
29 return max;
30 }
Enter three integers: 22 85 17
Maximum is: 85
 Function prototype
◦ Function name
◦ Parameters - what the function takes in
◦ Return type - data type function returns (default int)
◦ Used to validate functions
◦ Prototype only needed if function definition comes after use in
program
int maximum( int, int, int );
 Takes in 3 ints
 Returns an int
 Promotion rules and conversions
◦ Converting to lower types can lead to errors
 Header files
◦ contain function prototypes for library functions
◦ <stdlib.h> , <math.h> , etc
◦ Load with #include <filename>
#include <math.h>
 Custom header files
◦ Create file with functions
◦ Save as filename.h
◦ Load in other files with #include "filename.h"
◦ Reuse functions
 Used when invoking functions
 Call by value
◦ Copy of argument passed to function
◦ Changes in function do not effect original
◦ Use when function does not need to modify argument
 Avoids accidental changes
 Call by reference
◦ Passes original argument
◦ Changes in function effect original
◦ Only used with trusted functions
 For now, we focus on call by value
 rand function
◦ Load <stdlib.h>
◦ Returns "random" number between 0 and RAND_MAX (at least
32767)
i = rand();
◦ Pseudorandom
 Preset sequence of "random" numbers
 Same sequence for every function call
 Scaling
◦ To get a random number between 1 and n
1 + ( rand() % n )
 rand % n returns a number between 0 and n-1
 Add 1 to make random number between 1 and n
1 + ( rand() % 6) // number between 1 and 6
 srand function
◦ <stdlib.h>
◦ Takes an integer seed - jumps to location in "random"
sequence
srand( seed );
◦ srand( time( NULL ) ); //load <time.h>
 time( NULL )- time program was compiled in seconds
 "randomizes" the seed
 Recursive functions
◦ Function that calls itself
◦ Can only solve a base case
◦ Divides up problem into
 What it can do
 What it cannot do - resembles original problem
 Launches a new copy of itself (recursion step)
 Eventually base case gets solved
◦ Gets plugged in, works its way up and solves whole
problem
 Example: factorial:
5! = 5 * 4 * 3 * 2 * 1
Notice that
5! = 5 * 4!
4! = 4 * 3! ...
◦ Can compute factorials recursively
◦ Solve base case (1! = 0! = 1) then plug in
 2! = 2 * 1! = 2 * 1 = 2;
 3! = 3 * 2! = 3 * 2 = 6;
 Fibonacci series: 0, 1, 1, 2, 3, 5, 8...
◦ Each number sum of the previous two
fib(n) = fib(n-1) + fib(n-2) - recursive
formula
long fibonacci(long n)
{
if (n==0 || n==1) //base case
return n;
else return fibonacci(n-1) + fibonacci(n-2);
}
 
f( 3 )
f( 1 )f( 2 )
f( 1 ) f( 0 ) return 1
return 1 return 0
return +
+return
 
1. Function prototype
1.1 Initialize variables
2. Input an integer
2.1 Call function
fibonacci
2.2 Output results.
3. Define fibonacci
recursively
Program Output
1 /* Fig. 5.15: fig05_15.c
2 Recursive fibonacci function */
3 #include <stdio.h>
4
5 long fibonacci( long );
6
7 int main()
8 {
9 long result, number;
10
11 printf( "Enter an integer: " );
12 scanf( "%ld", &number );
13 result = fibonacci( number );
14 printf( "Fibonacci( %ld ) = %ldn", number, result );
15 return 0;
16 }
17
18 /* Recursive definition of function fibonacci */
19 long fibonacci( long n )
20 {
21 if ( n == 0 || n == 1 )
22 return n;
23 else
24 return fibonacci( n - 1 ) + fibonacci( n - 2 );
25 }
Enter an integer: 0
Fibonacci(0) = 0
Enter an integer: 1
Fibonacci(1) = 1
Program Output
Enter an integer: 2
Fibonacci(2) = 1
Enter an integer: 3
Fibonacci(3) = 2
Enter an integer: 4
Fibonacci(4) = 3
Enter an integer: 5
Fibonacci(5) = 5
Enter an integer: 6
Fibonacci(6) = 8
Enter an integer: 10
Fibonacci(10) = 55
Enter an integer: 20
Fibonacci(20) = 6765
Enter an integer: 30
Fibonacci(30) = 832040
Enter an integer: 35
Fibonacci(35) = 9227465
 Repetition
◦ Iteration: explicit loop
◦ Recursion: repeated function calls
 Termination
◦ Iteration: loop condition fails
◦ Recursion: base case recognized
 Both can have infinite loops
 Balance
◦ Choice between performance (iteration) and good software engineering
(recursion)

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Call by value or call by reference in C++
Call by value or call by reference in C++Call by value or call by reference in C++
Call by value or call by reference in C++
 
Lecture#9 Arrays in c++
Lecture#9 Arrays in c++Lecture#9 Arrays in c++
Lecture#9 Arrays in c++
 
Chap 9(functions)
Chap 9(functions)Chap 9(functions)
Chap 9(functions)
 
Functions in c
Functions in cFunctions in c
Functions in c
 
Tail Recursion in data structure
Tail Recursion in data structureTail Recursion in data structure
Tail Recursion in data structure
 
Call by value
Call by valueCall by value
Call by value
 
Functions
FunctionsFunctions
Functions
 
C++ lecture 03
C++   lecture 03C++   lecture 03
C++ lecture 03
 
Functions
FunctionsFunctions
Functions
 
Presentation on function
Presentation on functionPresentation on function
Presentation on function
 
C programming function
C  programming functionC  programming function
C programming function
 
Function in c program
Function in c programFunction in c program
Function in c program
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
Types of function call
Types of function callTypes of function call
Types of function call
 
Data structure lab manual
Data structure lab manualData structure lab manual
Data structure lab manual
 
functions of C++
functions of C++functions of C++
functions of C++
 
Functions
FunctionsFunctions
Functions
 
parameter passing in c#
parameter passing in c#parameter passing in c#
parameter passing in c#
 
20BCE1734.pdf
20BCE1734.pdf20BCE1734.pdf
20BCE1734.pdf
 
Maharishi University of Management (MSc Computer Science test questions)
Maharishi University of Management (MSc Computer Science test questions)Maharishi University of Management (MSc Computer Science test questions)
Maharishi University of Management (MSc Computer Science test questions)
 

Ähnlich wie functions (20)

functions
functionsfunctions
functions
 
Array Cont
Array ContArray Cont
Array Cont
 
Advanced C - Part 2
Advanced C - Part 2Advanced C - Part 2
Advanced C - Part 2
 
Function
FunctionFunction
Function
 
lecture56.ppt
lecture56.pptlecture56.ppt
lecture56.ppt
 
Chapter 7 functions (c)
Chapter 7 functions (c)Chapter 7 functions (c)
Chapter 7 functions (c)
 
Programming Fundamentals Functions in C and types
Programming Fundamentals  Functions in C  and typesProgramming Fundamentals  Functions in C  and types
Programming Fundamentals Functions in C and types
 
Functions
FunctionsFunctions
Functions
 
C function
C functionC function
C function
 
Function in c program
Function in c programFunction in c program
Function in c program
 
6. function
6. function6. function
6. function
 
Functions in c
Functions in cFunctions in c
Functions in c
 
how to reuse code
how to reuse codehow to reuse code
how to reuse code
 
UNIT3.pptx
UNIT3.pptxUNIT3.pptx
UNIT3.pptx
 
Part 3-functions1-120315220356-phpapp01
Part 3-functions1-120315220356-phpapp01Part 3-functions1-120315220356-phpapp01
Part 3-functions1-120315220356-phpapp01
 
User Defined Functions in C Language
User Defined Functions   in  C LanguageUser Defined Functions   in  C Language
User Defined Functions in C Language
 
eee2-day4-structures engineering college
eee2-day4-structures engineering collegeeee2-day4-structures engineering college
eee2-day4-structures engineering college
 
Function in c
Function in cFunction in c
Function in c
 
Functionincprogram
FunctionincprogramFunctionincprogram
Functionincprogram
 
CPP Homework Help
CPP Homework HelpCPP Homework Help
CPP Homework Help
 

Mehr von teach4uin

Master pages
Master pagesMaster pages
Master pagesteach4uin
 
.Net framework
.Net framework.Net framework
.Net frameworkteach4uin
 
Scripting languages
Scripting languagesScripting languages
Scripting languagesteach4uin
 
State management
State managementState management
State managementteach4uin
 
security configuration
security configurationsecurity configuration
security configurationteach4uin
 
static dynamic html tags
 static dynamic html tags static dynamic html tags
static dynamic html tagsteach4uin
 
static dynamic html tags
static dynamic html tagsstatic dynamic html tags
static dynamic html tagsteach4uin
 
New microsoft office power point presentation
New microsoft office power point presentationNew microsoft office power point presentation
New microsoft office power point presentationteach4uin
 
.Net overview
.Net overview.Net overview
.Net overviewteach4uin
 
Stdlib functions lesson
Stdlib functions lessonStdlib functions lesson
Stdlib functions lessonteach4uin
 
storage clas
storage classtorage clas
storage clasteach4uin
 

Mehr von teach4uin (20)

Controls
ControlsControls
Controls
 
validation
validationvalidation
validation
 
validation
validationvalidation
validation
 
Master pages
Master pagesMaster pages
Master pages
 
.Net framework
.Net framework.Net framework
.Net framework
 
Scripting languages
Scripting languagesScripting languages
Scripting languages
 
Css1
Css1Css1
Css1
 
Code model
Code modelCode model
Code model
 
Asp db
Asp dbAsp db
Asp db
 
State management
State managementState management
State management
 
security configuration
security configurationsecurity configuration
security configuration
 
static dynamic html tags
 static dynamic html tags static dynamic html tags
static dynamic html tags
 
static dynamic html tags
static dynamic html tagsstatic dynamic html tags
static dynamic html tags
 
New microsoft office power point presentation
New microsoft office power point presentationNew microsoft office power point presentation
New microsoft office power point presentation
 
.Net overview
.Net overview.Net overview
.Net overview
 
Stdlib functions lesson
Stdlib functions lessonStdlib functions lesson
Stdlib functions lesson
 
enums
enumsenums
enums
 
memory
memorymemory
memory
 
array
arrayarray
array
 
storage clas
storage classtorage clas
storage clas
 

Kürzlich hochgeladen

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 

Kürzlich hochgeladen (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 

functions

  • 1. Outline Introduction Program Modules in C Math Library Functions Functions Function Definitions Function Prototypes Header Files Calling Functions: Call by Value and Call by Reference Random Number Generation Recursion Example Using Recursion: The Fibonacci Series Recursion vs. Iteration
  • 2.  Divide and conquer ◦ Construct a program from smaller pieces or components ◦ Each piece more manageable than the original program
  • 3.  Functions ◦ Modules in C ◦ Programs written by combining user-defined functions with library functions  C standard library has a wide variety of functions  Makes programmer's job easier - avoid reinventing the wheel
  • 4.  Function calls ◦ Invoking functions  Provide function name and arguments (data)  Function performs operations or manipulations  Function returns results ◦ Boss asks worker to complete task  Worker gets information, does task, returns result  Information hiding: boss does not know details
  • 5.  Math library functions ◦ perform common mathematical calculations ◦ #include <math.h>  Format for calling functions FunctionName (argument);  If multiple arguments, use comma-separated list ◦ printf( "%.2f", sqrt( 900.0 ) );  Calls function sqrt, which returns the square root of its argument  All math functions return data type double ◦ Arguments may be constants, variables, or expressions
  • 6.  Functions ◦ Modularize a program ◦ All variables declared inside functions are local variables  Known only in function defined ◦ Parameters  Communicate information between functions  Local variables  Benefits ◦ Divide and conquer  Manageable program development ◦ Software reusability  Use existing functions as building blocks for new programs  Abstraction - hide internal details (library functions) ◦ Avoids code repetition
  • 7.  Function definition format return-value-type function-name( parameter-list ) { declarations and statements } ◦ Function-name: any valid identifier ◦ Return-value-type: data type of the result (default int)  void - function returns nothing ◦ Parameter-list: comma separated list, declares parameters (default int)
  • 8.  Function definition format (continued) return-value-type function-name( parameter-list ) { declarations and statements } ◦ Declarations and statements: function body (block)  Variables can be declared inside blocks (can be nested)  Function can not be defined inside another function ◦ Returning control  If nothing returned  return;  or, until reaches right brace  If something returned  return expression;
  • 9. 1. Function prototype (3 parameters) 2. Input values 2.1 Call function 3. Function definition Program Output 1 /* Fig. 5.4: fig05_04.c 2 Finding the maximum of three integers */ 3 #include <stdio.h> 4 5 int maximum( int, int, int ); /* function prototype */ 6 7 int main() 8 { 9 int a, b, c; 10 11 printf( "Enter three integers: " ); 12 scanf( "%d%d%d", &a, &b, &c ); 13 printf( "Maximum is: %dn", maximum( a, b, c ) ); 14 15 return 0; 16 } 17 18 /* Function maximum definition */ 19 int maximum( int x, int y, int z ) 20 { 21 int max = x; 22 23 if ( y > max ) 24 max = y; 25 26 if ( z > max ) 27 max = z; 28 29 return max; 30 } Enter three integers: 22 85 17 Maximum is: 85
  • 10.  Function prototype ◦ Function name ◦ Parameters - what the function takes in ◦ Return type - data type function returns (default int) ◦ Used to validate functions ◦ Prototype only needed if function definition comes after use in program int maximum( int, int, int );  Takes in 3 ints  Returns an int  Promotion rules and conversions ◦ Converting to lower types can lead to errors
  • 11.  Header files ◦ contain function prototypes for library functions ◦ <stdlib.h> , <math.h> , etc ◦ Load with #include <filename> #include <math.h>  Custom header files ◦ Create file with functions ◦ Save as filename.h ◦ Load in other files with #include "filename.h" ◦ Reuse functions
  • 12.  Used when invoking functions  Call by value ◦ Copy of argument passed to function ◦ Changes in function do not effect original ◦ Use when function does not need to modify argument  Avoids accidental changes  Call by reference ◦ Passes original argument ◦ Changes in function effect original ◦ Only used with trusted functions  For now, we focus on call by value
  • 13.  rand function ◦ Load <stdlib.h> ◦ Returns "random" number between 0 and RAND_MAX (at least 32767) i = rand(); ◦ Pseudorandom  Preset sequence of "random" numbers  Same sequence for every function call  Scaling ◦ To get a random number between 1 and n 1 + ( rand() % n )  rand % n returns a number between 0 and n-1  Add 1 to make random number between 1 and n 1 + ( rand() % 6) // number between 1 and 6
  • 14.  srand function ◦ <stdlib.h> ◦ Takes an integer seed - jumps to location in "random" sequence srand( seed ); ◦ srand( time( NULL ) ); //load <time.h>  time( NULL )- time program was compiled in seconds  "randomizes" the seed
  • 15.  Recursive functions ◦ Function that calls itself ◦ Can only solve a base case ◦ Divides up problem into  What it can do  What it cannot do - resembles original problem  Launches a new copy of itself (recursion step)  Eventually base case gets solved ◦ Gets plugged in, works its way up and solves whole problem
  • 16.  Example: factorial: 5! = 5 * 4 * 3 * 2 * 1 Notice that 5! = 5 * 4! 4! = 4 * 3! ... ◦ Can compute factorials recursively ◦ Solve base case (1! = 0! = 1) then plug in  2! = 2 * 1! = 2 * 1 = 2;  3! = 3 * 2! = 3 * 2 = 6;
  • 17.  Fibonacci series: 0, 1, 1, 2, 3, 5, 8... ◦ Each number sum of the previous two fib(n) = fib(n-1) + fib(n-2) - recursive formula long fibonacci(long n) { if (n==0 || n==1) //base case return n; else return fibonacci(n-1) + fibonacci(n-2); }  
  • 18. f( 3 ) f( 1 )f( 2 ) f( 1 ) f( 0 ) return 1 return 1 return 0 return + +return  
  • 19. 1. Function prototype 1.1 Initialize variables 2. Input an integer 2.1 Call function fibonacci 2.2 Output results. 3. Define fibonacci recursively Program Output 1 /* Fig. 5.15: fig05_15.c 2 Recursive fibonacci function */ 3 #include <stdio.h> 4 5 long fibonacci( long ); 6 7 int main() 8 { 9 long result, number; 10 11 printf( "Enter an integer: " ); 12 scanf( "%ld", &number ); 13 result = fibonacci( number ); 14 printf( "Fibonacci( %ld ) = %ldn", number, result ); 15 return 0; 16 } 17 18 /* Recursive definition of function fibonacci */ 19 long fibonacci( long n ) 20 { 21 if ( n == 0 || n == 1 ) 22 return n; 23 else 24 return fibonacci( n - 1 ) + fibonacci( n - 2 ); 25 } Enter an integer: 0 Fibonacci(0) = 0 Enter an integer: 1 Fibonacci(1) = 1
  • 20. Program Output Enter an integer: 2 Fibonacci(2) = 1 Enter an integer: 3 Fibonacci(3) = 2 Enter an integer: 4 Fibonacci(4) = 3 Enter an integer: 5 Fibonacci(5) = 5 Enter an integer: 6 Fibonacci(6) = 8 Enter an integer: 10 Fibonacci(10) = 55 Enter an integer: 20 Fibonacci(20) = 6765 Enter an integer: 30 Fibonacci(30) = 832040 Enter an integer: 35 Fibonacci(35) = 9227465
  • 21.  Repetition ◦ Iteration: explicit loop ◦ Recursion: repeated function calls  Termination ◦ Iteration: loop condition fails ◦ Recursion: base case recognized  Both can have infinite loops  Balance ◦ Choice between performance (iteration) and good software engineering (recursion)