CHAPTER 4 FUNCTIONS. Dr. Shady Yehia Elmashad

Similar documents
CHAPTER 4 FUNCTIONS. Dr. Shady Yehia Elmashad

Chapter 3 - Functions

C++ Programming Lecture 11 Functions Part I

Chapter 3 - Functions

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

Functions and Recursion

Chapter 3 - Functions

Chapter 3 - Functions. Chapter 3 - Functions. 3.1 Introduction. 3.2 Program Components in C++

Chapter 15 - C++ As A "Better C"

C++ As A "Better C" Chih-Wei Tang ( 唐之瑋 ) Department of Communication Engineering National Central University JhongLi, Taiwan.

Functions and Recursion

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

Introduction to Programming

C++, How to Program. Spring 2016 CISC1600 Yanjun Li 1

Introduction to C++ Systems Programming

Functions. Function Prototypes. Function prototype is needed if the function call comes before the function definition in the program.

엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University COPYRIGHTS 2017 EOM, HYEONSANG ALL RIGHTS RESERVED

Functions and an Introduction to Recursion Pearson Education, Inc. All rights reserved.

Introduction to C++ Introduction to C++ 1

Lecture 04 FUNCTIONS AND ARRAYS

CHAPTER 2.1 CONTROL STRUCTURES (SELECTION) Dr. Shady Yehia Elmashad

CHAPTER 1.2 INTRODUCTION TO C++ PROGRAMMING. Dr. Shady Yehia Elmashad

Lecture 04 FUNCTIONS AND ARRAYS

IS 0020 Program Design and Software Tools

C++ PROGRAMMING SKILLS Part 3 User-Defined Functions

6.5 Function Prototypes and Argument Coercion

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

Functions. Introduction :

34. Recursion. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

CHAPTER 3 ARRAYS. Dr. Shady Yehia Elmashad

Faculty of Engineering Computer Engineering Department Islamic University of Gaza C++ Programming Language Lab # 6 Functions

IS 0020 Program Design and Software Tools

Outline. Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples.

8. Functions (II) Control Structures: Arguments passed by value and by reference int x=5, y=3, z; z = addition ( x, y );

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

Lab Instructor : Jean Lai

142

Functions in C++ Problem-Solving Procedure With Modular Design C ++ Function Definition: a single

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces

CS242 COMPUTER PROGRAMMING

What Is a Function? Illustration of Program Flow

C Programming for Engineers Functions

Chapter 6: User-Defined Functions. Objectives (cont d.) Objectives. Introduction. Predefined Functions 12/2/2016

4. C++ functions. 1. Library Function 2. User-defined Function

CHAPTER 2.2 CONTROL STRUCTURES (ITERATION) Dr. Shady Yehia Elmashad

Functions. Lab 4. Introduction: A function : is a collection of statements that are grouped together to perform an operation.

Pointers and Strings Prentice Hall, Inc. All rights reserved.

Fundamentals of Programming Session 13

Computer Science II Lecture 1 Introduction and Background

CSE123. Program Design and Modular Programming Functions 1-1

Week 3. Function Definitions. Example: Function. Function Call, Return Statement. Functions & Arrays. Gaddis: Chapters 6 and 7.

Methods (Deitel chapter 6)

Arrays. Week 4. Assylbek Jumagaliyev

Chapter 5 - Methods Prentice Hall, Inc. All rights reserved.

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

EECS402 Lecture 02. Functions. Function Prototype

C Functions. 5.2 Program Modules in C

Pointers and Strings. Adhi Harmoko S, M.Komp

Methods (Deitel chapter 6)

Function with default arguments

Functions and Recursion

Computer Programming C++ Classes and Objects 6 th Lecture

Chapter 1 Introduction to Computers and C++ Programming

Lecture 4. Default Arguments. Set defaults in function prototype. int myfunction( int x = 1, int y = 2, int z = 3 );

Chapter 2 - Control Structures

Programming Language. Functions. Eng. Anis Nazer First Semester

Fast Introduction to Object Oriented Programming and C++

Lab 1. largest = num1; // assume first number is largest

Introduction to Scientific Programming with C++

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

Outline. Introduction. Pointer variables. Pointer operators. Calling functions by reference. Using const with pointers. Examples.

CSCI 111 Midterm 1, version A Exam Fall Solutions 09.00am 09.50am, Tuesday, October 13, 2015

CHAPTER 4 FUNCTIONS. 4.1 Introduction

The University Of Michigan. EECS402 Lecture 02. Andrew M. Morgan. Savitch Ch. 3-4 Functions Value and Reference Parameters.

Functions. Functions in C++ Calling a function? What you should know? Function return types. Parameter Type-Checking. Defining a function

C++ Programming: From Problem Analysis to Program Design, Fifth Edition. Chapter 6: User-Defined Functions I

Chapter 4: Subprograms Functions for Problem Solving. Mr. Dave Clausen La Cañada High School

Introduction to Programming

CSC 330 Object-Oriented Programming. Exception Handling CSC 330

Kingdom of Saudi Arabia Princes Nora bint Abdul Rahman University College of Computer Since and Information System CS242 ARRAYS

Multiple Choice (Questions 1 13) 26 Points Select all correct answers (multiple correct answers are possible)

C Pointers. 7.2 Pointer Variable Definitions and Initialization

3. Functions. Modular programming is the dividing of the entire problem into small sub problems that can be solved by writing separate programs.

Outline. Functions. Functions. Predefined Functions. Example. Example. Predefined functions User-defined functions Actual parameters Formal parameters

Outline. Why do we write functions? Introduction to Functions. How do we write functions? Using Functions. Introduction to Functions March 21, 2006

Chapter 4. Procedural Abstraction and Functions That Return a Value. Copyright 2014 Pearson Addison-Wesley. All rights reserved.

Introduction to Programming

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

(5-1) Object-Oriented Programming (OOP) and C++ Instructor - Andrew S. O Fallon CptS 122 (February 4, 2019) Washington State University

Chapter 3 Problem Solving and the Computer

PROGRAMMING IN C AND C++:

IS 0020 Program Design and Software Tools

Arithmetic Operators. Binary Arithmetic Operators. Arithmetic Operators. A Closer Look at the / Operator. A Closer Look at the % Operator

More Flow Control Functions in C++ CS 16: Solving Problems with Computers I Lecture #4

Numbers. John Perry. Spring 2017

Chapter 4 - Arrays. 4.1 Introduction. Arrays Structures of related data items Static entity (same size throughout program) A few types

Programming Fundamentals. With C++ Variable Declaration, Evaluation and Assignment 1

A SHORT COURSE ON C++

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible)

Chapter 5 C Functions

Transcription:

CHAPTER 4 FUNCTIONS Dr. Shady Yehia Elmashad

Outline 1. Introduction 2. Program Components in C++ 3. Math Library Functions 4. Functions 5. Function Definitions 6. Function Prototypes 7. Header Files 8. Recursion 9. Example Using Recursion: The Fibonacci Series 10. Recursion vs. Iteration 11. Functions with Empty Parameter Lists 12. Inline Functions 13. Default Arguments 14. Function Overloading

1. Introduction Divide and conquer Construct a program from smaller pieces or components. Each piece more manageable than the original program.

2. Program Components in C++ Programs written by combining new functions with prepackaged functions in the C++ standard library. The standard library provides a rich collection of functions. Functions are invoked by a function call A function call specifies the function name and provides information (as arguments) that the called function needs Boss to worker analogy: A boss (the calling function or caller) asks a worker (the called function) to perform a task and return (i.e., report back) the results when the task is done.

2. Program Components in C++ Function definitions Only written once These statements are hidden from other functions. Boss to worker analogy: The boss does not know how the worker gets the job done; he just wants it done

3. Math Library Functions Math library functions Allow the programmer to perform common mathematical calculations Are used by including the header file <cmath> Functions called by writing Example functionname (argument) cout << sqrt( 900.0 ); Calls the sqrt (square root) function. The preceding statement would print 30 The sqrt function takes an argument of type double and returns a result of type double, as do all functions in the math library

3. Math Library Functions Function arguments can be Constants sqrt( 4 ); Variables sqrt( x ); Expressions sqrt( sqrt( x ) ) ; sqrt( 3-6x );

Functions 4. Functions Allow the programmer to modularize a program Local variables Known only in the function in which they are defined All variables declared in function definitions are local variables Parameters Local variables passed when the function is called that provide the function with outside information

5. Function Definitions Create customized functions to Take in data Perform operations Return the result Format for function definition: return-value-type function-name( parameter-list ) { declarations and statements Example: int square( int y) { return y * y;

1 // Fig. 3.3: fig03_03.cpp 2 // Creating and using a programmer-defined function 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int square( int ); // function prototype 9 10 int main() 11 { 12 for ( int x = 1; x <= 10; x++ ) 13 cout << square( x ) << " "; 14 15 cout << endl; 16 return 0; 17 18 19 // Function definition 20 int square( int y ) 21 { 22 return y * y; 23 Notice how parameters and return value are declared. Outline 1. Function prototype 2. Loop 3. Function definition 10 1 4 9 16 25 36 49 64 81 100 Program Output 2000 Prentice Hall, Inc. All rights reserved.

1 // Fig. 3.4: fig03_04.cpp 2 // Finding the maximum of three integers Outline 11 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 1. Function prototype (3 parameters) 2. Input values 2.1 Call function 9 int maximum( int, int, int ); // function prototype 10 11 int main() 12 { 13 int a, b, c; 14 15 cout << "Enter three integers: "; 16 cin >> a >> b >> c; 17 18 // a, b and c below are arguments to 19 // the maximum function call 20 cout << "Maximum is: " << maximum( a, b, c ) << endl; 2000 Prentice Hall, Inc. All rights reserved.

21 22 return 0; 23 24 25 // Function maximum definition 26 // x, y and z below are parameters to 27 // the maximum function definition 28 int maximum( int x, int y, int z ) 29 { 30 int max = x; 31 32 if ( y > max ) 33 max = y; 34 35 if ( z > max ) 36 max = z; 37 38 return max; 39 Outline 3. Function definition 12 Enter three integers: 22 85 17 Maximum is: 85 Program Output Enter three integers: 92 35 14 Maximum is: 92 Enter three integers: 45 19 98 Maximum is: 98 2000 Prentice Hall, Inc. All rights reserved.

6. Function Prototypes Function prototype Function name Parameters Information the function takes in Return type Type of information the function passes back to caller (default int) void signifies the function returns nothing Only needed if function definition comes after the function call in the program Example: int maximum( int, int, int ); Takes in 3 ints Returns an int

Header files 7. Header Files Contain function prototypes for library functions <cstdlib>, <cmath>, etc. Load with #include <filename> - Example: #include <cmath> Custom header files Defined by the programmer Save as filename.h Loaded into program using #include "filename.h"

Room Area (Rectangle) # include < iostream.h > float findarea ( float,float ) ; void main ( ) { float room_l, room_w, room_area; cout << Please enter the room width ; cin >> room_w ; cout << Please enter the room length ; cin >> room_l ; // Function declaration (prototype) room_area = findarea (room_w, room_l ); // Function call cout << The area of your room is: : << room_area << square unit ; float findarea ( L, W ) { float area; Area = L * W ; return Area ; // Function definition

Celsius to Fahrenheit Temperature Converter # include < iostream.h > float convert ( float ) ; // Function declaration (prototype) void main ( ) { float Temp_Fah, Temp_Cen; cout << Please enter the temperature in fahrenheit ; cin >> Temp_Fah ; Temp_Cen = convert ( Temp_Fah ) ; // Function call cout << The temperature in centigrade is: : << Temp_Cen ; float covert ( float Fah ) { float Cen; Cen = (Fah 32 ) * (5 / 9 ); return Cen ; // Function definition

Odd or Even # include < iostream.h > void odd_even ( int ) ; void main ( ) { int number ; cout << Please enter a number: ; cin >> number ; odd_even ( number ) ; // Function call // Function declaration (prototype) void odd_even ( int number ) { if ( number % 2 = = 0 ) cout << you number is even ; else cout << you number is odd ; // Function definition

Positive or Negative # include < iostream.h > void poitive_negative ( int ) ; // Function declaration (prototype) void main ( ) { int number ; cout << Please enter a number: ; cin >> number ; poitive_negative ( number ) ; // Function call void poitive_negative ( int number ) { if ( number > 0 ) cout << you number is positive ; else cout << you number is negative ; // Function definition

Swap # include < iostream.h > void Swap( int, int ) ; void main ( ) { int n1, n2 ; cout << Please enter the value of number 1 ; cin >> n1 ; cout << Please enter the value of number 2 ; cin >> n2 ; // Function declaration (prototype) Swap ( n1, n2 ) ; // Function call void Swap ( int n1, int n2 ) { // Function definition int temp ; temp = n1; n1 = n2; n2 = temp; cout << The value stored in number 1 is now: << n1 << endl ; cout << The value stored in number 2 is now: << n2 << endl ;

Product and Quotient of two numbers # include < iostream.h > float Product ( float, float ) ; float Quotient( float, float ) ; void main ( ) { int n1, n2 ; cout << Please enter two numbers ; cin >> a >>b ; // Function declaration (prototype) // Function declaration (prototype) R1 = Product (a, b); // Function call R2 = Quotient (a, b); // Function call cout << the product of them is << R1 << and the division is << R2; float Product ( float a, float b ) { return a*b; float Quotient ( float a, float b ) { If (b! = 0) { float Q = a / b; return Q; else cout << You couldn t divide by zero. ; // Function definition // Function definition

Draw the following Pattern # include < iostream.h > void draw_line ( void ) ; void main ( ) { draw_line ( ) ; draw_line ( ) ; cout << Welcome << endl ; draw_line ( ) ; cout << First Year ; draw_line ( ) ; draw_line ( ) ; void draw_line ( void ) { for ( int i = 0 ; i < 5 ; i ++ ) { cout << * ; cout << endl ; // Function declaration (prototype) // Function call // Function call // Function call // Function call // Function call // Function definition * * * * * * * * * * Welcome * * * * * First Year * * * * * * * * * *

Recursive functions 8. Recursion Are functions that calls themselves Can only solve a 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

8. Recursion Example: factorial n! = n * ( n 1 ) * ( n 2 ) * * 1 Recursive relationship ( n! = n * ( n 1 )! ) 5! = 5 * 4! 4! = 4 * 3! Base case (1! = 0! = 1)

9. Example Using Recursion: The Fibonacci Series Fibonacci series: 0, 1, 1, 2, 3, 5, 8... Each number sum of two previous ones Example of a recursive formula: fib(n) = fib(n-1) + fib(n-2) C++ code for fibonacci function long fibonacci( long n ) { if ( n == 0 n == 1 ) // base case return n; else return fibonacci( n - 1 ) + fibonacci( n 2 );

9. Example Using Recursion: The Fibonacci Series Diagram of Fibonnaci function f( 3 ) return f( 2 ) + f( 1 ) return f( 1 ) + f( 0 ) return 1 return 1 return 0

1 // Fig. 3.15: fig03_15.cpp 2 // Recursive fibonacci function 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 unsigned long fibonacci( unsigned long ); 10 11 int main() 12 { 13 unsigned long result, number; 14 15 cout << "Enter an integer: "; 16 cin >> number; 17 result = fibonacci( number ); 18 cout << "Fibonacci(" << number << ") = " << result << endl; 19 return 0; 20 21 22 // Recursive definition of function fibonacci 23 unsigned long fibonacci( unsigned long n ) 24 { 25 if ( n == 0 n == 1 ) // base case 26 return n; 27 else // recursive case 28 return fibonacci( n - 1 ) + fibonacci( n - 2 ); 29 2000 Prentice Hall, Inc. All rights reserved. Outline Only the base cases return values. All other cases call the fibonacci function again. 26 1. Function prototype 1.1 Initialize variables 2. Input an integer 2.1 Call function fibonacci 2.2 Output results. 3. Define fibonacci recursively

Enter an integer: 0 Fibonacci(0) = 0 Enter an integer: 1 Fibonacci(1) = 1 Enter an integer: 2 Fibonacci(2) = 1 Enter an integer: 3 Fibonacci(3) = 2 Enter an integer: 4 Fibonacci(4) = 3 Outline 27 Program Output Enter an integer: 5 Fibonacci(5) = 5 Enter an integer: 10 Fibonacci(10) = 55 Enter an integer: 6 Fibonacci(6) = 8 Enter an integer: 20 Fibonacci(20) = 6765 Enter an integer: 30 Fibonacci(30) = 832040 Enter an integer: 35 Fibonacci(35) = 9227465 2000 Prentice Hall, Inc. All rights reserved.

10. Recursion vs. Iteration Repetition Iteration: explicit loop Recursion: repeated function calls Termination Iteration: loop condition fails Recursion: base case recognized Both can have infinite loops Balance between performance (iteration) and good software engineering (recursion)

11. Functions with Empty Parameter Lists Empty parameter lists Either writing void or leaving a parameter list empty indicates that the function takes no arguments void print(); or void print( void ); Function print takes no arguments and returns no value

1 // Fig. 3.18: fig03_18.cpp 2 // Functions that take no arguments 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 void function1(); 9 void function2( void ); 10 11 int main() 12 { 13 function1(); 14 function2(); 15 16 return 0; 17 18 19 void function1() 20 { 21 cout << "function1 takes no arguments" << endl; 22 23 24 void function2( void ) 25 { 26 cout << "function2 also takes no arguments" << endl; 27 Notice the two ways of declaring no arguments. Outline 30 1. Function prototypes (take no arguments) 2. Call the functions 3. Function definitions function1 takes no arguments function2 also takes no arguments 2000 Prentice Hall, Inc. All rights reserved. Program Output

12. Inline Functions inline functions Reduce function-call overhead Asks the compiler to copy code into program instead of using a function call Compiler can ignore inline Should be used with small, often-used functions Example: inline double cube( const double s ) { return s * s * s;

13. Default Arguments If function parameter omitted, gets default value Can be constants, global variables, or function calls If not enough parameters specified, rightmost go to their defaults Set defaults in function prototype int defaultfunction( int x = 1, int y = 2, int z = 3 );

1 // Fig. 3.23: fig03_23.cpp 2 // Using default arguments 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int boxvolume( int length = 1, int width = 1, int height = 1 ); 9 10 int main() 11 { 12 cout << "The default box volume is: " << boxvolume() 13 << "\n\nthe volume of a box with length 10,\n" 14 << "width 1 and height 1 is: " << boxvolume( 10 ) 15 << "\n\nthe volume of a box with length 10,\n" 16 << "width 5 and height 1 is: " << boxvolume( 10, 5 ) 17 << "\n\nthe volume of a box with length 10,\n" 18 << "width 5 and height 2 is: " << boxvolume( 10, 5, 2 ) 19 << endl; 20 21 return 0; 22 23 24 // Calculate the volume of a box 25 int boxvolume( int length, int width, int height ) 26 { 27 return length * width * height; 28 2000 Prentice Hall, Inc. All rights reserved. Outline 33 1. Function prototype 2. Print default volume 2.1 Print volume with one parameter 2.2 Print with 2 parameters 2.3 Print with all parameters. 3. Function definition

The default box volume is: 1 Outline 34 The volume of a box with length 10, width 1 and height 1 is: 10 Program Output The volume of a box with length 10, width 5 and height 1 is: 50 The volume of a box with length 10, width 5 and height 2 is: 100 Notice how the rightmost values are defaulted. 2000 Prentice Hall, Inc. All rights reserved.

14. Function Overloading Function overloading Having functions with same name and different parameters Should perform similar tasks ( i.e., a function to square ints, and function to square floats). int square( int x) {return x * x; float square(float x) { return x * x; Program chooses function by signature - signature determined by function name and parameter types Can have the same return types

1 // Fig. 3.25: fig03_25.cpp 2 // Using overloaded functions 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int square( int x ) { return x * x; 9 10 double square( double y ) { return y * y; 11 12 int main() 13 { 14 cout << "The square of integer 7 is " << square( 7 ) 15 << "\nthe square of double 7.5 is " << square( 7.5 ) 16 << endl; 17 18 return 0; 19 Functions have same name but different parameters Outline 36 1. Define overloaded function 2. Call function The square of integer 7 is 49 The square of double 7.5 is 56.25 Program Output 2000 Prentice Hall, Inc. All rights reserved.

Example: What is the O/P? # include < iostream.h > int number = 10 ; void display ( void ) ; void main ( ) { int number = 20 ; cout << The value of the number is << number << endl ; display ( ) ; void display ( void ) { cout << The value of the number now is << number ; Output: The value of the number is 20 The value of the number now is 10