SlideShare a Scribd company logo
1 
Programming in C++ 
The Turbo C++ Environment 
C++ Program Structure 
Modular Programming with Functions 
C++ Control Structures 
Advanced Data Types 
Classes
2 
Turbo C++ Environment 
Windows based product 
 Integrated Development Environment (IDE) 
– editor 
– compiler 
– linker 
– debugger
3 
Structure of a C++ Program 
preprocessor directives 
main function header 
{ 
declare statements 
statements 
}
4 
Using the Turbo C++ IDE 
 tool bars 
menu 
editor
5 
Using the Turbo C++ IDE (2) 
compiling 
 linking 
executing
6 
Developing Programs 
Understand the problem 
Design a solution to the problem 
– including test cases and the solutions to the test 
cases 
Implement and document 
– Translate the solution to a programming 
language
7 
Developing Programs (2) 
Verify 
– Test and debug the solution 
» using test cases from design phase 
Maintain
8 
Problem Solving (1) 
consider a trapezoid -- 4 sided figure in which 
two sides are ||, the area is 1/2 the product of 
the height and the sum of the lengths of the 
two bases. 
b1 
h 
b2 
Area = (b1 + b2)h/2
9 
Problem Solving -- Trapezoid 
Pseudocode 
input b1 
input b2 
input height 
bases = b1 + b2 
area = bases * h /2 
output area
10 
Problem Solving (2) 
consider finding the area and circumference of 
a circle 
pi = 3.14159 
area = pi * radius2 
circumference = 2 * pi * radius
11 
Problem Solving -- Circle 
Functions Pseudocode 
pi = 3.14159 
input radius 
circum = 2 * pi * radius 
area = pi * radius * radius 
output area 
output circum
12 
Problem Solving (3) 
consider converting temperatures from 
Centigrade to Fahrenheit (or vice versa) 
where 
c = 5/9(f-32) 
f = 9/5c + 32
13 
Problem Solving --Temperature 
Conversion Pseudocode 
input temp 
input scale 
if scale = = ‘f’ 
newtemp = 5/9 (temp-32) 
else 
newtemp = 9/5 temp + 32 
output newtemp
14 
Problem Solving (4) 
consider sales commissions based upon the 
number of sales made during the time 
period 
$8 per sale for < 15 sales 
$12 per sale = 15 sales 
$16 per sale > 15
15 
Problem Solving -- Commission 
Pseudocode 
quota = 15 
input number_sales 
if number_sales < quota 
rate = 8 
else if number_sales == quota 
rate = 12 
else rate = 16 
com = rate * number_sales 
output com
16 
Problem Solving -- Commission 
Pseudocode Multiple Salespeople 
quota = 15 
input number_salespeople
17 
Problem Solving -- Pseudocode 
Multiple Salespeople (2) 
loop number_salespeople times 
input number_sales 
if number_sales < quota 
rate = 8 
else if number_sales == quota 
rate = 12 
else rate = 16 
com = rate * number_sales 
output com
18 
Exercise -- GO 
Develop a series of problems for the students 
to do using each of the statement types
19 
Introduction to the C++ 
Language 
keywords 
– C++ is case-sensitive 
identifiers 
– can not be keywords 
comments 
– enclosed in /* */ multi-line 
– start with // single line
20 
Preprocessor Statements 
library header files -- #include 
< > -- system library 
#include <iostream.h> 
“ “ -- personal library 
#include “apstring.h”
21 
Data Types and Declarations 
declare statement 
– allocates memory and assigns “name” 
– data type name [= initial value]; 
 int -- 2 bytes 
 float -- 4 bytes 
double -- 8 bytes 
char -- enclosed in ‘ ‘
22 
User Defined Data Types 
 class -- mechanism to establish new data 
types 
ap classes 
– string 
» apstring.h apstring.ccp 
– bool 
» bool.h
23 
Example Declare Statements 
 int a; 
 int a,b,c; 
 float x, 
y; 
 double average = 0.0; 
 char answer = ‘Y’; 
 bool another; 
 bool more = false; 
 apstring name; 
 apstring 
class = “C++”;
24 
Input and Output Statements 
#include <iostream.h> 
cout -- output 
<< insertion character 
cin -- input 
>> extraction character
25 
Using APSTRING Class 
 #include “apstring.h” 
– entire path 
 create project 
– place apstring and program in project 
– you will need a different project for each 
program
26 
Input and Output Statements (2) 
COUT -- control codes 
– way of inserting placement control 
– n -- new line 
– t -- tab 
iomanip.h 
– contains more formatting methods
27 
Arithmetic in C++ 
operator precedence 
( ) 
*, /, % (left to right) 
+, - (left to right) 
 integer arithmetic 
– operations involving integers yielding integer 
results 
– truncation on integer division 
– % -- modulo operator
28 
Arithmetic in C++ (2) 
mixed mode arithmetic 
– operands of different data types 
– hierarchy double/float/int 
» highest mode is used 
» determined on a operation by operation basis
29 
Assignment Statements 
assignment operator = 
– operator precedence and mixed mode 
arithmetic hold 
combination operators 
+=, -=, *=, /=, %= 
variable = expression;
30 
Increment and Decrement 
Statements 
special operators which add or subtract one 
from a variable 
– more efficient (generates inc, dec) 
a++; ==> a = a+1; 
a--; ==> a = a -1; 
postfix (a++;) (a--;) 
– done after the expression is evaluated 
prefix (++a;) (--a;) 
– done prior to evaluating the expression
31 
Type Casting 
changes the evaluation data type of the 
expression 
– does not change the data type of the variable 
 (data type) 
– (int) 
– (float) 
– (apstring)
32 
Programming Problems 
convert distance in miles to distance in 
kilometers and meters 
– 1 mile = 1.61 km, 1 km = 1000 meter 
convert a temperature in Celsius to Kelvin 
– -273.15oC = 0oK 
convert a temperature in Fahrenheit to 
Kelvin 
– -459.67oF = 0oK
33 
Mathematical Functions (math.h) 
code reuse 
 sqrt, pow, exp, log, log10 
abs, ceil, floor 
 trigonometric functions
34 
Programming Problems 
determine the volume of a sphere with an 
input radius 
– volume = (4 * pi * radius3)/3 
determine the area of a triangle when given 
length of two sides and the included angle 
in degrees 
– degrees = 180 * radians / pi 
– area = side1 * side2 * sin (radians) / 2
35 
Programming Problems (2) 
determine the distance from a point on the 
Cartesian plane to the origin 
– distance = sqrt (x2 + y2)
36 
Exercise -- GO 
Implement the sequential problems developed 
in the first exercise
37 
Modular Programming with 
Functions 
designed in small segments 
each segment implemented as a function 
– sqrt, pow, sin 
 self contained 
– requires input through parameters 
– sends output through name 
Abstraction 
– know what the function does and what it needs 
to do its task 
– not how the function works
38 
Modular Programming with 
Functions (2) 
allows for reuse 
eliminates redundancy 
allows for team development 
 simplifies logic
39 
Form of a Function 
[return data type] Function name (parameter list) 
{ 
[declarations] 
statements 
[return ] 
}
40 
Types of Functions 
no input, no return value 
– void 
input but no return value 
both input and output 
no input but returns a value
41 
Example -- Circle Functions 
 calculate the area and circumference of a 
circle of an input radius 
– input radius 
– calculate area 
– calculate circumference 
– output results 
invoke the functions 
– use name and parameters in an expression 
functions must be defined before they can 
be used
42 
Example -- Pythagorean Triples 
Pythagorean Triple are the three sides of a 
right triangle a,b,c 
– a2 + b2 = c2 
given m and n, such that m>n we can 
generate the triples 
– a = m2 - n2 
– b= 2mn 
– c = m2 + n2
43 
Call by Value 
on invocation the value of the actual 
parameter is copied into the formal 
parameter 
when the function terminates the value IS 
NOT copied back to the actual parameter 
can not change the value of a parameter 
within the function
44 
Example Call by Value 
#include <iostream.h> 
int test (int n) 
{ 
int i = 5; 
n +=i; 
return (n); 
} 
void main (void) 
{ 
int n=1, i; 
i = test (n); 
cout << i << “ = “ 
<< n << endl; 
}
45 
Example Call by Value (2) 
main test 
n 
i 
n 
i 
1 
6 
1 6 
5
46 
Functions -- Pass by Reference 
 returns 0 or 1 value through name 
need to return more than 1 
– swap the values of two variables 
change the values of parameters 
– bank deposit or check 
 pass the “name” of the parameter rather 
than its value so that the function uses the 
same memory location as the actual 
parameter
47 
Reversing Order -- Swap 
if (num1 < num2) 
{ 
temp = num1; 
num1 = num2; 
num2 = num1; 
}
48 
Reference Parameters 
Parameter which shares the memory of the 
actual parameter rather than declare new 
memory and copy the actual’s value into it 
Parameter declaration 
int & x; 
– x is an alias for the actual integer parameter 
double & y 
– y is an alias for the actual double parameter
49 
Function Swap 
void swap (int & num1, int & num2) 
{ int temp; 
temp = num1; 
num1 = num2; 
num2 = temp; 
} 
if a > b 
swap (a,b); to invoke the function
50 
Call by Value vs Reference 
Use reference vs return type 
– all input 
– when need to return more than 1 value 
– always have return type void 
Use value 
– all other cases 
– no side effects
51 
Exercise 
modify circle.cpp to use reference where 
appropriate 
modify pyth.cpp to have compute_sides
52 
Programming Problem -- 
Functions 
program to convert Fahrenheit to Celsius, 
Fahrenheit to Kelvin 
– input the temperature in Fahrenheit 
– use functions 
» input Fahrenheit temperature 
» convert to Celsius 
» convert to Kelvin 
» output the results
53 
Programming Problem -- 
Functions 
Translate US prices from pennies per pound 
to Canadian prices dollars per kilogram 
– 1 pound = .4536 kilograms 
– 1 dollar US = 1.26 dollars Canadian 
Input 5 words, echoing each as it is input 
and display the average length (number of 
characters) per word
54 
Exercise -- GO 
Implement all previous programs using 
modular design and reference and value 
parameters as appropriate
55 
Function Prototypes 
 a function must be declared before it can be 
used 
placed functions at top of program 
create prototype (declaration of interface), 
place it at the top and the functions’ 
implementation can be placed after the main 
function 
 [return value] function name (parameter 
list); 
float get_radius ();
56 
Overloading 
function names can be overloaded 
– different interfaces 
– compiler can determine which to execute 
operators can be overloaded as well
57 
Selection Structures 
execute a group of statements based upon a 
condition being true or false 
 if (condition) 
statement; 
 if (condition) 
{ statement(s); 
} 
conditions -- relational operators 
<, >, <=, >=, = =, !=
58 
Simple Selection Examples 
 if (hours > 40) 
cout << “overtime!n”; 
 if (cost > 30000) 
{ 
tax = (cost - 30000) * tax_rate; 
cout << “n for a car costing “ << cost << 
“a luxury tax of “ << tax << “ is due ”; 
}
59 
Selection -- IF ELSE 
 if (condition) 
statement; 
else 
statement; 
 if (condition) 
{ statements; 
} 
else 
{statements; 
}
60 
If ELSE -- Examples 
 if (x>y) 
max = x; 
else 
max = y;
61 
If ELSE -- Examples (2) 
 if (hours <= 40) 
gross_pay = wage * hours; 
else 
{ 
overtime_hours = hours -40; 
overtime_pay = wage * overtime_hours * 1.5; 
gross_pay = wage * 40 + overtime_pay; 
}
62 
Programming Example 
 find the reciprocal of an integer 
undefined for 0 
– attempt to divide by 0 will cause program 
termination 
 recip.cpp
63 
Programming Exercise 
Modify the program which finds the roots 
of the quadratic equation so that it will not 
error terminate 
– quad.cpp
64 
Logical Operators 
combine two or more relational operators to 
create complex relations 
AND -- && 
OR -- || 
NOT -- ! 
precedence && before ||
65 
Conditional Operators -- 
Examples 
 if (temp_type = = ‘F’ || temp_type = = ‘f’) 
{ 
centigrade = convert_cent (temp); 
kelvin = convert_kelvin (temp); 
} 
 If (num > 0 && num < 10) 
{ 
cout << “single digit numbern”; 
}
66 
Short Circuiting 
 efficient evaluation of Boolean expression 
AND 
– the first relational expression which evaluates 
false terminates the evaluation-- result false 
OR 
– the first relational expression which evaluates 
as true terminates the evaluation -- result true
67 
Short Circuiting (2) 
determine if a number is divisible by 
another number 
 if the second number is 0 -- error 
termination 
if (a != 0 && b % a == 0) 
if a = 0 the second expression is not 
evaluated
68 
Programming Example 
determining leap years 
leap years occur every 4 years, if the year is 
divisible by 4 
– only valid for non-centennial years 
centennial year (divisible by 100) which is 
divisible by 400
69 
BREAK statement 
allows program to leave a control structure 
form -- break;
70 
Multiple Selection -- Switch 
 test the value of a single integer type and 
perform different blocks of statements 
based upon the value
71 
Multiple Selection -- Switch 
Form 
switch (expression) 
{ case value 1: 
statement(s); 
break; 
case value 2: 
statement (s); 
break; .... 
[default: 
statement(s); 
break;]}
72 
Example Switch Statement 
determine if a value is -1, 0, or 1-4 
cin >> value; 
switch (value) 
{ 
case -1: 
cout << “value = -1n”; 
break; 
case 0: 
cout << “value = 0n”; 
break;
73 
Example Switch Statement Con’t 
case 1: 
case 2: 
case 3: 
case 4: 
cout << “value in range 1-4n”; 
break; 
default: 
cout << “value is < -1 or > 4n”; 
}
74 
Example Programming Problem 
color compliments 
clswitch.cpp
75 
Programming Problem 
complete temperature conversion program 
accepts as input a temperature and a type 
and converts it to the other two temperature 
types 
 prints an error message if unknown type 
accepts both upper and lower case input
76 
Exercise -- GO 
Implement the selection statement problem 
solving problems
77 
Repetition Statements 
 ability to repeatedly execute blocks of 
statements 
two types of loops 
– count controlled 
» executed a set number of times 
– event driven 
» executed until a certain event occurs 
» pre-test and post-test loops
78 
While Loop 
form 
while (condition) 
{ 
statement(s); 
} 
event driven loop
79 
While Loop (2) 
pre-test (0) loop 
– test the condition 
» if true execute the loop 
» if false exit loop 
» loop can be executed 0 times
80 
Example While Loop 
i = 5; 
while (i > 0) 
{ cout << i << endl; 
i--; 
}
81 
Programming Example 
taking averages 
enter values to be averaged until sentinel is 
entered (0) 
– event which terminates loop 
ave.cpp
82 
Controlling Input 
 0 is in the set to be averaged 
– must use some key defined value to signal end 
of input 
– CRTL Z 
get() 
– cin.get() 
– accepts a single value as input 
– prompt for CRTL (^) Z
83 
Do While Loop 
event driven loop 
always executes at least once (1 loop) 
post test loop 
form 
do{ 
statement(s); 
}while (condition);
84 
Do While Loop (2) 
executes the loop 
 tests the condition 
– if true executes the loop again 
– if false exits the loop
85 
Do While Example 
add the numbers from 1 to 5 
sum = 0; 
i = 1; 
do{ 
sum += i; 
i ++; 
}while (i <= 5);
86 
Programming Example 
 display square of input value 
user prompt to continue 
squares.cpp
87 
Programming Example -- Circle 
Functions 
robust programming 
– user friendly/user forgiving 
Area and Circumference of circle 
– radius can not be <=0 
– present error message and re-prompt for input 
until it is valid 
– circleif.cpp
88 
Programming Exercise -- 
Pythagorean Triples 
robust example 
– m > n and both > 0 
give meaningful error message
89 
For Loop 
counted loop -- set number of times 
 iterates through a set of values 
for (initial expression; 
condition; 
loop expression) 
{ statement(s); 
}
90 
For Loop (2) 
 initial expression -- starting point, executed 
once before the loop begins 
condition -- evaluated each time through the 
loop (pre test) 
– exit -- false 
– execute -- true 
loop expression -- statement(s) executed at 
the bottom of the loop
91 
Example For Loop - I 
Countdown 
for (i = 1; i<=5; ++i) 
{ 
cout << i << endl; 
}
92 
Example For Loop - II 
sum numbers 1-5 
for (sum = 0, i = 1; i <= 5; ++i) 
{ 
sum += i; 
}
93 
Programming Examples 
 Factorials 
– fact.cpp 
– change fact to be integer (see what happens) 
temperature conversions 
– temps.cpp 
generating random numbers 
– random.cpp
94 
Boolean Variables 
Turbo C++ does not have Boolean 
– bool.h -- apclass 
– 0 false, 1 true 
bool flag 
– if flag (if 0 false, non 0 true) 
– while !flag 
 flags.cpp
95 
Programming Exercise 
maintain check book balance 
modular 
$15 service fee for bad check 
– display message 
 final balance on exit
96 
Nesting Control Structures 
both selection and repetition statements can 
be nested for complex execution 
 if else if 
– else matches closest un-elsed if 
 all looping structures can be nested 
regardless of type
97 
Example If else if -- Sales Quotas 
if (num_sales < quota) 
rate = low_rate; 
else if (num_sales = quota) 
rate= ave_rate; 
else rate = high_rate;
98 
Example Nested Loops 
cout << “enter the number to sum to, 0 to 
end”; 
cin >> num; 
while (num != 0) 
{ for (sum=0, i=1; i<=num;++i) 
sum += num; 
cout << “the sum of the numbers 1 - .... 
cout << “enter the number to sum to ... 
cin >> num);} /*end while*/
99 
Nesting Control Structures 
Programming Examples 
counting number of letter grades 
– aven.cpp 
 printing multiplication tables 
– table.cpp 
 circle functions 
– circleof.cpp
100 
Programming Exercise 
Modify the average program so that more 
than 1 set of averages can be determined 
Modify the Pythagorean triples so that an 
unlimited number of triples can be 
generated 
Modify finding roots of a quadratic equation 
so that all root types are determined
101 
Enumeration Types 
user defined data type 
– enum statement 
– define the domain 
enum bool {false, true}; 
– bool -- name of data type 
– false, true -- domain 
 integers 
– false = 0, true =1
102 
Lines in Cartesian Plane 
perpendicular, parallel or intersecting 
slope 
enumeration type can be used 
– parameters 
– return types 
 lines.cpp
103 
Exercise -- GO 
Implement any remaining problem solving 
programs. 
Be sure have a complete set identifying all 
structures including enumeration types.
104 
Composite Data Structures 
construct that can access more than one data 
item through a single name 
Array -- homogenous data type 
Structure -- heterogeneous data type
105 
ArraysVectors 
 collection of data components 
 all of same data type 
 are contiguous 
accessed 
– entire array (name) 
– individual component (subscript)
106 
Declaring Arrays 
 int x[5] 
– declares a 5 element array of integers 
» x[0], x[1], x[2], x[3], x[4] 
 int x[2][5] -- two dimensional array 
 int x [2] [5] [5] -- three dimensional array 
 size must be declared at compile time 
– can not int size, int x[size] 
– can 
» #define max_size 100 
» int x[max_size]
107 
Referencing Arrays 
elements 
– float ave_temp [12] 
» ave_temp [0] -- Jan 
» ave_temp [11] -- Dec 
» ave_temp [i+2] 
no arrays bounds checking 
– “fast” code
108 
Initializing Arrays 
 int x[5] = {12,-2,33,21,31}; 
 int height [10] = {60,70,68,72,68}; 
– rest 0 
 float g[] = {3.2,5.7}; 
– size is set to 2 
a 250 element array all to 1 
int x[250]; 
for (i =0; i<=249; i++) 
x[i] = 1;
109 
Using Arrays 
data must be passed more than once 
– array1.cpp 
implement vectors or matrices 
– array2.cpp 
data comes in haphazard order 
– string example
110 
Passing Arrays to Functions 
pass an element 
– treated as any single variable of that type 
» pass by value 
pass the entire array 
– use the name without any subscripting 
– pass by reference 
» pass the address and the actual memory locations of 
the actual array are used by the function 
» any change made to the elements of the array by the 
function WILL be noted in the main program
111 
Programming Problem 
Input a set of exam scores for a class 
– calculate and display 
» average 
» high grade 
» low grade 
» those grades which were above the average 
– have number of grades entered determined by 
the # of values input rather than prompt for 
class size
112 
Programming Problem 
Using an enumeration type for months of 
the year 
– calculate the average rainfall 
– display those months with < average rainfall 
amounts
113 
Structures 
Heterogeneous data type 
– logically related set of items which can be 
accessed either on an individual item basis or 
all at once through structure’s name 
– fields can be of any data type (different ones), 
user defined as well
114 
Example Structure 
struct GRADES 
{ apstring name; 
int midterm; 
int final; 
float assigns; 
float sem_ave; 
char letter_grade;}; 
GRADES student1, student2;
115 
Operations on Structures 
Assignment 
– entire structures done by common elements, in 
order 
– single element -- data type 
 Initialization 
– on declare 
» FRACTION num1 = {1,2}; 
» GRADES student1 = {“john Doe”,90,80,70,80};
116 
Structures and Functions 
An element is passed to a structure in the 
same way any simple variable is passed 
– by value (default) or by reference (forced) 
– student.cpp 
An entire structure is passed 
– by value (default) 
– by reference (force) employee.cpp 
A function can return a structure variable
117 
“Arrays” and Structures 
Structures can contain vectors, apstring 
– apstring name 
– apvector<int> exams(3) 
vectors of structures 
– apvector<GRADES> class(60); 
» 60 students in class 
» class[0].name class[0].final 
» class[59].name class[59].final
118 
Hierarchical Structures 
Structures can contain structures 
typedef struct 
{char last [15]; 
char first [15]; 
char middle;} NAME; 
typedef struct 
{NAME stu_name; 
…} STUDENT;
119 
ArraysVectors 
 collection of data components 
 all of same data type 
 are contiguous 
accessed 
– entire array (name) 
– individual component (subscript)
120 
Declaring Vectors 
 #include “a:apvector.h” 
apvector<int> v1(10); 
– declares a 10 element integer vector 
– v1[0], v1[1], v1[2]….v1[9] 
apvector<int> v2(10,0); 
– declares a 10 element integer vector 
– all elements are initialized to 0 
– v2[0]=0, v2[1]=0…..v2[9]=0
121 
Declaring Vectors (2) 
apvector<apstring> (25); 
– declares a vector of 25 strings 
– each is “empty” string 
can be user defined data types
122 
Accessing Elements 
v1[1] 
– second element of the vector 
v1[9] 
– last element of the vector 
v1[1] += 2; 
high = v1[3];
123 
Assignment -- APVECTOR 
Apvector<int> v1(10), v2(20); 
v1 = v2; 
– v1 will be “reallocated” at a size of 20 
– v1[0] = v2[0] 
– …. 
– v1[19] = v2[19] 
corresponding elements will be assigned
124 
Member Functions -APVECTOR 
User defined data type -- class 
length() -- capacity of vector 
– size changes as needed 
– returns current size as an integer 
– object.length() 
» v1.length() => 20 
» v1 still ranges from 0-19 
for (i=0;i<v1.length();i++) 
cout << v1[i] << endl;
125 
Vectors as Parameters 
elements are considered same as any single 
variable 
entire vector 
– pass by value or by reference 
– more efficient to pass by reference 
– avoid side effects 
» const reference parameter
126 
Using Vectors 
data must be passed more than once 
– vect1.cpp 
implement vectors or matrices 
– vect2a.cpp 
data comes in haphazard order 
– string example 
enumeration types and vectors 
– rainenum.cpp
127 
Matrices 
two dimensional array 
problems with C++ arrays are doubled in 
two dimensions 
APMATRIX 
– #include “a:apmatrix.h” 
– can automatically be “resized” 
– subscript checking
128 
Declaring Matrices 
apmatrix<int> imat (3,3) 
– imat[0][0] ....imat [2][2] 
apmatrix<int> imat2(3,3,0) 
– all elements are initialized to 0 
can be any system or user defined data type
129 
Referencing Elements 
 imat[1][2] = 7; 
score = imat [i][j]; 
 if subscript is out of bounds (either of them) 
program error terminates
130 
Assignment -- APMATRIX 
apmatrix<int> imat2(10,10); 
 imat = imat2; 
– imat 3x3 
– imat2 10x10 
– after assignment imat 10x10 
– assigns corresponding elements
131 
APMATRIX--Member Functions 
numrows() -- returns the number of rows 
– imat.numrows() ==> 10 
numcols() -- returns the number of columns 
– imat.numcols() ==> 10 
for (r=0;r<imat.numrows();r++) 
for (c=0;c<imat.numcols();c++) 
cout << imat[r][c];
132 
Programming Problem 
 Create “resuable” functions for matrix 
addition and multiplication 
– matrix.h 
– matrix.cpp 
– use_matrix.cpp
133 
ADT -- complex numbers 
struct COMPLEX 
{ double real; 
double imag;}; 
operations -- input, output, add, subtract, mult, 
divide, absolute value 
package together in include file
134 
Class -- User Defined Data Type 
encapsulate data and functions 
 information hiding 
– public vs private 
can be inherited 
– structures can not
135 
Public VS. Private 
 client programs can use the member 
functions which “come with” a class 
through the public interface 
 client program CAN NOT access any 
function or data member declared private 
– information hiding 
– if can’t access it, can’t modify it 
– more maintainable -- fewer side effects
136 
Class Definition 
class class_name 
{public: 
member functions 
private: 
data members 
};
137 
Data Members 
Pieces of information which the class 
maintains 
– states 
» date -- month, day, year 
» complex number --- real, imaginary 
» fraction -- numerator, denominator 
» student -- name, ssn, address, etc 
 Private-- only the functions of the class 
have access to them
138 
Member Functions 
 Services provided by the class to 
manipulate the data members 
 Public -- can be used by any “client” 
program 
Have access to the data members 
Constructors, Accessors, Mutators, and 
Operations
139 
Constructors 
Automatically invoked by the system when 
an object of the class is declared 
specify the initial values to be given to the 
data members 
function with the same name as the class 
itself with no return type of any kind 
can be overloaded
140 
Accessors 
Return the value of a data member 
Const functions as they do not change the 
value of any data member 
 Necessary since no “outside” function can 
access the data members
141 
Mutators 
Modify one or more of the data members 
used by client programs to modify the data 
members, since client programs can not 
access the data members directly
142 
Operations 
Provide services of the class 
perform calculations, etc using data 
members 
necessary since the data members are not 
accessible to the client programs
143 
Date Class 
Data members 
– int day, int month, int year 
Constuctor 
– allow date to be set when the object is declared 
– or to use default values 
small implementation of the class 
– demonstration purposes only
144 
Interface of the Date class 
 Definition of the class 
available to client programs/ers 
 .h file 
declaration of the data members 
 interfaces of the member functions 
 the object receiving the message to invoke 
the member function is the one that the 
function operates upon
145 
Date Class Implementation 
 .cpp file 
the implementation of all member functions 
scope resolution operator :: 
– since the function implementations are in a 
separate file need to tie them back to the class 
or they will not have access to the data 
members
146 
Client Program 
Declares an object of the data type 
– Date today; 
Invoke a member function 
– object.function_name(); 
– object which receives the message is the one on 
which the function the function operators 
» v1.resize(); 
» v1.length();
147 
Constructor 
Default initial values for parameters 
– if the parameters are omitted the initial value of 
the fraction on declaration is 1/1 
 initialization list 
– special form of the constructor which allows 
the data members to be set within the interface 
(.h file)
148 
Fraction Class 
 Represents rational 
numbers 
 constructor 
– initializes object to 1/1 
 accessors 
– reduce 
– print_fraction 
 Mutators 
– input_fraction 
 operations 
– add, subtract, multiply, 
divide 
 gcd 
– needed by class to do 
its work
149 
Member vs Friend functions 
Member function must be invoked with 
object receiving message 
 friend function stands separate 
– it still has access to the data members 
– does not need an object to be invoked 
– used for binary operators which do not modify 
their parameters (overloading) 
defined in interface as friend
150 
Complex Number Class 
class COMPLEX 
{public: 
COMPLEX(int r=0,int i=0); 
int real() const; 
int imaginary() const; 
COMPLEX add_complex 
(const COMPLEX &l, const COMPLEX &r);
151 
Complex Number Class Con’t 
COMPLEX sub_complex 
(const COMPLEX &l, const COMPLEX &r); 
COMPLEX mult_complex 
(const COMPLEX &l, const COMPLEX &r); 
COMPLEX div_complex 
(const COMPLEX &l, const COMPLEX &r);
152 
Complex Number Class -- Con’t 
void set_real (double); 
void set_imag(double); 
private: 
double real; 
double imag; 
};
153 
Member vs Friend functions 
Member function must be invoked with 
object receiving message 
 friend function stands separate 
– it still has access to the data members 
– does not need an object to be invoked 
– used for binary operators which do not modify 
their parameters (overloading) 
defined in interface as friend
154 
Inlining 
Used to provide an implementation within 
the interface 
 Only use on “small simple functions” which 
either simply set data members or simple 
calculations which return values
155 
This pointer 
 Refers to the object receiving the message 
 *this ==> value 
– used in functions which modify the object 
receiving the message +=,-=,*=,/=
156 
File I/O 
Input and output are done through streams: 
istream and ostream (fstream.h) 
– cin -- istream -- iostream.h 
– cout -- ostream -- iostream.h 
 4 steps to using files 
– declare an object of the appropriate stream 
open the stream 
– connects the external file with the stream 
(buffer) 
– stream.open(filename);
157 
File I/O(2) 
Input >> but from the stream declared rather 
than from cin 
output << but from the stream declared 
rather than cout 
 close file 
– stream.close();

More Related Content

What's hot

C programming session 08
C programming session 08C programming session 08
C programming session 08
Vivek Singh
 
MATLAB for Technical Computing
MATLAB for Technical ComputingMATLAB for Technical Computing
MATLAB for Technical Computing
Naveed Rehman
 
Cs1123 8 functions
Cs1123 8 functionsCs1123 8 functions
Cs1123 8 functions
TAlha MAlik
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
home
 
C and C++ functions
C and C++ functionsC and C++ functions
C and C++ functions
kavitha muneeshwaran
 
Code optimization
Code optimizationCode optimization
Code optimization
Pradip Bhattarai
 
Computer Programming- Lecture 8
Computer Programming- Lecture 8Computer Programming- Lecture 8
Computer Programming- Lecture 8
Dr. Md. Shohel Sayeed
 
Optimization
OptimizationOptimization
Dead Code Elimination
Dead Code EliminationDead Code Elimination
Dead Code Elimination
Samiul Ehsan
 
C++ functions
C++ functionsC++ functions
C++ functions
Mayank Jain
 
M11 operator overloading and type conversion
M11 operator overloading and type conversionM11 operator overloading and type conversion
M11 operator overloading and type conversion
NabeelaNousheen
 
C++ Overview
C++ OverviewC++ Overview
C++ Overview
kelleyc3
 
Introduction to code optimization by dipankar
Introduction to code optimization by dipankarIntroduction to code optimization by dipankar
Introduction to code optimization by dipankar
Dipankar Nalui
 
Chapter 5
Chapter 5Chapter 5
Chapter 5
Amrit Kaur
 
functions
functionsfunctions
functions
Makwana Bhavesh
 
Loop optimization
Loop optimizationLoop optimization
Loop optimization
Vivek Gandhi
 
Dataflow Analysis
Dataflow AnalysisDataflow Analysis
Dataflow Analysis
Eelco Visser
 
C++ functions
C++ functionsC++ functions
C++ functions
Dawood Jutt
 
Compiler optimization techniques
Compiler optimization techniquesCompiler optimization techniques
Compiler optimization techniques
Hardik Devani
 

What's hot (19)

C programming session 08
C programming session 08C programming session 08
C programming session 08
 
MATLAB for Technical Computing
MATLAB for Technical ComputingMATLAB for Technical Computing
MATLAB for Technical Computing
 
Cs1123 8 functions
Cs1123 8 functionsCs1123 8 functions
Cs1123 8 functions
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
C and C++ functions
C and C++ functionsC and C++ functions
C and C++ functions
 
Code optimization
Code optimizationCode optimization
Code optimization
 
Computer Programming- Lecture 8
Computer Programming- Lecture 8Computer Programming- Lecture 8
Computer Programming- Lecture 8
 
Optimization
OptimizationOptimization
Optimization
 
Dead Code Elimination
Dead Code EliminationDead Code Elimination
Dead Code Elimination
 
C++ functions
C++ functionsC++ functions
C++ functions
 
M11 operator overloading and type conversion
M11 operator overloading and type conversionM11 operator overloading and type conversion
M11 operator overloading and type conversion
 
C++ Overview
C++ OverviewC++ Overview
C++ Overview
 
Introduction to code optimization by dipankar
Introduction to code optimization by dipankarIntroduction to code optimization by dipankar
Introduction to code optimization by dipankar
 
Chapter 5
Chapter 5Chapter 5
Chapter 5
 
functions
functionsfunctions
functions
 
Loop optimization
Loop optimizationLoop optimization
Loop optimization
 
Dataflow Analysis
Dataflow AnalysisDataflow Analysis
Dataflow Analysis
 
C++ functions
C++ functionsC++ functions
C++ functions
 
Compiler optimization techniques
Compiler optimization techniquesCompiler optimization techniques
Compiler optimization techniques
 

Viewers also liked

Turbo c++
Turbo c++Turbo c++
Turbo c++
vaibhav1996
 
Turbo C
Turbo CTurbo C
Turbo C
nat236
 
CP Handout#2
CP Handout#2CP Handout#2
CP Handout#2
trupti1976
 
Chapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and PolymorphismChapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and Polymorphism
Eduardo Bergavera
 
8.3 program structure (1 hour)
8.3 program structure (1 hour)8.3 program structure (1 hour)
8.3 program structure (1 hour)
akmalfahmi
 
Constructs (Programming Methodology)
Constructs (Programming Methodology)Constructs (Programming Methodology)
Constructs (Programming Methodology)
Jyoti Bhardwaj
 
CP Handout#5
CP Handout#5CP Handout#5
CP Handout#5
trupti1976
 
Java programming lab assignments
Java programming lab assignments Java programming lab assignments
Java programming lab assignments
rajni kaushal
 
Pf cs102 programming-9 [pointers]
Pf cs102 programming-9 [pointers]Pf cs102 programming-9 [pointers]
Pf cs102 programming-9 [pointers]
Abdullah khawar
 
Chapter 2 - Structure of C++ Program
Chapter 2 - Structure of C++ ProgramChapter 2 - Structure of C++ Program
Chapter 2 - Structure of C++ Program
Deepak Singh
 
Chapter 12 - File Input and Output
Chapter 12 - File Input and OutputChapter 12 - File Input and Output
Chapter 12 - File Input and Output
Eduardo Bergavera
 
C++ lecture 04
C++ lecture 04C++ lecture 04
C++ lecture 04
HNDE Labuduwa Galle
 
Visual basic 6.0
Visual basic 6.0Visual basic 6.0
Visual basic 6.0
sanket1996
 
Loop c++
Loop c++Loop c++
Loop c++
Mood Mood
 
C++ programming (Array)
C++ programming (Array)C++ programming (Array)
C++ programming (Array)
طارق بالحارث
 
Cs1123 3 c++ overview
Cs1123 3 c++ overviewCs1123 3 c++ overview
Cs1123 3 c++ overview
TAlha MAlik
 
User defined functions in C programmig
User defined functions in C programmigUser defined functions in C programmig
User defined functions in C programmig
Appili Vamsi Krishna
 
Visusual basic
Visusual basicVisusual basic
Visusual basic
Mandavi Classes
 
Array in c++
Array in c++Array in c++
Array in c++
Mahesha Mano
 
C++ ARRAY WITH EXAMPLES
C++ ARRAY WITH EXAMPLESC++ ARRAY WITH EXAMPLES
C++ ARRAY WITH EXAMPLES
Farhan Ab Rahman
 

Viewers also liked (20)

Turbo c++
Turbo c++Turbo c++
Turbo c++
 
Turbo C
Turbo CTurbo C
Turbo C
 
CP Handout#2
CP Handout#2CP Handout#2
CP Handout#2
 
Chapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and PolymorphismChapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and Polymorphism
 
8.3 program structure (1 hour)
8.3 program structure (1 hour)8.3 program structure (1 hour)
8.3 program structure (1 hour)
 
Constructs (Programming Methodology)
Constructs (Programming Methodology)Constructs (Programming Methodology)
Constructs (Programming Methodology)
 
CP Handout#5
CP Handout#5CP Handout#5
CP Handout#5
 
Java programming lab assignments
Java programming lab assignments Java programming lab assignments
Java programming lab assignments
 
Pf cs102 programming-9 [pointers]
Pf cs102 programming-9 [pointers]Pf cs102 programming-9 [pointers]
Pf cs102 programming-9 [pointers]
 
Chapter 2 - Structure of C++ Program
Chapter 2 - Structure of C++ ProgramChapter 2 - Structure of C++ Program
Chapter 2 - Structure of C++ Program
 
Chapter 12 - File Input and Output
Chapter 12 - File Input and OutputChapter 12 - File Input and Output
Chapter 12 - File Input and Output
 
C++ lecture 04
C++ lecture 04C++ lecture 04
C++ lecture 04
 
Visual basic 6.0
Visual basic 6.0Visual basic 6.0
Visual basic 6.0
 
Loop c++
Loop c++Loop c++
Loop c++
 
C++ programming (Array)
C++ programming (Array)C++ programming (Array)
C++ programming (Array)
 
Cs1123 3 c++ overview
Cs1123 3 c++ overviewCs1123 3 c++ overview
Cs1123 3 c++ overview
 
User defined functions in C programmig
User defined functions in C programmigUser defined functions in C programmig
User defined functions in C programmig
 
Visusual basic
Visusual basicVisusual basic
Visusual basic
 
Array in c++
Array in c++Array in c++
Array in c++
 
C++ ARRAY WITH EXAMPLES
C++ ARRAY WITH EXAMPLESC++ ARRAY WITH EXAMPLES
C++ ARRAY WITH EXAMPLES
 

Similar to Apclass (2)

Apclass (2)
Apclass (2)Apclass (2)
Apclass (2)
geishaannealagos
 
Advanced C - Part 2
Advanced C - Part 2Advanced C - Part 2
C++ Language
C++ LanguageC++ Language
C++ Language
Syed Zaid Irshad
 
02 functions, variables, basic input and output of c++
02   functions, variables, basic input and output of c++02   functions, variables, basic input and output of c++
02 functions, variables, basic input and output of c++
Manzoor ALam
 
Intro to c++
Intro to c++Intro to c++
Intro to c++
temkin abdlkader
 
Programming Fundamentals Functions in C and types
Programming Fundamentals  Functions in C  and typesProgramming Fundamentals  Functions in C  and types
Programming Fundamentals Functions in C and types
imtiazalijoono
 
Unit iv functions
Unit  iv functionsUnit  iv functions
Unit iv functions
indra Kishor
 
Chapter 4
Chapter 4Chapter 4
Chapter 4
temkin abdlkader
 
Lecture#6 functions in c++
Lecture#6 functions in c++Lecture#6 functions in c++
Lecture#6 functions in c++
NUST Stuff
 
UNIT3.pptx
UNIT3.pptxUNIT3.pptx
UNIT3.pptx
NagasaiT
 
04 Functional Programming in Python
04 Functional Programming in Python04 Functional Programming in Python
04 Functional Programming in Python
Ebad ullah Qureshi
 
Programming For Engineers Functions - Part #1.pptx
Programming For Engineers Functions - Part #1.pptxProgramming For Engineers Functions - Part #1.pptx
Programming For Engineers Functions - Part #1.pptx
NoorAntakia
 
Lecture#2 Computer languages computer system and Programming EC-105
Lecture#2 Computer languages computer system and Programming EC-105Lecture#2 Computer languages computer system and Programming EC-105
Lecture#2 Computer languages computer system and Programming EC-105
NUST Stuff
 
Object Oriented Technologies
Object Oriented TechnologiesObject Oriented Technologies
Object Oriented Technologies
Umesh Nikam
 
Basic Elements of C++
Basic Elements of C++Basic Elements of C++
Basic Elements of C++
Jason J Pulikkottil
 
Fundamental of programming Fundamental of programming
Fundamental of programming Fundamental of programmingFundamental of programming Fundamental of programming
Fundamental of programming Fundamental of programming
LidetAdmassu
 
Python Manuel-R2021.pdf
Python Manuel-R2021.pdfPython Manuel-R2021.pdf
Python Manuel-R2021.pdf
RamprakashSingaravel1
 
3 Function & Storage Class.pptx
3 Function & Storage Class.pptx3 Function & Storage Class.pptx
3 Function & Storage Class.pptx
aarockiaabinsAPIICSE
 
Javascript.ppt
Javascript.pptJavascript.ppt
Javascript.ppt
PanoramaPublicSchool
 
Functions
FunctionsFunctions

Similar to Apclass (2) (20)

Apclass (2)
Apclass (2)Apclass (2)
Apclass (2)
 
Advanced C - Part 2
Advanced C - Part 2Advanced C - Part 2
Advanced C - Part 2
 
C++ Language
C++ LanguageC++ Language
C++ Language
 
02 functions, variables, basic input and output of c++
02   functions, variables, basic input and output of c++02   functions, variables, basic input and output of c++
02 functions, variables, basic input and output of c++
 
Intro to c++
Intro to c++Intro to c++
Intro to c++
 
Programming Fundamentals Functions in C and types
Programming Fundamentals  Functions in C  and typesProgramming Fundamentals  Functions in C  and types
Programming Fundamentals Functions in C and types
 
Unit iv functions
Unit  iv functionsUnit  iv functions
Unit iv functions
 
Chapter 4
Chapter 4Chapter 4
Chapter 4
 
Lecture#6 functions in c++
Lecture#6 functions in c++Lecture#6 functions in c++
Lecture#6 functions in c++
 
UNIT3.pptx
UNIT3.pptxUNIT3.pptx
UNIT3.pptx
 
04 Functional Programming in Python
04 Functional Programming in Python04 Functional Programming in Python
04 Functional Programming in Python
 
Programming For Engineers Functions - Part #1.pptx
Programming For Engineers Functions - Part #1.pptxProgramming For Engineers Functions - Part #1.pptx
Programming For Engineers Functions - Part #1.pptx
 
Lecture#2 Computer languages computer system and Programming EC-105
Lecture#2 Computer languages computer system and Programming EC-105Lecture#2 Computer languages computer system and Programming EC-105
Lecture#2 Computer languages computer system and Programming EC-105
 
Object Oriented Technologies
Object Oriented TechnologiesObject Oriented Technologies
Object Oriented Technologies
 
Basic Elements of C++
Basic Elements of C++Basic Elements of C++
Basic Elements of C++
 
Fundamental of programming Fundamental of programming
Fundamental of programming Fundamental of programmingFundamental of programming Fundamental of programming
Fundamental of programming Fundamental of programming
 
Python Manuel-R2021.pdf
Python Manuel-R2021.pdfPython Manuel-R2021.pdf
Python Manuel-R2021.pdf
 
3 Function & Storage Class.pptx
3 Function & Storage Class.pptx3 Function & Storage Class.pptx
3 Function & Storage Class.pptx
 
Javascript.ppt
Javascript.pptJavascript.ppt
Javascript.ppt
 
Functions
FunctionsFunctions
Functions
 

Apclass (2)

  • 1. 1 Programming in C++ The Turbo C++ Environment C++ Program Structure Modular Programming with Functions C++ Control Structures Advanced Data Types Classes
  • 2. 2 Turbo C++ Environment Windows based product  Integrated Development Environment (IDE) – editor – compiler – linker – debugger
  • 3. 3 Structure of a C++ Program preprocessor directives main function header { declare statements statements }
  • 4. 4 Using the Turbo C++ IDE  tool bars menu editor
  • 5. 5 Using the Turbo C++ IDE (2) compiling  linking executing
  • 6. 6 Developing Programs Understand the problem Design a solution to the problem – including test cases and the solutions to the test cases Implement and document – Translate the solution to a programming language
  • 7. 7 Developing Programs (2) Verify – Test and debug the solution » using test cases from design phase Maintain
  • 8. 8 Problem Solving (1) consider a trapezoid -- 4 sided figure in which two sides are ||, the area is 1/2 the product of the height and the sum of the lengths of the two bases. b1 h b2 Area = (b1 + b2)h/2
  • 9. 9 Problem Solving -- Trapezoid Pseudocode input b1 input b2 input height bases = b1 + b2 area = bases * h /2 output area
  • 10. 10 Problem Solving (2) consider finding the area and circumference of a circle pi = 3.14159 area = pi * radius2 circumference = 2 * pi * radius
  • 11. 11 Problem Solving -- Circle Functions Pseudocode pi = 3.14159 input radius circum = 2 * pi * radius area = pi * radius * radius output area output circum
  • 12. 12 Problem Solving (3) consider converting temperatures from Centigrade to Fahrenheit (or vice versa) where c = 5/9(f-32) f = 9/5c + 32
  • 13. 13 Problem Solving --Temperature Conversion Pseudocode input temp input scale if scale = = ‘f’ newtemp = 5/9 (temp-32) else newtemp = 9/5 temp + 32 output newtemp
  • 14. 14 Problem Solving (4) consider sales commissions based upon the number of sales made during the time period $8 per sale for < 15 sales $12 per sale = 15 sales $16 per sale > 15
  • 15. 15 Problem Solving -- Commission Pseudocode quota = 15 input number_sales if number_sales < quota rate = 8 else if number_sales == quota rate = 12 else rate = 16 com = rate * number_sales output com
  • 16. 16 Problem Solving -- Commission Pseudocode Multiple Salespeople quota = 15 input number_salespeople
  • 17. 17 Problem Solving -- Pseudocode Multiple Salespeople (2) loop number_salespeople times input number_sales if number_sales < quota rate = 8 else if number_sales == quota rate = 12 else rate = 16 com = rate * number_sales output com
  • 18. 18 Exercise -- GO Develop a series of problems for the students to do using each of the statement types
  • 19. 19 Introduction to the C++ Language keywords – C++ is case-sensitive identifiers – can not be keywords comments – enclosed in /* */ multi-line – start with // single line
  • 20. 20 Preprocessor Statements library header files -- #include < > -- system library #include <iostream.h> “ “ -- personal library #include “apstring.h”
  • 21. 21 Data Types and Declarations declare statement – allocates memory and assigns “name” – data type name [= initial value];  int -- 2 bytes  float -- 4 bytes double -- 8 bytes char -- enclosed in ‘ ‘
  • 22. 22 User Defined Data Types  class -- mechanism to establish new data types ap classes – string » apstring.h apstring.ccp – bool » bool.h
  • 23. 23 Example Declare Statements  int a;  int a,b,c;  float x, y;  double average = 0.0;  char answer = ‘Y’;  bool another;  bool more = false;  apstring name;  apstring class = “C++”;
  • 24. 24 Input and Output Statements #include <iostream.h> cout -- output << insertion character cin -- input >> extraction character
  • 25. 25 Using APSTRING Class  #include “apstring.h” – entire path  create project – place apstring and program in project – you will need a different project for each program
  • 26. 26 Input and Output Statements (2) COUT -- control codes – way of inserting placement control – n -- new line – t -- tab iomanip.h – contains more formatting methods
  • 27. 27 Arithmetic in C++ operator precedence ( ) *, /, % (left to right) +, - (left to right)  integer arithmetic – operations involving integers yielding integer results – truncation on integer division – % -- modulo operator
  • 28. 28 Arithmetic in C++ (2) mixed mode arithmetic – operands of different data types – hierarchy double/float/int » highest mode is used » determined on a operation by operation basis
  • 29. 29 Assignment Statements assignment operator = – operator precedence and mixed mode arithmetic hold combination operators +=, -=, *=, /=, %= variable = expression;
  • 30. 30 Increment and Decrement Statements special operators which add or subtract one from a variable – more efficient (generates inc, dec) a++; ==> a = a+1; a--; ==> a = a -1; postfix (a++;) (a--;) – done after the expression is evaluated prefix (++a;) (--a;) – done prior to evaluating the expression
  • 31. 31 Type Casting changes the evaluation data type of the expression – does not change the data type of the variable  (data type) – (int) – (float) – (apstring)
  • 32. 32 Programming Problems convert distance in miles to distance in kilometers and meters – 1 mile = 1.61 km, 1 km = 1000 meter convert a temperature in Celsius to Kelvin – -273.15oC = 0oK convert a temperature in Fahrenheit to Kelvin – -459.67oF = 0oK
  • 33. 33 Mathematical Functions (math.h) code reuse  sqrt, pow, exp, log, log10 abs, ceil, floor  trigonometric functions
  • 34. 34 Programming Problems determine the volume of a sphere with an input radius – volume = (4 * pi * radius3)/3 determine the area of a triangle when given length of two sides and the included angle in degrees – degrees = 180 * radians / pi – area = side1 * side2 * sin (radians) / 2
  • 35. 35 Programming Problems (2) determine the distance from a point on the Cartesian plane to the origin – distance = sqrt (x2 + y2)
  • 36. 36 Exercise -- GO Implement the sequential problems developed in the first exercise
  • 37. 37 Modular Programming with Functions designed in small segments each segment implemented as a function – sqrt, pow, sin  self contained – requires input through parameters – sends output through name Abstraction – know what the function does and what it needs to do its task – not how the function works
  • 38. 38 Modular Programming with Functions (2) allows for reuse eliminates redundancy allows for team development  simplifies logic
  • 39. 39 Form of a Function [return data type] Function name (parameter list) { [declarations] statements [return ] }
  • 40. 40 Types of Functions no input, no return value – void input but no return value both input and output no input but returns a value
  • 41. 41 Example -- Circle Functions  calculate the area and circumference of a circle of an input radius – input radius – calculate area – calculate circumference – output results invoke the functions – use name and parameters in an expression functions must be defined before they can be used
  • 42. 42 Example -- Pythagorean Triples Pythagorean Triple are the three sides of a right triangle a,b,c – a2 + b2 = c2 given m and n, such that m>n we can generate the triples – a = m2 - n2 – b= 2mn – c = m2 + n2
  • 43. 43 Call by Value on invocation the value of the actual parameter is copied into the formal parameter when the function terminates the value IS NOT copied back to the actual parameter can not change the value of a parameter within the function
  • 44. 44 Example Call by Value #include <iostream.h> int test (int n) { int i = 5; n +=i; return (n); } void main (void) { int n=1, i; i = test (n); cout << i << “ = “ << n << endl; }
  • 45. 45 Example Call by Value (2) main test n i n i 1 6 1 6 5
  • 46. 46 Functions -- Pass by Reference  returns 0 or 1 value through name need to return more than 1 – swap the values of two variables change the values of parameters – bank deposit or check  pass the “name” of the parameter rather than its value so that the function uses the same memory location as the actual parameter
  • 47. 47 Reversing Order -- Swap if (num1 < num2) { temp = num1; num1 = num2; num2 = num1; }
  • 48. 48 Reference Parameters Parameter which shares the memory of the actual parameter rather than declare new memory and copy the actual’s value into it Parameter declaration int & x; – x is an alias for the actual integer parameter double & y – y is an alias for the actual double parameter
  • 49. 49 Function Swap void swap (int & num1, int & num2) { int temp; temp = num1; num1 = num2; num2 = temp; } if a > b swap (a,b); to invoke the function
  • 50. 50 Call by Value vs Reference Use reference vs return type – all input – when need to return more than 1 value – always have return type void Use value – all other cases – no side effects
  • 51. 51 Exercise modify circle.cpp to use reference where appropriate modify pyth.cpp to have compute_sides
  • 52. 52 Programming Problem -- Functions program to convert Fahrenheit to Celsius, Fahrenheit to Kelvin – input the temperature in Fahrenheit – use functions » input Fahrenheit temperature » convert to Celsius » convert to Kelvin » output the results
  • 53. 53 Programming Problem -- Functions Translate US prices from pennies per pound to Canadian prices dollars per kilogram – 1 pound = .4536 kilograms – 1 dollar US = 1.26 dollars Canadian Input 5 words, echoing each as it is input and display the average length (number of characters) per word
  • 54. 54 Exercise -- GO Implement all previous programs using modular design and reference and value parameters as appropriate
  • 55. 55 Function Prototypes  a function must be declared before it can be used placed functions at top of program create prototype (declaration of interface), place it at the top and the functions’ implementation can be placed after the main function  [return value] function name (parameter list); float get_radius ();
  • 56. 56 Overloading function names can be overloaded – different interfaces – compiler can determine which to execute operators can be overloaded as well
  • 57. 57 Selection Structures execute a group of statements based upon a condition being true or false  if (condition) statement;  if (condition) { statement(s); } conditions -- relational operators <, >, <=, >=, = =, !=
  • 58. 58 Simple Selection Examples  if (hours > 40) cout << “overtime!n”;  if (cost > 30000) { tax = (cost - 30000) * tax_rate; cout << “n for a car costing “ << cost << “a luxury tax of “ << tax << “ is due ”; }
  • 59. 59 Selection -- IF ELSE  if (condition) statement; else statement;  if (condition) { statements; } else {statements; }
  • 60. 60 If ELSE -- Examples  if (x>y) max = x; else max = y;
  • 61. 61 If ELSE -- Examples (2)  if (hours <= 40) gross_pay = wage * hours; else { overtime_hours = hours -40; overtime_pay = wage * overtime_hours * 1.5; gross_pay = wage * 40 + overtime_pay; }
  • 62. 62 Programming Example  find the reciprocal of an integer undefined for 0 – attempt to divide by 0 will cause program termination  recip.cpp
  • 63. 63 Programming Exercise Modify the program which finds the roots of the quadratic equation so that it will not error terminate – quad.cpp
  • 64. 64 Logical Operators combine two or more relational operators to create complex relations AND -- && OR -- || NOT -- ! precedence && before ||
  • 65. 65 Conditional Operators -- Examples  if (temp_type = = ‘F’ || temp_type = = ‘f’) { centigrade = convert_cent (temp); kelvin = convert_kelvin (temp); }  If (num > 0 && num < 10) { cout << “single digit numbern”; }
  • 66. 66 Short Circuiting  efficient evaluation of Boolean expression AND – the first relational expression which evaluates false terminates the evaluation-- result false OR – the first relational expression which evaluates as true terminates the evaluation -- result true
  • 67. 67 Short Circuiting (2) determine if a number is divisible by another number  if the second number is 0 -- error termination if (a != 0 && b % a == 0) if a = 0 the second expression is not evaluated
  • 68. 68 Programming Example determining leap years leap years occur every 4 years, if the year is divisible by 4 – only valid for non-centennial years centennial year (divisible by 100) which is divisible by 400
  • 69. 69 BREAK statement allows program to leave a control structure form -- break;
  • 70. 70 Multiple Selection -- Switch  test the value of a single integer type and perform different blocks of statements based upon the value
  • 71. 71 Multiple Selection -- Switch Form switch (expression) { case value 1: statement(s); break; case value 2: statement (s); break; .... [default: statement(s); break;]}
  • 72. 72 Example Switch Statement determine if a value is -1, 0, or 1-4 cin >> value; switch (value) { case -1: cout << “value = -1n”; break; case 0: cout << “value = 0n”; break;
  • 73. 73 Example Switch Statement Con’t case 1: case 2: case 3: case 4: cout << “value in range 1-4n”; break; default: cout << “value is < -1 or > 4n”; }
  • 74. 74 Example Programming Problem color compliments clswitch.cpp
  • 75. 75 Programming Problem complete temperature conversion program accepts as input a temperature and a type and converts it to the other two temperature types  prints an error message if unknown type accepts both upper and lower case input
  • 76. 76 Exercise -- GO Implement the selection statement problem solving problems
  • 77. 77 Repetition Statements  ability to repeatedly execute blocks of statements two types of loops – count controlled » executed a set number of times – event driven » executed until a certain event occurs » pre-test and post-test loops
  • 78. 78 While Loop form while (condition) { statement(s); } event driven loop
  • 79. 79 While Loop (2) pre-test (0) loop – test the condition » if true execute the loop » if false exit loop » loop can be executed 0 times
  • 80. 80 Example While Loop i = 5; while (i > 0) { cout << i << endl; i--; }
  • 81. 81 Programming Example taking averages enter values to be averaged until sentinel is entered (0) – event which terminates loop ave.cpp
  • 82. 82 Controlling Input  0 is in the set to be averaged – must use some key defined value to signal end of input – CRTL Z get() – cin.get() – accepts a single value as input – prompt for CRTL (^) Z
  • 83. 83 Do While Loop event driven loop always executes at least once (1 loop) post test loop form do{ statement(s); }while (condition);
  • 84. 84 Do While Loop (2) executes the loop  tests the condition – if true executes the loop again – if false exits the loop
  • 85. 85 Do While Example add the numbers from 1 to 5 sum = 0; i = 1; do{ sum += i; i ++; }while (i <= 5);
  • 86. 86 Programming Example  display square of input value user prompt to continue squares.cpp
  • 87. 87 Programming Example -- Circle Functions robust programming – user friendly/user forgiving Area and Circumference of circle – radius can not be <=0 – present error message and re-prompt for input until it is valid – circleif.cpp
  • 88. 88 Programming Exercise -- Pythagorean Triples robust example – m > n and both > 0 give meaningful error message
  • 89. 89 For Loop counted loop -- set number of times  iterates through a set of values for (initial expression; condition; loop expression) { statement(s); }
  • 90. 90 For Loop (2)  initial expression -- starting point, executed once before the loop begins condition -- evaluated each time through the loop (pre test) – exit -- false – execute -- true loop expression -- statement(s) executed at the bottom of the loop
  • 91. 91 Example For Loop - I Countdown for (i = 1; i<=5; ++i) { cout << i << endl; }
  • 92. 92 Example For Loop - II sum numbers 1-5 for (sum = 0, i = 1; i <= 5; ++i) { sum += i; }
  • 93. 93 Programming Examples  Factorials – fact.cpp – change fact to be integer (see what happens) temperature conversions – temps.cpp generating random numbers – random.cpp
  • 94. 94 Boolean Variables Turbo C++ does not have Boolean – bool.h -- apclass – 0 false, 1 true bool flag – if flag (if 0 false, non 0 true) – while !flag  flags.cpp
  • 95. 95 Programming Exercise maintain check book balance modular $15 service fee for bad check – display message  final balance on exit
  • 96. 96 Nesting Control Structures both selection and repetition statements can be nested for complex execution  if else if – else matches closest un-elsed if  all looping structures can be nested regardless of type
  • 97. 97 Example If else if -- Sales Quotas if (num_sales < quota) rate = low_rate; else if (num_sales = quota) rate= ave_rate; else rate = high_rate;
  • 98. 98 Example Nested Loops cout << “enter the number to sum to, 0 to end”; cin >> num; while (num != 0) { for (sum=0, i=1; i<=num;++i) sum += num; cout << “the sum of the numbers 1 - .... cout << “enter the number to sum to ... cin >> num);} /*end while*/
  • 99. 99 Nesting Control Structures Programming Examples counting number of letter grades – aven.cpp  printing multiplication tables – table.cpp  circle functions – circleof.cpp
  • 100. 100 Programming Exercise Modify the average program so that more than 1 set of averages can be determined Modify the Pythagorean triples so that an unlimited number of triples can be generated Modify finding roots of a quadratic equation so that all root types are determined
  • 101. 101 Enumeration Types user defined data type – enum statement – define the domain enum bool {false, true}; – bool -- name of data type – false, true -- domain  integers – false = 0, true =1
  • 102. 102 Lines in Cartesian Plane perpendicular, parallel or intersecting slope enumeration type can be used – parameters – return types  lines.cpp
  • 103. 103 Exercise -- GO Implement any remaining problem solving programs. Be sure have a complete set identifying all structures including enumeration types.
  • 104. 104 Composite Data Structures construct that can access more than one data item through a single name Array -- homogenous data type Structure -- heterogeneous data type
  • 105. 105 ArraysVectors  collection of data components  all of same data type  are contiguous accessed – entire array (name) – individual component (subscript)
  • 106. 106 Declaring Arrays  int x[5] – declares a 5 element array of integers » x[0], x[1], x[2], x[3], x[4]  int x[2][5] -- two dimensional array  int x [2] [5] [5] -- three dimensional array  size must be declared at compile time – can not int size, int x[size] – can » #define max_size 100 » int x[max_size]
  • 107. 107 Referencing Arrays elements – float ave_temp [12] » ave_temp [0] -- Jan » ave_temp [11] -- Dec » ave_temp [i+2] no arrays bounds checking – “fast” code
  • 108. 108 Initializing Arrays  int x[5] = {12,-2,33,21,31};  int height [10] = {60,70,68,72,68}; – rest 0  float g[] = {3.2,5.7}; – size is set to 2 a 250 element array all to 1 int x[250]; for (i =0; i<=249; i++) x[i] = 1;
  • 109. 109 Using Arrays data must be passed more than once – array1.cpp implement vectors or matrices – array2.cpp data comes in haphazard order – string example
  • 110. 110 Passing Arrays to Functions pass an element – treated as any single variable of that type » pass by value pass the entire array – use the name without any subscripting – pass by reference » pass the address and the actual memory locations of the actual array are used by the function » any change made to the elements of the array by the function WILL be noted in the main program
  • 111. 111 Programming Problem Input a set of exam scores for a class – calculate and display » average » high grade » low grade » those grades which were above the average – have number of grades entered determined by the # of values input rather than prompt for class size
  • 112. 112 Programming Problem Using an enumeration type for months of the year – calculate the average rainfall – display those months with < average rainfall amounts
  • 113. 113 Structures Heterogeneous data type – logically related set of items which can be accessed either on an individual item basis or all at once through structure’s name – fields can be of any data type (different ones), user defined as well
  • 114. 114 Example Structure struct GRADES { apstring name; int midterm; int final; float assigns; float sem_ave; char letter_grade;}; GRADES student1, student2;
  • 115. 115 Operations on Structures Assignment – entire structures done by common elements, in order – single element -- data type  Initialization – on declare » FRACTION num1 = {1,2}; » GRADES student1 = {“john Doe”,90,80,70,80};
  • 116. 116 Structures and Functions An element is passed to a structure in the same way any simple variable is passed – by value (default) or by reference (forced) – student.cpp An entire structure is passed – by value (default) – by reference (force) employee.cpp A function can return a structure variable
  • 117. 117 “Arrays” and Structures Structures can contain vectors, apstring – apstring name – apvector<int> exams(3) vectors of structures – apvector<GRADES> class(60); » 60 students in class » class[0].name class[0].final » class[59].name class[59].final
  • 118. 118 Hierarchical Structures Structures can contain structures typedef struct {char last [15]; char first [15]; char middle;} NAME; typedef struct {NAME stu_name; …} STUDENT;
  • 119. 119 ArraysVectors  collection of data components  all of same data type  are contiguous accessed – entire array (name) – individual component (subscript)
  • 120. 120 Declaring Vectors  #include “a:apvector.h” apvector<int> v1(10); – declares a 10 element integer vector – v1[0], v1[1], v1[2]….v1[9] apvector<int> v2(10,0); – declares a 10 element integer vector – all elements are initialized to 0 – v2[0]=0, v2[1]=0…..v2[9]=0
  • 121. 121 Declaring Vectors (2) apvector<apstring> (25); – declares a vector of 25 strings – each is “empty” string can be user defined data types
  • 122. 122 Accessing Elements v1[1] – second element of the vector v1[9] – last element of the vector v1[1] += 2; high = v1[3];
  • 123. 123 Assignment -- APVECTOR Apvector<int> v1(10), v2(20); v1 = v2; – v1 will be “reallocated” at a size of 20 – v1[0] = v2[0] – …. – v1[19] = v2[19] corresponding elements will be assigned
  • 124. 124 Member Functions -APVECTOR User defined data type -- class length() -- capacity of vector – size changes as needed – returns current size as an integer – object.length() » v1.length() => 20 » v1 still ranges from 0-19 for (i=0;i<v1.length();i++) cout << v1[i] << endl;
  • 125. 125 Vectors as Parameters elements are considered same as any single variable entire vector – pass by value or by reference – more efficient to pass by reference – avoid side effects » const reference parameter
  • 126. 126 Using Vectors data must be passed more than once – vect1.cpp implement vectors or matrices – vect2a.cpp data comes in haphazard order – string example enumeration types and vectors – rainenum.cpp
  • 127. 127 Matrices two dimensional array problems with C++ arrays are doubled in two dimensions APMATRIX – #include “a:apmatrix.h” – can automatically be “resized” – subscript checking
  • 128. 128 Declaring Matrices apmatrix<int> imat (3,3) – imat[0][0] ....imat [2][2] apmatrix<int> imat2(3,3,0) – all elements are initialized to 0 can be any system or user defined data type
  • 129. 129 Referencing Elements  imat[1][2] = 7; score = imat [i][j];  if subscript is out of bounds (either of them) program error terminates
  • 130. 130 Assignment -- APMATRIX apmatrix<int> imat2(10,10);  imat = imat2; – imat 3x3 – imat2 10x10 – after assignment imat 10x10 – assigns corresponding elements
  • 131. 131 APMATRIX--Member Functions numrows() -- returns the number of rows – imat.numrows() ==> 10 numcols() -- returns the number of columns – imat.numcols() ==> 10 for (r=0;r<imat.numrows();r++) for (c=0;c<imat.numcols();c++) cout << imat[r][c];
  • 132. 132 Programming Problem  Create “resuable” functions for matrix addition and multiplication – matrix.h – matrix.cpp – use_matrix.cpp
  • 133. 133 ADT -- complex numbers struct COMPLEX { double real; double imag;}; operations -- input, output, add, subtract, mult, divide, absolute value package together in include file
  • 134. 134 Class -- User Defined Data Type encapsulate data and functions  information hiding – public vs private can be inherited – structures can not
  • 135. 135 Public VS. Private  client programs can use the member functions which “come with” a class through the public interface  client program CAN NOT access any function or data member declared private – information hiding – if can’t access it, can’t modify it – more maintainable -- fewer side effects
  • 136. 136 Class Definition class class_name {public: member functions private: data members };
  • 137. 137 Data Members Pieces of information which the class maintains – states » date -- month, day, year » complex number --- real, imaginary » fraction -- numerator, denominator » student -- name, ssn, address, etc  Private-- only the functions of the class have access to them
  • 138. 138 Member Functions  Services provided by the class to manipulate the data members  Public -- can be used by any “client” program Have access to the data members Constructors, Accessors, Mutators, and Operations
  • 139. 139 Constructors Automatically invoked by the system when an object of the class is declared specify the initial values to be given to the data members function with the same name as the class itself with no return type of any kind can be overloaded
  • 140. 140 Accessors Return the value of a data member Const functions as they do not change the value of any data member  Necessary since no “outside” function can access the data members
  • 141. 141 Mutators Modify one or more of the data members used by client programs to modify the data members, since client programs can not access the data members directly
  • 142. 142 Operations Provide services of the class perform calculations, etc using data members necessary since the data members are not accessible to the client programs
  • 143. 143 Date Class Data members – int day, int month, int year Constuctor – allow date to be set when the object is declared – or to use default values small implementation of the class – demonstration purposes only
  • 144. 144 Interface of the Date class  Definition of the class available to client programs/ers  .h file declaration of the data members  interfaces of the member functions  the object receiving the message to invoke the member function is the one that the function operates upon
  • 145. 145 Date Class Implementation  .cpp file the implementation of all member functions scope resolution operator :: – since the function implementations are in a separate file need to tie them back to the class or they will not have access to the data members
  • 146. 146 Client Program Declares an object of the data type – Date today; Invoke a member function – object.function_name(); – object which receives the message is the one on which the function the function operators » v1.resize(); » v1.length();
  • 147. 147 Constructor Default initial values for parameters – if the parameters are omitted the initial value of the fraction on declaration is 1/1  initialization list – special form of the constructor which allows the data members to be set within the interface (.h file)
  • 148. 148 Fraction Class  Represents rational numbers  constructor – initializes object to 1/1  accessors – reduce – print_fraction  Mutators – input_fraction  operations – add, subtract, multiply, divide  gcd – needed by class to do its work
  • 149. 149 Member vs Friend functions Member function must be invoked with object receiving message  friend function stands separate – it still has access to the data members – does not need an object to be invoked – used for binary operators which do not modify their parameters (overloading) defined in interface as friend
  • 150. 150 Complex Number Class class COMPLEX {public: COMPLEX(int r=0,int i=0); int real() const; int imaginary() const; COMPLEX add_complex (const COMPLEX &l, const COMPLEX &r);
  • 151. 151 Complex Number Class Con’t COMPLEX sub_complex (const COMPLEX &l, const COMPLEX &r); COMPLEX mult_complex (const COMPLEX &l, const COMPLEX &r); COMPLEX div_complex (const COMPLEX &l, const COMPLEX &r);
  • 152. 152 Complex Number Class -- Con’t void set_real (double); void set_imag(double); private: double real; double imag; };
  • 153. 153 Member vs Friend functions Member function must be invoked with object receiving message  friend function stands separate – it still has access to the data members – does not need an object to be invoked – used for binary operators which do not modify their parameters (overloading) defined in interface as friend
  • 154. 154 Inlining Used to provide an implementation within the interface  Only use on “small simple functions” which either simply set data members or simple calculations which return values
  • 155. 155 This pointer  Refers to the object receiving the message  *this ==> value – used in functions which modify the object receiving the message +=,-=,*=,/=
  • 156. 156 File I/O Input and output are done through streams: istream and ostream (fstream.h) – cin -- istream -- iostream.h – cout -- ostream -- iostream.h  4 steps to using files – declare an object of the appropriate stream open the stream – connects the external file with the stream (buffer) – stream.open(filename);
  • 157. 157 File I/O(2) Input >> but from the stream declared rather than from cin output << but from the stream declared rather than cout  close file – stream.close();