SlideShare a Scribd company logo
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)

More Related Content

What's hot (20)

PPT
Lecture#9 Arrays in c++
NUST Stuff
 
PPSX
Functions in c
Innovative
 
PPTX
Tail Recursion in data structure
Rumman Ansari
 
PPTX
Call by value
Dharani G
 
PPTX
Functions
PralhadKhanal1
 
PPTX
C++ lecture 03
HNDE Labuduwa Galle
 
PDF
Functions
Swarup Kumar Boro
 
PPTX
Presentation on function
Abu Zaman
 
PPSX
C programming function
argusacademy
 
PPTX
Function in c program
CGC Technical campus,Mohali
 
PPT
Functions in C++
Sachin Sharma
 
PPTX
Types of function call
ArijitDhali
 
PDF
Data structure lab manual
nikshaikh786
 
PPTX
functions of C++
tarandeep_kaur
 
PPTX
Functions
Jesmin Akhter
 
PPTX
parameter passing in c#
khush_boo31
 
PDF
20BCE1734.pdf
Mridul Jadon
 
DOCX
Maharishi University of Management (MSc Computer Science test questions)
Dharma Kshetri
 
PDF
C Prog - Functions
vinay arora
 
Lecture#9 Arrays in c++
NUST Stuff
 
Functions in c
Innovative
 
Tail Recursion in data structure
Rumman Ansari
 
Call by value
Dharani G
 
Functions
PralhadKhanal1
 
C++ lecture 03
HNDE Labuduwa Galle
 
Presentation on function
Abu Zaman
 
C programming function
argusacademy
 
Function in c program
CGC Technical campus,Mohali
 
Functions in C++
Sachin Sharma
 
Types of function call
ArijitDhali
 
Data structure lab manual
nikshaikh786
 
functions of C++
tarandeep_kaur
 
Functions
Jesmin Akhter
 
parameter passing in c#
khush_boo31
 
20BCE1734.pdf
Mridul Jadon
 
Maharishi University of Management (MSc Computer Science test questions)
Dharma Kshetri
 
C Prog - Functions
vinay arora
 

Similar to functions (20)

PPTX
functions
Makwana Bhavesh
 
PDF
USER DEFINED FUNCTIONS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3
 
PPTX
Function in c
Raj Tandukar
 
PPTX
Function in c
CGC Technical campus,Mohali
 
PPTX
C functions
University of Potsdam
 
PPTX
UNIT3.pptx
NagasaiT
 
PPTX
Funtions of c programming. the functions of c helps to clarify all the tops
sameermhr345
 
PPTX
Functions
Gaurav Subham
 
PPTX
Unit_5Functionspptx__2022_12_27_10_47_17 (1).pptx
vekariyakashyap
 
PDF
functionsinc-130108032745-phpapp01.pdf
mounikanarra3
 
PPTX
Functions in c language
tanmaymodi4
 
PPTX
Functions in c language
Tanmay Modi
 
PPT
Ch4 functions
Hattori Sidek
 
PPT
RECURSION IN C
v_jk
 
PPT
Recursion in C
v_jk
 
PPT
Function
Sukhdarshan Singh
 
PPTX
Functions in C.pptx
Ashwini Raut
 
PPT
Functions and pointers_unit_4
MKalpanaDevi
 
PPT
C chap05
Kausar Khan
 
PDF
4th unit full
Murali Saktheeswaran
 
functions
Makwana Bhavesh
 
USER DEFINED FUNCTIONS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3
 
Function in c
Raj Tandukar
 
UNIT3.pptx
NagasaiT
 
Funtions of c programming. the functions of c helps to clarify all the tops
sameermhr345
 
Functions
Gaurav Subham
 
Unit_5Functionspptx__2022_12_27_10_47_17 (1).pptx
vekariyakashyap
 
functionsinc-130108032745-phpapp01.pdf
mounikanarra3
 
Functions in c language
tanmaymodi4
 
Functions in c language
Tanmay Modi
 
Ch4 functions
Hattori Sidek
 
RECURSION IN C
v_jk
 
Recursion in C
v_jk
 
Functions in C.pptx
Ashwini Raut
 
Functions and pointers_unit_4
MKalpanaDevi
 
C chap05
Kausar Khan
 
4th unit full
Murali Saktheeswaran
 
Ad

More from teach4uin (20)

PPTX
Controls
teach4uin
 
PPT
validation
teach4uin
 
PPT
validation
teach4uin
 
PPT
Master pages
teach4uin
 
PPTX
.Net framework
teach4uin
 
PPT
Scripting languages
teach4uin
 
PPTX
Css1
teach4uin
 
PPTX
Code model
teach4uin
 
PPT
Asp db
teach4uin
 
PPTX
State management
teach4uin
 
PPT
security configuration
teach4uin
 
PPT
static dynamic html tags
teach4uin
 
PPT
static dynamic html tags
teach4uin
 
PPTX
New microsoft office power point presentation
teach4uin
 
PPT
.Net overview
teach4uin
 
PPT
Stdlib functions lesson
teach4uin
 
PPT
enums
teach4uin
 
PPT
memory
teach4uin
 
PPT
array
teach4uin
 
PPT
storage clas
teach4uin
 
Controls
teach4uin
 
validation
teach4uin
 
validation
teach4uin
 
Master pages
teach4uin
 
.Net framework
teach4uin
 
Scripting languages
teach4uin
 
Css1
teach4uin
 
Code model
teach4uin
 
Asp db
teach4uin
 
State management
teach4uin
 
security configuration
teach4uin
 
static dynamic html tags
teach4uin
 
static dynamic html tags
teach4uin
 
New microsoft office power point presentation
teach4uin
 
.Net overview
teach4uin
 
Stdlib functions lesson
teach4uin
 
enums
teach4uin
 
memory
teach4uin
 
array
teach4uin
 
storage clas
teach4uin
 
Ad

Recently uploaded (20)

PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PPTX
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PDF
Market Wrap for 18th July 2025 by CIFDAQ
CIFDAQ
 
PPTX
PCU Keynote at IEEE World Congress on Services 250710.pptx
Ramesh Jain
 
PPTX
Earn Agentblazer Status with Slack Community Patna.pptx
SanjeetMishra29
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PPTX
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PPTX
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
The Future of Artificial Intelligence (AI)
Mukul
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
Market Wrap for 18th July 2025 by CIFDAQ
CIFDAQ
 
PCU Keynote at IEEE World Congress on Services 250710.pptx
Ramesh Jain
 
Earn Agentblazer Status with Slack Community Patna.pptx
SanjeetMishra29
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 

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)