Upload
bethanie-powell
View
226
Download
0
Tags:
Embed Size (px)
Citation preview
IT Learning Programme
Introduction toC++ ProgrammingSessions 1-3
IT Learning Group
Today’s arrangements
Your teacher is: Ian Miller
Your demonstrators are: Chris, Hasan, Ronald
We finish at: 5:00pm
You should have: Class notesCopies of slides
Your safety is important
Where is the fire exit?
Beware of hazards
Tripping over bags and coats
Please tell us if anything does not work
Let us know if you have any other concerns
Your comfort is important
The toilets are along the corridor just outside the teaching rooms
The rest area is where you registered;it has vending machines and a water cooler
The seats at the computers are adjustable
You can adjust the monitors for height, tilt and brightness
♫♪
What you know already…
Nothing is assumed
Today's Topics
C++ and OOP?
Compilers
ISO and ANSI
Standard C++ Library
The Standard Template Library (STL )
Dev-C++
First Program
Fundamental data types
string class
Functions
What is OOP?
Object Oriented ProgrammingA way of modelling individual objects in the real world
Students
Vehicles
Buildings
ATM’s
etc, etc
So, what is OOP?
Natural thinking – making our C++ code do what we expect something to do in real life.Class
Member functions/methods represent real object - behaviour
Member variables/data membersrepresent real object - state
Creating a C++ program
Editor
Pre-processor
Compiler
Linker
Loader
CPU
Disk
Disk
Disk
Disk
Memory
Add source Code
Directives allow add contents from ext files or constants
Convert the high level language into object code
Link object code to library code & create exec code
Load from disk into memory
Execution, CPU executes the program
Disk
Why Compile?
English talk
“Add 17 and 9 please”
I’m sorry but I don’t understand English just binary talk, 1’s and 0’s.
001010100111
011011000110
100110110011
111100100000
100000111110
“Johann Strauss”
Why Compile?
cout<<"Enter the first number: ";cin >>Num1;cout<<"Enter the second number: ";cin >>Num2;cout<<"The two numbers added = "<<Num1 + Num2;
The two numbers added =
111001101111
001010100111
011011000110
100110110011
111101011111
C
O
M
P
I
L
E
R
C++ Talk
Binary TalkEnter the first number:
Enter the second number:
17
9Monitor
26
C++ Compilers
Many and variedSun Studio 10 Solaris, Linux
VisualAge C++ Linux
GCC Multi-platform
Microsoft Visual C++ Windows
Cygwin Linux
Dev-C++ Windows
Xcode Apple
Compiler Conformance
ISO International Standards Organisation
ANSI - American National Standards Institute
StandardC++98
C++2003
2005 Library Technical Report 1
Compilers and standard library implementations should support these standards
Compiler Conformance
There is no C++ compiler or library today that implements the Standard perfectly
Standard C++ Library
• Collection of classes and functions
• Result of conformance to ISO standard
• Incorporates what was STL• Class definitions for standard data
structures• Collection of algorithms used to
manipulate these and other structures
First Program
#include <iostream> Include contents of the header file in the program
using namespace std;
cin is standard input stream object of istream class that allows input from keyboard
cout is standard output stream object, output to screen
int main()In every C++ program, function
First Program
int aNum = 0;
variable (memory location called aNum) to hold number of type integer (int)
<< stream insertion operator
cout <<“Enter a number:- ”;
>> stream extraction operator
cin >>aNum;First program
Exercises
Complete Exercises 1-4
Complete all the tasks
Restart at 3:30pm
Functions
Used to encapsulate data and operations
Can simplify coding
Functions for discrete tasks
Not hundreds of lines of code
Only need to know
Input data
Output data
Functions can be reused
Functions
Need a prototype
Tells the compiler what is coming
Return type
Function name
Parameter list (what is being passed in)
void readChar();
int getNumber();
double numDoubled(int);
Functions
Defining a function (no return value)
void readChar()
{
char aChar;
cout << "Enter a CHARACTER: " ;
cin >> aChar;
cout << "Character is " << aChar << endl;
return;
}
Functions
Calling a function
With no return type
readChar();
With return type int
int myNum = 0;
myNum = readNumber();
cout << “The integer returned is “<< myNum; Func.dev
Functions
Pass by Reference
Previously, pass by Value
Copy of value passed to function
Pass by Reference
Address of value passed to function
FuncRef.dev
Exercises
Complete Exercises 5-7
Complete all the tasks
Todays Topics
Creating classes
Member functions
Data members
Access specifiers
Flow Control
Sequence
Selection
if..else
switch
Repetition
while
for
do…while
Classes and Objects
#include <string>
string Student1;
int numChar = 0;
cout << "Enter your name ";
getline(cin, Student1);
numChar = Student1.length();
cout<<"The number of characters is: "<<numChar;
Classes and Objects
A class is a definition of a compound variable type
An object is an instance of that class
From a student classCreate many objects of type student
James
Sarah
Thomas
Jane
Create an instance (object) of class studentstudent James;
student Sarah;
Classes and Objects
Member functions
Called by objectName.functionName()
James.displayName();
James.setCourseName();
James.setYears();
Data Members (variables of object)
Member functions used to access the data members
Classes and Objects
Data Members
Access specifiers
private: only accessible via member functions of the class
protected: only accessed via member functions of the class and member functions of a derived class
public: can be accessed from any (non-member) function, anywhere the object is visible
Classes and Objects
class StudentCourse
{
private: string courseName;
public:
void setName(string name)
{
courseName = name;
}
}; OxStudents.dev
Classes and Objects
Constructors
Default constructors, provided by compiler
Create your own & initialise data members
StudentCourse (string cName)
{
CourseName = cName;
}
Destructors
Class name preceded by tilde ~
~ StudentCourse ();
Classes and Objects
Separate class files for reusability
Class files with main() means the class cannot be reused.
Only have one main() function
Separate class into own file with .h suffix
Use pre-processor directive to add the file when compiled
#include “myClass.h”
Constructor.dev
Exercises
Complete Exercises 8-13
Complete all the tasks
Re-start 3:45pm
Basic Control FlowSequence
What we have been doing already
Selection
if…else statements
Two possible marks, 49 or 50 stored in score
if(condition is true) if(score >= 50)
cout<<“Passed”; cout<<“Passed”;
else else
cout<<“Failed”; cout<<“Failed”;
Basic Control FlowSelection
switch multiple selection statementsTest must be constant integer value, 1, 10, ‘A’, ‘x’. Not 10.56, 5.2.
switch (Test)
{
case 1:
cout<<“Number1”;
break;
default:
cout<<“NOT Number1”;
} IfSwitch.dev
Basic Control Flow
Repetition
The ‘for’ loop
for (i = 1; i<= 5; i++)
{
do this statement;
now do this statement;
}
Note: = is an assignment
<= is a relational operator
== is an equality operator
Basic Control Flow
Repetitionwhile statement
while(some condition is true)
do the statements;
while (counter < 4)
{
cout<<"Enter mark ";
cin >> mark;
total = total + mark;
counter ++;
}
Basic Control FlowRepetition
do…while loop
do
{
statements
}
while(the condition is true)
do
{
cout<<“Mark number " <<mark <<endl;
mark ++;
}
while (mark <=10); DoWhile.dev
Exercises
Complete Exercises 14-18
Complete all the tasks
Today's Topics
Arrays
Vectors
Function Templates
Pointers
Interfaces
Arrays
Data structure containing same type of data (int, double, string, char, object)
Series of elements each containing one item of data (contiguous memory locations)
Cannot change sizeElement 0 1 2 3 4 5
Experiment Result 34.67 31.78 31.89 34.67 36.23 32.78
Arrays
int inNumbers[20];
an array of 20 integers
char inName[5];
an array of 5 characters
double examMarks[] = {1.2, 3.9, 9.5}
initialise and set size to 3 elements of type double
Arrays
Adding data to arrays.
double examMarks[5];
for(int i = 0; i <5; i++)
{
cout<<"Enter Exam Mark "<<i + 1<<" ";
cin >> examMarks[i];
}
Arrays
Outputting data from an array
for(int i = 0; i <5; i++)
{
cout<<"Exam Mark "<<i + 1<<"is "<< examMarks[i] <<endl;
}
Array.dev
Vectors
Container class, part of Standard Template Library, similar to arrays
Can hold objects of same type of data (int, double, string, char, object)
Can resize, grow, shrink as elements are added or removed from the end
Algorithms to manipulate data
Iterators (like pointers) to cycle through all elements in vector
Vectors
vector<int> vec(20);
for(int i = 0; i<vec.size(); i++)
vec[i] = (i);
for(int i = 0; i<vec.size(); i++)
{
cout<< vec[i]<<" ";
}
VectorsAdding an extra element
cout<<"Enter an Extra Value ";
cin >> aNum;
vec.push_back(aNum);
Print vector of 21 numbers
for(int i = 0; i<vec.size(); i++)
{
cout<< vec[i]<<" ";
}
Vectors
Vector member Function Effect
at(element number) Gets the value contained in the specified element
back() Gets the value in the final element
begin() Points to the first element in vector
clear() Erases the vector
empty() Returns true (1) if the vector is empty, or false (0) otherwise
end() Points to the last element in vector
front() Gets the value in the first element
pop_back() Removes the final element
push_back(value) Adds an element to the end of the vector, containing the specified value
size() Gets the number of elements
reverse();reverse(v.begin() v.end())
An algorithm (global function) that reverses the values in a vector (v)
v.begin() and v.end() are iterators
sort(); sort(v.begin(), v.end())
An algorithm (global function) that sorts the vector (v)
v.begin() and v.end() are iterators
VectorPushBack.dev
Function Templates
One function definition
Separate object code functions created,
Determined by argument
Effectively many overloaded functions
template < typename T >
Value T is a type, not a value - we don’t know that yet
T maximum( T value1, T value2, T value3 )
Function Templatestemplate < typename T >
T maximum( T value1, T value2, T value3 )
{
T maximumValue = value1;
if ( value2 > maximumValue )
maximumValue = value2;
if ( value3 > maximumValue )
maximumValue = value3;
return maximumValue;
} FunctionTemplate.dev
ArraySortVectorTEMPLATEClass
Exercises
Complete Exercises 19, 23, 33
Select the tasks to complete
Pointers
A pointer identifies a memory addressA pointer can be used to point to the location in memory where a variable is stored
Variable: int a = 5;
Pointer: int *ap; (*is dereference operator)
NOTE: *used in declarations section indicates variable is a pointer, not a value
*used before a pointer elsewhere in program, references the value at the address in memory
Pointers
Initialising pointers
int a = 5;
int *ap;
ap = &a; pointer ap now points to the address of variable a.
OR
int a = 5;
int *ap = &a;
PointerArithmetic.dev
Interfaces
Up to now the class definitions have been kept in a header file .h suffix. They contain definition and implementation
Interfaces define the services a class object can use (it’s member functions)
Interfaces should contain no detail of how the class works
Interfaces should separate the class definition from its implementation
Interfaces
An interface defines class member functions as function prototypes but should give no detail of how the member functions are implemented
The member function implementation is held in a source code file with the same base name as the header file with .cpp extension
Interfaces
Student.cpp main function
Student classObject code
Student.h
C++ Library object code
main functionObject code
Student executableapplication
Linker
CompilerCompiler
Interface.dev
Implementation file Class definition/Interface Client Source Code
Exercises
Complete Exercises 34, 35, 36
Select the tasks to complete
IT Learning Programme
C++ Sessions 1-3
www.oucs.ox.ac.uk/itlp/courses.xml