Chapter 1: An Overview of Computers and Programming Languages
Chapter 1: An Overview of Computers and Programming Languages
Chapter 1: An Overview of Computers and Programming Languages
1:
An
Overview
of
Computers
and
Programming
Languages
Programming Fundamentals
Programming with Selasie
Fundamentals A. Brown
with Selasie A. Brown selasieb@gmail.com
2
selasieb@gmail.com
Objec=ves
(cont’d.)
– Discover
what
a
compiler
is
and
what
it
does
– Examine
a
C++
program
– Explore
how
a
C++
program
is
processed
– Learn
what
an
algorithm
is
and
explore
problem-‐
solving
techniques
– Become
aware
of
structured
design
and
object-‐
oriented
design
programming
methodologies
– Become
aware
of
Standard
C++
and
ANSI/ISO
Standard
C++
Programming Fundamentals
Programming with Selasie
Fundamentals A. Brown
with Selasie A. Brown selasieb@gmail.com
3
selasieb@gmail.com
Introduc=on
• Without
soEware,
the
computer
is
useless
• SoEware
is
developed
with
programming
languages
– C++
is
a
programming
language
• C++
suited
for
a
wide
variety
of
programming
tasks
Programming Fundamentals
Programming with Selasie
Fundamentals A. Brown
with Selasie A. Brown selasieb@gmail.com
4
selasieb@gmail.com
A
Brief
Overview
of
the
History
of
Computers
• Early
calcula=on
devices
– Abacus,
Pascaline
– Leibniz
device
– Jacquard’s
weaving
looms
– Babbage
machines:
difference
and
analy=c
engines
– Hollerith
machine
Programming Fundamentals
Programming with Selasie
Fundamentals A. Brown
with Selasie A. Brown selasieb@gmail.com
5
selasieb@gmail.com
A
Brief
Overview
of
the
History
of
Computers
(cont’d.)
• Early
computer-‐like
machines
– Mark
I
– ENIAC
– Von
Neumann
architecture
– UNIVAC
– Transistors
and
microprocessors
Programming Fundamentals
Programming with Selasie
Fundamentals A. Brown
with Selasie A. Brown selasieb@gmail.com
6
selasieb@gmail.com
A
Brief
Overview
of
the
History
of
Computers
(cont’d.)
• Categories
of
computers
– Mainframe
computers
– Midsize
computers
– Micro
computers
(personal
computers)
Programming Fundamentals
Programming with Selasie
Fundamentals A. Brown
with Selasie A. Brown selasieb@gmail.com
7
selasieb@gmail.com
Elements
of
a
Computer
System
• Hardware
• CPU
• Main
memory
• Secondary
storage
• Input/Output
devices
• SoEware
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
10
Central
Processing
Unit
and
Main
Memory
(cont’d.)
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
11
Central
Processing
Unit
and
Main
Memory
(cont’d.)
• Random
access
memory
– Directly
connected
to
the
CPU
• All
programs
must
be
loaded
into
main
memory
before
they
can
be
executed
• All
data
must
be
brought
into
main
memory
before
it
can
be
manipulated
• When
computer
power
is
turned
off,
everything
in
main
memory
is
lost
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
16
The
Language
of
a
Computer
• Analog
signals:
con=nuous
wave
forms
• Digital
signals:
sequences
of
0s
and
1s
• Machine
language:
language
of
a
computer;
a
sequence
of
0s
and
1s
• Binary
digit
(bit):
the
digit
0
or
1
• Binary
code
(binary
number):
a
sequence
of
0s
and
1s
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
22
The
Evolu=on
of
Programming
Languages
(cont’d.)
• Using
assembly
language
instruc=ons,
wages
= rate • hours
can
be
wriien
as:
LOAD rate
MULT hour
STOR wages
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
23
The
Evolu=on
of
Programming
Languages
(cont’d.)
• High-‐level
languages
include
Basic,
FORTRAN,
COBOL,
Pascal,
C,
C++,
C#,
and
Java
• Compiler:
translates
a
program
wriien
in
a
high-‐level
language
into
machine
language
• The
equa=on
wages = rate • hours
can
be
wriien
in
C++
as:
wages = rate * hours;
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
24
Processing
a
C++
Program
#include <iostream>
using namespace std;
int main()
{
cout << "My first C++ program." << endl;
return 0;
}
Sample
Run:
My first C++ program.
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
25
Processing
a
C++
Program
(cont’d.)
• To
execute
a
C++
program:
– Use
an
editor
to
create
a
source
program
in
C++
– Preprocessor
direc=ves
begin
with
#
and
are
processed
by
the
preprocessor
– Use
the
compiler
to:
• Check
that
the
program
obeys
the
language
rules
• Translate
into
machine
language
(object
program)
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
26
Processing
a
C++
Program
(cont’d.)
• To
execute
a
C++
program
(cont'd.):
– Linker:
• Combines
object
program
with
other
programs
provided
by
the
SDK
to
create
executable
code
• Library:
contains
prewriien
code
you
can
use
– Loader:
• Loads
executable
program
into
main
memory
– The
last
step
is
to
execute
the
program
• Some
IDEs
do
all
this
with
a
Build
or
Rebuild
command
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
27
Processing
a
C++
Program
(cont’d.)
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
28
Programming
with
the
Problem
Analysis–Coding–Execu=on
Cycle
• Algorithm:
– Step-‐by-‐step
problem-‐
solving
process
– Solu=on
achieved
in
finite
amount
of
=me
• Programming
is
a
process
of
problem
solving
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
29
The
Problem
Analysis–Coding–
Execu=on
Cycle
(cont’d.)
• Step
1:
Analyze
the
problem
– Outline
the
problem
and
its
requirements
– Design
steps
(algorithm)
to
solve
the
problem
• Step
2:
Implement
the
algorithm
– Implement
the
algorithm
in
code
– Verify
that
the
algorithm
works
• Step
3:
Maintenance
– Use
and
modify
the
program
if
the
problem
domain
changes
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
30
The
Problem
Analysis–Coding–
Execu=on
Cycle
(cont’d.)
• Thoroughly
understand
the
problem
and
all
requirements
– Does
program
require
user
interac=on?
– Does
program
manipulate
data?
– What
is
the
output?
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
31
The
Problem
Analysis–Coding–
Execu=on
Cycle
(cont’d.)
• Once
the
algorithm
is
designed
and
correctness
verified
– Write
the
equivalent
code
in
high-‐level
language
• Enter
the
program
using
text
editor
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
32
The
Problem
Analysis–Coding–
Execu=on
Cycle
(cont’d.)
• Run
code
through
compiler
• If
compiler
generates
errors
– Look
at
code
and
remove
errors
– Run
code
again
through
compiler
• If
there
are
no
syntax
errors
– Compiler
generates
equivalent
machine
code
• Linker
links
machine
code
with
system
resources
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
33
The
Problem
Analysis–Coding–
Execu=on
Cycle
(cont’d.)
• Once
compiled
and
linked,
loader
can
place
program
into
main
memory
for
execu=on
• The
final
step
is
to
execute
the
program
• Compiler
guarantees
that
the
program
follows
the
rules
of
the
language
– Does
not
guarantee
that
the
program
will
run
correctly
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
34
Example
1-‐1
• Design
an
algorithm
to
find
the
perimeter
and
area
of
a
rectangle
• The
perimeter
and
area
of
the
rectangle
are
given
by
the
following
formulas:
perimeter = 2 * (length +
width)
area = length * width
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
35
Example
1-‐1
(cont’d.)
• Algorithm:
– Get
length
of
the
rectangle
– Get
width
of
the
rectangle
– Find
the
perimeter
using
the
following
equa=on:
perimeter = 2 * (length + width)
– Find
the
area
using
the
following
equa=on:
area = length * width
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
36
Example
1-‐5
• Calculate
each
student’s
grade
– 10
students
in
a
class;
each
student
has
taken
five
tests;
each
test
is
worth
100
points
• Design
algorithms
to:
– Calculate
the
grade
for
each
student
and
class
average
– Find
the
average
test
score
– Determine
the
grade
• Data:
students’
names;
test
scores
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
37
Example
1-‐5
(cont’d.)
• Algorithm
to
determine
the
average
test
score:
– Get
the
five
test
scores
– Add
the
five
test
scores
• Suppose
sum
stands
for
the
sum
of
the
test
scores
– Suppose
average
stands
for
the
average
test
score:
• average = sum / 5;
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
38
Example
1-‐5
(cont’d.)
• Algorithm
to
determine
the
grade:
if average is greater than or equal to 90
grade = A
otherwise
if average is greater than or equal to 80 and less than 90
grade = B
otherwise
if average is greater than or equal to 70 and less than 80
grade = C
otherwise
if average is greater than or equal to 60 and less than 70
grade = D
otherwise
grade = F
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
39
Example
1-‐5
(cont’d.)
• Main
algorithm
is
as
follows:
– totalAverage
=
0;
– Repeat
the
following
for
each
student:
• Get
student’s
name
• Use
the
algorithm
to
find
the
average
test
score
• Use
the
algorithm
to
find
the
grade
• Update
totalAverage
by
adding
current
student’s
average
test
score
– Determine
the
class
average
as
follows:
• classAverage = totalAverage / 10
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
40
Programming
Methodologies
• Two
popular
approaches
to
programming
design
– Structured
– Object-‐oriented
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
41
Structured
Programming
• Structured
design:
– Dividing
a
problem
into
smaller
subproblems
• Structured
programming:
– Implemen=ng
a
structured
design
• The
structured
design
approach
is
also
called:
– Top-‐down
(or
boiom-‐up)
design
– Stepwise
refinement
– Modular
programming
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
42
Object-‐Oriented
Programming
• Object-‐oriented
design
(OOD)
– Iden=fy
components
called
objects
– Determine
how
objects
interact
with
each
other
• Specify
relevant
data
and
possible
opera=ons
to
be
performed
on
that
data
• Each
object
consists
of
data
and
opera=ons
on
that
data
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
43
Object-‐Oriented
Programming
(cont’d.)
• An
object
combines
data
and
opera=ons
on
the
data
into
a
single
unit
• A
programming
language
that
implements
OOD
is
called
an
object-‐oriented
programming
(OOP)
language
• Must
learn
how
to
represent
data
in
computer
memory,
how
to
manipulate
data,
and
how
to
implement
opera=ons
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
44
Object-‐Oriented
Programming
(cont’d.)
• Write
algorithms
and
implement
them
in
a
programming
language
• Use
func=ons
to
implement
algorithms
• Learn
how
to
combine
data
and
opera=ons
on
the
data
into
a
single
unit
called
an
object
• C++
was
designed
to
implement
OOD
• OOD
is
used
with
structured
design
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
45
ANSI/ISO
Standard
C++
• C++
evolved
from
C
• C++
designed
by
Bjarne
Stroustrup
at
Bell
Laboratories
in
early
1980s
– Many
different
C++
compilers
were
available
• C++
programs
were
not
always
portable
from
one
compiler
to
another
• In
mid-‐1998,
ANSI/ISO
C++
language
standards
were
approved
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
46
Summary
• Computer:
electronic
device
that
can
perform
arithme=c
and
logical
opera=ons
• Computer
system
has
hardware/soEware
– Central
processing
unit
(CPU):
brain
– Primary
storage
(MM)
is
vola=le;
secondary
storage
(e.g.,
disk)
is
permanent
– Opera=ng
system
monitors
overall
ac=vity
of
the
computer
and
provides
services
– Various
kinds
of
languages
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
47
Summary
(cont’d.)
• Compiler:
translates
high-‐level
language
into
machine
code
• Algorithm:
step-‐by-‐step
problem-‐solving
process;
solu=on
in
finite
amount
of
=me
• Problem-‐solving
process
has
three
steps:
– Analyze
problem
and
design
an
algorithm
– Implement
the
algorithm
in
code
– Maintain
the
program
Programming
Programming Fundamentals with
Fundamentals withSelasie
Selasie A.
A. Brown selasieb@gmail.com
48
Summary
(cont’d.)
• Structured
design:
– Problem
is
divided
into
smaller
subproblems
– Each
subproblem
is
solved
– Combine
solu=ons
to
all
subproblems
• Object-‐oriented
design
(OOD):
a
program
is
a
collec=on
of
interac=ng
objects
– Object:
data
and
opera=ons
on
those
data