Upload
kiril
View
34
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Introduction to C++ Programming Sessions 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 notes Copies of slides. Your safety is important. Where is the fire exit? - PowerPoint PPT Presentation
Citation preview
IT Learning Programme
Introduction toC++ ProgrammingSessions 1-3
IT Learning Group
Today’s arrangements
Your teacher is: Ian MillerYour demonstrators are: Chris, Hasan, Ronald
We finish at: 5:00pmYou should have: Class notes
Copies of slides
Your safety is important
Where is the fire exit?Beware of hazards
Tripping over bags and coatsPlease tell us if anything does not workLet us know if you have any other concerns
Your comfort is important
The toilets are along the corridor just outside the teaching roomsThe rest area is where you registered;it has vending machines and a water coolerThe seats at the computers are adjustableYou can adjust the monitors for height, tilt and brightness
♫♪
What you know already…
Nothing is assumed
Today's TopicsC++ and OOP?CompilersISO and ANSIStandard C++ LibraryThe Standard Template Library (STL )Dev-C++
First ProgramFundamental data types
string classFunctions
What is OOP?
Object Oriented ProgrammingA way of modelling individual objects in the real world
StudentsVehiclesBuildingsATM’setc, 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 - behaviourMember variables/data membersrepresent real object - state
Creating a C++ programEditor
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.
001010100111011011000110100110110011111100100000100000111110
“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 001010100111011011000110100110110011111101011111
COMPILER
C++ Talk
Binary TalkEnter the first number:
Enter the second number:
17
9Monitor
26
C++ Compilers
Many and variedSun Studio 10 Solaris, LinuxVisualAge C++ LinuxGCC Multi-platformMicrosoft Visual C++ WindowsCygwin LinuxDev-C++ WindowsXcode Apple
Compiler ConformanceISO International Standards Organisation
ANSI - American National Standards Institute Standard
C++98C++20032005 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 Programint 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
FunctionsUsed to encapsulate data and operations
Can simplify codingFunctions for discrete tasksNot hundreds of lines of code
Only need to knowInput dataOutput data
Functions can be reused
FunctionsNeed a prototype
Tells the compiler what is comingReturn typeFunction nameParameter list (what is being passed in)
void readChar();int getNumber();double numDoubled(int);
FunctionsDefining a function (no return value)
void readChar(){char aChar; cout << "Enter a CHARACTER: " ;cin >> aChar; cout << "Character is " << aChar << endl;return;}
FunctionsCalling a function
With no return type readChar();
With return type int int myNum = 0;
myNum = readNumber();cout << “The integer returned is “<< myNum; Func.dev
FunctionsPass by Reference
Previously, pass by Value Copy of value passed to function
Pass by ReferenceAddress of value passed to function
FuncRef.dev
Exercises
Complete Exercises 5-7
Complete all the tasks
Todays TopicsCreating classesMember functionsData membersAccess specifiers
Flow ControlSequenceSelection
if..elseswitch
Repetitionwhilefordo…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 ObjectsA class is a definition of a compound variable typeAn object is an instance of that classFrom a student class
Create many objects of type student James Sarah Thomas Jane
Create an instance (object) of class studentstudent James;student Sarah;
Classes and ObjectsMember 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 classprotected: only accessed via member functions of the class and member functions of a derived classpublic: can be accessed from any (non-member) function, anywhere the object is visible
Classes and Objectsclass StudentCourse { private: string courseName; public:
void setName(string name) { courseName = name;
} }; OxStudents.dev
Classes and ObjectsConstructors
Default constructors, provided by compilerCreate your own & initialise data membersStudentCourse (string cName) {
CourseName = cName;}
DestructorsClass name preceded by tilde ~~ StudentCourse ();
Classes and Objects
Separate class files for reusabilityClass files with main() means the class cannot be reused.Only have one main() functionSeparate class into own file with .h suffixUse 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
Selectionif…else statementsTwo possible marks, 49 or 50 stored in score
if(condition is true) if(score >= 50)cout<<“Passed”; cout<<“Passed”;
else elsecout<<“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 FlowRepetition
The ‘for’ loopfor (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 FlowRepetition
while statementwhile(some condition is true)
do the statements;while (counter < 4) { cout<<"Enter mark "; cin >> mark; total = total + mark; counter ++; }
Basic Control FlowRepetition
do…while loopdo{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
ArraysVectors
Function TemplatesPointersInterfaces
ArraysData 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
ArraysAdding 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 arraysCan hold objects of same type of data (int, double, string, char, object)Can resize, grow, shrink as elements are added or removed from the endAlgorithms to manipulate dataIterators (like pointers) to cycle through all elements in vector
Vectorsvector<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]<<" "; }
VectorsVector member Function Effect
at(element number) Gets the value contained in the specified element
back() Gets the value in the final elementbegin() Points to the first element in vectorclear() Erases the vectorempty() Returns true (1) if the vector is empty, or false (0) otherwise
end() Points to the last element in vectorfront() Gets the value in the first elementpop_back() Removes the final elementpush_back(value) Adds an element to the end of the vector, containing the
specified valuesize() 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 iteratorssort(); 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 definitionSeparate object code functions created,
Determined by argumentEffectively 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
PointersA pointer identifies a memory address
A pointer can be used to point to the location in memory where a variable is storedVariable: 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
PointersInitialising 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
InterfacesUp 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 worksInterfaces should separate the class definition from its implementation
InterfacesAn 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 executableapplicationLinker
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