introduction to c++ programming sessions 1-3

Post on 24-Feb-2016

33 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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

top related