Week 6 – Functions (2) PGT 106 - C Programming.

Slides:



Advertisements
Similar presentations
 2003 Prentice Hall, Inc. All rights reserved. 1 Recursion Recursive functions –Functions that call themselves –Can only solve a base case If not base.
Advertisements

 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.
 2003 Prentice Hall, Inc. All rights reserved. 1 Chapter 3 - Functions Outline 3.12Recursion 3.13Example Using Recursion: The Fibonacci Series 3.14Recursion.
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.
 2000 Prentice Hall, Inc. All rights reserved. Chapter 5 – Recursive Funtions From Deitel’s “C” Book 5.13Recursion 5.14Example Using Recursion: The Fibonacci.
Functions in C. Function Terminology Identifier scope Function declaration, definition, and use Parameters and arguments Parameter order, number, and.
Chapter 4:Functions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2005 | Last Updated: September 2005 Slide 1 Functions Lecture 4 by Jumail Bin.
 2003 Prentice Hall, Inc. All rights reserved. 1 Functions and Recursion Outline Function Templates Recursion Example Using Recursion: The Fibonacci Series.
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.
Lecture 6 – Functions (2). Outline Recall - sample application functions that return no value functions that return a value Recall – global variable vs.
1. Function prototype Function prototype is a declaration; indicates the function exists Should have function name, return type and parameter Placed before.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Functions (Recursion) Outline 5.13Recursion 5.14Example.
Principles of Programming - NI Simple Recursion Recursion is where a function calls itself. Concept of recursive function: A recursive function is.
 2007 Pearson Education, Inc. All rights reserved C Functions -Continue…-
Dale Roberts CSCI N305 Functions Recursion Department of Computer and Information Science, School of Science, IUPUI.
Chapter 5 - Functions Outline 5.1Introduction 5.2Program Modules in C 5.3Math Library Functions 5.4Functions 5.5Function Definitions 5.6Function Prototypes.
UniMAP SemII-09/10EKT120: Computer Programming1 Week 6 – Functions (2)
Chapter 5 – Functions II Outline Recursion Examples Using Recursion: The Fibonacci Series.
UniMAP SemI-09/10EKT120: Computer Programming1 Week 5 – Functions (1)
KIC/Computer Programming & Problem Solving 1.  Header Files  Storage Classes  Scope Rules  Recursion Outline KIC/Computer Programming & Problem Solving.
Principles of Programming - NI Simple Recursion Recursion is where a function calls itself. Concept of recursive function: A recursive function is.
UniMAP Sem2-09/10 DKT121:Fundamental of Computer Programming1 Functions (2)
1 MORE ON MODULAR DESIGN: MODULE COMMUNICATIONS. 2 WHEN A FUNCTION IS INVOKED, MEMORY IS ALLOCATED LOCALLY FOR THE FORMAL PARAMETERS AND THE VALUE OF.
Chapter 6: Function Introduction to function Standard functions User defined functions –function prototype –function definition Function call Storage classes.
1. 2 Introduction Structure Definitions and Declarations Initializing Structures Operations on Structures Members Structures as Functions Parameters Array.
PGT 106 C Programming POINTERS. PGT 106 C Programming Outline Introduction Pointer Variable Definitions and Initialization Pointer Operators Calling Functions.
C++ Programming Lecture 12 Functions – Part IV
CHAPTER 4 FUNCTIONS Dr. Shady Yehia Elmashad. Outline 1.Introduction 2.Program Components in C++ 3.Math Library Functions 4.Functions 5.Function Definitions.
 2000 Prentice Hall, Inc. All rights reserved Program Components in C++ Function definitions –Only written once –These statements are hidden from.
Program Development and Design Using C++, Third Edition
Function – I What is a function Why we need functions?
Functions Course conducted by: Md.Raihan ul Masood
User-Written Functions
Topic 6 Recursion.
EKT150 INTRODUCTION TO COMPUTER PROGRAMMING
5.13 Recursion Recursive functions Functions that call themselves
Week 9 - Pointers.
POINTERS.
EKT120 COMPUTER PROGRAMMING
EKT150 INTRODUCTION TO COMPUTER PROGRAMMING
C Functions -Continue…-.
EKT120: Computer Programming
Lesson #6 Modular Programming and Functions.
Lesson #6 Modular Programming and Functions.
POINTERS.
CSC113: Computer Programming (Theory = 03, Lab = 01)
Module 4 Functions – function definition and function prototype.
PGT 106: Computer Programming
Week 5 – Functions (1) EKT120: Computer Programming.
EKT120: Computer Programming
CSC113: Computer Programming (Theory = 03, Lab = 01)
EKT120: Computer Programming
DKT121:Fundamental of Computer Programming
Chapter 5 - Functions Outline 5.1 Introduction
Chapter 5 - Functions Outline 5.1 Introduction
Functions.
Formatted and Unformatted Input/Output Functions
Recursive functions.
Chapter 5 - Functions Outline 5.1 Introduction
Chapter 6 - Functions Outline 5.1 Introduction
Functions Recursion CSCI 230
A function with one argument
Introduction to Problem Solving and Programming
POINTERS.
Recursive Algorithms 1 Building a Ruler: drawRuler()
CPS125.
C Parameter Passing.
Presentation transcript:

Week 6 – Functions (2) PGT 106 - C Programming

Outline Recall - sample application functions that do not return value functions that return a value Recall – global variable vs. local variable Passing parameters in functions :- Pass by value Functions that return more than one value Sample application-functions that return more than one value Passing parameters in functions :- Pass by reference Sample application Recursive function PGT 106 - C Programming

Sample application Write a C program that reads item code and quantity, then calculates the payment. Use functions: fnMenu – print item code menu fnDeterminePrice – determine price based on item code fnCalc - calculate payment fnPrintResult – print payment Think!! Which function returns no value and which function returns a value. What argument names do I want to feed in as parameters and what to return??

Sample application #include <stdio.h> void fnMenu(); float fnDeterminePrice(int); float fnCalc(float,int); void fnPrintResult(float); int main() { int iCode,iQty; float fPrice,fPay; fnMenu(); printf("Enter item code and quantity: "); scanf("%d %d", &iCode,&iQty); fPrice = fnDeterminePrice(iCode); fPay = fnCalc(fPrice,iQty); fnPrintResult(fPay); return 0; } PGT 106 - C Programming

Enter item code and quantity: 1 3 Payment is 3.00 void fnMenu() { printf("Code\tItem\tPrice\n"); printf("1\tPapaya\t1.00\n"); printf("2\tMelon\t2.00\n"); printf("3\tDurian\t3.00\n"); printf("\tOthers\t4.00\n"); } float fnDeterminePrice(int iItemCode) { float fPricing; switch(iItemCode) case 1:fPricing = 1.00;break; case 2:fPricing = 2.00;break; case 3:fPricing = 3.00;break; default:fPricing = 4.00; return(fPricing); float fCalc(float fItemPrice, int iQuality) { float fTotal; fTotal = fItemPrice*iQuantity; return(fTotal); void fnPrintResult(float fPayment) { printf("Payment is %.2f\n", fPayment); Code Item Price 1 Papaya 1.00 2 Melon 2.00 3 Durian 3.00 Others 4.00 Enter item code and quantity: 1 3 Payment is 3.00 *************************** Enter item code and quantity: 9 3 Payment is 12.00

Global Variable vs. Local Variable #include <stdio.h> void fnMenu(); float fnDeterminePrice(int); float fnCalc(float,int); void fnPrintResult(float); int iCode,iQty; float fPrice,fPay; int main() { fnmenu(); printf("Enter item code and quantity:"); scanf("%d %d", &iCode,&iQty); fPrice= fnDeterminePrice(iCode); fPay=fnCalc(fPrice,iQty); fnPrintResult(fPay); return 0; } void fnMenu( ) printf("Code\tItem\tPrice\n"); printf("1\tPapaya\t1.00\n"); printf("2\tMelon\t2.00\n"); printf("3\tDurian\t3.00\n"); printf("\tOthers\t4.00\n"); modification float fnDeterminePrice(int iCode) { iCode--; switch(iCode) case 1:fPrice=1.00;break; case 2:fPrice=2.00;break; case 3:fPrice=3.00;break; default:fPrice=4.00; } return(fPrice); float fnCalc(float fPrice,int iQuantity) fPay=fPay+1; fPay=fPrice*iQuantity; return(fPay); void fnPrintResult(float fPay) { printf("Payment is %.2f\n", fPay); Output: Code Item Price 1 Papaya 1.00 2 Melon 2.00 3 Durian 3.00 Others 4.00 Enter item code and quantity: 1 4 Payment is 16.00 Enter item code and quantity: 3 1 Payment is 2.00 However, sometimes we need to do some modifications from inside a function; using global variable will make things worse!!! PGT 106 - C Programming

Pass by Value If a parameter is passed by value, then the value of the original data is copied into the function’s parameter (scope: local variable(s)) In other words, it (i.e. local variable) has its own copy of the data changes to copy do not change original data During program execution, it (i.e. local variable) will manipulate the data stored in its own memory space PGT 106 - C Programming

Pass by Value (Example) Output Before fnFun 1 iA = 5 iB = 10 Inside fnFun 1 iAA = 6 iBB = 9 After fnFun 1 #include <stdio.h> void fnFun1(int,int); //function prototype int main(void) { int iA=5, iB=10; printf("Before fun 1\n“); printf(" iA = %d iB = %d\n”, iA,iB); fnFun1(iA, iB); //function call printf("\nAfter fun 1\n“); return 0; } void fnFun1(int iAA,int iBB) //function definition iAA++; iBB--; printf("\n\nInside fun 1\n)"; printf(“iAA = %d iBB = %d\n”, iAA,iBB); PGT 106 - C Programming

Functions that return more than one value When we talk about functions that return more than one value it also means that we want to pass arguments by reference passes addresses (references), NOT value or data allows direct manipulation changes will affect original data PGT 106 - C Programming

Functions that return more than one value There are cases where you need to manipulate the value of an external variable from inside a function, thus we pass the value by reference PGT 106 - C Programming

Sample application Write a C program that calculates and prints average of 2 test marks. Your program should have functions: fnReadMarks – read 2 test marks fnCalcAvg – calculate average of two test marks fnPrint - print average PGT 106 - C Programming

Sample application Function that returns more than one value - arguments are passed by reference void fnReadMarks(float *fM1,float *fM2) { printf("Enter marks for test1 and test2 : "); scanf("%f %f", fM1,fM2); //notice no & } float fnCalcAvg(float fM1, float fM2) return((fM1 + fM2)/2); void fnPrint(float fAverage) printf("\nAverage marks are :%.2f\n",fAverage); #include <stdio.h> void fnReadMarks(float*,float*); float fnCalcAvg(float,float); void fnPrint(float); int main(void) { float fMarks1, fMarks2, fAvg; fnReadMarks(&fMarks1,&fMarks2); fAvg = fnCalcAvg(fMarks1,fMarks2); fnPrint(fAvg); return 0; } Output Enter marks for test1 and test2 : 70 80 Average marks are : 75.00 PGT 106 - C Programming

Pass by Reference A function’s parameter that receives the location (memory address) of the corresponding actual variables When we attach * (star) after the arg_type in the parameter list of a function, then the variable following that arg_type is passed by reference It stores the address of the actual variable, NOT the value During program execution to manipulate the data, the address stored will direct control to the memory space of the actual variable Syntax: In function protoype and function definition, put the * (star) after the data type Example : void fnReadMarks(float *,float *); In function call, put the &(ampersand) before the argument name to be passed by reference Example : fnReadMarks(&fMarks1,&fMarks2); PGT 106 - C Programming

Pass by Reference Pass by reference is useful in two situations: when you want to return more than one value from a function when the value of the actual parameter needs to be changed PGT 106 - C Programming

Sample application Write a C program that reads character and calculates numbers of vowel and consonant Your program should have function: fnRead – read character fnFindCountVC – determine and calculate number of vowel or consonant fnPrint - print number of vowel or consonant PGT 106 - C Programming

Sample application #include <stdio.h> #include <string.h> Enter character : f Do you want to continue?y Enter character : I Enter character : k Do you want to continue?n Number of vowel : 1 Number of consonant : 2 #include <stdio.h> #include <string.h> char fnRead(); void fnFindCountVC(char, int*, int*); void fnPrint(int,int); int main() { char cCh, cChoice; int iCountV=0, iCountC=0; do { cCh = fnRead(); fnFindCountVC(cCh, &iCountV, &iCountC); printf("Do you want to continue? "); scanf("%c", &cChoice); getchar(); }while((cChoice == 'y') ||(cChoice =='Y')); fnPrint(iCountV,iCountC); return 0; } char fnRead() { char cCh1; printf("Enter character : "); scanf("%c", &cCh1); return(cCh1); void fnFindCountVC(char cCh1, int *iVowel, int *iConsonant) { switch(cCh1) { case 'A': case 'a': case 'E': case 'e': case 'I': case 'i': case 'O': case 'o': case 'U': case 'u': *iVowel = *iVowel +1;break; default: *iConsonant = *iConsonant + 1; } void fnPrint(int iVowel, int iConsonant) printf("Number of vowel : %d\n", iVowel); printf("Number of consonant : %d\n", iConsonant); Functions that “return” more than one value i.e. arguments are passed by reference

Pass by Reference (Example) #include <stdio.h> void fnFun1(int, int*); //function prototype int main(void) { int iA=5,iB=10; printf("Before fun 1\n”); printf(“iA = %d iB = %d”,iA,iB); fnFun1(iA, &iB); //function call printf(“\n\nAfter fun 1\n”); printf(“iA = %d iB = %d\n”,iA,iB); return 0; } void fnFun1(int iAA, int * iBB)//function definition iAA++; *iBB--; printf("\n\nInside fun 1\n”); printf(“iAA = %d iBB = %d”,iAA,iBB); Output Before fun 1 iA=5 iB = 10 Inside fun 1 iAA = 6 iBB = 9 After fun 1 iA = 5 iB = 9 PGT 106 - C Programming

Recursive Functions Recursion is a term describing functions which are called by themselves (functions that call themselves) Recursive function has two parts i.e. base case and not base case If not base case, the function breaks the problem into a slightly smaller, slightly simpler, problem that resembles the original problem and Launches a new copy of itself to work on the smaller problem, slowly converging towards the base case Makes a call to itself inside the return statement Eventually the base case gets solved and then that value works its way back up to solve the whole problem Recursion is very useful in mathematical calculations and in sorting of lists PGT 106 - C Programming

Recursive Functions Example: factorial Recursive relationship: n! = n * ( n – 1 ) * ( n – 2 ) * … * 1 Recursive relationship: ( n! = n * ( n – 1 )! ) 5! = 5 * 4! 4! = 4 * 3!… Base case (1! = 0! = 1) PGT 106 - C Programming

Recursive Functions(Example) Factorial 4 * 6 = 24 is returned Factorial(4) 3 * 2 = 6 is returned 4 * Factorial(3) 3 * Factorial(2) 2 * 1 = 2 is returned 2 * Factorial(1) Value 1 is returned 1 PGT 106 - C Programming

Recursive Functions(Example) #include <stdio.h> int fnFactorial(int); void main() { int iN=4; printf(“Factorial %d is %d“,n, fnFactorial(n)); } int fnFactorial(int iN) if(iN <= 1) //base case return 1; else return ( iN * fnFactorial(iN-1)); Call function name itself PGT 106 - C Programming

Recursive Functions (Example) Fibonacci series: 0, 1, 1, 2, 3, 5, 8... Each number is the sum of two previous numbers Example of a recursive formula: fib(n) = fib(n-1) + fib(n-2) PGT 106 - C Programming

Recursive Functions (Example) Diagram of Fibonacci function: f( 3 ) f( 1 ) f( 2 ) f( 0 ) return 1 return 0 return + PGT 106 - C Programming

Recursive Functions (Example) Sample code for fibonacci function long fnFibonacci( long lN ) { if ( lN == 0 || lN == 1 ) //base case return lN; else return fnFibonacci( lN - 1 ) + fnFibonacci( lN – 2 ); } PGT 106 - C Programming

End Week 6 – Functions (2) Q & A! PGT 106 - C Programming