100% found this document useful (3 votes)
120 views

(Ebook) Programming Logic and Design, Comprehensive 7th Edition by Joyce Farrell ISBN 9781111969752, 1111969752 instant download

The document provides information about various editions of the ebook 'Programming Logic and Design' by Joyce Farrell, including links for downloading each edition. It also includes details about the contents of the book, covering topics such as programming fundamentals, data handling, and object-oriented programming. Additionally, it mentions copyright information and publisher details.

Uploaded by

pepitebassl77
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
120 views

(Ebook) Programming Logic and Design, Comprehensive 7th Edition by Joyce Farrell ISBN 9781111969752, 1111969752 instant download

The document provides information about various editions of the ebook 'Programming Logic and Design' by Joyce Farrell, including links for downloading each edition. It also includes details about the contents of the book, covering topics such as programming fundamentals, data handling, and object-oriented programming. Additionally, it mentions copyright information and publisher details.

Uploaded by

pepitebassl77
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

(Ebook) Programming Logic and Design,

Comprehensive 7th Edition by Joyce Farrell ISBN


9781111969752, 1111969752 download

https://ebooknice.com/product/programming-logic-and-design-
comprehensive-7th-edition-4054238

Explore and download more ebooks at ebooknice.com


We have selected some products that you may be interested in
Click the link to download now or visit ebooknice.com
for more options!.

(Ebook) Programming Logic and Design, Comprehensive 6th Edition


by Joyce Farrell ISBN 0538744766

https://ebooknice.com/product/programming-logic-and-design-
comprehensive-6th-edition-2422158

(Ebook) Programming Logic & Design, Comprehensive 9th edition by


Joyce Farrell ISBN 9781337517041, 1337517046

https://ebooknice.com/product/programming-logic-design-comprehensive-9th-
edition-34724846

(Ebook) Programming Logic and Design, Comprehensive 9th Edition


by Joyce Farrell ISBN 9781337102070, 1337102075, 2016959742

https://ebooknice.com/product/programming-logic-and-design-
comprehensive-9th-edition-37513870

(Ebook) Programming Logic and Design, Comprehensive by Joyce


Farrell ISBN 9781285776712, 1285776712

https://ebooknice.com/product/programming-logic-and-design-
comprehensive-4950652
(Ebook) Programming Logic and Design: Comprehensive by Joyce
Farrell ISBN 9781111823931, 1111823936

https://ebooknice.com/product/programming-logic-and-design-
comprehensive-4586394

(Ebook) Just Enough Programming Logic and Design - 2nd Edition


by Joyce Farrell ISBN 9781111825959, 1111825955

https://ebooknice.com/product/just-enough-programming-logic-and-design-2nd-
edition-7344196

(Ebook) Just Enough Programming Logic and Design by Joyce


Farrell ISBN 9781439039571, 1439039577

https://ebooknice.com/product/just-enough-programming-logic-and-
design-2454550

(Ebook) Biota Grow 2C gather 2C cook by Loucas, Jason; Viles,


James ISBN 9781459699816, 9781743365571, 9781925268492,
1459699815, 1743365578, 1925268497

https://ebooknice.com/product/biota-grow-2c-gather-2c-cook-6661374

(Ebook) Java Programming, 5th Edition by Joyce Farrell ISBN


032459951X

https://ebooknice.com/product/java-programming-5th-edition-2336892
This is an electronic version of the print textbook. Due to electronic rights restrictions,
some third party content may be suppressed. Editorial review has deemed that any suppressed
content does not materially affect the overall learning experience. The publisher reserves the right
to remove content from this title at any time if subsequent rights restrictions require it. For
valuable information on pricing, previous editions, changes to current editions, and alternate
formats, please visit www.cengage.com/highered to search by ISBN#, author, title, or keyword for
materials in your areas of interest.
PROGRAMMING LOGIC
AND DESIGN
C O M P R EH E N S I V E V E R S I O N
This page intentionally left blank
SEVENTH EDITION

PROGRAMMING LOGIC
AND DESIGN
COMPREHENSIVE VERSION

JOYCE FARRELL

Australia • Brazil • Japan • Korea • Mexico • Singapore • Spain • United Kingdom • United States
Programming Logic and Design, © 2013 Course Technology, Cengage Learning.
Comprehensive version,
ALL RIGHTS RESERVED. No part of this work covered by the copyright herein
Seventh Edition
may be reproduced, transmitted, stored or used in any form or by any means—
Joyce Farrell graphic, electronic, or mechanical, including but not limited to photocopying,
recording, scanning, digitizing, taping, Web distribution, information networks,
Executive Editor: Marie Lee
or information storage and retrieval systems, except as permitted under Section
Acquisitions Editor: Brandi Shailer 107 or 108 of the 1976 United States Copyright Act—without the prior written
permission of the publisher.
Senior Product Manager: Alyssa Pratt

Developmental Editor: Dan Seiter


For product information and technology assistance, contact us at
Senior Content Project Manager: Cengage Learning Customer & Sales Support, www.cengage.com/support.
Catherine DiMassa
For permission to use material from this text or product,
Associate Product Manager: submit all requests online at cengage.com/permissions.
Stephanie Lorenz Further permissions questions can be emailed to
permissionrequest@cengage.com.
Associate Marketing Manager:
Shanna Shelton

Art Director: Faith Brosnan Library of Congress Control Number: 2012930593

Text Designer: Shawn Girsberger ISBN-13: 978-1-111-96975-2

Cover Designer: Lisa Kuhn/Curio Press, Course Technology


LLC, www.curiopress.com 20 Channel Center Street
Boston, MA 02210
Image Credit: © Leigh Prather/Veer USA
Senior Print Buyer: Julio Esperas Cengage Learning is a leading provider of customized learning solutions with
Copy Editor: Michael Beckett office locations around the globe, including Singapore, the United Kingdom,
Australia, Mexico, Brazil, and Japan. Locate your local office at:
Proofreader: Kim Kosmatka www.cengage.com/global
Indexer: Alexandra Nickerson Cengage Learning products are represented in Canada by
Compositor: Integra Nelson Education, Ltd.

To learn more about Course Technology, visit


www.cengage.com/coursetechnology.

Purchase any of our products at your local college store or at our preferred
online store: www.cengagebrain.com

Some of the product names and company names used in this book have been
used for identification purposes only and may be trademarks or registered
trademarks of their respective manufacturers and sellers.

Unless otherwise credited, all art © Cengage Learning, produced by Integra.

Course Technology, a part of Cengage Learning, reserves the right to revise this
publication and make changes from time to time in its content without notice.

Printed in the United States of America


1 2 3 4 5 6 7 16 15 14 13 12
Brief Contents
v

Preface . . . . . . . . . . . . . . . . . . xviii
C H AP T E R 1 An Overview of Computers and Programming . 1
C H AP T E R 2 Elements of High-Quality Programs . . . . . . 37
C H AP T E R 3 Understanding Structure . . . . . . . . . . . 83
C H AP T E R 4 Making Decisions . . . . . . . . . . . . . 121
C H AP T E R 5 Looping . . . . . . . . . . . . . . . . . 169
C H AP T E R 6 Arrays . . . . . . . . . . . . . . . . . . 213
C H AP T E R 7 File Handling and Applications . . . . . . . 257
C H AP T E R 8 Advanced Data Handling Concepts . . . . . 305
C H AP T E R 9 Advanced Modularization Techniques . . . . 355
C H AP T E R 1 0 Object-Oriented Programming . . . . . . . 407
C H AP T E R 1 1 More Object-Oriented Programming
Concepts . . . . . . . . . . . . . . . . . 449
C H AP T E R 1 2 Event-Driven GUI Programming,
Multithreading, and Animation . . . . . . . 491
C H AP T E R 1 3 System Modeling with the UML . . . . . . . 523
C H AP T E R 1 4 Using Relational Databases . . . . . . . . 555
A PP E N D I X A Understanding Numbering Systems
and Computer Codes . . . . . . . . . . . 601
A PP E N D I X B Flowchart Symbols . . . . . . . . . . . . 611
A PP E N D I X C Structures . . . . . . . . . . . . . . . . 612
A PP E N D I X D Solving Difficult Structuring Problems . . . . 614
BRIEF CONTENTS

A PP E N D I X E Creating Print Charts . . . . . . . . . . . 624


A PP E N D I X F Two Variations on the Basic
Structures—case and do-while . . . 626

vi Glossary . . . . . . . . . . . . . . . . . 633
Index . . . . . . . . . . . . . . . . . . . 653
Contents
vii

Preface . . . . . . . . . . . . . . . . . . xviii

C H AP T E R 1 An Overview of Computers and Programming . 1

Understanding Computer Systems . . . . . . . . . . . . . . . 2


Understanding Simple Program Logic . . . . . . . . . . . . . 5
Understanding the Program Development Cycle . . . . . . . . . 7
Understanding the Problem . . . . . . . . . . . . . . . . . 8
Planning the Logic . . . . . . . . . . . . . . . . . . . . . 9
Coding the Program . . . . . . . . . . . . . . . . . . . . 10
Using Software to Translate the Program into Machine Language . 10
Testing the Program . . . . . . . . . . . . . . . . . . . . 12
Putting the Program into Production . . . . . . . . . . . . . 13
Maintaining the Program . . . . . . . . . . . . . . . . . . 13
Using Pseudocode Statements and Flowchart Symbols . . . . . . 14
Writing Pseudocode . . . . . . . . . . . . . . . . . . . . 15
Drawing Flowcharts . . . . . . . . . . . . . . . . . . . . 16
Repeating Instructions . . . . . . . . . . . . . . . . . . . 17
Using a Sentinel Value to End a Program . . . . . . . . . . . . 19
Understanding Programming and User Environments . . . . . . . 22
Understanding Programming Environments . . . . . . . . . . 22
Understanding User Environments . . . . . . . . . . . . . . 24
Understanding the Evolution of Programming Models . . . . . . . 25
Chapter Summary . . . . . . . . . . . . . . . . . . . . . . 27
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . . 28
Review Questions . . . . . . . . . . . . . . . . . . . . . . 31
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . 33
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . . 35
Game Zone . . . . . . . . . . . . . . . . . . . . . . . . 35
Up for Discussion . . . . . . . . . . . . . . . . . . . . . 36
CONTENTS

C H AP T E R 2 Elements of High-Quality Programs . . . . . . 37

Declaring and Using Variables and Constants . . . . . . . . . . 38


Understanding Unnamed, Literal Constants and their
Data Types . . . . . . . . . . . . . . . . . . . . . . . 38
viii
Working with Variables . . . . . . . . . . . . . . . . . . . 39
Naming Variables . . . . . . . . . . . . . . . . . . . . . 41
Assigning Values to Variables . . . . . . . . . . . . . . . . 42
Understanding the Data Types of Variables . . . . . . . . . . 43
Declaring Named Constants . . . . . . . . . . . . . . . . 44
Performing Arithmetic Operations . . . . . . . . . . . . . . . 45
Understanding the Advantages of Modularization . . . . . . . . . 48
Modularization Provides Abstraction . . . . . . . . . . . . . 49
Modularization Allows Multiple Programmers to
Work on a Problem . . . . . . . . . . . . . . . . . . . 50
Modularization Allows You to Reuse Work . . . . . . . . . . . 50
Modularizing a Program . . . . . . . . . . . . . . . . . . . 51
Declaring Variables and Constants within Modules . . . . . . . 55
Understanding the Most Common Configuration for Mainline Logic . 57
Creating Hierarchy Charts . . . . . . . . . . . . . . . . . . 61
Features of Good Program Design . . . . . . . . . . . . . . . 63
Using Program Comments . . . . . . . . . . . . . . . . . 64
Choosing Identifiers . . . . . . . . . . . . . . . . . . . . 66
Designing Clear Statements . . . . . . . . . . . . . . . . 68
Writing Clear Prompts and Echoing Input . . . . . . . . . . . 69
Maintaining Good Programming Habits . . . . . . . . . . . . 71
Chapter Summary . . . . . . . . . . . . . . . . . . . . . . 72
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . . 73
Review Questions . . . . . . . . . . . . . . . . . . . . . . 76
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . 79
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . . 81
Game Zone . . . . . . . . . . . . . . . . . . . . . . . . 82
Up for Discussion . . . . . . . . . . . . . . . . . . . . . 82

C H AP T E R 3 Understanding Structure . . . . . . . . . . . 83
The Disadvantages of Unstructured Spaghetti Code . . . . . . . 84
Understanding the Three Basic Structures . . . . . . . . . . . 86
Using a Priming Input to Structure a Program . . . . . . . . . . 95
Understanding the Reasons for Structure . . . . . . . . . . . 101
Recognizing Structure . . . . . . . . . . . . . . . . . . . 102
Structuring and Modularizing Unstructured Logic . . . . . . . . 105
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 110 ix
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 111
Review Questions . . . . . . . . . . . . . . . . . . . . . 112
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 114
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 118
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 118
Up for Discussion . . . . . . . . . . . . . . . . . . . . 119

C H AP T E R 4 Making Decisions . . . . . . . . . . . . . 121

Boolean Expressions and the Selection Structure . . . . . . . 122


Using Relational Comparison Operators . . . . . . . . . . . 126
Avoiding a Common Error with Relational Operators . . . . . 129
Understanding AND Logic . . . . . . . . . . . . . . . . . 129
Nesting AND Decisions for Efficiency . . . . . . . . . . . . 132
Using the AND Operator . . . . . . . . . . . . . . . . . 134
Avoiding Common Errors in an AND Selection . . . . . . . . 136
Understanding OR Logic . . . . . . . . . . . . . . . . . . 138
Writing OR Decisions for Efficiency . . . . . . . . . . . . . 140
Using the OR Operator . . . . . . . . . . . . . . . . . . 141
Avoiding Common Errors in an OR Selection . . . . . . . . 143
Making Selections within Ranges . . . . . . . . . . . . . . 148
Avoiding Common Errors When Using Range Checks . . . . . 150
Understanding Precedence When Combining AND
and OR Operators . . . . . . . . . . . . . . . . . . . . 154
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 157
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 158
Review Questions . . . . . . . . . . . . . . . . . . . . . 159
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 162
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 167
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 167
Up for Discussion . . . . . . . . . . . . . . . . . . . . 168
CONTENTS

C H AP T E R 5 Looping . . . . . . . . . . . . . . . . . 169

Understanding the Advantages of Looping . . . . . . . . . . 170


Using a Loop Control Variable . . . . . . . . . . . . . . . . 171
Using a Definite Loop with a Counter . . . . . . . . . . . . 172
x
Using an Indefinite Loop with a Sentinel Value . . . . . . . . 173
Understanding the Loop in a Program’s Mainline Logic . . . . 175
Nested Loops . . . . . . . . . . . . . . . . . . . . . . 177
Avoiding Common Loop Mistakes . . . . . . . . . . . . . . 183
Mistake: Neglecting to Initialize the Loop Control Variable . . . 183
Mistake: Neglecting to Alter the Loop Control Variable . . . . 185
Mistake: Using the Wrong Comparison with the Loop Control
Variable . . . . . . . . . . . . . . . . . . . . . . . 186
Mistake: Including Statements Inside the Loop
that Belong Outside the Loop . . . . . . . . . . . . . . 187
Using a for Loop . . . . . . . . . . . . . . . . . . . . . 192
Common Loop Applications . . . . . . . . . . . . . . . . . 194
Using a Loop to Accumulate Totals . . . . . . . . . . . . 194
Using a Loop to Validate Data . . . . . . . . . . . . . . . 198
Limiting a Reprompting Loop . . . . . . . . . . . . . . . 200
Validating a Data Type . . . . . . . . . . . . . . . . . . 202
Validating Reasonableness and Consistency of Data . . . . . 203
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 205
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 205
Review Questions . . . . . . . . . . . . . . . . . . . . . 206
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 209
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 211
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 211
Up for Discussion . . . . . . . . . . . . . . . . . . . . 212

C H AP T E R 6 Arrays . . . . . . . . . . . . . . . . . . 213

Storing Data in Arrays . . . . . . . . . . . . . . . . . . . 214


How Arrays Occupy Computer Memory . . . . . . . . . . . 214
How an Array Can Replace Nested Decisions . . . . . . . . . 216
Using Constants with Arrays . . . . . . . . . . . . . . . . 224
Using a Constant as the Size of an Array . . . . . . . . . . 224
Using Constants as Array Element Values . . . . . . . . . . 225
Using a Constant as an Array Subscript . . . . . . . . . . 225
Searching an Array for an Exact Match . . . . . . . . . . . . 226
Using Parallel Arrays . . . . . . . . . . . . . . . . . . . . 230
Improving Search Efficiency . . . . . . . . . . . . . . . . 234
Searching an Array for a Range Match . . . . . . . . . . . . 237
Remaining within Array Bounds . . . . . . . . . . . . . . . 241 xi
Using a for Loop to Process Arrays . . . . . . . . . . . . . 244
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 245
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 246
Review Questions . . . . . . . . . . . . . . . . . . . . . 246
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 249
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 253
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 253
Up for Discussion . . . . . . . . . . . . . . . . . . . . 255

C H AP T E R 7 File Handling and Applications . . . . . . . 257


Understanding Computer Files . . . . . . . . . . . . . . . 258
Organizing Files . . . . . . . . . . . . . . . . . . . . . 259
Understanding the Data Hierarchy . . . . . . . . . . . . . . 260
Performing File Operations . . . . . . . . . . . . . . . . . 261
Declaring a File . . . . . . . . . . . . . . . . . . . . . 261
Opening a File . . . . . . . . . . . . . . . . . . . . . 262
Reading Data from a File . . . . . . . . . . . . . . . . . 262
Writing Data to a File . . . . . . . . . . . . . . . . . . 264
Closing a File . . . . . . . . . . . . . . . . . . . . . . 264
A Program that Performs File Operations . . . . . . . . . . 264
Understanding Sequential Files and Control Break Logic . . . . 267
Understanding Control Break Logic . . . . . . . . . . . . 268
Merging Sequential Files . . . . . . . . . . . . . . . . . . 273
Master and Transaction File Processing . . . . . . . . . . . 281
Random Access Files . . . . . . . . . . . . . . . . . . . 290
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 292
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 293
Review Questions . . . . . . . . . . . . . . . . . . . . . 295
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 299
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 302
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 302
Up for Discussion . . . . . . . . . . . . . . . . . . . . 303
CONTENTS

C H AP T E R 8 Advanced Data Handling Concepts . . . . . 305

Understanding the Need for Sorting Data . . . . . . . . . . . 306


Using the Bubble Sort Algorithm . . . . . . . . . . . . . . . 307
Understanding Swapping Values . . . . . . . . . . . . . . 308
xii
Understanding the Bubble Sort . . . . . . . . . . . . . . 309
Sorting a List of Variable Size . . . . . . . . . . . . . . . 318
Refining the Bubble Sort to Reduce Unnecessary
Comparisons . . . . . . . . . . . . . . . . . . . . . 322
Refining the Bubble Sort to Eliminate Unnecessary
Passes . . . . . . . . . . . . . . . . . . . . . . . 324
Sorting Multifield Records . . . . . . . . . . . . . . . . . 326
Sorting Data Stored in Parallel Arrays . . . . . . . . . . . 326
Sorting Records as a Whole . . . . . . . . . . . . . . . 328
Using the Insertion Sort Algorithm . . . . . . . . . . . . . . 329
Using Multidimensional Arrays . . . . . . . . . . . . . . . . 333
Using Indexed Files and Linked Lists . . . . . . . . . . . . . 340
Using Indexed Files . . . . . . . . . . . . . . . . . . . 340
Using Linked Lists . . . . . . . . . . . . . . . . . . . . 342
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 345
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 346
Review Questions . . . . . . . . . . . . . . . . . . . . . 347
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 350
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 352
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 353
Up for Discussion . . . . . . . . . . . . . . . . . . . . 354

C H AP T E R 9 Advanced Modularization Techniques . . . . 355


Using Methods with No Parameters . . . . . . . . . . . . . 356
Creating Methods that Require Parameters . . . . . . . . . . 358
Creating Methods that Require Multiple Parameters . . . . . 364
Creating Methods that Return a Value . . . . . . . . . . . . 366
Using an IPO Chart . . . . . . . . . . . . . . . . . . . 372
Passing an Array to a Method . . . . . . . . . . . . . . . . 373
Overloading Methods . . . . . . . . . . . . . . . . . . . 380
Avoiding Ambiguous Methods . . . . . . . . . . . . . . . 383
Using Predefined Methods . . . . . . . . . . . . . . . . . 386
Method Design Issues: Implementation Hiding, Cohesion,
and Coupling . . . . . . . . . . . . . . . . . . . . . . 388
Understanding Implementation Hiding . . . . . . . . . . . 388
Increasing Cohesion . . . . . . . . . . . . . . . . . . . 388
Reducing Coupling . . . . . . . . . . . . . . . . . . . 389 xiii
Understanding Recursion . . . . . . . . . . . . . . . . . . 390
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 395
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 396
Review Questions . . . . . . . . . . . . . . . . . . . . . 397
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 400
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 404
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 404
Up for Discussion . . . . . . . . . . . . . . . . . . . . 405

C H AP T E R 1 0 Object-Oriented Programming . . . . . . . 407


Principles of Object-Oriented Programming . . . . . . . . . . 408
Classes and Objects . . . . . . . . . . . . . . . . . . . 408
Polymorphism . . . . . . . . . . . . . . . . . . . . . 412
Inheritance . . . . . . . . . . . . . . . . . . . . . . . 413
Encapsulation . . . . . . . . . . . . . . . . . . . . . . 414
Defining Classes and Creating Class Diagrams . . . . . . . . 415
Creating Class Diagrams . . . . . . . . . . . . . . . . . 417
The Set Methods . . . . . . . . . . . . . . . . . . . . 420
The Get Methods . . . . . . . . . . . . . . . . . . . . 421
Work Methods . . . . . . . . . . . . . . . . . . . . . 422
Understanding Public and Private Access . . . . . . . . . . . 424
Organizing Classes . . . . . . . . . . . . . . . . . . . . 428
Understanding Instance Methods . . . . . . . . . . . . . . 429
Understanding Static Methods . . . . . . . . . . . . . . . 434
Using Objects . . . . . . . . . . . . . . . . . . . . . . . 436
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 440
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 440
Review Questions . . . . . . . . . . . . . . . . . . . . . 442
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 445
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 447
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 447
Up for Discussion . . . . . . . . . . . . . . . . . . . . 447
CONTENTS

C H AP T E R 1 1 More Object-Oriented Programming Concepts 449

Understanding Constructors . . . . . . . . . . . . . . . . 450


Default Constructors . . . . . . . . . . . . . . . . . . . 450
Nondefault Constructors . . . . . . . . . . . . . . . . . 453
xiv
Overloading Methods and Constructors . . . . . . . . . . . 453
Understanding Destructors . . . . . . . . . . . . . . . . . 456
Understanding Composition . . . . . . . . . . . . . . . . . 458
Understanding Inheritance . . . . . . . . . . . . . . . . . 459
Understanding Inheritance Terminology . . . . . . . . . . . 462
Accessing Private Fields and Methods of a Parent Class . . . 465
Using Inheritance to Achieve Good Software Design . . . . . 470
An Example of Using Predefined Classes: Creating GUI Objects . 472
Understanding Exception Handling . . . . . . . . . . . . . . 473
Drawbacks to Traditional Error-Handling Techniques . . . . . 473
The Object-Oriented Exception-Handling Model . . . . . . . . 475
Using Built-in Exceptions and Creating Your Own Exceptions . . 477
Reviewing the Advantages of Object-Oriented Programming . . . 479
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 479
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 480
Review Questions . . . . . . . . . . . . . . . . . . . . . 482
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 485
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 489
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 489
Up for Discussion . . . . . . . . . . . . . . . . . . . . 490

C H AP T E R 1 2 Event-Driven GUI Programming,


Multithreading, and Animation . . . . . . . 491

Understanding Event-Driven Programming . . . . . . . . . . . 492


User-Initiated Actions and GUI Components . . . . . . . . . . 495
Designing Graphical User Interfaces . . . . . . . . . . . . . 498
The Interface Should Be Natural and Predictable . . . . . . . 498
The Interface Should Be Attractive, Easy to Read, and
Nondistracting . . . . . . . . . . . . . . . . . . . . 499
To Some Extent, It’s Helpful If the User Can Customize Your
Applications . . . . . . . . . . . . . . . . . . . . . 500
The Program Should Be Forgiving . . . . . . . . . . . . . 500
The GUI Is Only a Means to an End . . . . . . . . . . . . . 500
Developing an Event-Driven Application . . . . . . . . . . . . 501
Creating Storyboards . . . . . . . . . . . . . . . . . . 502
Defining the Storyboard Objects in an Object Dictionary . . . . 502
Defining Connections Between the User Screens . . . . . . . 503
Planning the Logic . . . . . . . . . . . . . . . . . . . . 504 xv
Understanding Threads and Multithreading . . . . . . . . . . 509
Creating Animation . . . . . . . . . . . . . . . . . . . . 512
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 515
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 516
Review Questions . . . . . . . . . . . . . . . . . . . . . 517
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 520
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 520
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 521
Up for Discussion . . . . . . . . . . . . . . . . . . . . 522

C H AP T E R 1 3 System Modeling with the UML . . . . . . . 523

Understanding System Modeling . . . . . . . . . . . . . . . 524


What Is the UML? . . . . . . . . . . . . . . . . . . . . . 525
Using UML Use Case Diagrams . . . . . . . . . . . . . . . 527
Using UML Class and Object Diagrams . . . . . . . . . . . . 533
Using Other UML Diagrams . . . . . . . . . . . . . . . . . 537
Sequence Diagrams . . . . . . . . . . . . . . . . . . . 537
Communication Diagrams . . . . . . . . . . . . . . . . 538
State Machine Diagrams . . . . . . . . . . . . . . . . . 539
Activity Diagrams . . . . . . . . . . . . . . . . . . . . 540
Component and Deployment Diagrams . . . . . . . . . . . 542
Profile Diagrams . . . . . . . . . . . . . . . . . . . . 544
Diagramming Exception Handling . . . . . . . . . . . . . 544
Deciding When to Use the UML and Which UML Diagrams to Use . 546
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 547
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 548
Review Questions . . . . . . . . . . . . . . . . . . . . . 549
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 552
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 553
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 553
Up for Discussion . . . . . . . . . . . . . . . . . . . . 554
CONTENTS

C H AP T E R 1 4 Using Relational Databases . . . . . . . . 555

Understanding Relational Database Fundamentals . . . . . . . 556


Creating Databases and Table Descriptions . . . . . . . . . . 558
Identifying Primary Keys . . . . . . . . . . . . . . . . . . 560
xvi
Understanding Database Structure Notation . . . . . . . . . . 563
Working with Records within Tables . . . . . . . . . . . . . 564
Creating Queries . . . . . . . . . . . . . . . . . . . . . 565
Understanding Relationships between Tables . . . . . . . . . 568
Understanding One-To-Many Relationships . . . . . . . . . . 569
Understanding Many-To-Many Relationships . . . . . . . . . 569
Understanding One-To-One Relationships . . . . . . . . . . 573
Recognizing Poor Table Design . . . . . . . . . . . . . . . 574
Understanding Anomalies, Normal Forms, and Normalization . . 576
First Normal Form . . . . . . . . . . . . . . . . . . . . 578
Second Normal Form . . . . . . . . . . . . . . . . . . 579
Third Normal Form . . . . . . . . . . . . . . . . . . . 582
Database Performance and Security Issues . . . . . . . . . . 585
Providing Data Integrity . . . . . . . . . . . . . . . . . 585
Recovering Lost Data . . . . . . . . . . . . . . . . . . 586
Avoiding Concurrent Update Problems . . . . . . . . . . . 586
Providing Authentication and Permissions . . . . . . . . . . 586
Providing Encryption . . . . . . . . . . . . . . . . . . . 587
Chapter Summary . . . . . . . . . . . . . . . . . . . . . 587
Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 589
Review Questions . . . . . . . . . . . . . . . . . . . . . 591
Exercises . . . . . . . . . . . . . . . . . . . . . . . . 594
Find the Bugs . . . . . . . . . . . . . . . . . . . . . . 598
Game Zone . . . . . . . . . . . . . . . . . . . . . . . 598
Up for Discussion . . . . . . . . . . . . . . . . . . . . 598

A PP E N D I X A Understanding Numbering Systems


and Computer Codes . . . . . . . . . . . . 601

A PP E N D I X B Flowchart Symbols . . . . . . . . . . . . . 611

A PP E N D I X C Structures . . . . . . . . . . . . . . . . . 612
A PP E N D I X D Solving Difficult Structuring Problems . . . . 614

A PP E N D I X E Creating Print Charts . . . . . . . . . . . . 624

A PP E N D I X F Two Variations on the Basic Structures—case xvii


and do-while . . . . . . . . . . . . . . . 626

Glossary . . . . . . . . . . . . . . . . . . 633
Index . . . . . . . . . . . . . . . . . . . . 653
Preface
xviii

Programming Logic and Design, Comprehensive, Seventh Edition provides the beginning
programmer with a guide to developing structured program logic. This textbook assumes no
programming language experience. The writing is nontechnical and emphasizes good
programming practices. The examples are business examples; they do not assume
mathematical background beyond high school business math. Additionally, the examples
illustrate one or two major points; they do not contain so many features that students become
lost following irrelevant and extraneous details.
The examples in this book have been created to provide students with a sound background in
logic, no matter what programming languages they eventually use to write programs. This
book can be used in a stand-alone logic course that students take as a prerequisite to a
programming course, or as a companion book to an introductory programming text using
any programming language.

Organization and Coverage


Programming Logic and Design, Comprehensive, Seventh Edition introduces students to
programming concepts and enforces good style and logical thinking. General programming
concepts are introduced in Chapter 1. Chapter 2 discusses using data and introduces two
important concepts: modularization and creating high-quality programs. It is important to
emphasize these topics early so that students start thinking in a modular way and concentrate
on making their programs efficient, robust, easy to read, and easy to maintain.
Chapter 3 covers the key concepts of structure, including what structure is, how to recognize
it, and most importantly, the advantages to writing structured programs. This chapter’s
content is unique among programming texts. The early overview of structure presented here
gives students a solid foundation in thinking in a structured way.
Chapters 4, 5, and 6 explore the intricacies of decision making, looping, and array
manipulation. Chapter 7 provides details of file handling so students can create programs that
process a significant amount of data.
In Chapters 8 and 9, students learn more advanced techniques in array manipulation and
modularization. Chapters 10 and 11 provide a thorough yet accessible introduction to
concepts and terminology used in object-oriented programming. Students learn about
classes, objects, instance and static class members, constructors, destructors, inheritance, and
the advantages of object-oriented thinking.
Random documents with unrelated
content Scribd suggests to you:
Vähitellen täyttyi sali vieraista. Siinä olivat Corbulo, vasta nimitetty
sotajoukkojen ylipäällikkö, jonka oli määrä vihdoinkin lopettaa sota
aasialaisia vastaan; Markus, Britannian käskynhaltija; Otho, keisarin
uskottu juomatoveri; Petronius, roomalaisen ylhäisön hienoin,
nerokkain seuramies; Burrus, kaartinprefekti; Seneca, vanhanajan
suurin filosofi; Tigellinus, caesarin salasihteeri; Luccanus, Senecan
sukulainen ja etevä runoilija; Pomponius Mela ja paljon muita
valtiomiehiä ja taiteilijoita sekaisin.

Myös ulkomaalaisia valtijoita, vieraita Aasiasta ja Pohjolasta liikkui


saleissa. Näistä veti erikoisempaa huomiota puoleensa armenialainen
kruununtavottelija Tiridates. Hänelle osoitettiin mitä suurinta
huomaavaisuutta caesarin pidoissa, jott'ei hän niin helposti huomaisi
Rooman valtakunnan ystävien ja liittolaisten olevan vaan kultaisilla
kahleilla kytkettyjä orjia.

Torventörähdykset ilmoittivat keisarin saapumisen. Heti senjälkeen


astui caesar saliin, kävi paikalleen ystäviensä tervehdyshuutojen
kaikuessa. Pidot alkoivat. Neron katse lensi pikaisesti pöydän ympäri
ja pysähtyi hetkeksi muutaman tyhjän paikan kohdalle. Hänen
otsansa vetäytyi ryppyyn.

Mutta pian kirkastuivat hänen kasvonsa jälleen. Ruokasalin


edustalla olevaan pylväskäytävään ilmestyi prinssi Britannicus, astui
nopeasti pöydän luo ja tervehti kunnioittavasti Caesaria.

"Suo anteeksi epätäsmällisyyteni, caesar", sanoi hän, "olen


keskustellut keisarinnan kanssa ja toivon etten sillä ole herättänyt
epäsuosiotasi."

Nero laski hymyillen sormuksilla koristetun kätensä prinssin olalle.


"Jätä anteeksipyytelysi, rakas Britannicus. Olen sinulle
kiitollisuuden velassa, että olet huomaavainen keisarinnalle.
Yksinäisyys, jolla hän itsensä ympäröi, vaikuttaa painostavasti
häneen."

Britannicus kumarsi ja astui paikalleen.

Aterian alkuosa kului verrattain rauhallisesti. Keskusteltiin


poliittisesta asemasta ja haasteltiin arkipäiväisistä aiheista. Mutta jo
aterian keskivaiheilla unohtuivat sirot tavat, joiden vertauskuviksi oli
ripustettu ruusuja pöydän yläpuolelle. Huudettiin, meluttiin ja
naurettiin kilvan, välittämättä lainkaan keisarista. Tämänkin kasvot
alkoivat runsaasta viinin nauttimisesta punottaa. Juomanlaskija
juoksi ahkeraan edestakaisin sekoittaen vettä viiniin etuhuoneessa,
jonne tynnörit olivat asetetut. Seppelkiehkuraiset poikaset
puikkelehtivat vieraitten välillä täyttäen heidän maljansa aina
uudelleen. Juhlivien ympärille levisi hajuvesien viehättävä tuoksu.
Vieraat olivat painaneet laakeri- ja viininlehtiseppeleet päähänsä,
orjat voitelivat herrojensa käsivarret hyvänhajuisilla öljyillä.

Juomingit olivat parhaillaan. Neron viittauksesta lehahti saliin


joukko kevytjalkaisia tanssijattaria puoleksi verhoutuneina
babylonialaisiin kultakoristeisiin harsokankaisiin, jotka tuskin peittivät
neitosten moitteettomia muotoja. Heitä seurasi laulajia, jotka
lauluillaan ylistivät keisaria, huilunsoittajia ja ilveilijöitä mitä
vaihtelevin joukko.

Nyt nosti Nero raskaan kultaisen maljansa, teki käskevän


kädenliikkeen, ja kaikki vaikenivat.

"Minä juon käskynhaltija Markuksen kunniaksi. Onni hänen


matkalleen ja jumalat hänen suojakseen! Britannian ja minun
uskollisen prefektini onneksi!"

Kaikki yhtyivät maljaan. Onnentoivotusten myrsky vyöryi ympäri


pöytää nuoren aatelismiehen kunniaksi, jonka kasvot ilmaisivat
kaikkea muuta kuin surua isän kuoleman johdosta.

Nyt heilutti Markus itse maljaansa: "Jupiter suojanasi, armollinen


keisari. Sinä olet suurin kaikista jumalallisista caesareista, jotka ovat
hallinneet Roomaa. Mitä oli Augustus sinun rinnallasi? Varjo. Sotiasi
ovat jumalat suosineet. Valtakunta kukoistaa hyvinvointia ja
varallisuutta. Sinä olet viisas ja urhoollinen, tarmokas ja lempeä,
oikeudenmukainen ja ankara, missä valtakunnan etu on
kysymyksessä. Onnellinen olet, ikuinen Rooma! Kuolemattomat ovat
lähettäneet parhaimman joukostaan maailmaa hallitsemaan!"

Myrskyisät suosionosoitukset seurasivat näitä sanoja. Huilujen


sävelet hukkuivat vieraitten äänekkääseen puheluun ja nauruun.

Caesar antoi merkin jollekin etuhuoneessa olevalle henkilölle.

Vanha, inhottavan näköinen rampa vaimo, kummallisesti puettu,


antoi juomanlaskijalle pienen hopeaisen pullon. Silmänräpäykseksi
yhtyivät juomanlaskijan ja Neron katseet.

Tämä nyökäytti, ja tekoparran alla vetäytyi juomanlaskijan suu


ilkeään hymyyn.

Juomanlaskija oli Anicetus, nykyään Neron uskottu. Ei kukaan


nähnyt, kuinka hän verkkaan ja huolellisesti laskien valutti pullosta
kymmenen pisaraa muutamaan maljaan; ei kukaan nähnyt miten
hän vaihtoi tämän maljan erään toisen kanssa ja sitten toi sen
pöydälle.
Juopuneena, kasvot vääntyneinä ja silmät hehkuvina heilutti
caesar maljaansa.

"Britannicuksen terveydeksi, Rooman jalon prinssin,


urhoollisimman sotilaan ja uskollisimman ritarin kunniaksi!"

Britannicus hymyili.

"Caesarin onneksi, joka on, lahjoittaakseen Roomalle rauhan,


uhrannut oman leponsa."

Hän vei maljan huulilleen. Caesarin katseet tarkastelivat häntä


kuten pedon silmät.

"Eläköön Britannicus", kaikui huoneessa. Silloin — mitä merkitsee


tämä? Prinssi, puristaen suonenvedontapaisesti maljaa oikeassa
kädessään, hyppää paikaltaan, horjahtaa, tarttuu pöydän reunaan
pysyäkseen pystyssä ja puhuu kolkolla äänellä luonnottoman suuriksi
levinneet silmät jäykästi Caesariin suunnattuina: "Kolminkertainen
murhamies — jälkeeni verioikeus!"

Viimeisin voimin singahutti hän maljan caesaria kohti. Se lensi


keisarin ohi, mutta jäännökset sen sisällöstä tahrasivat hänen
kallisarvoisen, turkisreunusteisen purppuransa, jättäen siihen suuria
täpliä.

Britannicus oli luhistunut maahan eikä enään liikahtanut. Nero


seisoi vapisten valtaistuinkorokkeen viimeisellä portaalla. Osa
vieraista oli paennut, rajaton hämminki vallitsi seurassa.

Nero nosti kättään.

Hänen kasvonpiirteensä tasaantuivat.


"Prinssi — voipi pahoin. Viekää hänet ulos —."

Juhla jatkui edelleen.


XIV LUKU.

JULIA.

Syvällä maanpinnan alapuolella sijaitsevassa vankilanholvissa,


jossa päivän ja yön vaihteesta ei mitään tiennyt, istui Julia kiveen
kahlittuna.

Hänen kasvoistaan henki rauha ja osaansa alistuminen.


Viikkomääriä oli hän jo täällä istunut kohtaloansa odotellen. Mutta
kukaan ei hänestä huolinut. Ystävät näyttivät hänet unhoittaneen
samoin kuin vihollisetkin.

Yksinäisyys ja kylmä värisyttivät aika ajoin hänen ruumistaan.


Mutta hän ei pelännyt mitään. Ajatus, että hän oli onnistunut
pelastamaan viattoman miehen, joka jo näytti olevan
auttamattomasti kiedottu hiipivän rikollisuuden pauloihin, antoi
hänelle rohkeutta ja luottamusta kestämään kaiken, mitä Jumala oli
hänen kärsittäväkseen asettava.

Raskas portti vapisi. Oven yli kulkeva rautasalpa siirrettiin syrjään.


Julia kuunteli. Portaitten yläpäästä näkyi valoa.
Hitaasti, varovasti tunnustellen läheni sieltä valkea olento. Ovi oli
hänen jälkeensä taas sulkeutunut.

Julia nousi pystyyn. Kahleet kalisivat.

"Kuka olet sinä, mikä voima tuopi sinut tänne?" huudahti hän
puolittain iloisesti, puolittain peloissaan.

Henkilö tuli lähemmä; nyt seisoi hän aivan Julian edessä, joka
pelästyneenä peräytyi.

Vieras viskasi hunnun syrjään ja Julia näki edessään kalpeat


surulliset kasvot.

"Oktavia — rakas Oktavia!" huudahti Julia, kykenemättä


hillitsemään liikutustaan, syleillen keisarinnan jalkoja.

Tämä nosti hänet ylös painoi hellästi häntä rintaansa vasten.

"Julia!"

Hänen suunnaton rakkautensa ja saalinsa ilmeni tässä ainoassa


sanassa.

Kauvan seisoivat he siinä liikkumattomina, sanaa sanomatta.

"Miten pääsit sinä tänne?" kysyi Julia, keisarinnan istuuduttua


kivellä ja vaivoin hengittäessä ummehtunutta ilmaa, johon Julia oli jo
tottunut.

"Olen etsinyt sinua päivät ja yöt", vastasi keisarinna. "Maksoi


paljon vaivaa, kärsivällisyyttä ja toivoa, ennenkuin sinut löysin.
Keisarin äiti on ovela. Mutta viimeinkin sain kullalla voiton hänen
kavaluudestaan. Hänen valtansa on murrettu — hän on nyt enään
ainoastaan yksinäinen nainen, joka uneksii vaalentuneesta
loistostaan."

Julia kuulosti tarkkaavammin.

"Mitä sanot? Onko Roomassa tapahtunut jotain?"

"Ja sinä kysyt? Roomassa tapahtuu joka päivä jotakin. Nero on


kostanut sukumme puolesta. Pallas on kuollut."

"Pallas kuollut?"

"Murhattu."

"Jumala armahtakoon häntä! Hän on syntisenä ja rikosten


painamana täältä eronnut. Hänessä on kukistunut Agrippinan vallan
mahtavin edustaja. — Miten otti Britannicus vastaan tiedon tästä
tapahtumasta?"

Oktavia ei vastannut.

Julia ymmärsi kaiken. Naiset lukevat tapahtumat jo silmäyksistä.


Hän katsoi Oktaviaan kauhistuneena. Sitten kääntyi hän poispäin,
kätki kasvonsa hiljaa nyyhkien togaansa.

Oktavia istui hiljaa, liikkumattomana, katsellen polttavin silmin


tyhjään pimeyteen.

Hän oli unohtanut itkemisen taidon, onnettomuuden viimeisen


lieventäjän.

Hetkisen kuluttua sanoi keisarinna:

"Sinun pitää paeta, Julia."


Tyttö katseli ihmetellen häneen.

"Paeta? — Miksi?"

"Miksikö? Siksi, että sinut muutoin surmataan." Julia hymyili. "Se


on hyvä."

Oktavia vaikeni hetken; sitten sanoi hän lempeästi:

"Sinä kuolisit mielelläsi?"

"Kyllä, Oktavia."

"Kuolema on vapahdus kaikesta pahasta."

Keisarinna lausui tuon hartaasti kuin rukoillessa.

Julian silmät loistivat.

"Mutta sinä et saa kuolla", jatkoi Oktavia, "sillä sinun sydämessäsi


orastaa toivo paremmasta, onnellisemmasta elämästä. Kuolemasi
olisi hyödytöntä, se olisi rikos."

"Rikos? Jos Jumala itse lähettää minulle pyövelit?"

"Jumala? — Jos sinun Jumalasi on niin viisas, oikeudenmukainen


ja kaikkivaltias, kuin sinä olet häntä kuvaillut, ei hän voi tahtoa sitä,
että koko elämän sisältö on vaan kärsimystä."

"Mutta, Oktavia, tätä elämää seuraavan elämän sisältö on


onnellisuus."

Oktavia katsoi Juliaa silmiin ja sanoi lujasti:


"Kuule, Julia. Kadun päässä kävelee vaippaan verhoutunut mies
kuin petoeläin rauhatonna. Hänen silmänsä palavat. Irtonaisena
riippuu miekka hänen vaippansa alla. Hänen katseensa vartioivat
lakkaamatta tätä vankilaa, jonka hän tietää holviensa suojassa
kätkevän ainoan kalleuden, joka tekee hänelle elämän elämisen
arvoiseksi.

"Tällä miehellä on lapsen sielu. Mutta hän rakastaa. Sinä päivänä,


jolloin hän kuulee Julian kuolleen, on Nero alttarin ääressä,
palatsissaan, ajoretkellä, sama se missä, vaipuva verissään maahan."

Julia oli kuunnellut tuskallisesti, loistavin silmin.

"Tämä mies on…"

"Antonius", vastasi keisarinna.

"Antonius", toisti Julia, ja hänen huulillaan väreili hymy, joka kertoi


rajattomasta rakkaudesta.

"Tämä mies pitää sinun pelastaa tulemasta murhaajaksi ja


murhatuksi."

Tuon miehen nimi oli sytyttänyt Julian sydämen. Hänen silmänsä


loistivat ja onnen ja ilon kajastus valaisi hänen kuihtuneita
kasvojaan.

"Mutta miten minä pakenisin", sanoi hän vitkastellen. "Nämä


seinät ovat paksut ja lujat. Portit ovat kaikki teljetyt ja holveissa
kulkevat vartijat."

"Voit paeta ottamalla minun vaippani ja verhoni. Sinä poistut


keisarinnana vankilasta, minä jään tänne Juliana."
"Ei koskaan se tapahdu, Oktavia!"

"Miksikä ei?"

"Minäkö vapauttaisin itseni nähdäkseni sinun kuolevan?"

"Kuka koskisi keisarinnaan? Agrippinan raivo olisi rajaton."

"Minä en sitä pelkää."

"Nero tappaisi sinut."

"Hän ei uskalla sitä, eikä hän sitäpaitsi välitä minusta."

Kauvan esteli Julia. Mutta Oktavia osasi kumota kaikki hänen


vastaväitteensä. Viimein hän suostui toivoen jo samana päivänä
saavansa nähdä keisarinnan terveenä hovissaan. Kahleet irroitti
Oktavia hankkimillaan avaimilla, ja vangittu neito jätti keisarinnan
vaippaan verhoutuneena, harso kasvoille vedettynä vankilan. Vartijat
tervehtivät ja kenenkään estämättä kulki hän holvien läpi. Kun hän
astui kadulle, häikäisi auringon valo hänen silmiänsä niin, ettei hän
nähnyt mitään. Veri pakeni hänen kasvoiltaan ja tiedotonna olisi hän
vaipunut maahan, ellei samassa voimakas käsivarsi olisi kiertynyt
hänen vyötäisilleen ja keveästi kuin lapsen nostanut odottavaan
kantotuoliin. Tuulen nopeudella lennättivät orjat kantotuolin paikalta.

Oktavia istui kivellä, pää rinnalle kumartuneena, pitäen kahleita


ikäänkuin olisi ollut niihin kytkettynä.

"Ne tappavat minut", kuiskasi hän itsekseen, "ja muuta en


hartaammin toivokaan." — — —
*****

Muutamia tunteja edellä kerrottujen tapahtumien jälkeen avautui


vankilan ovi jälleen.

Oktavia näki jonkun naisen laskeutuvan hitaasti portaita alas.


Soihtua kantava mies seurasi häntä.

Alas tultua vetäytyi mies syrjään.

Se oli Callistus.

Nainen astui Oktavian luo.

Se oli Agrippina.

Leskikeisarinna katseli kauvan vangittua.

Viha ja vahingonilo kuvastuivat hänen kasvoiltaan.

"Sinä olet Julia?"

Oktavia nyökäytti päätään.

"Tunnetko rikoksesi?"

Vanki nyökkäsi jälleen.

"Minä vihaan sinua petollisen hyveesi vuoksi. Ymmärrätkö minua?


Sinun täytyy kuolla. Valmistaudu! Onko sinulla vielä toivomuksia?"

Oktavia ravisti päätään.

Agrippina tarttui vasemmalla kädellään hänen tukkaansa ja kohotti


tikaria.
"Millä oikeudella asetuit sinä silloin minun tahtoni ja oikeuden
väliin? Kuka olet sinä, että uskalsit ryöstää minulta uhrikseni
määrätyn miehen? Onko hyve mahtavampi voimaa? Voittaako
totuus, viattomuus paheen rohkeuden? Ei, kyyhkyseni, minä näytän,
että yhä edelleenkin olen Agrippina ja kaikesta huolimatta siksi
jään."

Hän oli tempaissut Oktavian pään pystyyn kumaraisesta


asennostaan, niin että naisten katseet yhtyivät.

Tikari putosi helähtäen lattialle…

Agrippina kannettiin tiedotonna vankikomerosta. Toistamiseen jätti


keisarinna vankilan. Vartijat eivät voineet tätä ihmettä käsittää.
XV LUKU.

ASKEL ASKELEELTA.

Eräissä pidoissa oli Nero tutustunut ensikerran suosikkinsa Othon


lemmittyyn, Sabina Poppeaan. Vastustamaton intohimo ihanaa naista
kohtaan oli herännyt Nerossa ja Poppea koetti jokaisessa
tilaisuudessa sitä kiihoittaa.

Eräänä myrskyistä yötä seuranneena synkkänä aamuna kutsutti


Nero ystävänsä luokseen.

Otho ilmestyi kohta, kauniina kuin nuori jumala, hajuvesillä ja


öljyillä voideltuna, kallisarvoisissa pukineissa. Tällä kertaa ei keisari
ottanut häntä vastaan tuttavallisesti kuten ennen. Hän otti caesarin
asennon ja viittasi Othon, joka yritti kiiruhtaa hänen luokseen,
ylpeällä kädenliikkeellä takaisin.

"Sinulla on, Otho", alkoi nuori keisari, "talossasi nainen, joka on


kyllin arvokas koristamaan valtaistuinta."

Otho kauhistui. Veri karkasi hänen kasvoiltaan. Sillä niin


kevytmielinen kuin nuori Dandy olikin, niin vähän kuin hän koettikin
viettää siveellistä elämää, rakasti hän kuitenkin Sabinaa
intohimoisesti.

"Sinä tarkoitat kaiketi Sabina Poppeaa?" vastasi nuori aatelismies


pitkän vaitiolon jälkeen, ponnistellen näyttääkseen mahdollisimman
välinpitämättömältä.

"Juuri niin", vastasi Nero lyhyesti.

"Hän oli ennen Rufiuksen puoliso."

"Jonka sinä murhasit."

"Ei toki — se oli rehellinen kaksintaistelu."

"Vaikkapa. Sinä olit vietellyt vaimon."

"Jos sitä niin tahdot nimittää, Nero —"

Keisari suoristi itseään.

"Kutsu minua imperatoriksi."

"Jumalat antakoot minulle anteeksi — en tiennyt, ett'et sinä enään


välitä minun ystävyydestäni."

"En. Me emme enään voi olla ystäviä."

"Ja miksi emme caesar?"

"Siksi että minä rakastan Sabinaa."

Otho astui kauhistuneena askelen taaksepäin.

"Hän on minun rakastettuni", sanoi hän terävästi.


"Hänestä tulee minun orjattareni", vastasi caesar raa'asti.

Othon silmät säkenöivät. Hänen huulensa vapisivat.

"Sinä et tule häntä minulta riistämään", sanoi hän uhkaavasti,


kiivaasti hengittäen.

"Sen minä teen, Otho. Ja minä neuvon sinua vanhan


ystävyytemme nimessä välttämään tällä kertaa kaksintaistelua. Hän
on minun, ymmärrätkö?"

Viimeiset sanat kuuluivat kovina. Neron kasvoilla kuvastui koko


hänen rajaton aistillisuutensa ja julmuutensa.

Golgatalta Roomaan

"Ensi yönä sinä jätät Rooman."

Otho löi otsaansa.

"Kuinka caesar, sinä ajat minut maapakoon?"

"En. Sinä olet nyt Lusitanian käskynhaltija."

"Minä en lähde Lusitaniaan", vastasi Otho kiihkoissaan. "Pidä


maasi, tyranni. En vaihda ihaninta naista, joka koskaan on Rooman
tannerta polkenut, maakuntiisi."

"Hyvä."

Nero nousi. Ensimäisen kerran huomasi Otho keisarin


suunnattoman paksun niskan ja hänen kasvojensa aistilliset piirteet.
Nero vetäsi esiripun syrjään. Viereisessä huoneessa seisoi mies
tulipunaisessa viitassa, järkähtämättömän rauhallisena. Hänen
käsivartensa oli paljas, joten muodottoman vahvat lihakset näkyivät.
Hänen suonikkaassa nyrkissään oli suuri miekka.

"Pyöveli!"

Otho peräytyi päästäen raivoisan huudahtuksen.

"Sinä aiot minut murhauttaa? Sinä et kammo alhaisinta,


halveksittavinta salamurhaa päästäksesi naisen omistajaksi?"

Nero ravisti hymyillen päätään. Hän antoi merkin ja härkämäinen


pyöveli astui huoneeseen, laskien raskaan nyrkkinsä Othon olalle,
niin että tämä värisi kuin ruoho.

Auringon säteet leikkivät jättiläisen miekan terällä.

"Hän on sinun!" huusi Otho kauhun valtaamana.

Viittaus — pyöveli hävisi. Esirippu sulkeutui. Kello helähti. Orja otti


Nerolta kirjoituksen. Caesar teki liikkeen kädellään, Lusitanian
käskynhaltia sai mennä.

Tultuansa alas heittäytyi Otho vaunuihinsa.

"Aja", huusi hän kuskille, ja keveät ajoneuvot lensivät nuolen


nopeudella Rooman katuja pitkin. Ritarit, jotka tulivat vastaan,
ihmettelivät hirveätä vauhtia, jolla nuori, päänsä togaan verhonnut
ylimys kiisi eteenpäin. Usea arvasi syynkin ja hymyili ilkkuen.

Saavuttuaan kotiinsa, kiiruhti Otho suoraa päätä rakastettunsa


huoneisiin. Tämä oli juuri noussut kylvystä ja ehtinyt kiireesti
kietaista silkkisen kylpyliinan ympärilleen, kun Otho hengästyneenä
törmäsi sisään. Raskas, tuoksuva ilma ja ihana puolialaston nainen
kiihottivat häntä entistä enemmän. Hän heittäytyi lemmittynsä
jalkoihin ja syleillen hänen polviaan kuiskasi rukoilevasti:

"Älä jätä minua, Poppea — jää luokseni, muutoin kuolen."

Poppea, joka ei ollut ymmärtävinään Othon kiihtymyksen syytä,


kumartui alas niin että hänen tuoksuvat hiuksensa peittivät
polvistuneen miehen pään ja nosti hänet hellästi ylös.

"Mikä sinun on, ystäväni?" kysyi hän hymyillen, Othon katsellessa


häntä tuskallisesti.

"Oh sitä koiraa! Konnaa!" huusi Otho äkillisessä


raivonpuuskauksessa.
"Se hyena tahtoo yhä enemmän ruumiita. Voi häntä!"

"Ketä sinä tarkoitat?" kysyi Poppea.

"Ketä muuta kuin tuota kruunattua hirviötä, valapattoa,


salamurhaajaa, rosvoa ja varasta!"

"Oo, mitä valtiopetoksellisia sanoja sinun suusi puhuu, rakas


Salvius", vastasi Poppea, ja hyväntahtoinen hymy hänen huulillaan
näytti muuttuvan ivaksi. "Tuntuuko hän sinusta todellakin niin
hirveältä?"

"Mitä —" karjasi Otho. "Miellyttääkö hän sinua?"

Poppea nyökäytti päätään.

"Tietysti hän minua miellyttää."


"Sitten, kautta Styxin, täyttyvät kummankin teidän toiveet. Oi
kirottu luuska!"

Poppea ojentausi ylpeästi ja katsoen rakastajaansa lujasti silmiin,


vastasi hän:

"Hän on yhdessä suhteessa sinusta edellä, Salvius."

"Ah — onko hän kauniimpi minua?"

"Ei."

"Vahvempi?"

"Tuskin."

"Hän ei voi tarjota sinulle mitään enemmän kuin minä — paitsi


häpeää, pahetta."

"Mistä aikain on Othosta tullut Caton oppien suosija?"

Otho katsoi hämmästyneenä eteensä.

"Sinä rakastat häntä?"

"Ehkä. Nero on mies, jota naiset voivat rakastaa."

"Ja sinä luet itsesi niihin, joita paha viehättää?"

"En. Minua viehättää kruunu."

Otho katsoi ällistyneenä naista.

Kuinka ihana hän oli!


"Sinä tahdot päästä keisarinnaksi?"

"Minä tahdon kantaa kruunua. Eikö sinustakin se paremmin


somistaisi minun päätäni kuin tuon jäykän Oktavian?"

Otho ei vastannut.

Poppea heittäytyi nojatuoliin, veti Othon pään syliinsä ja kuiskasi


hänen korvaansa:

"Tarjoa minulle kruunu, Salvius, ja minä olen ikuisesti sinun


omasi."

"Kruunu? Onko minulla kruunuja tarjottavana?"

"Ota."

"Sinä tarkoitat?"

"Minkä kohtalo sinulta kielsi, sen voi jumalien suosio suoda.


Jumalat ovat rohkeiden puolella. Kuinka ihana sinä olisit —
caesarina!"

Otho päästi huudahtuksen ja hypähti pystyyn. Hänen silmänsä


hehkuivat, huulet vapisivat. Käsi puristi sivulla riippuvaa lyhyttä
miekkaa.

Hänen edessään istui Poppea kauniimpana, viettelevämpänä kuin


koskaan.

"Surmaa hänet", sanoi hän kiehtovasti hymyillen.

Esiriput lensivät syrjään.


"Caesar", ilmoitti orja.

Poppea otti silkkivaipan lattialta ja heitti sen välinpitämättömästi


hartioilleen. Hänen silmänsä suuntautuivat säihkyen Othoon, jonka
otsalla pisaroivat hikihelmet.

Nero astui sisään. Oven edessä seisoi vartija. Mutta hän itse oli
aseeton. Hänen synkkä katseensa kiintyi Othoon.

Sitten kääntyi hän Poppeaan päin ja suudellen hänen vaippansa


lievettä kuiskasi hän:

"Tahdotko, että maailman valtijas olisi sinun ensimäinen orjasi?"

Poppea kumartui ja kietoen äkkiä kätensä Neron pään ympäri, niin


että tämän selkä oli Othoa kohti, sanoi hän lujasti:

"Kyllä, minä tahdon —" ja hänen katseensa suuntausi säihkyvänä


Othoon. Aatelismiehen säilä välähti ilmassa ja — putosi helähtäen
marmoriseen pesuammeeseen.

Poppea nauroi. Nero oli salaman nopeudella käännähtänyt. Otho


seisoi poiskääntyneenä, kasvot togaan verhottuina — — —

*****

Oli yö, unten, hyväilyjen ja lemmen hetki. Otho seisoi


makuuhuoneessaan. Poppean vuode oli tyhjä. Kuihtuneet ruusut
kiertelivät patjojen välissä. Himmeä kattolamppu heitti epätasaista
valoa nuoren ritarin kasvoille.

Surusta ei näkynyt enään jälkeäkään hänen kasvoillaan. Suu oli


lujasti, kuten uhmaten kiinni puristettu. Raju lieska paloi
punertuneissa silmissä.

Otho oli matkavalmis. — Kauvan seisoi hän liikkumattomana,


ajatuksiinsa vaipuneena. Sitten painoi hän huulensa vuodetta vasten,
jossa Poppea vielä aamulla oli levännyt ja jätti kiireisin askelin
huoneen. Rautapuku helisi hänen rajusti astuessaan ja ääni kaikui
kolkkona tyhjissä käytävissä. Otho heittäytyi odottavan ratsun
selkään ja nelisti asestetun palvelijajoukon seuraamana pois onnensa
paikalta, onnen, jonka hän rikoksen kautta oli saavuttanut ja
rikoksen kautta menettänyt.

Kun keisarilinna sukelsi kuutamossa näkyviin, pidätti Otho


hevostansa. Ihmeissään katselivat palvelijat herraansa, jonka kasvot
vääntyivät raivoisaan irveen. Mutta sanaakaan ei hän puhunut.
Silmät tuijottivat vaan linnaa kohti ja huulet liikkuivat.

Sitten nelisti ratsujoukko tiehensä.

*****

Linnassa oli harvinaisen hiljaista.

Poppea odotti keisarin makuuhuoneessa kalleisiin, tuoksuviin


vaatteisiin puettuna. Hän lepäsi vuoteella, jota ympäröivät tuoksuvat
ruusunlehtikasat. Hänen silmänsä tarkastelivat peitettä, johon oli
jäljennetty erään kreikkalaisen maalarin mestariteos: Leda ja
joutsen.

Mutta vaikka Poppea oli erittäin hienoaistinen taiteentuntija, ei


kuva voinut hänen mieltään kiinnittää. Rauhattomasti lennähti hänen
katseensa milloin minnekin, ja sekavat ajatukset näyttivät kiusaavan
häntä. Hän nousi ylös ja siirsi verhon syrjään ikkunan edestä.
Alhaalla lepäsi Rooma. Hän antoi katseensa lentää valaistun
kaupungin yli. Silloin huomasi hän äkkiä joukon ratsumiehiä
sukeltavan esiin pimeästä. Etumainen niistä pysähdytti hevosensa, ja
katseli kuin kivipatsaaksi muuttuneena linnaa. Poppea vetäytyi
verhon suojaan, aivan kuin olisi hän pelännyt ritarin, jonka hän hyvin
tunsi, huomaavan hänet. Hetkisen kuluttua oli joukko taas hävinnyt.
Syvä huokaus tunkeusi Poppean rinnasta; vaikka hän ei sitä tahtonut
itselleenkään tunnustaa, tunsi hän, kuinka paljon hän Salvius Othoa
oli rakastanut ja vieläkin rakasti. Kunnianhimo vaan oli ollut sydäntä
vahvempi. Poppea kääntyi pois akkunasta.

Huoneen toisessa päässä seisoi orjatar valmiina hänen käskyjään


täyttämään. Poppeaa hämmästytti tytön tavaton kauneus. Suurista,
loistavista silmistä puhui syvä surumielisyys.

"Astu lähemmä", sanoi Poppea. "Kuka olet?"

Orjatar oli vaiti.

"Etkö voi vastata, koira? Kuka olet, minä kysyn!"

Tytön posket punertuivat ja silmät täyttyivät kyynelin.

"Nimeni on Akte", vastasi hän hiljaa, aivan kuin olisi hän pelännyt
mainita tuota nimeä.

"Akte", toisti Poppea miettien. "Oletko sinä kreikkalainen?"

"Olen, valtijatar."

"Kauvanko olet ollut jo Roomassa?"

"Muutamia vuosia, valtijatar."


"Kuka toi sinut tänne?"

"Caesar."

Poppean silmät venähtivät levälleen säikähdyksestä.

"Oletko sinä se Akte, jota sanotaan Neron vaikutusvaltaisimmaksi


lemmityksi?"

Tyttö heittäytyi rukoillen maahan.

"Älä vihastu minuun, valtijatar — minun rikokseni oli rajaton


rakkauteni häneen."

Poppea nosti vapisevan tytön pystyyn.

"Sinä rakastat häntä vieläkin?"

"Rakastan, valtijatar."

Vavisten kääntyi Poppea poispäin ja hänen ajatuksensa vertailivat


salaman nopeudella tuon tytön kohtaloa hänen omaan
tulevaisuuteensa.

"Minä pelkään sitä miestä", kuiskasi hän.

Oviverhot vedettiin syrjään ja komea nainen astui majesteetillisesti


huoneeseen, diademi tummassa tukassa.

Akte pakeni pimeään nurkkaan.

Poppea risti käsivartensa rinnoilleen ja katseli puolittain


ihmetellen, puolittain peloissaan vierasta, jonka hän heti tunsi
Agrippinaksi, caesarin äidiksi.
Tämä tarkasteli ääneti keisarin uutta lemmittyä.

Tervehtimättä virkkoi hän vihdoin:

"Kuinka tulet sinä näihin huoneisiin?"

Poppea ei vastannut.

"Oletko joku uusi orjatar?"

Poppean silmät paloivat raivosta ja suuttumuksesta.

"Olen keisarinna", sanoi hän ylpeästi.

Agrippina nauroi ivallisesti.

"Kuuleppas sitä — mistä saakka on Roomalla kunnia totella kahta


keisarinnaa? Minä tunnen ainoastaan yhden keisarinnan; se on
Oktavia."

Poppea, joka ei voinut hillitä kiukkuaan, vastasi kiivaasti:

"Oktavia oli keisarinna siihen asti kun Poppea tuli."

"Mitä, orja", huusi keisarin äiti vihaisesti, "sinä uskallat kantaa


häpeäsi valtaistuimen eteen saakka. Sinä uskallat kohottaa silmäsi
kruunuun, jonka jumalat ovat suoneet koskemattomana
omaisuutena Germanicuksen tyttärelle?"

"Koskemattomana?" nauroi Poppea, "katso minua, enkö ole


kaunis?"

"Ehkä."
"Kauniimpi kuin Oktavia?"

"Älä häpäise. Kuinka voit sinä hänen hyveitään verrata omiin


paheisiisi?"

"Paheille, Agrippina, kuuluu Rooman kruunu."

Agrippina kohotti valkoisen käsivartensa. Tikarin kärki välkkyi


lampun valossa.

"Uskallappas", kirkasi Poppea.

"Mitä täällä tehdään?" kajahti äkkiä vihainen, syvä ääni.

Nero seisoi naisten välillä.

Kuten lyöty kissa vetäytyi Agrippina takaisin.

"Hän häpäisi minua", sanoi hän Poppeaa osoittaen.

"Hän sanoi minua orjaksi", vastasi Poppea kiireesti.

Nero heitti äitiinsä ilkeän katseen.

"Poistu", sanoi hän lyhyesti.

Agrippina vitkasteli.

"Poistu", karjahti Nero uudestaan äänellä, jonka kaiku kiiri kauvan


palatsin holveissa.

Pää kumarassa luikki Agrippina huoneesta.

"Käy vartioimaan", komensi Nero vapisevalle Aktelle, ja


tottelevaisena hiipi tyttö esirippujen väliin, johon hän kuuli jokaisen
caesarin Poppealle lausuman hyväilysanan.

Nero oli vetänyt Poppean rintaansa vasten, mutta tämä painoi


käsivartensa väliin ja rajusti palavin silmin kuiskasi hän:

"Sinun täytyy hänet tappaa, jos tahdot että minä sinua


rakastaisin."

Nero vastasi juopuneen tavoin.

"Kenet? Akteko?"

"Ei. Agrippina!"

Nero tuskin kuuli.

"Hänen täytyy kuolla", vastasi hän tietämättä mitä sanoi. Hänet oli
vallannut raju huumaus, jonka intohimo Poppeaan oli synnyttänyt.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like