Title: Programming in C
1Programming in C
- The Turbo C Environment
- C Program Structure
- Modular Programming with Functions
- C Control Structures
- Advanced Data Types
- Classes
2Turbo C Environment
- Windows based product
- Integrated Development Environment (IDE)
- editor
- compiler
- linker
- debugger
3Structure of a C Program
- preprocessor directives
- main function header
-
- declare statements
- statements
4Using the Turbo C IDE
5Using the Turbo C IDE (2)
- compiling
- linking
- executing
6Developing 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
7Developing Programs (2)
- Verify
- Test and debug the solution
- using test cases from design phase
- Maintain
8Problem 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
9Problem Solving -- Trapezoid Pseudocode
- input b1
- input b2
- input height
- bases b1 b2
- area bases h /2
- output area
10Problem Solving (2)
- consider finding the area and circumference of a
circle - pi 3.14159
- area pi radius2
- circumference 2 pi radius
11Problem Solving -- Circle Functions Pseudocode
- pi 3.14159
- input radius
- circum 2 pi radius
- area pi radius radius
- output area
- output circum
12Problem Solving (3)
- consider converting temperatures from Centigrade
to Fahrenheit (or vice versa) where - c 5/9(f-32)
- f 9/5c 32
13Problem Solving --Temperature Conversion
Pseudocode
- input temp
- input scale
- if scale f
- newtemp 5/9 (temp-32)
- else
- newtemp 9/5 temp 32
- output newtemp
14Problem Solving (4)
- consider sales commissions based upon the number
of sales made during the time period - 8 per sale for lt 15 sales
- 12 per sale 15 sales
- 16 per sale gt 15
15Problem Solving -- Commission Pseudocode
quota 15 input number_sales if number_sales lt
quota rate 8 else if number_sales quota
rate 12 else rate
16 com rate number_sales output com
16Problem Solving -- Commission Pseudocode Multiple
Salespeople
quota 15 input number_salespeople
17Problem Solving -- Pseudocode Multiple
Salespeople (2)
loop number_salespeople times input
number_sales if number_sales lt quota rate
8 else if number_sales quota
rate 12 else rate
16 com rate number_sales output com
18Exercise -- GO
- Develop a series of problems for the students to
do using each of the statement types
19Introduction to the C Language
- keywords
- C is case-sensitive
- identifiers
- can not be keywords
- comments
- enclosed in / / multi-line
- start with // single line
20Preprocessor Statements
- library header files -- include
- lt gt -- system library
- include ltiostream.hgt
- -- personal library
- include apstring.h
21Data 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
22User Defined Data Types
- class -- mechanism to establish new data types
- ap classes
- string
- apstring.h apstring.ccp
- bool
- bool.h
23Example 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
24Input and Output Statements
- include ltiostream.hgt
- cout -- output
- ltlt insertion character
- cin -- input
- gtgt extraction character
25Using APSTRING Class
- include apstring.h
- entire path
- create project
- place apstring and program in project
- you will need a different project for each program
26Input and Output Statements (2)
- COUT -- control codes
- way of inserting placement control
- \n -- new line
- \t -- tab
- iomanip.h
- contains more formatting methods
27Arithmetic in C
- operator precedence
- ( )
- , /, (left to right)
- , - (left to right)
- integer arithmetic
- operations involving integers yielding integer
results - truncation on integer division
- -- modulo operator
28Arithmetic 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
29Assignment Statements
- assignment operator
- operator precedence and mixed mode arithmetic
hold - combination operators
- , -, , /,
- variable expression
30Increment and Decrement Statements
- special operators which add or subtract one from
a variable - more efficient (generates inc, dec)
- a gt a a1
- a-- gt a a -1
- postfix (a) (a--)
- done after the expression is evaluated
- prefix (a) (--a)
- done prior to evaluating the expression
31Type Casting
- changes the evaluation data type of the
expression - does not change the data type of the variable
- (data type)
- (int)
- (float)
- (apstring)
32Programming 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
33Mathematical Functions (math.h)
- code reuse
- sqrt, pow, exp, log, log10
- abs, ceil, floor
- trigonometric functions
34Programming 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
35Programming Problems (2)
- determine the distance from a point on the
Cartesian plane to the origin - distance sqrt (x2 y2)
36Exercise -- GO
- Implement the sequential problems developed in
the first exercise
37Modular 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
38Modular Programming with Functions (2)
- allows for reuse
- eliminates redundancy
- allows for team development
- simplifies logic
39Form of a Function
return data type Function name (parameter
list) declarations statements return
40Types of Functions
- no input, no return value
- void
- input but no return value
- both input and output
- no input but returns a value
41Example -- 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
42Example -- Pythagorean Triples
- Pythagorean Triple are the three sides of a right
triangle a,b,c - a2 b2 c2
- given m and n, such that mgtn we can generate the
triples - a m2 - n2
- b 2mn
- c m2 n2
43Call 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
44Example Call by Value
include ltiostream.hgt int test (int n) int i
5 n i return (n)
void main (void) int n1, i i test
(n) cout ltlt i ltlt ltlt n ltlt endl
45Example Call by Value (2)
main
test
1
n
1 6
n
i
i
6
5
46Functions -- 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
47Reversing Order -- Swap
- if (num1 lt num2)
-
- temp num1
- num1 num2
- num2 num1
-
48Reference Parameters
- Parameter which shares the memory of the actual
parameter rather than declare new memory and copy
the actuals 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
49Function Swap
- void swap (int num1, int num2)
- int temp
- temp num1
- num1 num2
- num2 temp
-
- if a gt b
- swap (a,b) to invoke the function
50Call 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
51Exercise
- modify circle.cpp to use reference where
appropriate - modify pyth.cpp to have compute_sides
52Programming 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
53Programming 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
54Exercise -- GO
- Implement all previous programs using modular
design and reference and value parameters as
appropriate
55Function 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 ()
56Overloading
- function names can be overloaded
- different interfaces
- compiler can determine which to execute
- operators can be overloaded as well
57Selection Structures
- execute a group of statements based upon a
condition being true or false - if (condition)
- statement
- if (condition)
- statement(s)
-
- conditions -- relational operators
- lt, gt, lt, gt, , !
58Simple Selection Examples
- if (hours gt 40)
- cout ltlt overtime!\n
- if (cost gt 30000)
-
- tax (cost - 30000) tax_rate
- cout ltlt \n for a car costing ltlt cost ltlt
- a luxury tax of ltlt tax ltlt is due
59Selection -- IF ELSE
- if (condition)
- statement
- else
- statement
- if (condition)
- statements
-
- else
- statements
60If ELSE -- Examples
- if (xgty)
- max x
- else
- max y
61If ELSE -- Examples (2)
- if (hours lt 40)
- gross_pay wage hours
- else
-
- overtime_hours hours -40
- overtime_pay wage overtime_hours 1.5
- gross_pay wage 40 overtime_pay
62Programming Example
- find the reciprocal of an integer
- undefined for 0
- attempt to divide by 0 will cause program
termination - recip.cpp
63Programming Exercise
- Modify the program which finds the roots of the
quadratic equation so that it will not error
terminate - quad.cpp
64Logical Operators
- combine two or more relational operators to
create complex relations - AND --
- OR --
- NOT -- !
- precedence before
65Conditional Operators -- Examples
- if (temp_type F temp_type f)
-
- centigrade convert_cent (temp)
- kelvin convert_kelvin (temp)
-
- If (num gt 0 num lt 10)
-
- cout ltlt single digit number\n
66Short 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
67Short 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
68Programming 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
69BREAK statement
- allows program to leave a control structure
- form -- break
70Multiple Selection -- Switch
- test the value of a single integer type and
perform different blocks of statements based upon
the value
71Multiple Selection -- Switch Form
- switch (expression)
- case value 1
- statement(s)
- break
- case value 2
- statement (s)
- break ....
- default
- statement(s)
- break
72Example Switch Statement
- determine if a value is -1, 0, or 1-4
- cin gtgt value
- switch (value)
-
- case -1
- cout ltlt value -1\n
- break
- case 0
- cout ltlt value 0\n
- break
73Example Switch Statement Cont
- case 1
- case 2
- case 3
- case 4
- cout ltlt value in range 1-4\n
- break
- default
- cout ltlt value is lt -1 or gt 4\n
74Example Programming Problem
- color compliments
- clswitch.cpp
75Programming 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
76Exercise -- GO
- Implement the selection statement problem
solving problems
77Repetition 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
78While Loop
- form
- while (condition)
-
- statement(s)
-
- event driven loop
79While Loop (2)
- pre-test (0) loop
- test the condition
- if true execute the loop
- if false exit loop
- loop can be executed 0 times
80Example While Loop
- i 5
- while (i gt 0)
- cout ltlt i ltlt endl
- i--
81Programming Example
- taking averages
- enter values to be averaged until sentinel is
entered (0) - event which terminates loop
- ave.cpp
82Controlling 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
83Do While Loop
- event driven loop
- always executes at least once (1 loop)
- post test loop
- form
- do
- statement(s)
- while (condition)
84Do While Loop (2)
- executes the loop
- tests the condition
- if true executes the loop again
- if false exits the loop
85Do While Example
- add the numbers from 1 to 5
- sum 0
- i 1
- do
- sum i
- i
- while (i lt 5)
86Programming Example
- display square of input value
- user prompt to continue
- squares.cpp
87Programming Example -- Circle Functions
- robust programming
- user friendly/user forgiving
- Area and Circumference of circle
- radius can not be lt0
- present error message and re-prompt for input
until it is valid - circleif.cpp
88Programming Exercise -- Pythagorean Triples
- robust example
- m gt n and both gt 0
- give meaningful error message
89For Loop
- counted loop -- set number of times
- iterates through a set of values
- for (initial expression
- condition
- loop expression)
- statement(s)
-
90For 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
91Example For Loop - I
- Countdown
- for (i 1 ilt5 i)
-
- cout ltlt i ltlt endl
92Example For Loop - II
- sum numbers 1-5
- for (sum 0, i 1 i lt 5 i)
-
- sum i
93Programming Examples
- Factorials
- fact.cpp
- change fact to be integer (see what happens)
- temperature conversions
- temps.cpp
- generating random numbers
- random.cpp
94Boolean 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
95Programming Exercise
- maintain check book balance
- modular
- 15 service fee for bad check
- display message
- final balance on exit
96Nesting 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
97Example If else if -- Sales Quotas
- if (num_sales lt quota)
- rate low_rate
- else if (num_sales quota)
- rate ave_rate
- else rate high_rate
98Example Nested Loops
- cout ltlt enter the number to sum to, 0 to end
- cin gtgt num
- while (num ! 0)
- for (sum0, i1 iltnumi)
- sum num
- cout ltlt the sum of the numbers 1 - ....
- cout ltlt enter the number to sum to ...
- cin gtgt num) /end while/
99Nesting Control Structures Programming Examples
- counting number of letter grades
- aven.cpp
- printing multiplication tables
- table.cpp
- circle functions
- circleof.cpp
100Programming 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
101Enumeration 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
102Lines in Cartesian Plane
- perpendicular, parallel or intersecting
- slope
- enumeration type can be used
- parameters
- return types
- lines.cpp
103Exercise -- GO
- Implement any remaining problem solving programs.
- Be sure have a complete set identifying all
structures including enumeration types.
104Composite Data Structures
- construct that can access more than one data item
through a single name - Array -- homogenous data type
- Structure -- heterogeneous data type
105Arrays\Vectors
- collection of data components
- all of same data type
- are contiguous
- accessed
- entire array (name)
- individual component (subscript)
106Declaring Arrays
- int x5
- declares a 5 element array of integers
- x0, x1, x2, x3, x4
- int x25 -- two dimensional array
- int x 2 5 5 -- three dimensional array
- size must be declared at compile time
- can not int size, int xsize
- can
- define max_size 100
- int xmax_size
107Referencing Arrays
- elements
- float ave_temp 12
- ave_temp 0 -- Jan
- ave_temp 11 -- Dec
- ave_temp i2
- no arrays bounds checking
- fast code
108Initializing Arrays
- int x5 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 x250
- for (i 0 ilt249 i)
- xi 1
109Using Arrays
- data must be passed more than once
- array1.cpp
- implement vectors or matrices
- array2.cpp
- data comes in haphazard order
- string example
110Passing 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
111Programming 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
112Programming Problem
- Using an enumeration type for months of the year
- calculate the average rainfall
- display those months with lt average rainfall
amounts
113Structures
- Heterogeneous data type
- logically related set of items which can be
accessed either on an individual item basis or
all at once through structures name - fields can be of any data type (different ones),
user defined as well
114Example Structure
- struct GRADES
- apstring name
- int midterm
- int final
- float assigns
- float sem_ave
- char letter_grade
- GRADES student1, student2
115Operations 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
116Structures 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
117Arrays and Structures
- Structures can contain vectors, apstring
- apstring name
- apvectorltintgt exams(3)
- vectors of structures
- apvectorltGRADESgt class(60)
- 60 students in class
- class0.name class0.final
- class59.name class59.final
118Hierarchical Structures
- Structures can contain structures
- typedef struct
- char last 15
- char first 15
- char middle NAME
- typedef struct
- NAME stu_name
- STUDENT
119Arrays\Vectors
- collection of data components
- all of same data type
- are contiguous
- accessed
- entire array (name)
- individual component (subscript)
120Declaring Vectors
- include aapvector.h
- apvectorltintgt v1(10)
- declares a 10 element integer vector
- v10, v11, v12.v19
- apvectorltintgt v2(10,0)
- declares a 10 element integer vector
- all elements are initialized to 0
- v200, v210..v290
121Declaring Vectors (2)
- apvectorltapstringgt (25)
- declares a vector of 25 strings
- each is empty string
- can be user defined data types
122Accessing Elements
- v11
- second element of the vector
- v19
- last element of the vector
- v11 2
- high v13
123Assignment -- APVECTOR
- Apvectorltintgt v1(10), v2(20)
- v1 v2
- v1 will be reallocated at a size of 20
- v10 v20
- .
- v119 v219
- corresponding elements will be assigned
124Member 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() gt 20
- v1 still ranges from 0-19
- for (i0iltv1.length()i)
- cout ltlt v1i ltlt endl
125Vectors 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
126Using 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
127Matrices
- two dimensional array
- problems with C arrays are doubled in two
dimensions - APMATRIX
- include aapmatrix.h
- can automatically be resized
- subscript checking
128Declaring Matrices
- apmatrixltintgt imat (3,3)
- imat00 ....imat 22
- apmatrixltintgt imat2(3,3,0)
- all elements are initialized to 0
- can be any system or user defined data type
129Referencing Elements
- imat12 7
- score imat ij
- if subscript is out of bounds (either of them)
program error terminates
130Assignment -- APMATRIX
- apmatrixltintgt imat2(10,10)
- imat imat2
- imat 3x3
- imat2 10x10
- after assignment imat 10x10
- assigns corresponding elements
131APMATRIX--Member Functions
- numrows() -- returns the number of rows
- imat.numrows() gt 10
- numcols() -- returns the number of columns
- imat.numcols() gt 10
- for (r0rltimat.numrows()r)
- for (c0cltimat.numcols()c)
- cout ltlt imatrc
132Programming Problem
- Create resuable functions for matrix addition
and multiplication - matrix.h
- matrix.cpp
- use_matrix.cpp
133ADT -- complex numbers
- struct COMPLEX
- double real
- double imag
- operations -- input, output, add, subtract, mult,
divide, absolute value - package together in include file
134Class -- User Defined Data Type
- encapsulate data and functions
- information hiding
- public vs private
- can be inherited
- structures can not
135Public 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 cant access it, cant modify it
- more maintainable -- fewer side effects
136Class Definition
- class class_name
- public
- member functions
- private
- data members
-
137Data 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
138Member 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
139Constructors
- 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
140Accessors
- 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
141Mutators
- 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
142Operations
- Provide services of the class
- perform calculations, etc using data members
- necessary since the data members are not
accessible to the client programs
143Date 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
144Interface 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
145Date 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
146Client 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()
147Constructor
- 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)
148Fraction 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
149Member 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
150Complex Number Class
- class COMPLEX
- public
- COMPLEX(int r0,int i0)
- int real() const
- int imaginary() const
- COMPLEX add_complex
- (const COMPLEX l, const COMPLEX r)
151Complex Number Class Cont
- 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)
152Complex Number Class -- Cont
- void set_real (double)
- void set_imag(double)
- private
- double real
- double imag
153Member 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
154Inlining
- 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
155This pointer
- Refers to the object receiving the message
- this gt value
- used in functions which modify the object
receiving the message ,-,,/
156File 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)
157File I/O(2)
- Input gtgt but from the stream declared rather than
from cin - output ltlt but from the stream declared rather
than cout - close file
- stream.close()