Anda di halaman 1dari 12

# Charles Dierbach

Wiley

Contents

Preface

XXI

Acknowledgments

xxv

xxvii

Introduction

MOTIVATION

FUNDAMENTALS

## Computational Problem Solving

5
of Computational Problem Solving

## 1.1.1 The Essence of

1.1.2 Limits

Self-Test Questions
1.2

1.2.2

Algorithm? 6
Algorithms and Computers:
an

Self-Test Questions
1.3

Computer Algorithms
1.2.1 What, Is

A Perfect Match

Computer Hardware 9
1.3.1 Digital Computing: It's All about
1.3.3 Fundamental Hardware

1.3.4 Operating
1.3.5 Limits of

8
Switches

10

11

Components

## SystemsBridging Software and Hardware

Integrated

Self-Test
1.4

Questions
Computer Software

Circuits

Technology: Moore's

13
14

Computer Software? 14
14
1.4.2 Syntax, Semantics, and Program Translation
17
1.4.3 Procedural vs. Object-Oriented Programming
1.4.1 What Is

Self-Test Questions

17

Computational
Problem Analysis
18

1.5.1

## 1.5.2 Program Design

Problem

19

Program Implementation
21
1.5.4 Program Testing
1.5.3

21

17

Solving

17

Law

11
12

Contents

1.6 The

1.6.3 The

22

Python

## Python Development Environment

Standard

Python
Python

1.6.4 A Bit of
1.6.5

Learning

1.7 A First

Library

ProgramCalculating

26

29

30

## 1.7.2 Problem Analysis

30

1.7.3

Program Design

1.7.4

30

Program Implementation

1.7.5

30

32

Program Testing
Chapter Summary 33

Chapter Exercises 34
Python Programming Exercises

36

Modification Problems

Program Development

22

23

24

Program

22

37

Problems

37

## Data and Expressions

MOTIVATION

38

39

FUNDAMENTAL CONCEPTS
2.1 Literals

2.1.1 What Is

Literal?

2.1.3

40

40

String Literals

40
40

44

## 2.1.4 Control Characters

46

2.1.5

47

String Formatting

2.1.6

48

Self-Test

Questions

2.2.1 What Is

50

Variable?

50

2.2.3 What Is
2.2.4

Identifier?

Keywords and

2.2.5 Let's
Self-Test

2.3

an

Operators

Apply

Keyboard Input

52

53

## It"Restaurant Tab Calculation"

Questions
an

2.3.2 Arithmetic

57

Operator?
Operators

57

Self-Test

Questions 60
Expressions and Data Types
2.4.1 What Is

an

61

61

Expression?

2.4.3

55

56

## 2.3.3 Let's Apply It"Your Place in the Universe"

2.4

Python

57

2.3.1 What Is

48

49

Operator Associativity

61

63

59

54

Contents
2.4.4 What Is

2.4.5

Data

64

Type?

64

Mixed-Type Expressions

Self-Test

It"Temperature
Questions 66

Conversion

2.5

Age

in Seconds

2.5.2 Problem

2.5.3

67

67

Program

## 2.5.1 The Problem

65

Program"

67
67

Analysis

67

Program Design
Implementation

2.5.4 Program

Chapter Summary

74

Chapter Exercises

74

## Python Programming Exercises

Program Modification Problems

and

Testing

69

76
76

## Program Development Problems

77

Control Structures

MOTIVATION

79

80

FUNDAMENTAL CONCEPTS
3.1 What Is

80

Control Structure?

80

3.2 Boolean

Expressions (Conditions)
Operators 81
3.2.2 Membership Operators
82

81

3.2.1 Relational

3.2.3 Boolean

3.2.4

## Precedence and Boolean

3.2.5 Short-Circuit

3.2.6

83

Operators

Operator

(Lazy)

Evaluation

Expressions

Self-Test

85

86
87

88

Questions

## 3.3 Selection Control

89

3.3.1 If Statement

89

3.3.2 Indentation in

Python

90

3.3.3

Multi-Way Selection 91
3.3.4 Let's Apply ItNumber of Days
Self-Test Questions
96
3.4 Iterative Control

Program

96

97

3.4.3 Infinite

in Month

loops

98

99

3.4.4 Definite

vs.

3.4.5 Boolean

Indefinite

Loops

100

100

Self-Test

Questions

104

3.5.1

Program

The Problem

104

104

104

101

94

xi

3.5.3

104
105

Program Design

3.5.4

## Program Implementation and Testing

Chapter Summary 117
Chapter

Exercises

107

118

120

## Program Modification Problems

Program Development

121

Problems

123

Lists

125

MOTIVATION

126

FUNDAMENTAL CONCEPTS
4.1

List Structures
4.1.1 What Is

127

127
a

List?

127

## 4.1.3 List Traversal

128

Self-Test Questions

129

4.2 Lists

(Sequences)

4.2.1

List

4.2.2

Python
Tuples

4.2.3

Sequences

127

Operations

in

130

Python
130

Type

131
132

134

## 4.2.5 Let's Apply ItA Chinese Zodiac Program

Self-Test Questions

4.3

4.3.1

For

135

137
137

137

Loops

138

4.3.3

4.3.4 While

4.3.5 Let's
Self-Test
4.4 More

4.4.1

on

Loops

Apply

and Lists

(Sequences)

144
144

144

146

Comprehensions

## COMPUTATIONAL PROBLEM SOLVING

4.5 Calendar Year

Program

## 4.5.1 The Problem

4.5.2 Problem

147

147

147

Analysis

147

4.5.3 Program

Design 148
4.5.4 Program Implementation and Testing
Chapter Summary

161

Chapter Exercises

162

## Python Programming Exercises

Program Modification Problems
Program Development Problems

164
164
165

139

140

Questions
Python Lists

4.4.2 List

vs.

149

Program

141

Contents

Functions

168

MOTIVATION

169
169

FUNDAMENTAL CONCEPTS
5.1

Program

Routines

5.1.1 What Is
5.1.2

169

Function Routine?

Functions

Defining

169

170

## 5.1.3 Let's Apply

ItTemperature
Self-Test Questions
175
5.2 More

on

Functions

Conversion

173

176

5.2.1

## Calling Value-Returning Functions 176

177
5.2.2 Calling Non-Value-Returning Functions
5.2.3 Parameter Passing
178
181
5.2.4 Keyword Arguments in Python
5.2.5 Default Arguments in Python
183
5.2.6 Variable Scope
183
186
5.2.7 Let's Apply ItGPA Calculation Program
Self-Test Questions

189

## 5.3 Credit Card Calculation

5.3.1 The Problem
5.3.2 Problem

5.3.3

Program

189
190

Analysis

190

Program Design

5.3.4

Program Implementation
Chapter Summary 202
Chapter Exercises 202

Python Programming

Exercises

and

Testing

191

203

## Program Modification Problems

Program Development

189

189

204

Problems

204

## Objects and Their Use

MOTIVATION

206

207

FUNDAMENTAL CONCEPTS
6.1 Software Objects
6.1.1 What Is
6.1.2

an

Object?

References

Object
Questions

Self-Test
6.2 Turtle
6.2.1

208
209

216

216

Graphics

Creating

207

207

Turtle

Graphics

Window

216

218

## 6.2.3 Fundamental Turtle Attributes and Behavior

6.2.5

Creating Multiple

Turtles

222
225

219

xiii

xiv

Contents

6.2.6 Let's

## Apply ItBouncing Balls Program

Self-Test Questions

## COMPUTATIONAL PROBLEM SOLVING

6.3 Horse Race Simulation

229

229

Program

230

6.3.3

230
231

Program Design

## 6.3.4 Program Implementation and Testing

Chapter Summary

243

Chapter Exercises

243

Python Programming
Program

Exercises

Modular

245
246

Design

MOTIVATION

247

248

FUNDAMENTAL CONCEPTS
7.1

Modules

248

248

7.1.1 What Is

Module?

248

## 7.1.2 Module Specification

Self-Test Questions
7.2

Developing

7.2.2

251
a

Specification

## Modular Design of the Calendar Year Program

of the Calendar Year Program Modules

Self-Test Questions

Python

Modules

7.3.1 What Is

249

251

Top-Down Design
7.2.1

7.3

231

244

Modification Problems

j^J

226

229

252

255

255

Namespaces 256

## 7.3.2 Modules and

7.3.3

Importing Modules

257

7.3.5 Local, Global, and Built-in
7.3.6 A

260

Namespaces in Python

## 7.3.7 Let's Apply ItA Palindrome Checker Program

Self-Test Questions
268
COMPUTATIONAL PROBLEM SOLVING
7.4 Calendar Year

## 7.4.1 The Problem

7.4.2 Problem
7.4.3
7.4.4

269
269

Program Design
Program Implementation

Chapter Summary
Exercises

284

Program

269

269

Analysis

284

Chapter

269

## Program (function version)

Modification Problems

## Program Development Problems

and

286
287

287

Testing

262

264

269

267

251

Text Files

289

MOTIVATION

290

FUNDAMENTAL CONCEPTS
8.1 What Is

8.2

Using
8.2.1

Text File?

Text Files

291

Text Files

8.2.2

Opening

8.2.3

Writing

294

295
296

String Processing
8.3.1

Traversal

String

8.3.2

8.3.3

String Methods

## 8.3.4 Let's Apply

296

297
Text

Program

300

303

Questions
Exception Handling
8.4.1 What Is

296

ItSparse

Self-Test
8.4

291

293

Text Files

Self-Test Questions
8.3

290

290

303

Exception? 303
Propagation of Raised Exceptions 304
8.4.3 Catching and Handling Exceptions
305
8.4.4 Exception Handling and User Input 307
8.4.5 Exception Handling and File Processing
309
8.4.6 Let's Apply ItWord Frequency Count Program
an

8.4.2 The

Self-Test

## COMPUTATIONAL PROBLEM SOLVING

8.5

Cancer Correlation

Cigarette Use/Lung
8.5.1 The Problem

8.5.4
8.5.5

314

Program

314

315

8.5.2 Problem
8.5.3

Analysis
Program Design

315
316

## Program Implementation and Testing 318

Determining the Correlation Between Smoking

Chapter Summary

331

Chapter Exercises

332
Exercises

Python Programming

## Program Modification Problems

Program Development

310

314

Questions

Problems

and

Lung Cancer

333

333
334

## Dictionaries and Sets

MOTIVATION

337

338

FUNDAMENTAL CONCEPTS
9.1

Dictionary Type
9.1.1 What Is

in

Python

Dictionary?

338
338

339

Self-Test

Questions

331

346

Spelling Program

342

xvi

Contents

9.2.1

346

in

Type

346

Python

## 9.2.2 Let's Apply ItKitchen Tile Visualization

348

356

Self-Test Questions

9.3 A Food

Program

## 9.3.1 The Problem

356

Simulation

356

357

9.3.2 Problem

Analysis 357
9.3.3 Program Design 358
9.3.4 Program Implementation and Testing
9.3.5 Analyzing

Scheduled

vs.

360

Unscheduled

375

379

Chapter Summary

## Chapter Exercises 379

Python Programming Exercises

380

## Program Modification Problems

Program Development

380

Problems

381

383

Object-Oriented Programming
MOTIVATION

384

FUNDAMENTAL CONCEPTS
10.1 What Is

384

Class?

385

10.2

Encapsulation

Classes in

## 10.2.3 Let's Apply ItA

387

Python

Recipe

Conversion

Program

399

Questions

10.3 Inheritance

386

Encapsulation?

Defining

Self-Test

Object-Oriented Programming

386

10.2.1 What Is
10.2.2

384

Object-Oriented Programming?

10.1.1 What Is

400

## 10.3.1 What Is Inheritance?

10.3.2

Subtypes

10.3.3

Defining Subclasses

400

401
in

Python

402

## 10.3.4 Let's Apply ItA Mixed Fraction Class

Self-Test Questions

10.4

Polymorphism
10.4.1 What Is

411

411
411

Polymorphism?

## 10.4.2 The Use of Polymorphism

Self-Test Questions

## 10.5 Object-Oriented Design

10.5.1 What Is UML?
10.5.2 UML Class

414

417

Using UML

Diagrams

Self-Test Questions

417

417
418

422

## COMPUTATIONAL PROBLEM SOLVING

10.6 Vehicle Rental

Agency Program

## 10.6.1 The Problem

423

423

423

407

394

385

Contents
10.6.2 Problem

Analysis 423
Program Design 423
10.6.4 Program Implementation
Chapter Summary 453
10.6.3

Chapter

Exercises

Testing

429

454

## Python Programming Exercises

Program

and

455

Modification Problems

456

## Program Development Problems

457

Recursion

460

MOTIVATION

461

FUNDAMENTAL CONCEPTS

## 11.1 Recursive Functions

11.1.1 What Is

461

461

Recursive Function?

461

464

## 11.1.3 Let's Apply ItFractals

(Sierpinski Triangle)

Self-Test

11.2.1
11.2.2

472

Solving

## Thinking Recursively 472

MergeSort Recursive Algorithm

## 11.2.3 Let's Apply

Self-Test

vs.

472

ItMergeSort Implementation

474

476

Questions

11.3 Iteration

467

471

Questions

Recursion

476

477

477

## 11.4.1 The Problem

477

11.4.2 Problem

Analysis 477
11.4.3 Program Design and Implementation
Chapter Summary

487

Chapter Exercises

487

Python Programming

Program

Exercises

488

Modification Problems

Program Development

481

489

Problems

490

491

## CONTRIBUTIONS TO THE MODERN COMPUTER

12.1 The

Concept of

Programmable Computer

492

492

## 12.1.2 "The First Computer

12.2

Electronic

Computing 493
Development of Boolean Algebra (mid-1800s)

12.2.1 The

12.2.3 The

Development

of

493

494

494

xvii

xviii

Contents

## 12.2.4 The Development of Memory Electronic Circuits (1919) 495

12.2.5 The Development of Electronic Digital
Logic Circuits (1937) 495
12.2.6 "The Father of Information
Theory"Claude Shannon (1948) 496
FIRST-GENERATION COMPUTERS (1940s-mid- 1950s)
12.3 The Early Groundbreakers 496
12.3.1 The Z3The First

496

496

## 12.3.2 The Mark IFirst Computer

Project in the United States

(1937-1943)

497

## Fully Electronic Computing Device (1942) 498

12.3.4 ColossusA Special-Purpose Electronic Computer
(1943) 499
12.3.5 ENIACThe First Fully Electronic Programmable
Computer 500
12.3.6 EDVAC/ACEThe First Stored Program Computers
(1950) 501
12.3.7 WhirlwindThe First Real-Time Computer
(1951) 502
12.4 The First Commercially Available
Computers 503
12.4.1 The Struggles of the Eckert-Mauchly Computer
Corporation (1950) 503
12.4.2 The LEO Computer of the J.
and
Lyons
Company (1951) 504
SECOND-GENERATION COMPUTERS (mid-1950s
12.5 Transistorized Computers
505

to

mid-1960s)

505

## 12.5.1 The Development of the Transistor (1947)

505
12.5.2 The First Transistor
506
(1953)
Computer
12.6 The

## Development of High-Level Programming Languages 506

The Development of Assembly
Language (early 1950s) 506
12.6.2 The First High-Level
Programming Languages (mid-1950s) 507
12.6.3 The First "Program Bug" (1947)
508
12.6.1

## THIRD-GENERATION COMPUTERS (mid-1960s to early 1970s)

12.7 The Development of the Integrated Circuit (1958)
508
12.7.1 The

508

## Catalyst for Integrated Circuit Advancements (1960s)

Microprocessor (1971) 511
12.8 Mainframes, Minicomputers, and Supercomputers 512

509

## 12.8.1 The Establishment of the Mainframe Computer (1962)

12.8.2 The Development of the Minicomputer (1963)
513
12.8.3 The

Development

512

of the UNDC

## Operating System (1969) 513

(early 1960s) 514
Supercomputer (1972) 515

## 12.8.4 The Development of Graphical User Interfaces

12.8.5 The

Development of the

FOURTH-GENERATION COMPUTERS

## (early 1970s to the Present) 515

Microprocessor 515
12.9.1 The First Commercially Available Microprocessor (1971)
515
12.9.2 The First Commercially Available Microcomputer Kit
(1975) 516
12.10 The Dawn of Personal
516
Computing
12.10.1 The Beginnings of Microsoft (1975)
516
12.10.2 The Apple II (1977)
517
12.10.3 IBM's Entry into the Microcomputer Market (1981)
517
12.10.4 Society Embraces the Personal Computer
(1983) 518
12.10.5 The Development of Graphical User Interfaces (GUIs) 518
12.10.6 The Development of the C+ + Programming
Language 519
12.9 The Rise of the

Contents

12.11 The

520

520

## 12.11.1 Theldeaof Packet-Switched Networks (early 1960s)

12.11.2 The First Packet-Switched Network: ARPANET

## 12.12 The Development of Local Area Networks (LANs)

12.12.1 The Need for Local Area Networks
12.12.2 The
12.13 The

Development

Development

of Ethernet

(1980)

520

521

521

521

## 12.13.1 The Realization of the Need for

520

(1969)

"Internetworking"

522
522

12.13.3 The

Development

12.13.4 The

Development

of the Java

(1990)

522

522

523

Appendix

525

Index

569

xlx