Lecture 3 Using C++ Functions COSC1567 C++ Programming.

Slides:



Advertisements
Similar presentations
Copyright © 2002 Pearson Education, Inc. Slide 1.
Advertisements

1 Chapter Three Using Methods. 2 Objectives Learn how to write methods with no arguments and no return value Learn about implementation hiding and how.
Chapter 3 Function Basics Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
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.
Chapter 5 Functions.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 6 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.
© 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.
 2007 Pearson Education, Inc. All rights reserved C Functions.
Chapter 6. 2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single Value Pass by Reference Variable Scope.
 2007 Pearson Education, Inc. All rights reserved C Functions.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 6: Functions by.
Using C++ Functions Object-Oriented Programming Using C++ Second Edition 4.
 2003 Prentice Hall, Inc. All rights reserved. 1 Functions Modules: functions and classes Programs use new and “prepackaged” modules –New: programmer-defined.
Lesson 6 Functions Also called Methods CS 1 Lesson 6 -- John Cole1.
CSC 200 Lecture 04 2/8/06 Matt Kayala. Learning Objectives  Predefined Functions  Those that return a value and those that don’t  Programmer-defined.
1 Functions Modules: functions and classes Programs use new and “prepackaged” modules –New: programmer-defined functions, classes –Prepackaged: from the.
FunctionsFunctions Systems Programming Concepts. Functions   Simple Function Example   Function Prototype and Declaration   Math Library Functions.
1 Using Classes Object-Oriented Programming Using C++ Second Edition 5.
Operator Precedence First the contents of all parentheses are evaluated beginning with the innermost set of parenthesis. Second all multiplications, divisions,
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single.
Chapter 6: Modularity Using Functions. In this chapter, you will learn about: – Function and parameter declarations – Returning a single value – Returning.
C++ for Engineers and Scientists Second Edition Chapter 6 Modularity Using Functions.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. C How To Program - 4th edition Deitels Class 05 University.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 6 Functions.
Copyright © 2012 Pearson Education, Inc. Chapter 6: Functions.
Chapter 6: Functions Starting Out with C++ Early Objects
Chapter 6: User-Defined Functions
Copyright © 2012 Pearson Education, Inc. Chapter 6: Functions.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 6: Functions Starting Out with C++ Early Objects Seventh Edition.
An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 6 Using Methods.
Programming Logic and Design Using Methods. 2 Objectives Review how to use a simple method with local variables and constants Create a method that requires.
CPS120: Introduction to Computer Science Decision Making in Programs.
Slide 1 Chapter 3 Function Basics. Slide 2 Learning Objectives  Predefined Functions  Those that return a value and those that don’t  Programmer-defined.
Today’s Lecture Predefined Functions. Introduction to Functions  Reuse Issue  Building Blocks of Programs  Two types of functions  Predefined  Programmer.
Programming in C++ Language ( ) Lecture 5: Functions-Part1 Dr. Lubna Badri.
CPS120: Introduction to Computer Science Functions.
CPS120: Introduction to Computer Science Lecture 14 Functions.
1 Using C++ Functions Object-Oriented Programming Using C++ Second Edition 4.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
1 Using Templates COSC 1567 C++ Programming Lecture 10.
Starting Out with C++ Early Objects ~~ 7 th Edition by Tony Gaddis, Judy Walters, Godfrey Muganda Modified for CMPS 1044 Midwestern State University 6-1.
A FIRST BOOK OF C++ CHAPTER 6 MODULARITY USING FUNCTIONS.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Brief Edition Chapter 6 Functions.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 6: Functions Starting Out with C++ Early Objects Eighth Edition.
Functions Chapter 6. Modular Programming Modular programming: breaking a program up into smaller, manageable functions or modules Function: a collection.
Functions Math library functions Function definition Function invocation Argument passing Scope of an variable Programming 1 DCT 1033.
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.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 6: Functions.
Chapter 4: More Object Concepts. Objectives Understand blocks and scope Overload a method Avoid ambiguity Create and call constructors with parameters.
Lecture 4 – Function (Part 1) FTMK, UTeM – Sem /2014.
CSIS 113A Lecture 5 Functions. Introduction to Functions  Building Blocks of Programs  Other terminology in other languages:  Procedures, subprograms,
Programming Fundamentals Enumerations and Functions.
Chapter 6 Functions. 6-2 Topics 6.1 Modular Programming 6.2 Defining and Calling Functions 6.3 Function Prototypes 6.4 Sending Data into a Function 6.5.
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.
 2000 Prentice Hall, Inc. All rights reserved Program Components in C++ Function definitions –Only written once –These statements are hidden from.
Programming Logic and Design Fifth Edition, Comprehensive Chapter 7 Using Methods.
FUNCTIONS (C) KHAERONI, M.SI. OBJECTIVE After this topic, students will be able to understand basic concept of user defined function in C++ to declare.
BIL 104E Introduction to Scientific and Engineering Computing Lecture 4.
Chapter 9: Value-Returning Functions
Programming Logic and Design Seventh Edition
Auburn University COMP 3000 Object-Oriented Programming for Engineers and Scientists Function Basics TBC=15 Dr. Xiao Qin.
Chapter 6: Functions Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley.
User-Defined Functions
C++ for Engineers and Scientists Second Edition
Chapter 5 - Functions Outline 5.1 Introduction
Object-Oriented Programming Using C++ Second Edition
Standard Version of Starting Out with C++, 4th Edition
Presentation transcript:

Lecture 3 Using C++ Functions COSC1567 C++ Programming

Objectives Review: Function as a procedural abstraction Predefined functions Scope rules Construct function headers and prototypes Return values from, and pass values to functions Reference variables Constant reference variables

Objectives New to learn: Random number function Objects as arguments to functions and as return types of functions Pass addresses to functions Pass arrays to functions Use inline functions Use default arguments Overload functions

Using Functions and Include Files Functions are modules that perform a task or group of tasks Also called a subroutine, procedure, or method Write new C++ functions, and use functions that other programmers have written Any statement allowed in the main( ) function of a C++ program can be used in any other function I-P-O (Input – Process – Output) Basic subparts to any program Use functions for these "pieces"

The Function Call Back to this assignment: theRoot = sqrt(9.0); The expression "sqrt(9.0)" is known as a function call, or function invocation The argument in a function call (9.0) can be a literal, a variable, or an expression The call itself can be part of an expression: bonus = sqrt(sales)/10; A function call is allowed wherever it’s legal to use an expression of the function’s return type

Predefined Functions Libraries full of functions for our use! Two types: Those that return a value Those that do not (void) Must "#include" appropriate library e.g., <cmath>, <cstdlib> (Original "C" libraries) <iostream> (for cout, cin)

Using Predefined Functions Math functions very plentiful Found in library <cmath.h> Most return a value (the "answer") Example: theRoot = sqrt(9.0); Components: sqrt = name of library function theRoot = variable used to assign "answer" to 9.0 = argument or "starting input" for function In I-P-O: I = 9.0 P = "compute the square root" O = 3, which is returned & assigned to theRoot

Copyright © 2008 Pearson Addison-Wesley. All rights reserved. Even More Math Functions: Display 3.2 Some Predefined Functions (1 of 2) Copyright © 2008 Pearson Addison-Wesley. All rights reserved.

Even More Math Functions: Display 3 Even More Math Functions: Display 3.2 Some Predefined Functions (2 of 2) Ex3-1.cpp Ex3-2.cpp Ex3-3.cpp

Predefined Void Functions No returned value Performs an action, but sends no "answer" When called, it’s a statement itself exit(1); // No return value, so not assigned This call terminates program void functions can still have arguments All aspects same as functions that "return a value" They just don’t return a value! Ex3-4.cpp

Random Number Generator Return "randomly chosen" number Used for simulations, games rand() Takes no arguments Returns value between 0 & RAND_MAX Scaling Squeezes random number into smaller range rand() % 6 Returns random value between 0 & 5 Shifting rand() % 6 + 1 Shifts range between 1 & 6 (e.g., die roll)

Random Number Seed Pseudorandom numbers Calls to rand() produce given "sequence" of random numbers Use "seed" to alter sequence srand(seed_value); void function Receives one argument, the "seed" Can use any seed value, including system time: srand(time(0)); time() returns system time as numeric value Library <ctime> contains time() functions

Random Examples Ex3-5.cpp Ex3-6.cpp Ex3-7.cpp Random double between 0.0 & 1.0: (RAND_MAX – rand())/static_cast<double>(RAND_MAX) Type cast used to force double-precision division Random int between 1 & 6: rand() % 6 + 1 "%" is modulus operator (remainder) Random int between 10 & 20: rand() % 10 + 10

Understanding Scope Some variables can be accessed throughout an entire program, while others can be accessed only in a limited part of the program The scope of a variable defines where it can be accessed in a program To adequately understand scope, you must be able to distinguish between local and global variables

Distinguishing Between Local and Global Variables Celebrity names are global because they are known to people everywhere and always refer to those same celebrities Global variables are those that are known to all functions in a program Some named objects in your life are local You might have a local co-worker whose name takes precedence over, or overrides, a global one

Distinguishing Between Local and Global Variables Variables that are declared in a block are local to that block and have the following characteristics: Local variables are created when they are declared within a block Local variables are known only to that block Local variables cease to exist when their block ends Variables declared within a function remain local to that function In contrast, variables declared within curly braces within any function are local to that block

Using the Scope Resolution Operator Each programmer can use x as a variable name without destroying any values in the other’s function A major advantage of using local variables is that many programmers can work on a large program, each writing separate functions, and they can use any variable names inside their own functions If you choose to create a global variable, you can use it even when a local variable with the same name exists

Using the Scope Resolution Operator To do so, you use the scope resolution operator Place this operator (the symbol ::) directly before the variable name Although you can declare global variables in any file, it is almost always considered better style to use local variables rather than global ones

Using the Scope Resolution Operator This strategy represents a preliminary example of encapsulation, or data hiding Using global variables, rather than creating local variables in functions, is actually disadvantageous for the following reasons: If variables are global in a file and you reuse any functions in a new program, the variables must be redeclared in the new program. They no longer “come along with” the function Global variables can be affected by any function, leading to errors. In a program with many functions, finding the functions that caused an error can prove difficult

Passing Values to Functions Many real-world functions you perform require that you provide information A particular task might always be carried out in the same way, but with specific data Consider a program that computes the amount of sales tax due on an item You can write the prototype for computeTax() in one of two ways: void computeTax(int); OR void computeTax(int price);

Passing Values to Functions

Passing Values to Functions Ex3-8.cpp Ex3-9.cpp Ex3-10.cpp

Objects as Arguments and Class as Return Types A function can contain a variety of combinations of actions Some functions contain local variables declared within the function body Some functions return and receive nothing Others return values, receive values, or both Functions may receive any number of variables as parameters, but may return, at most, only one variable of one type

Using the Customer Class with Functions

A Program That Calls Two Functions to Get Two Results Ex3-11.cpp }

Passing Addresses to Functions Just as variable values may be passed to and returned from functions, so may variable addresses Passing an address to a function avoids having the function copy the passed object, a process that takes time and memory You also can pass addresses to a function if you want a function to change multiple values If you pass addresses to function, however, the function can change the contents at those actual memory addresses, eliminating the need to return any values at all

Passing Addresses to Functions As an alternative to the program shown in Figure 4-27, you can pass two memory addresses to one function, making a single function call, as shown in Figure 4-28 In the program shown in Figure 4-28, four items are passed to the results() function: the value of a, the value of b, the address of dividend, and the address of modulus In turn the results() function receives four items: num1, which holds the value of a num2, which holds the value of b oneAddress, a pointer that holds the address of dividend anotherAddress, a pointer that holds the address of modulus

A Program That Calls One Function to Get Two Results Ex3-12.cpp

Passing Addresses to Functions Passing an address of a variable to a function has a number of advantages: If the function is intended to alter the variable, it alters the actual variable, not a copy of it You can write the function to alter multiple values When you send the address of a variable to a function, the function does not need to make a copy of the variable

Using Reference Variables with Functions To create a second name for a variable in a program, you can generate an alias, or an alternate name In C++ a variable that acts as an alias for another variable is called a reference variable, or simply a reference

Declaring Reference Variables You declare a reference variable by placing a type and an ampersand in front of a variable name, as in double &cash; and assigning another variable of the same type to the reference variable double someMoney; double &cash = someMoney; A reference variable refers to the same memory address as does a variable, and a pointer holds the memory address of a variable

Declaring Reference Variables Ex3-13.cpp Ex3-14.cpp

Declaring Reference Variables There are two differences between reference variables and pointers: Pointers are more flexible Reference variables are easier to use You assign a value to a pointer by inserting an ampersand in front of the name of the variable whose address you want to store in the pointer Figure 4-30 shows that when you want to use the value stored in the pointer, you must use the asterisk to dereference the pointer, or use the value to which it points, instead of the address it holds

Passing Variable Addresses to Reference Variables Reference variables are easier to use because you don’t need any extra punctuation to output their values You declare a reference variable by placing an ampersand in front of the variable’s name You assign a value to a reference variable by using another variable’s name The advantage to using reference variables lies in creating them in function headers

Comparing Pointers and References in a Function Header

Passing Variable Addresses to Reference Variables When you pass a variable’s address to a function, whether with a pointer or with a reference, any changes to the variable made by the function also alter the actual variable In addition, the function no longer needs to make a copy of the variable A function that receives an address may change the variable—but sometimes you might not want the variable changed

Using a Constant Reference

Passing Arrays to Functions An array name actually represents a memory address Thus, an array name is a pointer The subscript used to access an element of an array indicates how much to add to the starting address to locate a value When you pass an array to a function, you are actually passing an address Any changes made to the array within the function also affect the original array

Passing an Array to a Function Ex3-15.cpp

Inline Functions Each time you call a function in a C++ program, the computer must do the following: Remember where to return when the function eventually ends Provide memory for the function’s variables Provide memory for any value returned by the function Pass control to the function Pass control back to the calling program This extra activity constitutes the overhead, or cost of doing business, involved in calling a function

Using an Inline Function

Inline Functions An inline function is a small function with no calling overhead Overhead is avoided because program control never transfers to the function A copy of the function statements is placed directly into the compiled calling program The inline function appears prior to the main(), which calls it Any inline function must precede any function that calls it, which eliminates the need for prototyping in the calling function

Inline Functions When you compile a program, the code for the inline function is placed directly within the main() function You should use an inline function only in the following situations: When you want to group statements together so that you can use a function name When the number of statements is small (one or two lines in the body of the function) When the function is called on few occasions

Using Default Arguments When you don’t provide enough arguments in a function call, you usually want the compiler to issue a warning message for this error Sometimes it is useful to create a function that supplies a default value for any missing parameters

Using Default Arguments Two rules apply to default parameters: If you assign a default value to any variable in a function prototype’s parameter list, then all parameters to the right of that variable also must have default values If you omit any argument when you call a function that has default parameters, then you also must leave out all arguments to the right of that argument

Examples of Legal and Illegal Use of Functions with Default Parameters Ex3-16.cpp

Overloading Functions In most computer programming languages, each variable used in a function must have only one name, but C++ allows you to employ an alias Similarly, in most computer programming languages, each function used in a program must have a unique name You don’t have to use three names for functions that perform basically the same task, C++ allows you to reuse, or overload, function names

Overloading Functions When you overload a function, you must ensure that the compiler can tell which function to call When the compiler cannot tell which version of a function to use, you have created ambiguity

Three Overloaded Functions That Perform Similar Tasks Ex3-17.cpp Ex3-18.cpp

A Simple Recursion Function #include <iostream.h> int Fac(int n) { if (n > 1) return Fac(n-1) * n; else return 1; } void main() { int i; cout<<"Enter a number: "; cin >>i; cout<<"The factorial of "<<i<<" is "<<Fac(i)<<endl;

Summary Functions are programming modules You can define a function by writing it above the function that uses it, or by including the function’s filename at the top of the file that uses it When you write functions, you employ procedural abstraction—the process of extracting the relevant attributes of an object Global variables are known to every function and block in a program

Summary Local variables are accessible or in scope only within the block where they are defined The header of a function consists of the return type, the name, and the argument list A function can return a value that the calling function can use You can pass an argument or parameter to a function You can pass class objects to functions and return them from functions in the same way you work with scalar variables

Summary Passing an address to a function allows you to avoid having the function copy the passed object and allows a function to change multiple values without returning them In C++ a variable that acts as an alias for another variable is called a reference variable Because an array name is a memory address, when you pass an array name to a function, you are actually passing an address

Summary An inline function is a small function with no overhead You should use inline functions when the number of statements is small and when the function is called infrequently Default parameters provide values for any parameters that are missing in the function call C++ allows you to reuse, or overload, function names To prevent ambiguity, overloaded functions must have argument lists of different types