58
IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Embed Size (px)

Citation preview

Page 1: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

IT Learning Programme

Introduction toC++ ProgrammingSessions 1-3

IT Learning Group

Page 2: IT Learning Programme 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 notesCopies of slides

Page 3: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 4: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

♫♪

Page 5: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

What you know already…

Nothing is assumed

Page 6: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 7: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

What is OOP?

Object Oriented ProgrammingA way of modelling individual objects in the real world

Students

Vehicles

Buildings

ATM’s

etc, etc

Page 8: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 9: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 10: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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”

Page 11: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 12: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 13: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 14: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Compiler Conformance

There is no C++ compiler or library today that implements the Standard perfectly

Page 15: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 16: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 17: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 18: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Exercises

Complete Exercises 1-4

Complete all the tasks

Restart at 3:30pm

Page 19: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 20: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 21: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Functions

Defining a function (no return value)

void readChar()

{

char aChar;

cout << "Enter a CHARACTER: " ;

cin >> aChar;

cout << "Character is " << aChar << endl;

return;

}

Page 22: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 23: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 24: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Exercises

Complete Exercises 5-7

Complete all the tasks

Page 25: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Todays Topics

Creating classes

Member functions

Data members

Access specifiers

Flow Control

Sequence

Selection

if..else

switch

Repetition

while

for

do…while

Page 26: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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;

Page 27: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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;

Page 28: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 29: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 30: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Classes and Objects

class StudentCourse

{

private: string courseName;

public:

void setName(string name)

{

courseName = name;

}

}; OxStudents.dev

Page 31: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 32: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 33: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Exercises

Complete Exercises 8-13

Complete all the tasks

Re-start 3:45pm

Page 34: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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”;

Page 35: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 36: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 37: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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 ++;

}

Page 38: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 39: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Exercises

Complete Exercises 14-18

Complete all the tasks

Page 40: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Today's Topics

Arrays

Vectors

Function Templates

Pointers

Interfaces

Page 41: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 42: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 43: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Arrays

Adding data to arrays.

double examMarks[5];

for(int i = 0; i <5; i++)

{

cout<<"Enter Exam Mark "<<i + 1<<" ";

cin >> examMarks[i];

}

Page 44: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Arrays

Outputting data from an array

for(int i = 0; i <5; i++)

{

cout<<"Exam Mark "<<i + 1<<"is "<< examMarks[i] <<endl;

}

Array.dev

Page 45: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 46: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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]<<" ";

}

Page 47: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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]<<" ";

}

Page 48: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 49: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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 )

Page 50: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 51: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Exercises

Complete Exercises 19, 23, 33

Select the tasks to complete

Page 52: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 53: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 54: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 55: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 56: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

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

Page 57: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

Exercises

Complete Exercises 34, 35, 36

Select the tasks to complete

Page 58: IT Learning Programme Introduction to C++ Programming Sessions 1-3 IT Learning Group

IT Learning Programme

C++ Sessions 1-3

www.oucs.ox.ac.uk/itlp/courses.xml