Chapter 1 – Introduction to Computers and C++

Chapter 1 – Introduction to Computers
and C++ Programming
Outline
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
Introduction
What is a Computer?
Computer Organization
Evolution of Operating Systems
Personal Computing, Distributed Computing and
Client/Server Computing
Machine Languages, Assembly Languages, and High-Level
Languages
History of C and C++
C++ Standard Library
Java
Visual Basic, Visual C++ and C#
Other High-Level Languages
Structured Programming
The Key Software Trend: Object Technology
Basics of a Typical C++ Environment
Hardware Trends
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
1
Chapter 1 – Introduction to Computers
and C++ Programming
Outline
1.16
1.17
1.18
1.19
1.20
1.21
1.22
1.23
1.24
1.25
1.26
History of the Internet
History of the World Wide Web
World Wide Web Consortium (W3C)
General Notes About C++ and This Book
Introduction to C++ Programming
A Simple Program: Printing a Line of Text
Another Simple Program: Adding Two Integers
Memory Concepts
Arithmetic
Decision Making: Equality and Relational Operators
Thinking About Objects: Introduction to Object Technology
and the Unified Modeling Language
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
2
3
1.1 Introduction
• Standardized version of C++
– United States
• American National Standards Institute (ANSI)
– Worldwide
• International Organization for Standardization (ISO)
• Portability
– C and C++ programs can run on many different computers
• Compatibility
– Many features of current versions of C++ not compatible
with older implementations
• Enables
– Structured programming
– Object-oriented programming
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
4
1.7 History of C and C++
• History of C
– Evolved from two other programming languages
• BCPL and B
– “Typeless” languages
– Dennis Ritchie (Bell Laboratories)
• Added data typing, other features
– Development language of UNIX
– Hardware independent
• Portable programs
– 1989: ANSI standard
– 1990: ANSI and ISO standard published
• ANSI/ISO 9899: 1990
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
5
1.7 History of C and C++
• History of C++
–
–
–
–
Extension of C
Early 1980s: Bjarne Stroustrup (Bell Laboratories)
“Spruces up” C
Provides capabilities for object-oriented programming
• Objects: reusable software components
– Model items in real world
• Object-oriented programs
– Easy to understand, correct and modify
– Hybrid language
• C-like style
• Object-oriented style
• Both
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
6
1.8 C++ Standard Library
• C++ programs
– Built from pieces called classes and functions
• C++ standard library
– Rich collections of existing classes and functions
• “Building block approach” to creating programs
– “Software reuse”
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
The Standard C++ library consists of 51 required headers.
Of these 51 headers, 16 constitute the Standard Template Library, or STL
<algorithm>
<locale>
<utility>
<bitset>
<map>
<valarray>
<complex>
<memory>
<vector>
<deque>
<new>
<exception>
<numeric>
<fstream>
<ostream>
<functional>
<queue>
<iomanip>
<set>
<ios>
<sstream>
<iosfwd>
<stack>
<iostream>
<stdexcept>
<istream>
<streambuf>
<iterator>
<string>
<limits>
<strstream>
<list>
<typeinfo>
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
7
8
The Standard C++ library works in conjunction with the 18 headers from the
Standard C library, sometimes with small alterations
<cassert>
<assert.h>
for enforcing assertions when functions execute
<cctype>
<ctype.h>
for classifying characters
<cerrno>
<errno.h>
for testing error codes reported by library functions
<cfloat>
<float.h>
for testing floating-point type properties
<ciso646>
<iso646.h>
for programming in ISO 646 variant character sets
<climits>
<limits.h>
for testing integer type properties
<clocale>
<locale.h>
for adapting to different cultural conventions
<cmath>
<math.h>
for computing common mathematical functions
<csetjmp>
<setjmp.h>
for executing nonlocal goto statements
<csignal>
<signal.h>
for controlling various exceptional conditions
<cstdarg>
<stdarg.h>
for accessing a varying number of arguments
<cstddef>
<stddef.h>
for defining several useful types and macros
<cstdio>
<stdio.h>
for performing input and output
<cstdlib>
<stdlib.h>
for performing a variety of operations
<cstring>
<string.h>
for manipulating several kinds of strings
<ctime>
<time.h>
for converting between various time and date formats
<cwchar>
<wchar.h>
for manipulating wide streams and several kinds of strings
<cwctype>
<wctype.h>
for classifying wide characters
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
9
1.13 The Key Software Trends:
• Structured programming (1960s)
– Disciplined approach to writing programs
– Clear, easy to test and debug, and easy to modify
• Objects
– Meaningful software units that model real world items
• Any noun can be represented as an object
– CAR ------ ENGINE ------TYRE
– Reusable software components
• Libraries such as MFC (Microsoft Foundation Classes)
– More understandable, better organized and easier to maintain
than procedural programming
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
10
1.14 Basics of a Typical C++ Environment
• C++ systems
– Program-development environment
– Language
– C++ Standard Library
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
11
1.14 Basics of a Typical C++ Environment
Phases of C++ Programs:
1. Edit
2. Preprocess
3. Compile
Editor
Preprocessor
Compiler
Linker
4. Link
Loader
5. Load
Disk
6. Execute
Disk
Program is created in
the editor and stored
on disk.
Disk
Preprocessor program
processes the code.
Disk
Compiler creates
object code and stores
it on disk.
Disk
Primary
Memory
Loader puts program
in memory.
..
..
..
Primary
Memory
CPU
..
..
..
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
Linker links the object
code with the libraries,
creates a.out and
stores it on disk
CPU takes each
instruction and
executes it, possibly
storing new data
values as the program
executes.
12
1.14 Basics of a Typical C++ Environment
• Input/output
– std::cin
• Standard input stream
• Normally keyboard
– std::cout
• Standard output stream
• Normally computer screen
– std::cerr
• Standard error stream
• Display error messages
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
1.21 A Simple Program:
Printing a Line of Text
•
Preprocessor directives
– Processed by
preprocessor before
compiling
– Begin with #
•
Comments
– Document programs
– Improves program
readability
– Ignored by compiler ...
No bloat
– Single-line comment
• Single line with //
• Multi-line with
/* ... */
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
11
22
33
44
55
66
77
88
99
10
10
11
11
12
12
//
// Fig.
Fig. 1.2:
1.2: fig01_02.cpp
fig01_02.cpp
//
A
first
program
// A first program in
in C++.
C++.
#include
<iostream>
#include <iostream>
//
// begin
begin program
program execution
execution
int
main()
int main()
{{
std::cout
std::cout <<
<< "Welcome
"Welcome to
to C++!\n";
C++!\n";
return
return 0;
0;
//
// program
program ended
ended successfully
successfully
}} //
// end
end function
function main
main
13
1
2
3
4
5
6
7
8
9
10
11
12
// Fig. 1.2: fig01_02.cpp
// A first program in C++.
Function main
#include <iostream>
Single-line comments.
Outline
returns an
directive to
integer
value.
Left brace
{ begins Preprocessor
function
fig01_02.cpp
include
input/output Statements
stream
begins
execution
Function
main appears
body. program
end with a(1 of 1)
header
file <iostream>.
exactly once
in every
C++ semicolon ;.
program..
fig01_02.cpp
// function main
int main()
{
std::cout << "Welcome to C++!\n";
return 0;
//
} // end function
Welcome to C++!
Corresponding right brace }
indicate
thatbody.
program ended successfully
ends
function
Stream
insertion
Name cout
belongs
to operator.
main namespace std.
Keyword return is one of
several means to exit
function; value 0 indicates
program terminated
successfully.
output (1 of 1)
 2003 Prentice Hall, Inc.
All rights reserved.
14
1.21 A Simple Program:
Printing a Line of Text
•
•
Escape characters
Standard output stream object
std::cout
•
Namespace std::
• specifies cout belongs to
“namespace” std
• using statements
using std::cout ;
using std::cin ;
• Eliminate use of std:: prefix
• Lets us write cout instead of
std::cout
using namespace std ;
• Also consider using this format
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
Escape Sequence
Description
\n
Newline. Position the screen cursor to the
beginning of the next line.
\t
Horizontal tab. Move the screen cursor to the next
tab stop.
\r
Carriage return. Position the screen cursor to the
beginning of the current line; do not advance to the
next line.
\a
Alert. Sound the system bell.
\\
Backslash. Used to print a backslash character.
\"
Double quote. Used to print a double quote
character.
15
1
2
3
4
5
6
7
8
9
10
11
12
13
// Fig. 1.4: fig01_04.cpp
// Printing a line with multiple statements.
#include <iostream>
// function main begins program execution
int main()
{
std::cout << "Welcome ";
std::cout << "to C++!\n";
return 0;
Outline
Multiple stream insertion
statements produce one line
of output.
fig01_04.cpp
(1 of 1)
fig01_04.cpp
output (1 of 1)
// indicate that program ended successfully
} // end function main
Welcome to C++!
 2003 Prentice Hall, Inc.
All rights reserved.
16
1
2
3
4
5
6
7
8
9
10
11
12
// Fig. 1.5: fig01_05.cpp
// Printing multiple lines with a single statement
#include <iostream>
// function main begins program executionUsing newline characters
print on multiple lines.
int main()
{
std::cout << "Welcome\nto\n\nC++!\n";
return 0;
Outline
to
fig01_05.cpp
(1 of 1)
fig01_05.cpp
output (1 of 1)
// indicate that program ended successfully
} // end function main
Welcome
to
C++!
 2003 Prentice Hall, Inc.
All rights reserved.
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Fig. 1.6: fig01_06.cpp
// Addition program.
#include <iostream>
Outline
// function main begins program execution
int main()
Declare integer variables.
{
int integer1; // first number to be input by user
int integer2; // second number to be input by user
Usewhich
stream
extraction
int sum;
// variable in
sum
will be stored
std::cout << "Enter first
std::cin >> integer1;
fig01_06.cpp
(1 of 1)
operator with standard input
stream to obtain
user input.
integer\n";
// prompt
// read an integer
std::cout << "Enter second integer\n"; // prompt
std::cin >> integer2;
// read
an integer
Calculations can
be performed
in output
sum = integer1 + integer2;
for lines 18 and 20:
// assign result to sum
std::cout << "Sum is " <<
std::cout << "Sum is " << sum << std::endl; // print
return 0;
statements: alternative
Stream manipulator
std::endl outputs a
newline, then “flushes output
integer1 + integer2 << std::endl;
sum buffer.”
// indicate that program ended successfully
} // end function main
Concatenating, chaining or
cascading stream insertion
operations.
 2003 Prentice Hall, Inc.
All rights reserved.
18
Enter first integer
45
Enter second integer
72
Sum is 117
Outline
fig01_06.cpp
output (1 of 1)
 2003 Prentice Hall, Inc.
All rights reserved.
19
20
Types
• Types
– Common data types
• int - integer numbers
• char - characters
• double - floating point
numbers
– Declare variables with name
and data type before use
int integer1;
int integer2;
int sum;
– Can declare several variables of
same type in one declaration
• Comma-separated list
int integer1,
integer2, sum;
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
21
1.24
Arithmetic
• Arithmetic calculations
– *
• Multiplication
– /
• Division
• Integer division truncates remainder
– 7 / 5 evaluates to 1
– %
• Modulus operator returns remainder
– 7 % 5 evaluates to 2
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
22
1.24
Arithmetic
• Rules of operator precedence
– Operators in parentheses evaluated first
• Nested/embedded parentheses
– Operators in innermost pair first
– Multiplication, division, modulus applied next
• Operators applied from left to right
– Addition, subtraction applied last
Operator(s)
Operation(s)
• Operators
applied fromOrder
leftoftoevaluation
right (precedence)
()
Parentheses
*, /, or %
Multiplication Division Evaluated second. If there are several, they re
Modulus
evaluated left to right.
+ or -
Addition
Subtraction
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
Evaluated first. If the parentheses are nested, the
expression in the innermost pair is evaluated first. If
there are several pairs of parentheses “on the same level”
(i.e., not nested), they are evaluated left to right.
Evaluated last. If there are several, they are
evaluated left to right.
1.25 Decision Making: Equality and
Relational Operators
Sta nd a rd a lg e b ra ic
eq ua lity op e ra tor or
rela tiona l o p e ra tor
C++ eq ua lity
o r rela tiona l
o p e ra tor
Exa m p le
o f C++
c o nd ition
Mea ning of
C++ c o nd itio n
>
>
x > y
x is greater than y
<
<
x < y
x is less than y
≥
>=
x >= y
x is greater than or equal to y
≤
<=
x <= y
x is less than or equal to y
=
==
x == y
x is equal to y
≠
!=
x != y
x is not equal to y
Relational operators
Equality operators
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Fig. 1.14: fig01_14.cpp
// Using if statements, relational
// operators, and equality operators.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
// program uses cout
// program uses cin
// program uses endl
Outline
fig01_14.cpp
(1 of 2)
using statements eliminate
need for std:: prefix.
variables.
// function main begins programDeclare
execution
int main()
{
Can write
cout
cin
int num1; // first number
to be
readand
from
user
withouttostd::
prefix.
int num2; // second number
be read
from user
cout << "Enter two integers, and I will tell you\n"
if structure compares values
<< "the relationships they satisfy: ";
of num1
and num2
to test for
If condition
is true
cin >> num1 >> num2;
// read
two integers
if ( num1 == num2 )
cout << num1 << " is
(i.e.,
equality.
values are equal), execute this
if structure compares
values
statement.
If condition
is true (i.e.,
of num1
andnum2
num2
test for
equal
to " <<
<< to
endl;
values are not equal), execute
inequality.
this statement.
if ( num1 != num2 )
cout << num1 << " is not equal to " << num2 << endl;
 2003 Prentice Hall, Inc.
All rights reserved.
24
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
if ( num1 < num2 )
cout << num1 << " is less than " << num2 << endl;
if ( num1 > num2 )
cout << num1 << " is greater than " << num2 << endl;
if ( num1 <= num2 )
cout << num1 << " is less than or equal to "
<< num2 << endl;
Outline
fig01_14.cpp
Statements
may
(2 of
2) be split over
several lines.
fig01_14.cpp
output (1 of 2)
if ( num1 >= num2 )
cout << num1 << " is greater than or equal to "
<< num2 << endl;
return 0;
// indicate that program ended successfully
} // end function main
Enter two integers, and I will tell you
the relationships they satisfy: 22 12
22 is not equal to 12
22 is greater than 12
22 is greater than or equal to 12
 2003 Prentice Hall, Inc.
All rights reserved.
25
Enter two integers, and I will tell you
the relationships they satisfy: 7 7
7 is equal to 7
7 is less than or equal to 7
7 is greater than or equal to 7
Outline
fig01_14.cpp
output (2 of 2)
 2003 Prentice Hall, Inc.
All rights reserved.
26
Constants
No Magic numbers
• You often need constants in your program:
– gravitational constant (acceleration by earth's gravity,
approximately 32 feet per second per second)
– speed of light
– π
– marks used to define grades (45, 50, 65, 75, 85 etc)
– size of "window" to be displayed on screen (width = ...,
height = ...)
• It is a bad idea to type in the value of the constant
at each place you use it:
– /* cannonball is accelerated to earth by gravity ... */
Vert_velocity = -32.0*t*t;
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
27
28
Constants
No Magic numbers
• C++ allows you to define constants
– named entities that have an fixed values set before the code
is run.
– Constants may be defined local to a particular routine,
• but often they are defined at the start of a file so that they can
be used in any routine defined later in that file.
• A constant definition has a form like
const Type Name = Value;
• For example
const double PI = 3.14127;
const double Neutral_pH = 7.0; // pH of pure water
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.
In some book you will
see constants defined
like this
#define PI 3.14.16
Avoid this form
29
Example
PD GMIT modified from  2003 Prentice Hall, Inc. All rights reserved.