Transcript CHAP01
Introduction to Computers,
Problem Solving, and
Programming
Chapter 1
1.1 Overview of Computers
Computer - “A device for counting or
computing”
Dr. John Atanasoff - 1st computer.
ENIAC 1946 at U of Penn
Dr. John Von Neumann - Princeton
– Stored program concept
– Memory rather than wires and switches.
Computing History
2
Overview of Computers
Von Neumann architecture basis for today's
computers
VLSI Technology made computers
affordable, small and available to the public
How programming has changed over time
3
1.2 Computer Hardware
Every computer is organized roughly into
six parts
– CPU - central processing unit
• Where decisions are made, computations are
performed, and input/output requests are delegated
– Main Memory
• Stores information being processed by the CPU
– Secondary Memory
• Stores data and programs
4
Computer Hardware
– Input devices
• Allows people to supply information to computers
– Output devices
• Allows people to receive information from
computers
– Network connection
• Modems / Ethernet interface
5
Computer Components
6
Main Memory
Address
Contents
0
1
1024
-27.2
354
.005
75.62
7
Main Memory
Stores
– programs
– data
– results
Types
– RAM
– ROM
8
Secondary Memory & Storage
Semi permanent data-storage capability
– Tape or Disk
– Hard disk
– CD ROM
Secondary memory has much more storage
capacity
9
CPU
“Brains” of the computer
– Arithmetic calculations are performed using the
Arithmetic/Logical Unit or ALU
– Control unit decodes and executes instructions
Arithmetic operations are performed using
binary number system
10
CPU
Fundamental building block is a switch
– Switches are made from ultrasmall transistors
Examples
– The Pentium ® processor contains about three
million transistors
– The Pentium Pro ® has about 5.5 million
transistors
11
Input / Output Devices
Accessories that allow computer to perform
specific tasks
– Receiving information for processing
– Return the results of processing
– Store information
Common input and output devices
– Printer
– Keyboard
Joystick
Monitor
CD-ROM
12
Computer Networks
LAN - Local area network
– Organizational
WAN - Wide area network
– Internet
13
World Wide Web
Introduced 1989
Developed by CERN
– European Laboratory for Particle Physics
Web browser
– GUI
– Netscape
– IE
14
1.3 Computer Software
Application software
– Programs designed to perform specific tasks
that are transparent to the user
System software
– Programs that support the execution and
development of other programs
– Two major types
• Operating systems
• Translation systems
15
Application Software
Application software is the software that
has made using computers indispensable
and popular
Common application software
–
–
–
–
–
Word processors
Desktop publishing programs
Spreadsheets
Presentation managers
Drawing programs
16
Operating System
Controls and manages the computing resources
Important services that an operating system provides
– File system
– Commands that allow for manipulation of the file
system
– Ability to perform input and output on a variety of
devices
– Management of the running systems
Examples
– MSDOS ®, Windows ®, Unix ®
17
Programming Languages
Machine Language
– “Native tongue” of the computer
– Binary 0s and 1s that specify what to do
• 0010 0000 0000 0100
• 1000 0000 0000 0101
• 0011 0000 0000 0110
High - Level Languages
– Resemble human language (C++, C, Pascal)
• cost = price + tax;
18
Programming Languages
Language Standard
– Syntax (grammatical form) (rules)
– Portable
• programs used without modification
Source Program
Object Program
Executable Program
19
Object Oriented Programming
OOP derived from C
Bjarne Stroustrup
Popular because of reuse
– Classes
– Objects
Organized in a Hierarchy
– Super Classes
– Sub Classes
20
OO Programming and
Structured Programming
Object-oriented design and programming
supports good software engineering
Object-oriented design promotes thinking
about software in a way that models the real
world
21
OO Programming and
Structured Programming
Algorithms are the basis for the procedural
sections (Structured Programs)
– Highly structured
– Top-down design
– Step-wise refinement
22
Object Oriented Design
Abstraction
– Extract the relevant properties of an object
while ignoring inessential details
Encapsulation
– Breaking down an object into parts, hiding and
protecting its essential information, and
supplying an interface to modify the
information in a controlled and useful manner
23
Object Oriented Design
Modularity
– Dividing an object into smaller pieces or
modules such that the object is easier to
understand and manipulate
Hierarchy
– Ranking or ordering of objects based on some
relationship between them
24
Abstraction
Process of extracting only the relevant
properties of an object
Extracted properties define a view of the
object
25
Abstraction
Car dealer views a car from selling features
standpoint
– Price, warranty, color, etc.
Mechanic views a car from systems
maintenance standpoint
– Oil, oil filter, spark plugs, etc.
26
Encapsulation
Breaking down an object into parts, hiding
and protecting its essential information, and
supplying an interface to modify the
information in a controlled and useful
manner
By hiding the information its representation
and content can be changed without
affecting other parts of the system
27
Encapsulation
Example - car radio
– Controlled by switches and knobs
– The details of how it works is hidden
28
Modularity
Dividing an object so that the object holds
useful information and it is easier to
understand
Most complex systems are modular
– Cooling System
– Ignition System
– Fuel System
29
Modularity
Example - Automobile can be decomposed
into subsystems
– Cooling system
• Radiator
• Thermostat
• Water pump
– Ignition system
• Battery
• Starter
• Spark plugs
30
Hierarchy
Ranking or ordering of objects based on
some relationship between them
Hierarchies facilitate understanding
complex organizations and systems
– Example - a company hierarchy helps
employees understand the structure of their
company and their positions
31
OO Classes
Later we will use data abstractions
– C++ language
Will apply OO techniques
– Structured Programming
– Object Oriented Programming
Model our own objects or abstractions
32
1.4 Processing a High-Level
Language Program
Set of programs used to develop software
A key component of a is a translator
Types of translators
– Compiler
– Linker
Examples
– g++, Borland C++ ®, Microsoft Visual C++ ®
33
Processing a Program
Editor used to enter the program
– Source program (file.cpp)
– UNIX vi text editor
Compiler translates the source program
– Displays syntax errors (not descriptive)
Linker/Loader to combine object file with
other object files
– Executable program
34
Processing a Program
Major activities
– Editing
– Compiling
– Linking with pre-compiled files
• Object files
• Library modules
– Loading and executing
– Viewing the behavior of the program
35
Process Cycle
36
1.5 Software Development
Method
Problem Analysis - (Correct Problem)
–
–
–
–
Identify data objects
Goal to model properties
Determine Input / Output data
Constraints on the problem
Design
– Decompose into smaller problems
– Top-down design (divide and conquer)
– Develop Algorithm (Desk check)
37
Software Development
Method
Implementation
– Writing the algorithm
Testing
– Verify the program meets requirements
– System and Unit test
Documentation
– Key part in the development process
38
Software Development
Method
Software engineering
– Area of computer science concerned with
building large software systems
Challenge
– Tremendous advances in hardware have not
been accompanied by comparable advances in
software
39
Software Engineering Goals
Reliability
– An unreliable life-critical system can be fatal
Understandability
– Future development becomes very difficult if
software is hard to understand
Cost Effectiveness
– Cost to develop and maintain should not exceed
profit
40
Software Engineering Goals
Adaptability
– System that is adaptive is easier to alter and
expand
Reusability
– Improves reliability and maintainability, and
reduces development costs
41
1.6 Applying the Software
Development Method
Case Study:
Kilometers
Converting Miles to
– Problem Your summer surveying job requires
you to study some maps that give distances in
kilometers and some that use miles. You and
your coworkers prefer to deal in metric
measurements. Write a program that performs
the necessary conversion.
42
Applying the Software
Development Method
– Analysis The first step in solving this problem
is to determine what you are asked to do. You
must convert from one system of measurement
to another, but are you supposed to convert
from kilometers to miles, or vice versa? The
problem states that you prefer to deal in metric
measurements, so you must convert distance
measurements in miles to kilometers.
43
Applying the Software
Development Method
– Design The next step is to formulate the
algorithm that solves the problem. Begin by
listing the three major steps, or sub problems,
of the algorithm.
– Implementation To implement the solution,
you must write the algorithm as a C++
program.
– Testing How do you know the sample run is
correct?
44
1.7 Professional Ethics for
Computer Programmers
Privacy and Misuse of Data
Computer Hacking
Plagiarism and Software Piracy
Misuse of a Computer Resource
45