Sie sind auf Seite 1von 75

CS 101

Chapter 1: Introduction
Aaron Bloomfield
Spring 2007

Lets begin

Goal

Teach you how to program effectively

Skills and information to be acquired

What the heck all this means


Problem solving
Object-oriented design
Java

So, what is a computer, anyway?

What is a computer?

Not a rhetorical question!


A device that computes
especially a programmable electronic machine that
performs high-speed mathematical or logical
operations or that assembles, stores, correlates, or
otherwise processes information

From American Heritage Dictionary of the English


Language, 4th Edition
4

So what is a computation?

The act or process of computing

Definition of computing:

Duh!
To determine by the use of a computer
To determine by mathematics, especially by numerical
methods: computed the tax due

My revised definition for computing:

The act of taking a problem with specific inputs and


determining a specific answer (output)

Axiom

By definition, a (properly functioning) computer will


always produce the same output given the same
input
So how do we compute random numbers?

The first computers

Scales computed relative weight of


two items

Computed if the first items weight


was less than, equal to, or greater
than the second items weight

Abacus performed mathematical computations

Primarily thought of as Chinese, but also Japanese, Mayan, Russian,


and Roman versions
Can do square roots and cube roots

Stonehenge

Computer Size
ENIAC then
ENIAC today

Algorithms

10

So what do we do with a computer

now that we have one?

We have to tell a computer what to do!

Computers have no intelligence of their own

We tell a computer what to do by writing a


computer program, or algorithm

In this course, well use Java

11

Algorithms

What is an algorithm?
A step-by-step problem-solving procedure,
especially an established, recursive computational
procedure for solving a problem in a finite number
of steps

From American Heritage Dictionary of the English


Language, 4th Edition

Weve seen lots of algorithms before


12

Example algorithm: map directions

13

Example algorithm: car radio removal

14

Example algorithm: Recipes

15

An optical illusion

16

Algorithm correctness

17

Incorrect algorithms

Not all algorithms are good

So then what makes an algorithm bad?

Can
Can
Can
Can

be wrong
be inefficient
never stop
have other problems as well

18

Incorrect algorithms: just plain wrong

From http://en.for-ua.com/blog/2005/12/09/102028.html

19

Inefficient algorithms: MapQuest directions

Consider directions to get around grounds

20

Note that this is not an incorrect algorithm!


Just a very inefficient one
21

Incorrect algorithms: Shampoo directions

22

23

Incorrect algorithms: Shampoo directions

Lather, rinse, repeat

This algorithm repeats forever!

It never halts
Note that humans know to not to spend forever performing the
algorithm
But computers do not!

Remember, they have zero intelligence

Hence the overplayed (and not very funny) computer joke:

How did the computer scientist die in the shower?


S/he read the directions: lather, rinse, repeat
24

Incorrect algorithms: Inexact recipes

25

Incorrect algorithms: summation

Consider this algorithm:

Given an integer n
Keep track of an ongoing sum (starts at 0)
Repeat

Add n to the ongoing sum


Subtract 1 from n

Until n is zero

Whats wrong with this algorithm?

Will it ever stop?


Will it always stop?

Are you sure?


26

Our goal

Is to write correct and efficient algorithms for a


computer to follow

Remember that computers are dumb!

We arent going to worry about the efficient part in


this course
But what does correct mean?

27

Correct algorithms

Consider an algorithm to display the color blue

Is this blue?

Definitely

Is this blue?

Also, yes: two correct results!

What about this?

Maybe (could be green)

And this one?

Definitely not

28

Note that this is not an incorrect algorithm!


Just a very inefficient one
29

So what does all this mean?

Humans specify algorithms without a lot of precision

Display the color blue


Get me from here to there
When there isnt much precision, there are often multiple answers

Computers need more precision

Display the color 0x0000ff (royal blue):

There is only one possible outcome

Find the shortest route from here to there

We need to be very specific when we specify things to a


computer

Computers are dumb!

30

Carved watermelons

31

Programming a computer

32

How do we tell all this to a computer?

Computer: Tea, Earl Gray, hot

Jean-Luc Picard from Star Trek

Unfortunately, that doesnt work so well today

Computers dont understand English

33

First Programming Languages

Ada Lovelace (1833)

ENIAC (1945)

Programmed by plugging wires

Binary

Programmed of Babbages analytical engine

100100010101001010101010

Assembly
FORTRAN (1954)

34

Programming Languages

Common programming languages:

BASIC
COBOL
Pascal
C (1972) by Dennis Ritchie
C++ (1985) by Bjarne Stroustrup
Java (1991) by James Gosling and others at Sun
Microsystems

35

Background

36

Computing units of measure

A bit is either a 1 or a 0

On or off, true or false, etc.

A byte is 8 bits:

01001010

As there are 8 bits per byte, each byte can hold 28=256 values

01001010 = 74

All computing measurements are in terms of bytes

37

Computing units of measure

Kilo (K) = 1,000 (thousand)

Mega (M) = 1,000,000 (million)

Giga (G) = 1,000,000,000 (billion)

Tera (T) = 1,000,000,000,000 (trillion)

Kilo = 210 = 1,024

= Kibi (Ki)

Mega = (1024)2 = 1,048,576

= Mebi (Mi)

Giga = (1024)3 = 1,073,741,824

= Gibi (Gi)

Tera = (1024)4 = 1,099,511,627,776

= Tebi (Ti)

38

Computing units of measure

An unformatted text document (such as a Java program)

A formatted document (such as a Word file)

About 1 Mb each (1,000,000 bytes)

An MP3 music file

About 5k per page with formatting

A digital camera picture

3 pages per kilobyte (1,000 bytes)

5 Mb for a 5 minute song

A music file on a CD

50 Mb for a 5 minute song

10 times the size of an MP3!

A movie clip

About 10 Mb per minute of (TV-sized) video

39

A marketing trick

This hard drive has


250,059,350,016
bytes

= 250.06 Gigabytes
= 232.89 Gibibytes

Guess which one


they use when they
are advertising the
drive?
40

Todays demotivators

41

Our first Java program

42

Programming Task

Display Hello World!

43

HelloWorld.java
// Purpose: say hello!
public class HelloWorld {
public static void main(String[] args) {
System.out.println (Hello, world!");
}
}
One
application
statement
program
makes
up
is of
required
the
action
to of
have
method
a
A An
method
is a named
piece
code
that
performs
public
main()
staticorvoid
method named
main().
some
action
implements
a behavior
Method main() is part of class HelloWorld

44

Sample output

45

Program parts

46

Common Language Elements

There are some concepts that are common to


virtually all programming languages.
Common concepts:

Key words
Operators
Punctuation
Programmer-defined identifiers
Strict syntactic rules

47

Java Documentation

Familiarize yourself with the Java documentation

It will save you lots of time!

A link to it is on the website

We will go over it in a future lab as well

48

Key Words

Key words in the sample program are:

public
class
static
void
String

String is not really a key word but is the name of a predefined


class in Java
Well go over the difference between these later

Key words

lower case (Java is a case sensitive language).


cannot be used as a programmer-defined identifier.
49

Programming Languages

Some Java key words have no meaning but are


reserved to prevent their use. (ex. goto, const,
include)
Semi-colons are used to end Java statements;
however, not all lines of a Java program end a
statement.
Part of learning Java is to learn where to properly
use the punctuation.

50

Lines vs Statements

There is a difference between lines and statements


when discussing source code.
System.out.println(
message);

This is one Java statement written using two lines.


Do you see the difference?
A statement is a complete Java instruction that
causes the computer to perform an action.

51

Good commenting

Necessary so others can re-use your code

And so the graders can understand it!

A well commented program:

// Authors: J. P. Cohoon and J. W. Davidson


// Purpose: display a quotation in a console window
public class DisplayForecast {

// method main(): application entry point


public static void main(String[] args) {
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
52

Bad commenting
//
//
//
//

Thomas J. Watson (February 17, 1874 - June 19, 1956) is


considered to be the founder of IBM. He was one of the
richest men of his time and called the world's greatest
salesman when he died.

//
//
//
//
//
//
//
//
//
//
//

Watson was born in Campbell, New York. His formal


education consisted of only a course in the Elmira
School of Commerce. His first job was at age 18 as
a bookkeeper in Clarence Risley's Market in Painted
Post, New York. Later he sold sewing machines and
musical instruments before joining the National Cash
Register Company as a salesman in Buffalo. He eventually
worked his way up to general sales manager. Bent on
inspiring the dispirited NCR sales force, Watson
introduced the motto, "THINK," which later became
a widely known symbol of IBM.

//
//
//
//
//
//
//
//
//
//
//
//

Although he is well known for his alleged 1943 statement:


"I think there is a world market for maybe five computers"
there is no evidence he ever made it. The author Kevin
Maney tried to find the origin of the quote. He has been
unable to locate any speeches or documents of Watson's
that contain this, nor is it present in any contemporary
articles about IBM. The earliest known citation is from
1986 on Usenet in the signature of a poster from Convex
Computer Corporation as "I think there is a world market
for about five computers" --Remark attributed to Thomas
J. Watson (Chairman of the Board of International
Business Machines),1943

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

While at NCR, he was convicted for illegal anticompetitive sales practices (e.g. he used to have
people sell deliberately faulty cash registers, either
second-hand NCR or from competitors; soon after the
second-hand NCR or competitors cash register failed,
an NCR salesperson would arrive to sell them a brand
new NCR cash register). He was sentenced, along with
John H. Patterson (the owner of NCR), to one year of
imprisonment. Their conviction was unpopular with the
public, due to the efforts of Patterson and Watson to
help those affected by the 1913 Dayton, Ohio floods,
but efforts to have them pardoned by President Woodrow
Wilson were unsuccessful. However, the Court of
Appeals overturned the conviction on appeal in 1915,
on the grounds that important defense evidence should
have been admitted.

public class DisplayForecast {


// method main(): application entry point
public static void main(String[] args) {
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}

53

More bad commenting

From the context-switching code of Unix V6 (file: slp.c)

/*
* If the new process paused because it was
* swapped out, set the stack level to the last call
* to savu(u_ssav). This means that the return
* which is executed immediately after the call to aretu
* actually returns from the last routine which did
* the savu.
*
* You are not expected to understand this.
*/
if(rp->p_flag&SSWAP) {
rp->p_flag =& ~SSWAP;
aretu(u.u_ssav);
}

Source: http://www.tuhs.org/Archive/PDP-11/Trees/V6/usr/sys/ken/slp.c

54

Human stupidity

55

Programming overview

56

The Programming Process


1. Clearly define what the program is to do.
2. Visualize the program running on the computer.
3. Use design tools to create a model of the program.
4. Check the model for logical errors.

57

The Programming Process


5. Enter the code and compile it.
6. Correct any errors found during compilation.
Repeat Steps 5 and 6 as many times as necessary.

7. Run the program with test data for input.


8. Correct any runtime errors found while running the
program.
Repeat Steps 5 through 8 as many times as necessary.

9. Validate the results of the program.

58

Software Engineering

Encompasses the whole process of crafting computer


software.

Software engineers perform several tasks


development of complex software projects.

in

the

designing,
writing,
testing,
debugging,
documenting,
modifying, and
maintaining.

59

Software Engineering

Software engineers develop:

program specifications,
diagrams of screen output,
diagrams representing the program components and the
flow of data,
pseudocode,
examples of expected input and desired output.

60

Other buzzwords from the chapter

Im not expecting you to fully understand these


after reading chapter 1

Procedural programming
Object oriented programming

Data hiding
Code reusability

Classes vs. objects


Inheritance

We will see all of these before the semester ends

61

Computer Systems

62

Computer Systems

Hardware

The central processing unit (CPU)


Main memory
Secondary storage devices
Input and Output devices

Software

Operating systems
Application software

63

Computer Systems: Hardware

Input Devices

ALU
Control Unit
RAM

Output Devices

Input / Output
Devices

64

Computer Systems: Hardware

Computer hardware components are the physical


pieces of the computer.
The major hardware components of a computer
are:

The central processing unit (CPU)


Main memory
Secondary storage devices
Input and Output devices

65

Central Processing Unit


CPU

Instruction (input)

Arithmetic
Logic
Unit

Result (output)

Control
Unit

66

Central Processing Unit

The CPU performs the fetch, decode, execute cycle


in order to process program information.

Fetch

Execute

The CPUs control unit fetches, from main memory,


the next instruction in the sequence of program
instructions.
The instruction is encoded in the form of a
number. The control unit decodes the
instruction and generates an electronic signal.

Decode

The signal is routed to the appropriate


component of the computer (such as the ALU,
a disk drive, or some other device). The signal
causes the component to perform an
operation.

67

Main Memory (aka RAM)

Commonly known as random-access memory


(RAM)
RAM

contains:

currently running programs


data used by those programs

is volatile

when the computer is turned off, the contents of RAM are


erased.
short-term memory
68

Secondary Storage

Secondary storage devices are capable of storing


information for longer periods of time

non-volatile

long-term memory

Examples

Hard drive
CD RW drive
DVD RAM drive
Compact Flash card

69

Input Devices

Input is any data the computer collects from the


outside world.
That data comes from devices known as input
devices.
Common input devices:

Keyboard
Mouse
Scanner
Digital camera
70

Output Devices

Output is any data the computer sends to the


outside world.
That data is displayed on devices known as output

devices

Common output devices:

Monitors
Printers

Some devices such as disk drives perform input


and output and are called I/O devices
(input/output).
71

Computer Systems: Software

Software refers to the programs that run on a


computer.
Two classifications of software:

Operating Systems
Application Software

72

Operating Systems

An operating system has two functions:

Control the system resources.


Provide the user with a means of interaction with the
computer.

Operating systems can be either

single tasking (run one program at a time)

DOS

multi-tasking (run many programs at once)

Windows
Unix
Apple
73

Operating Systems

Operating systems can also be categorized as

single user

only one user to operate the computer at a time


Examples:

DOS
Windows 95/98/ME

multi-user

allow several users to run programs and operate the computer at


once.
Examples

Unix
BSD
Windows NT/2000/XP
OS/X
74

Application Software

Programs that make the computer useful to the


user

Spreadsheets
Word processors
Accounting software
Tax software
Games

75

Das könnte Ihnen auch gefallen