CPSC 230 Computers and Programming I Spring 2003 Dr. Lynn Lambert.

Post on 13-Jan-2016

218 views 4 download

Tags:

Transcript of CPSC 230 Computers and Programming I Spring 2003 Dr. Lynn Lambert.

CPSC 230Computers and Programming I

Spring 2003Dr. Lynn Lambert

This course will teach you: C++ Object-oriented concepts Programming Some stabs at problem solving

How computers work Computers understand machine

language only Each computer has its own

language All computer languages are in

binary (1s and 0s) No computer understands English,

Powerpoint, or C++

A computer program: Add X to Y and store in Z

In machine language: 01040100 (already simplified to decimal)

01050160 04040506 02060180

HUH!?

Assembly

Each machine instruction has matching, more English-like assembler:

Load X (was: 01040100) Load Y (was: 01050160) Add X Y Z (was: 04040506) Store Z (was: 02060180)Better, but … all this for one addition!?

C++

z=x+y;

Much better!

BUT, no machines understand source code. Only machine code.

Designing a Program1. Decide the problem to solve.

2. Design the solution. 3. Translate design to C++4. Type the C++ program (source code) using

an editor (emacs): program.cc5. Compile (g++). Translates C++ into

machine language (object, machine, executable code)

6. Link (g++). Creates executable. Can be done with step 5 or separately.

7. Run the program (after 1-6).

At each step:

1. Think

2. Do

3. Debug

4. Test

Write a program to calculate the volume of a sphere Problem well-defined Design solution:

Read radius Calculate volume (V = 4/3(pi)r3

Print answer

C++ Program#include <iostream> // allows reading in and out

using namespace std; // standard namespace

int main() { float radius; // radius of a sphere float volume; // volume of sphere Float is decimal.// other types are int, char, bool, double

const float mypi = 3.14159; // const values cannot be

// changed. M_PI also defined in cmathcout << “This program calculates the volume “ << “of a sphere given its radius.” << endl;// lots of other ways to do this cout. cout << “Enter the radius> “;cin >> radius;// volume = 4/3 r3

try 1: volume = 4/3 M_PI r …? 3?try 2: volume = 4 / 3 * M_PI * r * r;try 2.b: volume = 4/3 * M_PI * pow(r, 3); // in cmathcout << "The volume of a sphere with radius ";cout << radius << " is " << volume << endl;return EXIT_SUCCESS; // in <cstdlib>}

great. except it doesn't work.

int + int is int float + float is float

int - int is int float - float is float

int * int is int float * float is float

int / int is int float / float is float

Functions

(modified from Deitel & Deitel web page)

Why functions? divide and conquer repeatable. reuse reliable code encapsulated

Program Components in C++

Modules: functions and classes Programs use new and “prepackaged”

modules New: programmer-defined functions, classes Prepackaged: from the standard library

Functions invoked by function call Function name and information

(arguments/parameters) it needs Function definitions

Only written once

Program Components in C++

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

Library Functions Functions called by writing

functionName(argument1, argument2, …);

Perform common mathematical calculations Include the header file <cmath> Call the appropriate function

Library Functions Examplevolume = 4.0 / 3.0 * M_PI * pow(r, 3); pow (exponentiation) function returns

baseexponent (pow(2,3) would return 8) Other math functions listed on p. 173

of text All functions in math library return a double

Parameters/Arguments Function arguments can be

Constants sqrt( 4 );

Variables sqrt( x );

Expressions sqrt( sqrt( x ) ) ; sqrt( 3 - 6x );

Other libraries Perform string operations, include

<string> Perform character manipulations,

include <cctype> file handling, <fstream> standard constants and routines

<cstdlib> Lots of others

Writing your own functions

To call a function, you need: Function call – invokes function execution

To write your own function, you need: Function call (e.g., pow, sqrt). We know

this. Function prototype (shown in function libraries,

like <cmath> -- contains interface information) Function definition– contains the C++ that

defines how that function will be executed (e.g., main). Really, we know this.

function call, prototype Calling/invoking a function

square(x); Parentheses an operator used to call function

Pass argument x Function gets its own copy of arguments

After finished, passes back result Function prototype

Tells compiler argument(s) type and return type of function

int square( int ); Function takes an int and returns an int

Explained in more detail later

Function definition Format for function definition

return-value-type function-name( parameter-list ){ declarations and statements}

Parameter list Comma separated list of arguments

Data type needed for each argument If no arguments, use void or leave blank

Return-value-type Data type of result returned (use void if nothing

returned)

function definition Example function

int square( int y )

{

return y * y;

}

return keyword Returns data, and control goes to function’s caller

If no data to return, use return; Function ends when reaches right brace

Control goes to caller

Functions cannot be defined inside other functions

// Fig. 3.3: fig03_03.cpp. But modified from code in book// Creating and using a programmer-defined function.#include <iostream>#include <cstdlib> using namespace std; // modified from code in book int square( int ); // function prototype int main() { int number; // Ask user for number square then square that number cout << “This program calculates the square of an integer.”

<< endl; cout << “Enter a number> “; cin >> number; // next line is function call cout << number << “ squared is “ << square( x ) << endl; return EXIT_SUCCESS; // indicates successful termination} // end main

Parentheses () cause function to be called. When done, it returns the result.

Function prototype: specifies data types of arguments and return values. square expects and int, and returns an int.

function header: return typefunction name, parameter list.

// this continues program begun on previous slide// square function definition returns // square of an integer int square( int y ) // y is a copy of argument to function{ return y * y; // returns square of y as an int } // end function square

OR

int square(int nbr){ int answer; answer = nbr * nbr; return answer;}

function body: C++ statements in between {}s.

Function Prototypes Function prototype contains

Function name Parameters (number and data type) Return type (void if returns nothing) Only needed if definition after function call semicolon (unlike header in function definition)

Prototype must match function definition Function prototype

int sqr(int); • Function Definition

int sqr(int y){ …}

Functions with empty parameter lists Empty parameter lists

void or leave parameter list empty Indicates function takes no arguments Function print takes no arguments

and returns no value void print(); void print( void );

print function example Prototype

void printinfo(void); Function call

int main (){ ... printinfo(); …}

print function example cont'd function definition

void printinfo(){ cout << "this program calculates";

cout << " the area of a sphere"; cout << endl;}

Function overloading Function overloading

Functions with same name and different parameters

Should perform similar tasks i.e., function to square ints and function to

square floatsint square( int x) {return x * x;}

float square(float x) { return x * x; }

Similar to overloaded +, /, etc. operators

Function overloading cont'd Overloaded functions distinguished

by signature Based on position, number, and type of

parameters (order of parameters matters)

Name mangling Encodes function identifier with parameters

Type-safe linkage Ensures proper overloaded function called

// Fig. 3.25: fig03_25.cpp2 // Using overloaded functions.3 #include <iostream>4 5 using std::cout;6 using std::endl;7 8 // function square for int values 9 int square( int x ) 10 { 11 cout << "Called square with int argument: " << x << endl;12 return x * x; 13 14 } // end int version of function square 15 16 // function square for double values 17 double square( double y ) 18 { 19 cout << "Called square with double argument: " << y << endl;20 return y * y; 21 } // end double version of function square 23

24 int main()25 {26 int intResult = square( 7 ); // int version called27 double doubleResult;28 doubleResult = square( 7.5 ); // calls double version29 cout << "\nThe square of integer 7 is " << intResult30 << "\nThe square of double 7.5 is " 31 << doubleResult << endl; 32 33 return 0; // indicates successful termination34 35 } // end main

Called square with int argument: 7Called square with double argument: 7.5 The square of integer 7 is 49The square of double 7.5 is 56.25

Write a program Write a program that uses

functions Talk to your neighbors Use the book Use your notes