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

PPT
PPT
C++ functions presentation by DHEERAJ KATARIA
PPT
11 functions
PPT
Code optimisation presnted
PDF
Programming Fundamentals Decisions
ODP
Introduction to MPI
PPT
C++ Functions
C++ functions presentation by DHEERAJ KATARIA
11 functions
Code optimisation presnted
Programming Fundamentals Decisions
Introduction to MPI
C++ Functions

What's hot (19)

PPS
C programming session 08
PDF
MATLAB for Technical Computing
PPTX
Cs1123 8 functions
PPTX
Functions in C++
PPTX
C and C++ functions
PPTX
Code optimization
PPT
Computer Programming- Lecture 8
PDF
PPTX
Dead Code Elimination
PPT
C++ functions
PDF
M11 operator overloading and type conversion
PPT
C++ Overview
PPTX
Introduction to code optimization by dipankar
DOCX
Chapter 5
PPTX
functions
PPTX
Loop optimization
PDF
Dataflow Analysis
PPT
C++ functions
PPTX
Compiler optimization techniques
C programming session 08
MATLAB for Technical Computing
Cs1123 8 functions
Functions in C++
C and C++ functions
Code optimization
Computer Programming- Lecture 8
Dead Code Elimination
C++ functions
M11 operator overloading and type conversion
C++ Overview
Introduction to code optimization by dipankar
Chapter 5
functions
Loop optimization
Dataflow Analysis
C++ functions
Compiler optimization techniques
Ad

Viewers also liked (20)

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

Similar to Apclass (2) (20)

PPT
Apclass (2)
PPT
C++ Language
PPT
02 functions, variables, basic input and output of c++
PDF
introduction to python programming course 2
PPTX
Intro to c++
PDF
Programming Fundamentals Functions in C and types
PPT
Unit iv functions
PPTX
Chapter 4
PPT
Lecture#6 functions in c++
PPTX
UNIT3.pptx
PPTX
Chp8_C++_Functions_Part2_User-defined functions.pptx
PDF
04 Functional Programming in Python
PPTX
Programming For Engineers Functions - Part #1.pptx
PPT
Lecture#2 Computer languages computer system and Programming EC-105
PPT
basics of optimizations presentation s
PPT
Object Oriented Technologies
PDF
Functionssssssssssssssssssssssssssss.pdf
PDF
Basic Elements of C++
PPTX
Fundamental of programming Fundamental of programming
Apclass (2)
C++ Language
02 functions, variables, basic input and output of c++
introduction to python programming course 2
Intro to c++
Programming Fundamentals Functions in C and types
Unit iv functions
Chapter 4
Lecture#6 functions in c++
UNIT3.pptx
Chp8_C++_Functions_Part2_User-defined functions.pptx
04 Functional Programming in Python
Programming For Engineers Functions - Part #1.pptx
Lecture#2 Computer languages computer system and Programming EC-105
basics of optimizations presentation s
Object Oriented Technologies
Functionssssssssssssssssssssssssssss.pdf
Basic Elements of C++
Fundamental of programming Fundamental of programming

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();