Computer Programming2
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 Programming3
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 Programming4
Algorithm
1. Output a prompt for a Fahrenheit temperature to cout.
2. Input tempFahrenheit from cin.3. Calculate
tempCelsius = (tempFahrenheit – 32.0) / 1.8.
4. Output tempCelsius (and descriptive text) to cout.
Computer Programming5
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 Programming6
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 Programming7
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 Programming8
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 Programming9
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 Programming10
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 variablesMust start with a letter or underscore
Use meaningful names
Computer Programming11
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 Programming12
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 Programming13
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 Programming14
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 Programming15
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 Programming16
Putting it all together
Returning from functionRestore the saved registersRelease the storage for local
variablesRestore the old EBPRestore the old EIP (RET)
– Go back to the calling function
Computer Programming17
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 Programming18
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 Programming19
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 Programming20
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 Programming21
Example on classes and methods
A point in two dimension is determined by its x
and y positions. Write a program that computes1. The symmetric point of a point with respect to (0,0)
2. The distance of the point to (0,0)
3. The distance between two points
The solution will be provided in the lecture
Computer Programming22
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()
Top Related