 2007 Pearson Education, Inc. All rights reserved. 1 5 5 C Functions.

Slides:



Advertisements
Similar presentations
BBS514 Structured Programming (Yapısal Programlama)1 Functions and Structured Programming.
Advertisements

Chapter 5 C Functions The best way to develop and maintain a large program is to divide it into several smaller program modules, each of which is more.
 2007 Pearson Education, Inc. All rights reserved C Functions.
C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to.
 2000 Prentice Hall, Inc. All rights reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program Modules in C 5.3Math Library Functions 5.4Functions.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
 2000 Prentice Hall, Inc. All rights reserved. 1 Chapter 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions.
FunctionsFunctions Systems Programming. Systems Programming: Functions 2 Functions   Simple Function Example   Function Prototype and Declaration.
 2007 Pearson Education, Inc. All rights reserved C Functions.
C Lecture Notes Functions (Cont...). C Lecture Notes 5.8Calling Functions: Call by Value and Call by Reference Used when invoking functions Call by value.
Functions. 3Introduction Divide and conquer –Construct a program from smaller pieces or components –Each piece more manageable than the original program.
 2000 Prentice Hall, Inc. All rights reserved. Functions in C Outline 1Introduction 2Program Modules in C 3Math Library Functions 4Functions 5Function.
FunctionsFunctions Systems Programming Concepts. Functions   Simple Function Example   Function Prototype and Declaration   Math Library Functions.
 2000 Prentice Hall, Inc. All rights reserved. Chapter 5 – Recursive Funtions From Deitel’s “C” Book 5.13Recursion 5.14Example Using Recursion: The Fibonacci.
1 Lecture 3 Part 1 Functions with math and randomness.
Methods Chapter 6. 2 Program Modules in Java What we call "functions" in C++ are called "methods" in Java Purpose Reuse code Modularize the program This.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. C How To Program - 4th edition Deitels Class 05 University.
 2007 Pearson Education, Inc. All rights reserved C Functions.
Functions in C Outline 1Introduction 2Program Modules in C 3Math Library Functions 4Functions 5Function Definitions 6Function Prototypes 7Header Files.
Chapter 06 (Part I) Functions and an Introduction to Recursion.
 2008 Pearson Education, Inc. All rights reserved JavaScript: Functions.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Functions (Recursion) Outline 5.13Recursion 5.14Example.
 2007 Pearson Education, Inc. All rights reserved C Functions -Continue…-
Programming in C++ Language ( ) Lecture 5: Functions-Part1 Dr. Lubna Badri.
1 CISC181 Introduction to Computer Science Dr. McCoy Lecture 6 September 17, 2009.
Chapter 5 - Functions Outline 5.1Introduction 5.2Program Modules in C 5.3Math Library Functions 5.4Functions 5.5Function Definitions 5.6Function Prototypes.
 2007 Pearson Education, Inc. All rights reserved C Functions.
 2000 Prentice Hall, Inc. All rights reserved. 1 Chapter 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions.
 2003 Prentice Hall, Inc. All rights reserved. 1 Chapter 6 - Functions.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Functions (Header files and Library Functions) Outline.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.3Math Library Functions Math library functions –perform.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Functions Outline 5.1Introduction 5.2Program Modules.
C++ Programming Lecture 9 Functions – Part I By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
1 Chapter 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions 3.4Functions 3.5Function Definitions 3.6Function.
KIC/Computer Programming & Problem Solving 1.  Introduction  Program Modules in C  Math Library Functions  Functions  Function Definitions  Function.
EPSII 59:006 Spring Call-by-value example #include void increment(int); //prototype for increment function int main(void) { int a=1; printf("Value.
TMC1414/TMC1413 I NTRODUCTION T O P ROGRAMMING Lecture 06 Function.
KIC/Computer Programming & Problem Solving 1.  Header Files  Storage Classes  Scope Rules  Recursion Outline KIC/Computer Programming & Problem Solving.
 2000 Prentice Hall, Inc. All rights reserved. 5.2Program Modules in C Functions –Modules in C –Programs combine user-defined functions with library functions.
Dale Roberts CSCI 230 Functions Department of Computer and Information Science, School of Science, IUPUI Dale Roberts, Lecturer
 2000 Prentice Hall, Inc. All rights reserved. 1 Chapter 3 - Functions.
 2000 Prentice Hall, Inc. All rights reserved Introduction Divide and conquer –Construct a program from smaller pieces or components –Each piece.
Introduction Modules Small pieces of a problem ▴ e.g., divide and conquer Facilitate design, implementation, operation and maintenance of large programs.
CHAPTER 4 FUNCTIONS Dr. Shady Yehia Elmashad. Outline 1.Introduction 2.Program Components in C++ 3.Math Library Functions 4.Functions 5.Function Definitions.
Dale Roberts CSCI N305 Functions Declarations Department of Computer and Information Science, School of Science, IUPUI.
 2000 Prentice Hall, Inc. All rights reserved Program Components in C++ Function definitions –Only written once –These statements are hidden from.
 2003 Prentice Hall, Inc. All rights reserved. 1 Functions and Recursion Outline Introduction Program Components in C++ Math Library Functions Functions.
 2007 Pearson Education, Inc. All rights reserved C Functions.
BIL 104E Introduction to Scientific and Engineering Computing Lecture 4.
5 C Functions.
Functions Course conducted by: Md.Raihan ul Masood
Functions.
5 C Functions.
Functions and an Introduction to Recursion
5 C Functions.
Programming Fundamentals Lecture #7 Functions
CSC113: Computer Programming (Theory = 03, Lab = 01)
Deitel- C:How to Program (5ed)
Chapter 5 - Functions Outline 5.1 Introduction
Chapter 5 - Functions Outline 5.1 Introduction
Functions.
Chapter 5 - Functions Outline 5.1 Introduction
Functions Declarations CSCI 230
Chapter 6 - Functions Outline 5.1 Introduction
5 C Functions.
5 C Functions.
6 Functions.
Chapter 3 - Functions Outline 3.1 Introduction
Functions in C Math Library Functions Functions Function Definitions
Presentation transcript:

 2007 Pearson Education, Inc. All rights reserved C Functions

 2007 Pearson Education, Inc. All rights reserved. 2 OBJECTIVES In this chapter you will learn:  To construct programs modularly from small pieces called functions.  The common math functions available in the C Standard Library.  To create new functions.  The mechanisms used to pass information between functions.  Simulation techniques using random num­ber generation.  How to write and use recursive functions, i.e., functions that call themselves.

 2007 Pearson Education, Inc. All rights reserved Introduction 5.2Program Modules in C 5.3Math Library Functions 5.4Functions 5.5Function Definitions 5.6Function Prototypes 5.7Function Call Stack and Activation Records 5.8Headers 5.9Calling Functions: Call-by-Value and Call-by- Reference

 2007 Pearson Education, Inc. All rights reserved Random Number Generation 5.11Example: A Game of Chance 5.12Storage Classes 5.13Scope Rules 5.14Recursion 5.15Example Using Recursion: Fibonacci Series 5.16Recursion vs. Iteration

 2007 Pearson Education, Inc. All rights reserved Introduction  Divide and conquer – Construct a program from smaller pieces or components - These smaller pieces are called modules – Each piece more manageable than the original program

 2007 Pearson Education, Inc. All rights reserved Program Modules in C  Functions – Modules in C – Programs combine user-defined functions with library functions - C standard library has a wide variety of functions  Function calls – Invoking functions - Provide function name and arguments (data) - Function performs operations or manipulations - Function returns results – Function call analogy: - Boss asks worker to complete task Worker gets information, does task, returns result Information hiding: boss does not know details

 2007 Pearson Education, Inc. All rights reserved. 7 Good Programming Practice 5.1 Familiarize yourself with the rich collection of functions in the C Standard Library.

 2007 Pearson Education, Inc. All rights reserved. 8 Software Engineering Observation 5.1 Avoid reinventing the wheel. When possible, use C Standard Library functions instead of writing new functions. This can reduce program development time.

 2007 Pearson Education, Inc. All rights reserved. 9 Portability Tip 5.1 Using the functions in the C Standard Library helps make programs more portable.

 2007 Pearson Education, Inc. All rights reserved. 10 Fig. 5.1 | Hierarchical boss function/worker function relationship.

 2007 Pearson Education, Inc. All rights reserved Math Library Functions  Math library functions – perform common mathematical calculations – #include  Format for calling functions – FunctionName( argument ); - If multiple arguments, use comma-separated list – printf( "%.2f", sqrt( ) ); - 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

 2007 Pearson Education, Inc. All rights reserved. 12 Error-Prevention Tip 5.1 Include the math header by using the preprocessor directive #include when using functions in the math library.

 2007 Pearson Education, Inc. All rights reserved. 13 Fig. 5.2 | Commonly used math library functions. (Part 1 of 2.)

 2007 Pearson Education, Inc. All rights reserved. 14 Fig. 5.2 | Commonly used math library functions. (Part 2 of 2.)

 2007 Pearson Education, Inc. All rights reserved Functions  Functions – Modularize a program – All variables defined inside functions are local variables - Known only in function defined – Parameters - Communicate information between functions - Local variables  Benefits of functions – Divide and conquer - Manageable program development – Software reusability - Use existing functions as building blocks for new programs - Abstraction - hide internal details (library functions) – Avoid code repetition

 2007 Pearson Education, Inc. All rights reserved Function Definitions  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 – indicates that the function returns nothing – Parameter-list: comma separated list, declares parameters - A type must be listed explicitly for each parameter unless, the parameter is of type int

 2007 Pearson Education, Inc. All rights reserved Function Definitions  Function definition format (continued) return-value-type function-name( parameter-list ) { declarations and statements } – Definitions and statements: function body (block) - Variables can be defined inside blocks (can be nested) - Functions can not be defined inside other functions – Returning control - If nothing returned return; or, until reaches right brace - If something returned return expression ;

 2007 Pearson Education, Inc. All rights reserved. 18 Outline fig05_03.c Function definition Function prototype indicates function will be defined later in the program Call to square function

 2007 Pearson Education, Inc. All rights reserved. 19 Outline fig05_04.c (1 of 2 ) Function prototype Function call

 2007 Pearson Education, Inc. All rights reserved. 20 Outline fig05_04.c (2 of 2 ) Function definition

 2007 Pearson Education, Inc. All rights reserved Function Prototypes  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 – The function with the prototype int maximum( int x, int y, int z ); - Takes in 3 ints - Returns an int  Promotion rules and conversions – Converting to lower types can lead to errors

 2007 Pearson Education, Inc. All rights reserved. 22 Fig. 5.5 | Promotion hierarchy for data types.

 2007 Pearson Education, Inc. All rights reserved Headers  Header files – Contain function prototypes for library functions –,, etc – Load with #include #include  Custom header files – Create file with functions – Save as filename.h – Load in other files with # include "filename.h" – Reuse functions

 2007 Pearson Education, Inc. All rights reserved. 24 Fig. 5.6 | Some of the standard library headers. (Part 1 of 3.)

 2007 Pearson Education, Inc. All rights reserved. 25 Fig. 5.6 | Some of the standard library headers. (Part 2 of 3.)

 2007 Pearson Education, Inc. All rights reserved. 26 Fig. 5.6 | Some of the standard library headers. (Part 3 of 3.)

 2007 Pearson Education, Inc. All rights reserved Calling Functions: Call-by-Value and Call-by-Reference  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

 2007 Pearson Education, Inc. All rights reserved Random Number Generation  rand function – Load – Returns "random" number between 0 and RAND_MAX (at least ) 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 Add 1 to make random number between 1 and n 1 + ( rand() % 6) number between 1 and 6

 2007 Pearson Education, Inc. All rights reserved. 29 Outline fig05_07.c Generates a random number between 1 and 6

 2007 Pearson Education, Inc. All rights reserved. 30 Outline fig05_08.c (1 of 3 )

 2007 Pearson Education, Inc. All rights reserved. 31 Outline fig05_08.c (2 of 3 )

 2007 Pearson Education, Inc. All rights reserved. 32 Outline fig05_08.c (3 of 3 )

 2007 Pearson Education, Inc. All rights reserved Random Number Generation  srand function – – Takes an integer seed and jumps to that location in its "random" sequence srand( seed ); – srand( time( NULL ) );/*load */ - time( NULL ) Returns the number of seconds that have passed since January 1, 1970 “ Randomizes" the seed

 2007 Pearson Education, Inc. All rights reserved. 34 Outline fig05_09.c (1 of 2 ) Seeds the rand function

 2007 Pearson Education, Inc. All rights reserved. 35 Outline fig05_09.c (2 of 2 )

 2007 Pearson Education, Inc. All rights reserved Example: A Game of Chance  Craps simulator  Rules – Roll two dice - 7 or 11 on first throw, player wins - 2, 3, or 12 on first throw, player loses - 4, 5, 6, 8, 9, 10 - value becomes player's "point" – Player must roll his point before rolling 7 to win

 2007 Pearson Education, Inc. All rights reserved. 37 Outline fig05_10.c (1 of 4 ) enum (enumeration) assigns numerical values to CONTINUE, WON and LOST

 2007 Pearson Education, Inc. All rights reserved. 38 Outline fig05_10.c (2 of 4 )

 2007 Pearson Education, Inc. All rights reserved. 39 Outline fig05_10.c (3 of 4 )

 2007 Pearson Education, Inc. All rights reserved. 40 Outline fig05_10.c (4 of 4 )

 2007 Pearson Education, Inc. All rights reserved. 41 Outline fig05_11.c

 2007 Pearson Education, Inc. All rights reserved Recursion  Recursive functions – Functions that call themselves – Can only solve a base case – Divide a problem up into - What it can do - What it cannot do What it cannot do resembles original problem The function launches a new copy of itself (recursion step) to solve what it cannot do – Eventually base case gets solved - Gets plugged in, works its way up and solves whole problem

 2007 Pearson Education, Inc. All rights reserved Recursion  Example: factorials – 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;

 2007 Pearson Education, Inc. All rights reserved. 44 Fig | Recursive evaluation of 5!.

 2007 Pearson Education, Inc. All rights reserved. 45 Outline fig05_14.c (1 of 2 )

 2007 Pearson Education, Inc. All rights reserved. 46 Outline fig05_14.c (2 of 2 )

 2007 Pearson Education, Inc. All rights reserved Example Using Recursion: Fibonacci Series  Fibonacci series: 0, 1, 1, 2, 3, 5, 8... – Each number is the sum of the previous two – Can be solved recursively: - fib( n ) = fib( n - 1 ) + fib( n – 2 ) – Code for the fibonacci function long fibonacci( long n ) { if (n == 0 || n == 1) // base case return n; else return fibonacci( n - 1) + fibonacci( n – 2 ); }

 2007 Pearson Education, Inc. All rights reserved. 48 Outline fig05_15.c (1 of 4 )

 2007 Pearson Education, Inc. All rights reserved. 49 Outline fig05_15.c (2 of 4 )

 2007 Pearson Education, Inc. All rights reserved. 50 Outline fig05_15.c (3 of 4 )

 2007 Pearson Education, Inc. All rights reserved. 51 Outline fig05_15.c (4 of 4 )