SlideShare une entreprise Scribd logo
1  sur  157
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 mn 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 (xy) 
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 
– apvectorint exams(3) 
 vectors of structures 
– apvectorGRADES 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” 
 apvectorint v1(10); 
– declares a 10 element integer vector 
– v1[0], v1[1], v1[2]….v1[9] 
 apvectorint 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) 
 apvectorapstring (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 
 Apvectorint 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;iv1.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 
 apmatrixint imat (3,3) 
– imat[0][0] ....imat [2][2] 
 apmatrixint 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 
 apmatrixint 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;rimat.numrows();r++) 
for (c=0;cimat.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();

Contenu connexe

Tendances

Introduction to MPI
Introduction to MPIIntroduction to MPI
Introduction to MPIyaman dua
 
Cs1123 8 functions
Cs1123 8 functionsCs1123 8 functions
Cs1123 8 functionsTAlha MAlik
 
Functions in C++
Functions in C++Functions in C++
Functions in C++home
 
C++ Overview
C++ OverviewC++ Overview
C++ Overviewkelleyc3
 
C programming session 08
C programming session 08C programming session 08
C programming session 08Vivek Singh
 
Dead Code Elimination
Dead Code EliminationDead Code Elimination
Dead Code EliminationSamiul Ehsan
 
M11 operator overloading and type conversion
M11 operator overloading and type conversionM11 operator overloading and type conversion
M11 operator overloading and type conversionNabeelaNousheen
 
Intro to Matlab programming
Intro to Matlab programmingIntro to Matlab programming
Intro to Matlab programmingAhmed Moawad
 
40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanation40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanationHarish Gyanani
 

Tendances (19)

Introduction to MPI
Introduction to MPIIntroduction to MPI
Introduction to MPI
 
Cs1123 8 functions
Cs1123 8 functionsCs1123 8 functions
Cs1123 8 functions
 
Computer Programming- Lecture 8
Computer Programming- Lecture 8Computer Programming- Lecture 8
Computer Programming- Lecture 8
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
C++ Overview
C++ OverviewC++ Overview
C++ Overview
 
C programming session 08
C programming session 08C programming session 08
C programming session 08
 
C and C++ functions
C and C++ functionsC and C++ functions
C and C++ functions
 
Dead Code Elimination
Dead Code EliminationDead Code Elimination
Dead Code Elimination
 
C++ functions
C++ functionsC++ functions
C++ functions
 
Dataflow Analysis
Dataflow AnalysisDataflow Analysis
Dataflow Analysis
 
Chapter 5
Chapter 5Chapter 5
Chapter 5
 
M11 operator overloading and type conversion
M11 operator overloading and type conversionM11 operator overloading and type conversion
M11 operator overloading and type conversion
 
functions
functionsfunctions
functions
 
C++ functions
C++ functionsC++ functions
C++ functions
 
3306617
33066173306617
3306617
 
Loop optimization
Loop optimizationLoop optimization
Loop optimization
 
Intro to Matlab programming
Intro to Matlab programmingIntro to Matlab programming
Intro to Matlab programming
 
C++
C++C++
C++
 
40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanation40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanation
 

En vedette

Turbo C
Turbo CTurbo C
Turbo Cnat236
 
C++ programming intro
C++ programming introC++ programming intro
C++ programming intromarklaloo
 
Chapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and PolymorphismChapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and PolymorphismEduardo 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
 
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++ ProgramDeepak Singh
 
Chapter 12 - File Input and Output
Chapter 12 - File Input and OutputChapter 12 - File Input and Output
Chapter 12 - File Input and OutputEduardo Bergavera
 
Cs1123 3 c++ overview
Cs1123 3 c++ overviewCs1123 3 c++ overview
Cs1123 3 c++ overviewTAlha MAlik
 
User defined functions in C programmig
User defined functions in C programmigUser defined functions in C programmig
User defined functions in C programmigAppili Vamsi Krishna
 

En vedette (20)

Turbo c++
Turbo c++Turbo c++
Turbo c++
 
2 Intro c++
2 Intro c++2 Intro c++
2 Intro c++
 
Turbo C
Turbo CTurbo C
Turbo C
 
C++ programming intro
C++ programming introC++ programming intro
C++ programming intro
 
Chapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and PolymorphismChapter 13 - Inheritance and Polymorphism
Chapter 13 - Inheritance and Polymorphism
 
CP Handout#2
CP Handout#2CP Handout#2
CP Handout#2
 
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
 
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
 
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
 

Similaire à Apclass

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
 
UNIT3.pptx
UNIT3.pptxUNIT3.pptx
UNIT3.pptxNagasaiT
 
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 typesimtiazalijoono
 
Lecture#6 functions in c++
Lecture#6 functions in c++Lecture#6 functions in c++
Lecture#6 functions in c++NUST Stuff
 
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-105NUST Stuff
 
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.pptxNoorAntakia
 
Object Oriented Technologies
Object Oriented TechnologiesObject Oriented Technologies
Object Oriented TechnologiesUmesh Nikam
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Mario Fusco
 
04 Functional Programming in Python
04 Functional Programming in Python04 Functional Programming in Python
04 Functional Programming in PythonEbad ullah Qureshi
 

Similaire à Apclass (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++
 
UNIT3.pptx
UNIT3.pptxUNIT3.pptx
UNIT3.pptx
 
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++
 
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
 
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
 
Object Oriented Technologies
Object Oriented TechnologiesObject Oriented Technologies
Object Oriented Technologies
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...
 
Python Manuel-R2021.pdf
Python Manuel-R2021.pdfPython Manuel-R2021.pdf
Python Manuel-R2021.pdf
 
04 Functional Programming in Python
04 Functional Programming in Python04 Functional Programming in Python
04 Functional Programming in Python
 
C++ manual Report Full
C++ manual Report FullC++ manual Report Full
C++ manual Report Full
 
Lecture2.ppt
Lecture2.pptLecture2.ppt
Lecture2.ppt
 
Basic Elements of C++
Basic Elements of C++Basic Elements of C++
Basic Elements of C++
 
3 Function & Storage Class.pptx
3 Function & Storage Class.pptx3 Function & Storage Class.pptx
3 Function & Storage Class.pptx
 

Apclass

  • 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 mn 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 (xy) 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 – apvectorint exams(3) vectors of structures – apvectorGRADES 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” apvectorint v1(10); – declares a 10 element integer vector – v1[0], v1[1], v1[2]….v1[9] apvectorint 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) apvectorapstring (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 Apvectorint 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;iv1.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 apmatrixint imat (3,3) – imat[0][0] ....imat [2][2] apmatrixint 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 apmatrixint 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;rimat.numrows();r++) for (c=0;cimat.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();

Notes de l'éditeur

  1. Turbo C++ environment IDE, structure of a C program, process of developing executables (C, L, R) c errors, link errors , run errors Intro. to C++ elementary data types, ap classes string, bool declare statement, include, i/o, arithmetic operators, assignment statement, increment/decrement Modular top down problem solving, functions, parameter passing C control structures relational and logical operators, short circuiting, break, if the else, switch, do, while, for, compound logical, nesting Advanced data types one dimensional arrays -- vector class, sorting multi-dimensional arrays -- matrix class Structures Classes -- public/private data members/member functions/ constructors
  2. windows -- cut/paste/etc IDE -- allows for integrated development in a windows environment different features modify the speedbar
  3. C++ programs are a series of functions to be performed which together perform a specific task... at minimum it must contain a main () preprocessor directives -- start with # as first non-blank character give instructions to the C preprocessor which based on these instructions modifies your program BEFORE it is compiled main function header -- a program is written in a modular format where it is simply a series of functions which must be performed Main is the starting point {} begin/end of a block of code form of sample programs -- line 1 comment containing file name on the disk load and look at first.cpp -- load turbo c++, click on disk -> on toolbar, set drive to a: then *.cpp, list of files appear in window, double click on first /* */ -- multi-line comment // - single line comment
  4. Tool Bars help opensaveview includessearchreplacecutcopypasteundocompilerebuild (compile/link) Menu file -- print run -- run, debugger window -- switch between windows Editor auto indent comments/literals are different shades of blue code is black preprocessor commands are green
  5. Compileopens message window automatically positions on error in editing window click on next error/warning message and you are automatically positioned at next error in the editor window compile first.cpp (no errors), link first (no errors, 1 warning), run first load cent.cpp -- attempt to compile, fix all errors Linkopens message window lists errors but does not position in the editor window there might be errors finding an element Run must choose from the menu-- no power button, will rebuild if needed opens execution window, which stays in front until you close it must close the window explicitly run cent, load and run zero to show execution errors -- opens execute window and new window with error message... dead until click OK run zero2.cpp input denominator 5 -> 203 ->33 not 33.33333
  6. understand the problem algorithm -- general solution to a problem “a step by step procedure for solving a problem in a finite amount of time” determine -- use decomposition technique divide & conquer -- break the problem into smaller more manageable pieces which together solve the problem implement these pieces with functions design the solution -- work in Pseudocode determine test cases and their correct solution desk check Pseudocode with test cases find all solutions can be expressed as a combination of statement types sequential -- in order selection -- alternative execution repetition -- iteration of block of code modular -- segments of code treated as one
  7. debugging is WORK! maintenance -- longest and most costly phase
  8. decompose into subfunctions input the bases, height calculate area output results
  9. sequence is necessary notice b1+b2 is done first, is there another way?? commands and variables -- define identifiers and self-documenting names variable and only contain one value at any one time only uses sequential statements trap.cpp -- uses a=(b1 + b2)*h/2
  10. constant -- pi is an identifier whose value will not change so that we can declare it a constant and then it’s value can not be changed also only needs sequential statements selection statements allow for alternate execution based on the value of a decision or logical expression for example this solution makes NO SENSE for radius values <= 0, we would need selection statements to only do the calculations if the radius input > 0 , try values <=0... what happens?? first.cpp
  11. requires selection statements as we need to know in which direction we are going decomposition -- input temperature input scale use scale to determine direction convert appropriately to new temperature output new temperature test cases ===> 0 centigrade = 32 Fahrenheit 100 centigrade = 212 Fahrenheit
  12. notice = = if true do first statement if false do second never do both selection statements allow for alternate execution based on the value of a decision or logical expression notice indenting -- style -- work for readability readability, modifiability (maintainable) and correctness three keys to successful programming cent2.cpp -- use test cases.. how many times will you need to run it? remember both ways must be tested
  13. requires multiple selection
  14. multiple selection -- last else catches all only one of the branches will be taken as choosing one path excludes all others test cases -- be sure all paths are done -- three sets <15, =15, >15 again question of BAD data -- user friendly/forgiving ROBUST not real useful -- only does one person need repetition need to know how many sales people working with input is now number of people then for each person their number of sales commis.cpp quota constant -- easy changes
  15. input number of salespeople-- determine how many times we repeat the section of code
  16. test cases -- be sure all paths are done -- three sets <15, =15, >15 and be sure that the loop is tested at the boundaries and within again question of BAD data -- user friendly/forgiving ROBUST there are other more flexible types of looping -- sentinel till something happens to make us stop this is a counted loop -- know the number of times to repeat comm2.cpp
  17. sequential -- i/o assignment (possibly inc, dec) selection -- both if , if else, nested if else iteration -- counted loop sentinel loop include all data types stings, char, int, float, double, bools Grade Option -- TURN IN -- for each problem describe the construct, data type being exemplified BREAK INTO GROUPS of 3-4 each (not whole class) this will give us lots of examples to share
  18. keywords are explicitly reserved words that have special/strict meaning in C++ the can not be used in other contexts or redefined case sensitive -- C++ is A is different from a Pay from pay from pAy from paY etc. keywords are all lower case -- you should use all lower case! identifiers -- any name used in a program rules -- must start with a letter contain letters, digits, and underscore no blanks or special characters <= 31 characters long can not be keywords // case sensitive comments -- literals to document the program enclosed in /* */ set or begin with // not compiled, etc include name, date on every program
  19. library files --allow access to already built reusable functions and definitions header file -- library file which contains definitions of constants and functions. We group constants and functions into header files based upon similar purpose (unit conversions) iostream.h -- contains definitions of C++’s i/o functions math.h contains the mathematical functions (pow, sin, cos, etc) apstring.h -- ap class for strings bool.h -- boolean data types the actual functions are in the run-time library or within your directory and the link process includes them with your program to include a header file with your program use #include <header file name> (look in the standard library) #include “header file name” (look in personal library) constants -- programmer defined data and its associated name specified at the beginning of program look at first.cpp (comments, #include)
  20. declare statement -- informative message to the compiler non-executable allocates memory and assigns a “name” to that memory location form-- data type name [initial value]; (all c statements end in a ;) data type -- set of values (domain) and the set of operations that can be performed on those values 4 predefined data types in C int, float, double, char (only those of interest are MANY others) int -- represents integers both positive and negative simply digits-- no commas, decimal points, $ etc allocated 2 bytes -- 16 bits values can range between -32,768 -- 32,767 float -- floating point numbers both signed and unsigned must include decimal point (or the program blows) no commas, $ but can use scientific notation (e) allocated 4 bytes double -- same as float but allocated 8 bytes char -- non-numeric character data/any ASCII character enclosed in single ‘‘ overflow and underflow
  21. modify apstring.h and .cpp to correct path bool -- true or false other compilers provide bool -- look at bool later string class is a first class data type-- apstring array of chars [] for substring only string name; automatically variable length using functions object.function length(), find(), substr -- member functions <<,>>, getline + -- concatenate
  22. notice = instead of == of the if statement use string class naturally -- see previous slide
  23. i/o is performed by the object iostream -- two instances cout, cin the compiler interprets the data (translates from text to data type) first.cpp look at it -- interactive input load sum.cpp -- example of inputting two in a row with different couts load sum2.cpp -- in one cout endl -- new line -- flush the buffer names.cpp ==> string i/o
  24. whole path even if in same directory will have to do this for any “home grown” class project necessary so that linkage editor can find the object module for the class which is not in the system supplied library
  25. control codes -- -- newline, -- tab without formatting 6 to the right just right on the left round or truncation, loss of significant digits?? load rndtrun to determine load cent, first, zero, sum, sum2 look at the output setiosflags ios::fixed setprecision setw if too small just makes it right
  26. what is the value of 5+3*2+12/16 13 or 4.6666 (13) operator Precedence: ( ) *, /, % -- left to right +, - -- left to right can not imply multiplication must use * int arithmetic operations involving integers yielding integer results 7/2 = 2 not 2.3333 999/1000 = 0 modulo operator -- % 7 % 3 = 1 if x<y => x % y = x can be used to determine parity (odd or even) by %2 only valid for ints
  27. data type hierarchy is double/float/int highest mode determines the resulting mode and how arithmetic is done examples 999/1000 -- both int so int => 0 999.9/1000 -- float => .999 999/1000.0 -- float => .999 20.0/3*20/3==> (20.0/3) * 20 /3 ==> 6.6666 *20 /3 ==> 133.333 /3 => 44.444443 20/3*20.0/3 ==> (20/3) *20.0/3 ==> 6 *20.0 /3 ==> 120.0/3 ==> 40.0 20.0/3 + 20/3 ==> 6.666 + 6 => 12.666 7.0/3.0*3.0 -- should result in 7.0 but doesn’t always 7.0/3.0 => 2.333333 and on some systems loose precision (turbo c does not -- feel free to run it)
  28. = assignment operator variable = expression; illegal -- x+2 = y+2; float x; x = 7/2; x=> 3.0 float y; int x; y= 19/4; x= y*4;x=16 y=4.0; x = x+1; ==> x+=1; x = x*15 ==> x*=15; x *=15+y ==> x= x*(15+y);
  29. a =5, b=6, c=10, d=4 a = b++; ===> a=6 b=7 a =b, b++ a = ++b; ===> a=7 b=7 b++, a=b a = b++ * --c / d++ + ++d; --c ++d b+c/d+d ====> a =15, b=7, c=9, d=6 d++ b++ AP exam == frowns on this usage DO NOT DO!!
  30. changes the evaluation of a given variable or expression to a different data type can be user defined types as well float f; f = (int) (2.5 *4.3) ==> f= 10.0 type casting applies to the expression only it does not alter the data type of the variable int x,y; y=10; x = (float) (y)/4*10; x ==> 10.0/4*10==> 2.5*10 ==> 25 without the type cast 20 x = (float) (y/4) *10 ==> get 20 again
  31. freezing in Kelvin is 273.15 boiling in Kelvin is 373.15 solutions are miles.cpp and ckelvin.cpp fkelvin.cpp don’t forget int division when doing fkelvin
  32. libraries of functions exist that are pre-written and WORK...they can simply be reused by including them with a #include statement -- all classes can be used!! standard math functions not provided by C’s operators (no exponentiation) sqrt (double x) pow (double x, double exponent) abs (int x) fabs (double x) ceil (double x) smallest whole number not < x ceil (45.23) => 46 exp (double x) ex floor (double x) largest whole number not > x floor (45.23) => 45 example roots of quadratic equation (quad.cpp) -- demonstrate blow up data will make this fail -- can’t take a negative square root discriminant (b2 - 4ac) must be positive or roots are not defined requires if (do know that if =0 single double root requires nested if’s) Domain error -- out of range of legal values
  33. areat.cpp vols.cpp notice 6 decimal places
  34. dist.cpp still 6 places
  35. how to include files -- whole path must set up project to include home grown classes
  36. functions can stand alone gets its input through parameters, returns output through function name know how to invoke the above pow (x,y) ==> x,y are parameters, order, returns its value through the name pow main () ==> no parameters, we can send them into main but beyond the scope here, from warning message know main is supposed to return something, namely an integer abstraction the process of separating out the details of how something is implemented from what it does... allows for modular design, allows us to concentrate on each section know what pow does not how it does it understand the purpose of function the arguments the function must receive the data it returns
  37. logic -- incremental development reuse -- component assembly team -- each person develops a function (speed up work) redundancy -- performed many times if with different data just send it in as parameters
  38. optional return data type -- default is int is left out, can be void , how the function returns its value (singular!) function name -- any valid identifier parameter list -- those pieces of information the function needs to do its work can declare local variables set of statements to do work of the function optional return-- if it returns a value then the statement is mandatory form: return (value); if its return is void (does not return a value) the return statement is not needed {} are the begin/end of the function functs.cpp -- (find_max, larger-- local variables) how to invoke
  39. A function may have 0 or more parameters, and return 0 or 1 values if it has no parameters we say void main () -- no parameters main (void) a function need not return anything void main () give instructions, messages input but no results -- void name (parameters) output information -- print_formatted input and output -- computes something -- find_max no input but returns something -- get values from the user get_radius, zero
  40. load circle.cpp look at form of functions calc_area, calc_circum comments parameters, return values pi -- ap frowns on define discuss its advantages invoking the function use name in the expression placement of the functions in the program -- must be defined before they can be used -- prototypes/interfaces later local variables -- discuss them compare it to first.cpp
  41. load pyth.cpp instructions -- no i/o results -- i but no o generate -- both i/o could write get_m and get_n int get_m (void) { int m; cout << “enter the larger of the two numbers:”; cin >> m; return (m); } etc. what happens if m, n or if either =0?
  42. actual is those in function invocation statement formal is those in the function interface
  43. memory is allocated for test when the function is invoked... the value of n is copied in (1) i gets memory which is initialized to 5 n becomes 6 the function returns n through its name -- value gets copied into i the memory for test is deallocated in the main procedure n retains its original value -- it is not changed i gets the value of 6
  44. need to change the value or return more than 1 value deposit, check -- updating balance the actual memory location is used so that the actual memory is modified by the function
  45. so common write a function if call by value won’t see the change exercise -- write this -- solution is swap1.cpp
  46. only the parameter is declared as a reference not the actual!
  47. if is in the main num1, num2 are formal parameters a,b are actual solution swap.cpp
  48. in circle.cpp get_radius should be by reference side effects -- changes made “accidentally”
  49. solution is circle2.cpp, pyth2.cpp notice different invocations
  50. use the editor effectively so that you are not retyping use reference and value appropriately solution f_to_ck.c
  51. canusf.cpp words.cppinclude format project setup
  52. the same as the function header except it ends in a semi colon also know as the interface the actual code is know as the implementation
  53. interface -- different parameters either in type or number dist2.cpp -- notice enter_point is a function to avoid duplication of code
  54. if then -- but no keyword then if the condition is true we execute the statements if false we skip the statements notice = = --- common C programming error, while turbo c gives warning VAX C and UNIX C DO NOT! 3<4 == T x<4 True sometimes false others
  55. notice placement of {} notice indentation
  56. else part is executed when false
  57. notice the ;
  58. notice all the ;’s
  59. notice the use of {} even though its only one statement -- allows for easy modification robust -- will handle the unexpected input of 0
  60. solution is quad2.cpp only send error message not single double root, imaginary roots
  61. truth tables for and, or, not always use () anyway
  62. not all languages short circuit in ADA and then or then
  63. allows for more efficient code
  64. leap.cpp not the most elegant solution -- purpose is to demonstrate complex expressions notice leap_year()
  65. used in complex if then else statements to leave rather than continue evaluating used in next statement switch statement
  66. evaluates the expression which must produce an discrete type ...ordered int, char, bool, enum compares the value to each of the cases upon equality it executes the statements and IF there is a break statement it leaves the structure no break it continues down the list of values
  67. default is optional if left out it simply goes on to the next statement can use or case 1: case 2: but not and
  68. temp_con.cpp solution -- very modular (possibly library creation!!!) if worthwhile do it!!
  69. notice no ; at end of while statement
  70. prints 5 4 3 2 1 if we could control the screen ... window (which C++ can, uses header file conio.h) we could have a blast off display!
  71. notice the robustness check to be sure values have been entered
  72. aveof.cpp EOF defined in iostream.h cin.get (object.function) ^c -- interrupt endless loops
  73. notice the ; on the while statement (end of the structure)
  74. thus the loop is always executed at least once
  75. could also be done in a count controlled loop or a while loop
  76. notice must enter one value!! what does it take to make it terminate?
  77. still needs work -- nested loops
  78. modify pyth.cpp to be robust etc discuss flags!!! pythif.cpp -- notice for formatting
  79. i=1 i<=5 cout i++
  80. comma operator (sum =0, i=1)
  81. with fact as integer -- other systems blow up with overflow error at 32 turbo just gives garbage results notice reusables in temps (if library has been created use it!) random -- in stdlib.h srand() rand() exercise -- modify words.ccp to use for loop solution wordsl.cpp
  82. look also at pythif -- uses flag can change code to be if flag rather than if flag == 1 could declare an enumeration type for booleans do not need to setup a project (no object module to be linked in) but need the entire path
  83. bank.cpp difference with define/const
  84. quota question from problem solving commis.cpp leap.cpp uses nested ifs
  85. else matches closet un-elsed if
  86. circle functions-- so far have not been very useful only do 1 circle at a time to do more than one need nesting loops what makes it terminate??
  87. originals to be modified-- aven.cpp pythif.cpp quad2.cpp solutions-- pythifn.cpp avenp.cpp quad3.cpp
  88. two enums -- bool and line type discuss difference between bool.h and enum -- ap wants use bool.h and know about enums. reuse of get_point!!!!
  89. Also unions -- not covered here Arrays -- standard C++ method is trouble some-- no range checking pointer likeness (dynamic allocated) AP people have built a user defined type APVECTOR
  90. Conceptualization is the same -- syntax and usage that is different vectors -- ap class APVECTOR -- .h and .cpp change files on disk why they created apvector c++ doesn’t check array bounds so you can go out of bounds and modify memory locations without any error or warning can’t say a=b if a,b are arrays won’t adjust array size dynamically arrays are passed by reference so & is confusing apvector checks array bounds a=b is allowed -- dynamic array size adjustment normal usage of pass by reference
  91. three dimensional is largest C can handle
  92. rain1.cpp starting address is passed
  93. Grades.cpp also discuss calculating the mode
  94. Rainenum.cpp
  95. array -- homogenous -- all same data type, select element through its position structure -- heterogeneous -- different data types, access through its name ADA -- record
  96. What we have declared (student1, student2) are contiguous memory areas to refer to an individual item -- qualify it -- selector operator . student1.name studnet1.exam1 student2.name or can refer to entire structure: student1 = student2; struct PARTS struct FRACTION { int number;{int numerator; char name[25]; int denominator;}; int on_hand;}; PARTS part1, part2;FRACTION num1, num2;
  97. student1.name = ”cindy”; student1.midterm = 100; part1.on_hand++; order of declared items CAN NOT USE IN CONDITION no -- (student1 = = student2) student.cpp
  98. Pass entire structure void print_stu (GRADES stu) {…. return a structure: GRADES get_stu () {GRADES in_stu; printf (“students name: “);gets (in_stu.name); printf (“exam1: “);scanf (“%d”,&in_stu.exam1); …. Return in_stu; } pass by reference: when structure is large -- not to waste memory and machine time use const where appropriate
  99. Remember passed normally by value ==> const reference strucarray.c -- example of using inventory application
  100. Conceptualization is the same -- syntax and usage that is different vectors -- ap class APVECTOR -- .h and .cpp change files on disk why they created apvector c++ doesn’t check array bounds so you can go out of bounds and modify memory locations without any error or warning can’t say a=b if a,b are arrays won’t adjust array size dynamically arrays are passed by reference so & is confusing apvector checks array bounds a=b is allowed -- dynamic array size adjustment normal usage of pass by reference
  101. Apvector is a generic class (template) apvector<dt> variable name(#values,[initial value]); can we write add, sub functions and place them in library -- vector.h .cpp
  102. Strings -- in C++ are simply arrays of characters (can not grow) APSTRINGS -- can grow dynamically (one of the reason ap people created them) so it doesn’t matter that they are empty on declare
  103. Access a single element can be on left or right side if subscript is out of bounds error terminates uses [] instead of ()
  104. other member functions resize -- used in passing vectors vector.cpp only operator =
  105. vector.cpp and vect2a.cpp
  106. resize in passing
  107. or can use the class construct!
  108. interfaces of member functions only NOT the implelementation stored in .h file implementation is in .cpp file data members are standalone contents of structure class itself ties it into one unit just as the structure did
  109. Can be of any data type (even user defined) can be accessed individually or as a unit when you declare an object of the class you get all data members
  110. Class must supply everything since the data members are private
  111. Can have default initial values for the parameters
  112. Use of const is desirable so no side effects can occur
  113. Class must provide everything! Including I/O etc
  114. Look at date.h look at interfaces---- no parameters so what is it doing the work on???
  115. Look at date.cpp look at the implementations --- what are they doing their work on??
  116. Rational.h
  117. Gcd could be a private function since it is only used by the class to do its work but then no other class could use it
  118. Add, etc are friends so we can call them naturally otherwise we would have to invoke it left.add(right) when add is a friend we invoke it add (left, right) same in date class with equal==> left.equal(right) verse equal(left,right) rational.h, rational.cpp, & use-rat.cpp read complex2.h look at complex2.cc notice no scope resolution operatoron the firend functions but there is one on +=
  119. types of functions constructors accessors mutators operations add,sub,mult,div could be written as overloaded operators they could then be used naturally
  120. Same slide now rewrite complex ops as friends rather than members Add, etc are friends so we can call them naturally otherwise we would have to invoke it left.add(right) when add is a friend we invoke it add (left, right) same in date class with equal==> left.equal(right) verse equal(left,right) rational.h, rational.cpp, & use-rat.cpp read complex2.h look at complex2.cc notice no scope resolution operatoron the firend functions but there is one on +=
  121. Look at complex2.h inlined -- constructor real(), imaginary() conversion to double abs conj
  122. Stands for input file stream output file stream filename must be in “”
  123. Pythifnf.cpp