2003 Prentice Hall, Inc. All rights reserved.
1
Chapter 1 – Introduction to Computers
and C++ Programming
Outline
1.1 Introduction
1.2 What is a Computer?
1.3 Computer Organization
1.4 Evolution of Operating Systems
1.5 Personal Computing, Distributed Computing and
Client/Server Computing
1.6 Machine Languages, Assembly Languages, and High-Level
Languages
1.7 History of C and C++
1.8 C++ Standard Library
1.9 Java
1.10 Visual Basic, Visual C++ and C#
1.11 Other High-Level Languages
1.12 Structured Programming
1.13 The Key Software Trend: Object Technology
1.14 Basics of a Typical C++ Environment
1.15 Hardware Trends
2003 Prentice Hall, Inc. All rights reserved.
2
Chapter 1 – Introduction to Computers
and C++ Programming
Outline
1.16 History of the Internet
1.17 History of the World Wide Web
1.18 World Wide Web Consortium (W3C)
1.19 General Notes About C++ and This Book
•
Object-oriented programming
2003 Prentice Hall, Inc. All rights reserved.
4
1.2 What is a Computer?
•
Computer
–
Device capable of performing computations and making
logical decisions
•
Computer programs
–
Sets of instructions that control computer’s processing of
data
•
Hardware
–
Various devices comprising computer
•
Keyboard, screen, mouse, disks, memory, CD-ROM,
processing units, …
•
Software
–
Programs that run on computer
2003 Prentice Hall, Inc. All rights reserved.
5
1.3 Computer Organization
•
Immediately available for processing
•
Retains processed information
–
Until placed on output devices
•
Memory, primary memory
4. Arithmetic and logic unit (ALU)
•
“Manufacturing” section
•
Performs arithmetic calculations and logic decisions
2003 Prentice Hall, Inc. All rights reserved.
7
1.3 Computer Organization
•
Six logical units of computer
5. Central processing unit (CPU)
•
“Administrative” section
•
Supervises and coordinates other sections of computer
5. Secondary storage unit
•
Long-term, high-capacity “warehouse” section
•
Storage
–
Inactive programs or data
•
2003 Prentice Hall, Inc. All rights reserved.
9
1.4 Evolution of Operating Systems
•
Multiprogramming
–
Many jobs or tasks sharing computer’s resources
–
“Simultaneous” operation of many jobs
•
Timesharing
–
1960s
–
Special case of multiprogramming
–
Users access computer through terminals
•
Devices with keyboards and screens
•
Dozens, even hundreds of users
–
Perform small portion of one user’s job, then moves on to
service next user
–
Advantage:
•
User receives almost immediate responses to requests
2003 Prentice Hall, Inc. All rights reserved.
10
–
Information shared across networks
•
Client/server computing
–
File servers
•
Offer common store of programs and data
–
Client computers
•
Access file servers across network
•
UNIX, Linux, Microsoft’s Window-based systems
2003 Prentice Hall, Inc. All rights reserved.
12
1.6 Machine Languages, Assembly
Languages, and High-level Languages
•
Three types of computer languages
1. Machine language
•
Only language computer directly understands
•
“Natural language” of computer
•
Defined by hardware design
–
Machine-dependent
•
•
Convert to machine language
•
Example:
LOAD BASEPAY
ADD OVERPAY
STORE GROSSPAY
2003 Prentice Hall, Inc. All rights reserved.
14
1.6 Machine Languages, Assembly
Languages, and High-level Languages
•
Three types of computer languages
3. High-level languages
•
Similar to everyday English, use common mathematical
notations
•
Single statements accomplish substantial tasks
–
Assembly language requires many instructions to
accomplish simple tasks
•
Translator programs (compilers)
–
Convert to machine language
•
Interpreter programs
–
Directly execute high-level language programs
2003 Prentice Hall, Inc. All rights reserved.
16
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
2003 Prentice Hall, Inc. All rights reserved.
Develop large-scale enterprise applications
–
Enhance functionality of web servers
–
Provide applications for consumer devices
•
Cell phones, pagers, personal digital assistants, …
2003 Prentice Hall, Inc. All rights reserved.
19
1.10 Visual Basic, Visual C++ and C#
•
BASIC
–
Beginner’s All-Purpose Symbolic Instruction Code
–
Mid-1960s: Prof. John Kemeny and Thomas Kurtz
(Dartmouth College)
•
Visual Basic
–
1991
•
Result of Microsoft Windows graphical user interface (GUI)
–
Developed late 1980s, early 1990s
–
Powerful features
•
GUI, event handling, access to Win32 API, object-oriented
programming, error handling
21
1.10 Visual Basic, Visual C++ and C#
•
C#
–
Anders Hejlsberg and Scott Wiltamuth (Microsoft)
–
Designed specifically for .NET platform
–
Roots in C, C++ and Java
•
Easy migration to .NET
–
Event-driven, fully object-oriented, visual programming
language
–
Integrated Development Environment (IDE)
•
Create, run, test and debug C# programs
•
Rapid Application Development (RAD)
–
Language interoperability
2003 Prentice Hall, Inc. All rights reserved.
22
1.11 Other High-level Languages
•
FORTRAN
–
FORmula TRANslator
Structured programming (1960s)
–
Disciplined approach to writing programs
–
Clear, easy to test and debug, and easy to modify
•
Pascal
–
1971: Niklaus Wirth
•
Ada
–
1970s - early 1980s: US Department of Defense (DoD)
–
Multitasking
•
Programmer can specify many activities to run in parallel
2003 Prentice Hall, Inc. All rights reserved.
25
1.13 The Key Software Trend: Object
Technology
•
Objects
–
Reusable software components that model real world items
–
Meaningful software units
•
Date objects, time objects, paycheck objects, invoice objects,
audio objects, video objects, file objects, record objects, etc.