Chapter 8: Function. In this chapter, you will learn about

Similar documents
Fundamental of Programming (C)

Unit 7. Functions. Need of User Defined Functions

Chapter 5 C Functions

BSM540 Basics of C Language

Functions. Systems Programming Concepts

Types. C Types. Floating Point. Derived. fractional part. no fractional part. Boolean Character Integer Real Imaginary Complex

Lecture 9 - C Functions

Functions. Arash Rafiey. September 26, 2017

C: How to Program. Week /Mar/05

Computer Programming & Problem Solving ( CPPS ) Turbo C Programming For The PC (Revised Edition ) By Robert Lafore

CS101 Introduction to computing Function, Scope Rules and Storage class

CSE 2421: Systems I Low-Level Programming and Computer Organization. Functions. Presentation C. Predefined Functions

AN OVERVIEW OF C, PART 3. CSE 130: Introduction to Programming in C Stony Brook University

Government Polytechnic Muzaffarpur.

Chapter 7 Functions. Now consider a more advanced example:

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements

EC 413 Computer Organization

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath

Functions. (transfer of parameters, returned values, recursion, function pointers).

Functions BCA-105. Few Facts About Functions:

Unit 3 Functions. 1 What is user defined function? Explain with example. Define the syntax of function in C.

Functions. Computer System and programming in C Prentice Hall, Inc. All rights reserved.

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language

A Fast Review of C Essentials Part II

ARRAYS(II Unit Part II)

Technical Questions. Q 1) What are the key features in C programming language?

& Technology. G) Functions. void. Argument2, Example: (Argument1, Syllabus for 1. 1 What. has a unique. 2) Function name. passed to.

Functions. Autumn Semester 2009 Programming and Data Structure 1. Courtsey: University of Pittsburgh-CSD-Khalifa

Chapter 2 - Introduction to C Programming

MODULE 3: Arrays, Functions and Strings

Module 4: Decision-making and forming loops

2008/11/05: Lecture 15 CMSC 104, Section 0101 John Y. Park

Functions. Functions are everywhere in C. Pallab Dasgupta Professor, Dept. of Computer Sc & Engg INDIAN INSTITUTE OF TECHNOLOGY KHARAGPUR

C Programming Lecture V

C Functions. 5.2 Program Modules in C

Programming in C. main. Level 2. Level 2 Level 2. Level 3 Level 3

C Language Part 2 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee

Principles of Programming. Chapter 6: Arrays

CHAPTER 4 FUNCTIONS. 4.1 Introduction

Functions. Prof. Indranil Sen Gupta. Dept. of Computer Science & Engg. Indian Institute t of Technology Kharagpur. Introduction

Computer Programming. C Array is a collection of data belongings to the same data type. data_type array_name[array_size];

Subject: Fundamental of Computer Programming 2068

AN OVERVIEW OF C. CSE 130: Introduction to Programming in C Stony Brook University

CS11001/CS11002 Programming and Data Structures (PDS) (Theory: 3-0-0)

SUHAIL T A

GE U111 Engineering Problem Solving & Computation Lecture 6 February 2, 2004

Fundamentals of Programming. Lecture 3: Introduction to C Programming

To declare an array in C, a programmer specifies the type of the elements and the number of elements required by an array as follows

A PROBLEM can be solved easily if it is decomposed into parts. Similarly a C program decomposes a program into its component functions.

C Programming for Engineers Functions

C Functions. Object created and destroyed within its block auto: default for local variables

CSE101-lec#12. Designing Structured Programs Introduction to Functions. Created By: Amanpreet Kaur & Sanjeev Kumar SME (CSE) LPU

Fundamentals of Programming Session 12

Fundamentals of Programming & Procedural Programming

SEQUENTIAL STRUCTURE. Erkut ERDEM Hacettepe University October 2010

CSCI 2132 Software Development. Lecture 17: Functions and Recursion

Lecture 3. Review. CS 141 Lecture 3 By Ziad Kobti -Control Structures Examples -Built-in functions. Conditions: Loops: if( ) / else switch

A Fast Review of C Essentials Part I

CSCI 2132 Software Development. Lecture 18: Functions

It is necessary to have a single function main in every C program, along with other functions used/defined by the programmer.

Fundamentals of Programming Session 4

Functions. Angela Chih-Wei Tang ( 唐之瑋 ) Department of Communication Engineering National Central University JhongLi, Taiwan.

Chapter 2, Part I Introduction to C Programming

Lecture 2: C Programming Basic

BLM2031 Structured Programming. Zeyneb KURT

C Tutorial: Part 1. Dr. Charalampos C. Tsimenidis. Newcastle University School of Electrical and Electronic Engineering.

Dr M Kasim A Jalil. Faculty of Mechanical Engineering UTM (source: Deitel Associates & Pearson)

Function Call Stack and Activation Records

UNIT 3 FUNCTIONS AND ARRAYS

Lecture 04 FUNCTIONS AND ARRAYS

Variation of Pointers

6.096 Introduction to C++

BIL 104E Introduction to Scientific and Engineering Computing. Lecture 4

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 12, FALL 2012

Quiz1 Fall 2007 October 2 nd, UNIVERSITY OF WINDSOR Fall 2007 QUIZ # 1 Solution. Examiner:Ritu Chaturvedi Dated :October 2nd, 2007.

A function is a named piece of code that performs a specific task. Sometimes functions are called methods, procedures, or subroutines (like in LC-3).

CSE 230 Intermediate Programming in C and C++ Functions

C How to Program, 6/e by Pearson Education, Inc. All Rights Reserved.

Lecture 04 FUNCTIONS AND ARRAYS

UNIVERSITY OF WINDSOR Fall 2006 QUIZ # 1. Examiner:Ritu Chaturvedi Dated : Oct 3rd, Student Name: Student Number:

IV Unit Second Part STRUCTURES

Introduction to C Final Review Chapters 1-6 & 13

Cpt S 122 Data Structures. Introduction to C++ Part II

Pointers. Pointer Variables. Chapter 11. Pointer Variables. Pointer Variables. Pointer Variables. Declaring Pointer Variables

Lecture 02 Summary. C/Java Syntax 1/14/2009. Keywords Variable Declarations Data Types Operators Statements. Functions

Why Pointers. Pointers. Pointer Declaration. Two Pointer Operators. What Are Pointers? Memory address POINTERVariable Contents ...

C Functions. CS 2060 Week 4. Prof. Jonathan Ventura

!"#$% &'($) *+!$ 0!'" 0+'&"$.&0-2$ 10.+3&2),&/3+, %&&/3+, C,-"!.&/+"*0.&('1 :2 %*10% *%7)/ 30'&. 0% /4%./

Fundamentals of Programming

C/Java Syntax. January 13, Slides by Mark Hancock (adapted from notes by Craig Schock)

C/Java Syntax. Lecture 02 Summary. Keywords Variable Declarations Data Types Operators Statements. Functions. if, switch, while, do-while, for

Programming for Engineers Introduction to C

Programming and Data Structure

Introduction to C Programming. Chih-Wei Tang ( 唐之瑋 ) Department of Communication Engineering National Central University JhongLi, Taiwan

15 FUNCTIONS IN C 15.1 INTRODUCTION

Pointers and scanf() Steven R. Bagley

CSE 124 Discussion (10/3) C/C++ Basics

Informatica e Sistemi in Tempo Reale

Use of scanf. scanf("%d", &number);

Lecture 16. Daily Puzzle. Functions II they re back and they re not happy. If it is raining at midnight - will we have sunny weather in 72 hours?

Transcription:

Principles of Programming Chapter 8: Function In this chapter, you will learn about Introduction to function User-defined function Formal and Actual Parameters Parameter passing by value Parameter passing by reference Local and Global Variables Storage classes S1 2017/18 1

Principles of Programming Introduction A function is a block of code which is used to perform a specific task. It can be written in one program and used by another program without having to rewrite that piece of code. Hence, it promotes usability!!! Functions can be put in a library. If another program would like to use them, it will just need to include the appropriate header file at the beginning of the program and link to the correct library while compiling. 2

Principles of Programming Introduction Functions can be divided into two categories : Predefined functions (standard functions) Built-in functions provided by C that are used by programmers without having to write any code for them. i.e: printf( ), scanf( ), etc User-Defined functions Functions that are written by the programmers themselves to carry out various individual tasks. 3

Standard/Pre-defined Functions Principles of Programming Standard functions are functions that have been predefined by C and put into standard C libraries. Example: printf(), scanf(), pow(), ceil(), rand(), etc. What we need to do to use them is to include the appropriate header files. Example: #include <stdio.h>, #include <math.h> What contained in the header files are the prototypes of the standard functions. The function definitions (the body of the functions) has been compiled and put into a standard C library which will be linked by the compiler during compilation. 4

Principles of Programming User-defined Functions A programmer can create his/her own function(s). It is easier to plan and write our program if we divide it into several functions instead of writing a long piece of code inside the main function. A function is reusable and therefore prevents us (programmers) from having to unnecessarily rewrite what we have written before. In order to write and use our own function, we need to do the following: create a function prototype (declare the function) define the function somewhere in the program (implementation) call the function whenever it needs to be used 5

Principles of Programming Function Definition It is also called as function implementation A function definition is where the actual code for the function is written. This code will determine what the function will do when it is called. A function definition consists of the following elements: A function return data type (return value) A function name An optional list of formal parameters enclosed in parentheses (function arguments) A compound statement (function body) 6

Principles of Programming Function Definition A function definition has this format: rdtype fname (dt1 var1, dt2 var2, dt3 var3,..) local variable declarations; statements; The return data type (rdtype) indicates the type of data that will be returned by the function fname to the calling function. There can be only one return value. A function that does not returning any value must be have the return data type written as void. If the function does not receive any parameter from the calling function, void is also used in the place of the parameter. Note that if the function is returning a value, it needs to use the keyword return. 7

Principles of Programming Function definition example 1 A simple function is : void print_message (void) printf("hello, are you having fun?\n"); Note the function name is print_message. No arguments are accepted by the function, this is indicated by the keyword void enclosed in the parentheses. The return_value is void, thus data is not returned by the function. So, when this function is called in the program, it will simply perform its intended task which is to print Hello, are you having fun? 8

Principles of Programming Function definition example 2 Consider the following example: int calculate (int num1, int num2) int sum; sum = num1 + num2; return sum; The above code segments is a function named calculate. This function accepts two arguments i.e. num 1 and num2 of the type int. The return_value is int, thus this function will return an integer value. So, when this function is called in the program, it will perform its task which is to calculate the sum of any two numbers and return the result of the summation. 9

Function Prototype A function prototype will tell the compiler that there exist a function with this name defined somewhere in the program and therefore it can be used even though the function has not yet been defined at that point. If the function receives some arguments, the variable names for the arguments are not needed. Only the data type need to be stated. Function prototypes need to be written at the beginning of the program. Principles of Programming 10

Principles of Programming Function Prototype For the following function definition, void print_message (void) printf("hello, are you having fun?\n"); The corresponding function prototype is void print_message (void); 11

Principles of Programming Function Prototype For the following function definition, int calculate (int num1, int num2) int sum; sum = num1 + num2; return sum; The corresponding function prototype is int calculate (int, int); 12

Function Call Any function (including main) could utilise any other function definition that exist in a program hence it is said to be calling the function and known as calling function. To call a function (i.e. to ask another function to do something for the calling function), it requires the FunctionName followed by a list of actual parameters (or arguments), if any, enclosed in parenthesis. For example, a function call to the function calculate defined in the previous slide will look something like below. void main(void)... calculate (6, 7);... Principles of Programming 13

Principles of Programming #include <stdio.h> //function prototype void fn1(void); Basic skeleton int main(void)... //function call fn1( );... return (0); //function definition void fn1(void) local variable declaration; statements; main is the calling function fn1 is the called function 14

Function Call cont Principles of Programming If the function returns a value, then the returned value need to be assigned to a variable so that it can be stored. For example: int GetUserInput (void); /* function prototype*/ int main(void) int input; input = GetUserInput( ); return(0); However, it is perfectly okay (syntax wise) to just call the function without assigning it to any variable if we want to ignore the returned value. We can also call a function inside another function. For example: printf("user input is: %d", GetUserInput( )); 15

Principles of Programming Types of function Type 1: Receive no input parameter and return nothing Type 2: Receive no input parameter but return a value Type 3: Receive input parameter(s) and return nothing Type 4: Receive input parameters(s) and return a value 16

Principles of Programming Type 1 Example #include <stdio.h> void greeting(void); /* function prototype */ int main(void) greeting( ); greeting( ); return(0); In this example, function greeting does not receive any arguments from the calling function (main), and does not return any value to the calling function, hence type void is used for both the input arguments and return data type. void greeting(void) printf("have fun!! \n"); Have fun!! Have fun!! Press any key to continue 17

Principles of Programming #include <stdio.h> int getinput(void); int main(void) int num1, num2, sum; Type 2 Example num1 = getinput( ); num2 = getinput( ); sum = num1 + num2; printf("sum is %d\n",sum); return(0); Enter a number: 5 Enter a number: 4 Sum is 9 Press any key to continue int getinput(void) int number; printf("enter a number:"); scanf("%d,&number); return number; 18

Principles of Programming #include <stdio.h> int getinput(void); void displayoutput(int); int main(void) int num1, num2, sum; Type 3 Example num1 = getinput(); num2 = getinput(); sum = num1 + num2; displayoutput(sum); return(0); Enter a number: 5 Enter a number: 4 Sum is 9 Press any key to continue int getinput(void) int number; printf("enter a number:"); scanf("%d",&number); return number; void displayoutput(int sum) printf("sum is %d \n",sum); 19

#include <stdio.h> int calsum(int,int); int main(void) int sum, num1, num2; Type 4 Example /*function protototype*/ printf( Enter two numbers to calculate its sum:\n ); scanf( %d%d,&num1,&num2); sum = calsum(num1,num2); /* function call */ printf( \n %d + %d = %d, num1, num2, sum); return(0); Principles of Programming int calsum(int val1, int val2) /*function definition*/ int sum; sum = val1 + val2; return sum; Enter two numbers to calculate its sum: 4 9 4 + 9 = 13 Press any key to continue 20

Type 4 Example (Explanation) In this example, the calsum function receives input parameters of type int from the calling function (main). The calsum function returns a value of type int to the calling function. Therefore, the function definition for calsum: int calsum(int val1, int val2) Note that the function prototype only indicates the type of variables used, not the names. int calsum(int,int); Note that the function call is done by (main) calling the function name (calsum), and supplying the variables (num1,num2) needed by the calsum function to carry out its task. Principles of Programming 21

Type 4 Example (Complete Flow) Principles of Programming #include<stdio.h> int calsum(int, int); int main(void) int num1, num2, sum; printf( Enter 2 numbers to calculate its sum: ); scanf( %d %d, &num1, &num2); sum = calsum (num1, num2); printf ( \n %d + %d = %d, num1, num2, sum); return (0); int calsum(int val1, int val2) int sum; sum = val1 + val2; return sum; 22

Function with parameter (Type 3 & 4) When a function calls another function to perform a task, the calling function may also send data to the called function. After completing its task, the called function may pass the data it has generated back to the calling function. Two terms used: Formal parameter Variables declared in the formal list of the function header (written in function prototype & function definition) Actual parameter Constants, variables, or expression in a function call that correspond to its formal parameter Principles of Programming 23

Principles of Programming Formal and Actual parameters The three important points concerning functions with parameters are: (number, order and type) The number of actual parameters in a function call must be the same as the number of formal parameters in the function definition. A one-to-one correspondence must occur among the actual and formal parameters. The first actual parameter must correspond to the first formal parameter and the second to the second formal parameter, an so on. The type of each actual parameter must be the same as that of the corresponding formal parameter. 24

#include <stdio.h> int calsum(int,int); Formal and Actual parameters int main(void).... sum = calsum(num1,num2); /* function call */.. int calsum(int val1, int val2) /*function header*/ Formal Parameters Formal Parameters /*function protototype*/ Actual Parameters Principles of Programming 25

Function Call cont If the function requires some arguments to be passed along, then the arguments need to be listed in the bracket ( ) according to the specified order. For example: void Calc(int, double, char, int); int main(void) int a, b; double c; char d; Calc(a, c, d, b); return (0); Principles of Programming Function Call 26

Types of Parameter Passing There are 2 ways to call a function: Call by value (parameter passing by value) In this method, only the copy of variable s value (copy of actual parameter s value) is passed to the function. Any modification to the passed value inside the function will not affect the actual value. In all the examples that we have seen so far, this is the method that has been used. Call by reference (parameter passing by reference) In this method, the reference (memory address) of the variable, i.e. the pointer to the variable, is passed to the function. Any modification passed done to the variable inside the function will affect the actual value. Principles of Programming 27

Limitation of Parameter Passing by Value Consider the following program. Principles of Programming #include<stdio.h> void getvalue(int); void main(void) int a=0; getvalue(a); printf("%d\n", a); void getvalue(int b) b = 10; 28

Limitation of Parameter Passing by Value Principles of Programming #include<stdio.h> int getvalue(int); void main(void) int a=0; a=getvalue(a); printf("%d\n", a); int getvalue(int b) b = 10; return b; 29

Passing array as parameter The name of an array is the pointer to the first element of the array. Due to this, passing an array as parameter to a function is considered as passing by reference. Principles of Programming 30

Passing 1D array as parameter #include<stdio.h> #include<stdlib.h> void fillarray(int []); void main(void) int intarray[10]=0, i; fillarray(intarray); for(i=0;i<10;i++) printf("%d ", intarray[i]); void fillarray(int a[]) int i; for (i=0;i<10;i++) a[i]=rand(); Principles of Programming 31

Passing 2D array as parameter #include<stdio.h> #include<stdlib.h> void fill2darray(int [], int[]); void main(void) int intarray[10][5]=0, i, j; fill2darray(intarray); for(i=0;i<10;i++) for(j=0;j<5;j++) printf("%d ", intarray[i][j]); void fill2darray(int a[10], int b[]) int i; for (i=0;i<10;i++) for(j=0;j<5;j++) a[i][j]=rand(); Principles of Programming 32

Principles of Programming Using Header File Function prototypes can also be put in a header file.header files are files that have a.h extension. The header file can then be included at the beginning of our program. To include a user defined header file, type: #include "header_file.h " Notice that instead of using < > as in the case of standard header files, we need to use " ". This will tell the compiler to search for the header file in the same directory as the program file instead of searching it in the directory where the standard library header files are stored. 33

Principles of Programming #include<stdio.h> void main(void) printmessage(); Using Header File void printmessage(void) printf("hello! Welcome! Good Morning!\n"); 34

Principles of Programming Using Header File 35

Principles of Programming Using Header File Write the following and save as myfile.c #include<stdio.h> void printmessage(void) printf("hello! Welcome! Good Morning!\n"); In your myfile.h file, #include"myfile.c" void printmessage(void); In your function.c file, #include"myfile.h" void main(void) printmessage(); 36

Principles of Programming The output Using Header File 37

Principles of Programming Macros A simple operation can also be specified by a preprocessing directive called a macro. Example: #define degrees_c(x) (((x) 32) * (5.0/9.0)) int main(void) double temp; printf( Enter temperature in degrees Fahrenheit: ); scanf( %f, &temp); printf( %f degrees Centigrade\n, degrees_c(temp)); return 0; 38

Principles of Programming Exercise Write macros to compute the following values. 1. Area of a square, A = side 2 2. Area of a rectangle, A = side 1 x side 2 3. Area of a trapezoid, A = ½ x base x (height 1 + height 2 ) where height 1 and height 2 are parallel 39

Declaration of Variables Up until now, we have learnt to declare our variables within the braces of segments (or a function) including the main. It is also possible to declare variables outside a function. These variables can be accessed by all functions throughout the program. Principles of Programming 40

Local and Global Variables Local variables only exist within a function. After leaving the function, they are destroyed. When the function is called again, they will be created (reassigned). Global variables can be accessed by any function within the program. While loading the program, memory locations are reserved for these variables and any function can access these variables for read and write (overwrite). If there exist a local variable and a global variable with the same name, the compiler will refer to the local variable. Principles of Programming 41

#include <stdio.h> void initialise(void); void getinputs(void); void calsum(void); int sum, num1, num2; Global variable - example Global variables Principles of Programming int main(void) /* initialise sum to 0 */ initialise( ); /* read num1 and num2 */ getinputs( ); calsum( ); printf("sum is %d\n",sum); return (0); Enter num1 and num2: 4 9 Sum is 13 Press any key to continue void initialise(void) sum = 0; void getinputs(void) printf("enter num1 and num2:\n"); scanf("%d%d",&num1,&num2); void calsum(void) sum = num1 + num2; 42

Global variable example explained In the previous example, no variables are passed between functions. Each function could have access to the global variables, hence having the right to read and write the value to it. Even though the use of global variables can simplify the code writing process (promising usage), it could also be dangerous at the same time. Since any function can have the right to overwrite the value in global variables, a function reading a value from a global variable can not be guaranteed about its validity. Principles of Programming 43

Global variable the dangerous side #include <stdio.h> void initialise(void); void getinputs(void); void calsum(void); int sum, num1, num2; int main(void) /* initialise sum to 0 */ initialise( ); Principles of Programming /* read num1 and num2 */ getinputs( ); calsum( ); printf("sum is %d\n",sum); return(0); Enter num1 and num2: 4 9 Sum is 0 Press any key to continue void initialise(void) sum = 0; void getinputs(void) printf("enter num1 and num2:\n"); scanf("%d%d",&num1,&num2); void calsum(void) sum = num1 + num2; initialise(); 44 Imagine what would be the output of this program if someone accidently write the following function call inside calsum?

Principles of Programming Storage Classes Storage class indicates the lifetime of a variable used in a program. Local variables only exist within a function by default. When calling a function repeatedly, we might want to Start from scratch re-initialise the variables The storage class is auto Continue where we left off remember the last value The storage class is static Another two storage classes (seldomly used) register (ask to use hardware registers if available) extern (to make local variables external i.e. global variables) 45

Auto storage class Variables with automatic storage duration are created when the block in which they are declared is entered, exist when the block is active and destroyed when the block is exited. The keyword auto explicitly declares variables of automatic storage duration. It is rarely used because when we declare a local variable, by default it has class storage of type auto. int a, b; is the same as auto int a, b; Principles of Programming 46

Static storage class Variables with static storage duration exist from the point at which the program begin execution. All the global variables are static, and all local variables and functions formal parameters are automatic by default. Since all global variables are static by default, in general it is not necessary to use the static keyword in their declarations. However the static keyword can be applied to a local variable so that the variable still exist even though the program has gone out of the function. As a result, whenever the program enters the function again, the value in the static variable still holds. Principles of Programming 47

#include <stdio.h> void auto_example(void); int main(void) int i; printf("auto example:\n"); Auto - Example Principles of Programming auto_example( ); auto_example( ); auto_example( ); return(0); Auto example: 1 1 1 Press any key to continue void auto_example(void) auto int num = 1; printf( %d\n,num); num = num + 2; 48

#include <stdio.h> void auto_example(void); int main(void) int i; Static - Example printf( Static example:\n"); Principles of Programming static_example( ); static_example( ); static_example( ); return(0); Static example: 1 3 5 Press any key to continue void static_example(void) static int num = 1; printf( %d\n,num); num = num + 2; 49

Principles of Programming Summary In this chapter, you have learnt: Standard vs User Define functions Function prototype, function definition and function call Formal vs Actual parameters Parameter passing by values Local vs Global variables Auto vs Static storage class 50