220 likes | 346 Views
Functions. Objectives. Take a first look at building functions Study how a function is called Investigate how a function executes Take a first look at class methods. Problem. Fahrenheit to Celsius Conversion
E N D
Functions Computer Programming
Objectives • Take a first look at building functions • Study how a function is called • Investigate how a function executes • Take a first look at class methods Computer Programming
Problem • Fahrenheit to Celsius Conversion Two scales used to measure temperature are the Fahrenheit and Celsius scales. A program is needed to convert temperatures in Fahrenheit to the equivalent Celsius temperatures. This program is suppose to be used in several other programs. Computer Programming
Algorithm 1. Output a prompt for a Fahrenheit temperature to cout. 2. Input tempFahrenheitfrom cin. 3. Calculate tempCelsius = (tempFahrenheit – 32.0) / 1.8. 4. Output tempCelsius(and descriptive text) to cout. Computer Programming
Functions • The previous program cannot be used in other programs • Real-world programs may contain thousands (or even millions) of lines of code. How can developers understand, develop, and maintain these monster programs? • Divide the program into chunks known as functions • Functions are compact code units that can be • used in other programs • Written, inspected, and debugged without worrying about the code that surrounds them. Computer Programming
Function Definitions • Function declaration – function prototype • Gives the “full name” of the function to be called • Function prototype must precede any call or definition of a function - Compiler must know of a function's existence • Else a compiler error will occur … undeclared • Function definition – function implementation • Contains statements that specify its behavior when it is called. • Function must be defined in order to be called • Else a linker error will occur undefined reference to … Computer Programming
Syntax • Declare a function • Usually, it is written in a specification file with .h extension ReturnType name (parameterDeclarations); • Define a function • Usually, it is written in an implementation file with .cpp extension ReturnType name (parameterDeclarations) { //statements } Computer Programming
Back to Fahrenheit To Celsius Conversion • In a file named fahrCelConv.h const double scl=1.8; const double trn=32.0; double convertFahrToCel(double); • In a file named fahrCelConv.cpp #include <iostream> #include “fahrCelConv.h” using namesapce std; int main() { cout << convertFahrToCel(100.0); return 0; } double convertFahrToCel(double fahr) { return (fahr-trn)/scl; } Computer Programming
Back to Fahrenheit To Celsius Conversion (without .h) • In a file named fahrCelConv.cpp #include <iostream> using namesapce std; double convertFahrToCel(double); int main() { cout << convertFahrToCel(100.0); return 0; } double convertFahrToCel(double fahr) { return (fahr-trn)/scl; } • Note: Declaration is optional if the definition is given before calling the function Computer Programming
Return type and name • The return type can be any type • Primitive/basic types • User defined types • Use void when the function does not return anything • The rules for the names of functions are the same as for the variables Must start with a letter or underscore Use meaningful names Computer Programming
Parameters • Function variables for which the caller can specify values. • Defined between the parentheses of a function’s definition. • A function may not have parameters double fahrToCelsius(double tempFahr) { return (tempFahr - 32.0) / 1.8; } void do() { //statements } Computer Programming
Arguments • When a function is called • Caller can pass it values called arguments • Stored in the function’s parameters. double newTemp = convertFahToCel (212); double fahrToCelsius(double tempFahr) { return (tempFahr - 32.0) / 1.8; } • The function then runs using its parameter values. Computer Programming
How functions are called • Recall: PC (program counter)/EIP (extended instruction pointer) • The register that holds the address of the next instruction to execute • Call stack • Area of memory that holds information need for calling functions • A sequence of stack frames • Each stack frame is associated with each function call Computer Programming
Stack frames • Each time a function is called, a new stack frame is created • Each time a function is returned (done), the stack frame associated with it is eliminated • ESP (extended stack pointer) holds the address of the top of the stack • EBP (extended base pointers/frame pointer) is used to reference local variables and parameters inside the current stack frame Computer Programming
Putting it all together Calling a function • First the calling function pushes the parameters into the stack frame from R to L • The EIP is then pushed into the stack, and points to the first instruction in the called function • The old value of EBP is pushed into the stack frame • Push the top of the stack into EBP • Push the local variables into the stack • The local variables are not between EBP and ESP • Save the old values of registers that are used by the called function Computer Programming
Putting it all together Returning from function • Restore the saved registers • Release the storage for local variables • Restore the old EBP • Restore the old EIP (RET) • Go back to the calling function Computer Programming
Design • Specification of the function • Determines the form of the function heading • Return value • Name • Parameters • Algorithm of the function • Determines the content of the function body • Input, Output • Branching, looping Computer Programming
Functions are subprograms • A function can be viewed as a sub-program containing statements such as • Variable declarations and definitions • Selections and repetitions • Call to other functions • The variables declared inside a function are called local variables • They are not visible to the code surrounding the function Computer Programming
Problem Write a program that simulates a calculator with four menus. When the user presses S, the calculator computes the sum 1+…+n, where n is an integer entered by the user. When he presses F, the calculator computes the factorial of n (i.e. 1*2*…*n). If the user presses P, the calculator computes the p(n), Where p is a polynomial function give by p(x)=x2-5x5+2 + 3*(x2-5x5)6 The number n is displayed as it is in all they other cases. Computer Programming
Function inside a class • Recall that a class is a new type that has attributes and operations • Attributes are the data that describe an object • Operations are for manipulating objects and their data • An operation in a class is a function in that class. It is also known as class method (method) or a member function • A mechanism for building a new operation for a class type • Two categories of methods • Class method: defines a message that can be sent to a class; the declaration/definition has static keyword • Instance method: defines a message sent to an object (an instance of a class); does not have static keyword Computer Programming
Example on classes and methods A point in two dimension is determined by its x and y positions. Write a program that computes • The symmetric point of a point with respect to (0,0) • The distance of the point to (0,0) • The distance between two points The solution will be provided in the lecture Computer Programming
Function inside a class class Person { private: string name; unsigned int id; public: Person (string n=“”, unsigned int x=0) { name = n; id = x; } string getName () { return name; } static string talk() { return "Salam!"; } }; Person bel = Person (“Belaid”, “27”); cout << bel.getName(); Cout << Person::talk(); //bel.talk() Computer Programming