Introduction

advertisement
Object-Oriented Programming
in C++
Lecture 1
Introduction
Introduction
• Staff Information
– Fred Pratt K319
– Cathy French K233
• Module Blackboard site
– Module Information
• Descriptor
• Timetable - 9 lectures + 9 practicals, plus revision/test
preparation in Week 4
• Assessment – portfolio test
• Resources – Visual Studio
– Books
– Study Space – lecture slides and practical exercises
Assumptions
• you have studied programming before
– Java, C, algorithms, object-orientation
• you are new to C++
• have you studied UML diagrams?
Why learn C++?
• one of the most widely used programming
languages
• C++ applications are everywhere
– embedded systems, operating systems, games, realtime systems, servers, applications
• closely maps to hardware instructions
• strongly typed, supports OO programming
– but unlike C# and Java, not every variable and
function needs to belong to a class
• flexible, efficient, stable
• related to other commonly-used languages
– C, C#, Java
Computer Science jobs
http://www.itjobswatch.co.uk/jobs/uk/computer%20science.do
• For the 6 months to 29
June 2011, IT jobs within
the UK citing Computer
Science also mentioned
the following
programming languages
in order of popularity.
• The figures indicate the
number of jobs and their
proportion against the
total number of IT job ads
sampled that cited
Computer Science.
1 4253 (36.01 %) Java
2 3466 (29.35 %) C#
3 3278 (27.76 %) SQL
4 2909 (24.63 %) C++
5 2426 (20.54 %)JavaScript
6 1514 (12.82 %) C
7 1103 (9.340 %) PHP
8 976 (8.264 %) Python
9 762 (6.452 %) Perl
10 490 (4.149 %) Ruby
11 476 (4.030 %) VB.NET
12 434 (3.675 %) T-SQL
13 329 (2.786 %) VB
14 276 (2.337 %) Shell Script
15 256 (2.168 %) Objective-C
Early programming languages
1950s:
1960s:
1970s:
Simula
Lisp
Algol60
Algol68
Fortran
Pascal
BCPL
COBOL
Classic C
PL\1
Red==major commercial use
Yellow==will produce important “offspring”
Stroustrup/Programming
http://www.stroustrup.com/Programming/lecture-slides.html
6
Modern programming
languages
Lisp
Smalltalk
Python
PHP
Fortran77
Simula67
Eiffel
C89
C++
Ada
Pascal
Java95
Java04
Ada98
C#
Object Pascal
COBOL04
COBOL89
C++0x
C++98
Visual Basic
Stroustrup/Programming
http://www.stroustrup.com/Programming/lecture-slides.html
PERL
Javascript
7
Hello World
#include <string>
#include <iostream>
using namespace std;
int main() {
string name;
cout << "What is your name? ";
cin >> name;
cout << "Hello, " << name << "!" << endl;
return 0;
}
• How does this compare to Java? C? C#?
Comparison to Java
• main method
– no parameter
– returns an int
– 0 for success – can omit
• syntax
– brackets, semicolons, variables
• #include directive
– copy the contents of the named file here
• using statement
– use a C++ namespace without qualification
– similar to importing a Java package
string
• part of the standard library namespace
• string is a class
– like String in Java
– unlike C-style strings
• null-terminated character array
• has useful methods
– s.size()
– s.insert(pos, x)
– s.erase(pos)
s.length()
s.append(pos, x)
pos = s.find(x)
C++ primitive types
•
•
Type Name
Bytes
Other Names
int
4
signed
bool
1
char
1
signed char 1
unsigned char 1
short
2
none
none
none
none
short int, signed short int
long
4
long int, signed long int
long long
8
none
float
double
wchar_t
4
8
2
none
none
__wchar_t
Range of Values
–2,147,483,648 to
2,147,483,647
false or true
–128 to 127 by default
–128 to 127
0 to 255
–32,768 to 32,767
–2,147,483,648 to
2,147,483,647
–9,223,372,036,854,775,808
to 9,223,372,036,854,775,807
3.4E +/- 38 (7 digits)
1.7E +/- 308 (15 digits)
0 to 65,535
size is implementation-dependant
table is from MSDN and refers to Microsoft Visual C++
Input and output
• defined in iostream library
• cin is the standard input stream
– from keyboard
• cout is the standard output stream
– to console window
• the streams contain a sequence of characters
cin >> name;
– puts the characters in the input stream into the
variable name
cout << name;
– puts the characters in the variable name into the
output stream
<< and >> operators
• << sends bytes to an output stream object
– insertion operator
• works for all standard C++ data types
• can concatenate output
cout << "Hello, " << name <<
"!" << endl;
– endl replaces the C endline character '\n'
• >> reads bytes from the input stream
– up to a whitespace character
• use istream::getLine() function to
read multiple words
getline(cin, name);
C++ operators
• similar to Java and C
• need to know precedence
http://msdn.microsoft.com/en-us/library/126fe14k.aspx
• the same operator can have a different meaning
depending on the operand type
+
<<
– operator overloading
• when we define C++ classes we can define our
own operator overload
– be sensible!
C++ constructs
• sequence, selection, iteration constructs are
the same as in Java, C and C#
• unlike C, can declare variables anywhere
within a block
– doesn't need to be at the beginning
• C++ for loop
for (int i=0; i < 5; i++) {
cout << "Hello, " << "!" << endl;
}
Example – read-ahead while loop
int sum=0;
int x;
cin >> x;
while (x!=-9999)
{
sum=sum+x;
cin >> x;
}
cout << "The sum is " << sum << endl;
multiway if- example
int x = 8;
if ( x <= 5)
cout << "The number is small: ";
else if (x <= 10)
cout << "The number is medium: ";
else
cout << "The number is big: ";
cout << x << endl
The number is medium: 8
C++ bool
• be careful with boolean operations
– C++ has a bool data type
– but integers and booleans are interchangeable
(like C)
– 0 is false, non-zero is true
– false is 0, true is 1
== comparison operator = assignment operator
int x = 5;
if (x)
true (x is non-zero)
if (x==4)
false (x is 5)
if (x=4)
true (x is now set to 4,
which is non-zero)
Summary
Today we have introduced the C++ language and
compared it to other languages
• same data types and operators
– but their size can vary between C++ implementations
• program structure is similar
• input and output uses iostream
• sequence, selection, iteration constructs are the
same as in Java, C and C#
Practical exercises:
• getting started with Visual Studio and C++
• a few simple C++ programs
Further reading
• “C++: A beginners guide” by Herbert Schildt
http://go.microsoft.com/?linkid=8311584
• string library
http://msdn.microsoft.com/en-us/library/xabz5s9c.aspx
• fundamental types
http://msdn.microsoft.com/en-us/library/cc953fe1.aspx
• C++ operators
http://msdn.microsoft.com/en-us/library/x04xhy0h.aspx
Download