FunctionsFunctions Systems Programming Concepts. Functions   Simple Function Example   Function Prototype and Declaration   Math Library Functions.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

Programming C/C++ on Eclipe Trình bày : Ths HungNM C/C++ Training.
BBS514 Structured Programming (Yapısal Programlama)1 Functions and Structured Programming.
JavaScript Part for Repetition Statement for statement Cpecifies each of the items needed for counter-controlled repetition with a control variable.
 2006 Pearson Education, Inc. All rights reserved Functions.
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.
 2006 Pearson Education, Inc. All rights reserved Functions.
 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.
Math class methods & User defined methods Introduction to Computers and Programming in JAVA: V
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
FunctionsFunctions Systems Programming. Systems Programming: Functions 2 Functions   Simple Function Example   Function Prototype and Declaration.
 2006 Pearson Education, Inc. All rights reserved Functions and an Introduction to Recursion.
 2007 Pearson Education, Inc. All rights reserved C Functions.
 2007 Pearson Education, Inc. All rights reserved C Functions.
 2006 Pearson Education, Inc. All rights reserved Functions.
 2003 Prentice Hall, Inc. All rights reserved. 1 Functions Modules: functions and classes Programs use new and “prepackaged” modules –New: programmer-defined.
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.
1 Functions Modules: functions and classes Programs use new and “prepackaged” modules –New: programmer-defined functions, classes –Prepackaged: from the.
 2000 Prentice Hall, Inc. All rights reserved. Functions in C Outline 1Introduction 2Program Modules in C 3Math Library Functions 4Functions 5Function.
1 Lecture 3 Part 1 Functions with math and randomness.
Operator Precedence First the contents of all parentheses are evaluated beginning with the innermost set of parenthesis. Second all multiplications, divisions,
C Functions Programmer-defined functions – Functions written by the programmer to define specific tasks. Functions are invoked by a function call. The.
© 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.
C Functions Pepper. Objectives Create functions Function prototypes Parameters – Pass by value or reference – Sending a reference Return values Math functions.
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.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Functions Review.
Lecture 13: Working with Multiple Programmers. Headers Header files: Each standard library has a corresponding header. The function prototype for all.
 2007 Pearson Education, Inc. All rights reserved Random Number Generation  rand function – Load – Returns "random" number between
© 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.
Dale Roberts CSCI 230 Functions Scope, Parameter Passing, Storage Specifiers Department of Computer and Information Science, School of Science, IUPUI Dale.
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.
 2000 Prentice Hall, Inc. All rights reserved Introduction Divide and conquer –Construct a program from smaller pieces or components –Each piece.
Programming Fundamentals Enumerations and Functions.
Chapter 7 - Functions. Functions u Code group that performs single task u Specification refers to what goes into and out of function u Design refers to.
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.
1 This week Basics of functions Stack frames Stack vs. Heap (brief intro) Calling conventions Storage classes vs. scope Library functions Overloading.
 2007 Pearson Education, Inc. All rights reserved C Functions.
Lecture 12: Dividing Up Work. Why Using Functions Divide-and-conquer making large program development more manageable. Software reusability Use existing.
 Pearson Education, Inc. All rights reserved Methods: A Deeper Look.
BIL 104E Introduction to Scientific and Engineering Computing Lecture 4.
Functions Course conducted by: Md.Raihan ul Masood
Functions.
Functions and an Introduction to Recursion
C Functions Pepper.
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.
6 Functions.
Chapter 5 - Functions Outline 5.1 Introduction
Scope, Parameter Passing, Storage Specifiers
Functions Declarations CSCI 230
Chapter 6 - Functions Outline 5.1 Introduction
1-6 Midterm Review.
Functions in C Math Library Functions Functions Function Definitions
Presentation transcript:

FunctionsFunctions Systems Programming Concepts

Functions   Simple Function Example   Function Prototype and Declaration   Math Library Functions   Function Definition   Header Files   Random Number Generator   Call by Value and Call by Reference   Scope (global and local)   Call by Value Example   Static Variables Systems Programming Functions 2

Simple Function Example char isalive ( int i) { if (i > 0) return 'A'; else return 'D'; } int main () { int Peter, Paul, Mary, Tom; Peter = 1; Paul = 2; Mary = -1; Tom = 0; printf("Peter is %c Paul is %c\nMary is %c Tom is %c\n", isalive (Peter), isalive (Paul), isalive (Mary), isalive (Tom)); return 0; } %./dora Peter is A Paul is A Mary is D Tom is D main  C programs start execution at main.  is simply another function. All functions have a return value. Systems Programming Functions 3

Function Declarations char isalive ( int i); int main () { int Peter, Paul, Mary, Tom; Peter = 1; Paul = 2; Mary = -1; Tom = 0; printf("Peter is %c Paul is %c\nMary is %c Tom is %c\n", isalive (Peter), isalive (Paul), isalive (Mary), isalive (Tom)); return 0; } char isalive ( int i) { if (i > 0) return 'A'; else return 'D'; } function prototype function placed after reference Systems Programming Functions 4

5.2 Program Modules in C   Functions {also referred to as routines or subroutines} – –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.  2007 Pearson Ed -All rights reserved. Systems Programming Functions 5

5.3 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 Ed -All rights reserved. Systems Programming Functions 6

Fig. 5.2 Commonly used math library functions. (Part 1)  2007 Pearson Ed -All rights reserved. Systems Programming Functions 7

Fig. 5.2 Commonly used math library functions. (Part 2)  2007 Pearson Ed -All rights reserved. Systems Programming Functions 8

5.4 Functions   Functions – –Modularize a program. – –All variables defined inside functions are local variables. Known and accessed only in defined function. – –Parameter list Communicate information between functions. Local variables of the function.   Benefits of functions – –Software reusability Use existing functions as building blocks for new programs. Abstraction - hide internal details (library functions). – –Avoid code repetition  2007 Pearson Ed -All rights reserved. Systems Programming Functions 9

5.5 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 Ed -All rights reserved. Systems Programming Functions 10

5.5 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 cannot be defined inside other functions!   Returning control – –If nothing returned return; or, until reaches right brace – –If something returned return expression ;  2007 Pearson Ed -All rights reserved. Systems Programming Functions 11

5.6 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.   Promotion rules and conversions Promotion :: temporary conversion to the highest type in the expression. – –Converting to lower types can lead to errors.  2007 Pearson Ed -All rights reserved. Systems Programming Functions 12

Fig. 5.5 Promotion Hierarchy  2007 Pearson Ed -All rights reserved. Systems Programming Functions 13 higher lower

5.7 Function Call Stack and Activation Records Function call stack ( or program execution stack)   A stack is a last-in, first-out (LIFO) data structure. – –Anything put into the stack is placed “on top”. – –The only data that can be taken out is the data on top.   C uses a program execution stack to keep track of which functions have been called. – –When a function is called, it is placed on top of the stack (pushed onto the stack). – –When a function ends, it is taken off the stack (popped off the stack) and control returns to the function immediately below it.   Calling more functions than C can handle at once is known as a “stack overflow error”.  2007 Pearson Ed -All rights reserved. Systems Programming Functions 14

5.8 Headers   Header files – –Contain function prototypes for library functions. – –e.g.,, – –Load with #include #include   Custom header files – –Create file with functions. – –Save as filename.h – –Load in other files with #include "filename.h" – –This facilitates functions reuse.  2007 Pearson Ed -All rights reserved. Systems Programming Functions 15

Fig. 5.6 Standard Library Headers (Part 3) Systems Programming Functions 16

5.10 Random Number Generation   rand function – –Load – –Returns a "random" number between 0 and RAND_MAX (at least ). i = rand(); – –Pseudo random Preset sequence of "random" numbers Same sequence for every function call   Scaling – –To get a random number between 1 and n. i = 1 + ( rand() % n ) rand() % n returns a number between 0 and n – 1. Add 1 to make random number between 1 and n. i = 1 + ( rand() % 6) –number between 1 and 6  2007 Pearson Ed -All rights reserved. Systems Programming Functions 17

Generates a random number between 1 and 6 Random Number Example  2007 Pearson Ed -All rights reserved. Systems Programming Functions 18 Use of modulo operator is a standard trick to print output in column format.

Call by Value   When arguments are passed by the calling routine to the called routine by value, – –A copy of each argument’s value is passed to the called routine. – –Hence, any changes made to the passed argument by the called routine DO NOT change the original argument in the calling routine. – –This avoids accidental changes known as side-effecting. Systems Programming Functions 19

Call by Reference   When arguments are passed by the calling routine to the called routine by reference, – –The original argument is passed to the called routine. – –Hence, any changes made to the passed argument means that this changes remain in effect when control is returned to the calling routine. Systems Programming Functions 20

C Argument Passing Rules  In C, all arguments (by default) are passed by value. * Call by reference is “simulated” in C by using the address operator (&) and the indirection operator (*). Array arguments are automatically passed by reference! Array arguments are automatically passed by reference! {Much more about all this when we introduce pointers.} Systems Programming Functions 21

Scope (simple)   In C, the scope of a declared variable or type is defined within the range of the block of code in which the declaration is made.   Two simple examples: 1. declarations outside all functions are called globals. They can be referenced and modified by ANY function. {Note – this violates good programming practice rules}. Systems Programming Functions 22

Scope (simple) 2. Local variables – declarations made inside a function mean that variable name is defined only within the scope of that function.   Variables with the same name outside the function are different.   Every time the function is invoked the value of local variables need to be re- initialized upon entry to the function.   Local variables have the automatic storage duration by default (implicit). auto double x, y /* explicit auto */ Systems Programming Functions 23

Call by Value Example /* Example shows call-by-value and the scope of a global variable 'out' */ int out = 100; /* out is a global variable */ /* byval modifies local, global and variables passed by value. */ int byval ( int i, int j) { int tmp; tmp = 51; i = tmp - 10*i - j; out = 2*out + i + j; j++; tmp++; printf("In byval: i = %2d, j = %2d, tmp = %2d, out = %3d\n", i, j, tmp, out); return i; } global is changed Systems Programming Functions 24

Call by Value Example (cont) int main () { int i, j, tmp, s; tmp = 77; j = 1; for (i = 0; i < 2; i++) { s = byval(i,j); out = out + s - j; printf("In main : i = %2d, j = %2d, tmp = %2d, out = %3d, s = %d\n", i, j, tmp, out, s); } return 0; } global is changed Systems Programming Functions 25

Call by Value Example int main () { int i, j, tmp, s; tmp = 77; j = 1; for (i = 0; i < 2; i++) { s = byval(i,j); out = out + s - j; printf("In main : i = %2d, j = %2d, tmp = %2d, out = %3d, s = %d\n", i, j, tmp, out, s); } return 0; } $./byval In byval: i = 50, j = 2, tmp = 52, out = 251 In main : i = 0, j = 1, tmp = 77, out = 300, s = 50 In byval: i = 40, j = 2, tmp = 52, out = 641 In main : i = 1, j = 1, tmp = 77, out = 680, s = 40 Systems Programming Functions 26

Static Variables   Local variables declared with the keyword static are still only known in the function in which they are defined.   However, unlike automatic variables, static local variables retain their value when the function is exited. e.g., static int count = 2;   All numeric static variables are initialized to zero if not explicitly initialized. Systems Programming Functions 27

Static Variables /* An Example of a Static Variable */ float nonstat ( float x) { int i = 1; i = 10*i; x = i - 5.0*x; return x; } float stat (float y) { static int i = 1; i = 10*i; y = i - 5.0*y; return y; } Systems Programming Functions 28

Static Variables int main() { int i; float var1, var2; var2 = var1 = 2.0; printf(" var1 = %9.2f, var2 = %9.2f\n", var1, var2); for ( i = 1; i <= 3; i++) { var1 = nonstat(var1); var2 = stat(var2); printf(" var1 = %9.2f, var2 = %9.2f\n", var1, var2); } return 0; } $./static var1 = 2.00, var2 = 2.00 var1 = 0.00, var2 = 0.00 var1 = 10.00, var2 = var1 = , var2 = Systems Programming Functions 29

Review of Functions   The important concepts introduced in this Powerpoint session are: – –Functions – –Libraries – –Header Files – –Call by Value – –Call by Reference – –Scope (global and local) – –Static Variables Systems Programming Functions 30