(eBook PDF) Brief C++: Late Objects, 3rd Edition
install download
https://ebooksecure.com/product/ebook-pdf-brief-c-late-
objects-3rd-edition/
Download more ebook instantly today at https://ebooksecure.com
We believe these products will be a great fit for you. Click
the link to download now, or visit ebooksecure.com
to discover even more!
(eBook PDF) Big C++: Late Objects 3rd Edition
http://ebooksecure.com/product/ebook-pdf-big-c-late-objects-3rd-
edition/
(eBook PDF) Java Concepts: Late Objects, 3rd Edition
http://ebooksecure.com/product/ebook-pdf-java-concepts-late-
objects-3rd-edition/
(eBook PDF) Big Java Late Objects 2nd Edition
http://ebooksecure.com/product/ebook-pdf-big-java-late-
objects-2nd-edition/
(eBook PDF) Starting Out with C++: From Control
Structures through Objects, Brief Version 8th Edition
http://ebooksecure.com/product/ebook-pdf-starting-out-with-c-
from-control-structures-through-objects-brief-version-8th-
edition/
(eBook PDF) Java How to Program, Late Objects Global
Edition 11th Edition
http://ebooksecure.com/product/ebook-pdf-java-how-to-program-
late-objects-global-edition-11th-edition/
(eBook PDF) Starting Out with C++: Early Objects 9th
Edition
http://ebooksecure.com/product/ebook-pdf-starting-out-with-c-
early-objects-9th-edition/
C++ How to Program Early Objects Version 9th Edition
(eBook PDF)
http://ebooksecure.com/product/c-how-to-program-early-objects-
version-9th-edition-ebook-pdf/
Starting Out with C++: Early Objects 9th Edition by
Tony Gaddis (eBook PDF)
http://ebooksecure.com/product/starting-out-with-c-early-
objects-9th-edition-by-tony-gaddis-ebook-pdf/
(eBook PDF) Starting Out with C++ from Control
Structures to Objects 9th Edition
http://ebooksecure.com/product/ebook-pdf-starting-out-with-c-
from-control-structures-to-objects-9th-edition/
BriefC++
Cay Horstmann
Late Objects
3/e
vi Preface
• Selecting Test Cases
• Hand-Tracing
• Storyboards
• Solve a Simpler Problem First
• Reusable Functions
• Stepwise Refinement
• Adapting Algorithms
• Discovering Algorithms by Manipulating Physical Objects
• Draw a Picture (pointer diagrams)
• Tracing Objects (identifying state and behavior)
• Discovering Classes
A visual approach motivates the reader and eases navigation.
Photographs present visual analogies that explain
the nature and behavior of computer concepts.
Step-by-step figures illustrate complex program
operations. Syntax boxes and example tables pres-
ent a variety of typical and special cases in a com-
pact format. It is easy to get the “lay of the land” by
browsing the visuals, before focusing on the textual
material.
Focus on the essentials while being
© Terraxplorer/iStockphoto.
technically accurate.
An encyclopedic coverage is not helpful for a Visual features help the reader
beginning programmer, but neither is the oppo- with navigation.
site—reducing the material to a list of simplistic
bullet points. In this book, the essentials are presented in digestible chunks, with sep-
arate notes that go deeper into good practices or language features when the reader is
ready for the additional information. You will not find artificial over-simplifications
that give an illusion of knowledge.
Reinforce sound engineering practices.
A multitude of useful tips on software quality and common errors encourage the
development of good programming habits. The focus is on test-driven development,
encouraging students to test their programs systematically.
Engage with optional engineering and business exercises.
End-of-chapter exercises are enhanced with problems from scientific and business
domains. Designed to engage students, the exercises illustrate the value of program-
ming in applied fields.
Preface vii
New to This Edition
Updated for Modern Versions of C++
A number of features of the C++ 2011 and C++ 2014 standards are described either as
recommended “best practice” or as Special Topics.
New and Reorganized Topics
The book now supports two pathways into object-oriented programming and inher-
itance. Pointers and structures can be covered before introducing classes. Alterna-
tively, pointers can be deferred until after the implementation of classes.
A sequence of Worked Examples and exercises introduces “media computa-
tion”—generating and modifying images, sounds, and animations.
Lower-Cost, Interactive Format
This third edition is published as a lower-cost Enhanced E-Text that supports active
learning through a wealth of interactive activities. These activities engage and prepare
students for independent programming and the Review Exercises, Practice Exercises,
and Programming Projects at the end of each E-Text chapter. The Enhanced E-Text
may also be bundled with an Abridged Print Companion, which is a bound book that
contains the entire text for reference, but without exercises or practice material.
Interactive learning solutions are expanding every day, so to learn more about
these options or to explore other options to suit your needs, please contact your
Wiley account manager (www.wiley.com/go/whosmyrep) or visit the product information
page for this text on wiley.com (http://wiley.com/college/sc/horstmann).
The Enhanced E-Text is designed to enable student practice without the instructor
assigning the interactivities or recording their scores. If you are interested in assign-
ing and grading students’ work on them, ask your Wiley Account Manager about the
online course option implemented in the Engage Learning Management System. The
Engage course supports the assignment and automatic grading of the interactivities.
Engage access includes access to the Enhanced E-Text.
Features in the Enhanced E-Text
The interactive Enhanced E-Text guides students from the basics to writing complex
programs. After they read a bit, they can try all of the interactive exercises for that
section. Active reading is an engaging way for students to ensure that students are
prepared before going to class.
There five types of interactivities:
Code Walkthrough Code Walkthrough activities ask students to trace through a
segment of code, choosing which line will be executed next and entering the new
values of variables changed by the code’s execution. This activity simulates the hand-
tracing problem solving technique taught in Chapters 3 and 4—but with immediate
feedback.
viii Preface
Example Table Example table activities make the student the active participant in
building up tables of code examples similar to those found in the book. The tables
come in many different forms. Some tables ask the student to determine the output of
a line of code, or the value of an expression, or to provide code for certain tasks. This
activity helps students assess their understanding of the reading—while it is easy to
go back and review.
Algorithm Animation An algorithm animation shows the essential steps of an
algorithm. However, instead of passively watching, students get to predict each step.
When finished, students can start over with a different set of inputs. This is a surpris-
ingly effective way of learning and remembering algorithms.
Rearrange Code Rearrange code activities ask the student to arrange lines of code
by dragging them from the list on the right to the area at left so that the resulting code
fulfills the task described in the problem. This activity builds facility with coding
structure and implementing common algorithms.
Object Diagram Object diagram activities ask the student to create a memory
diagram to illustrate how variables and objects are initialized and updated as sample
code executes. The activity depicts variables, objects, and references in the same way
as the figures in the book. After an activity is completed, pressing “Play” replays the
animation. This activity goes beyond hand-tracing to illuminate what is happening in
memory as code executes.
Code Completion Code completion activities ask the student to finish a partially-
completed program, then paste the solution into CodeCheck (a Wiley-based online
code evaluator) to learn whether it produces the desired result. Tester classes on the
CodeCheck site run and report whether the code passed the tests. This activity serves
as a skill-building lab to better prepare the student for writing programs from scratch.
A Tour of the Book
This book is intended for a two-semester introduction to programming that may also
include algorithms and data structures. The organization of chapters offers the same
flexibility as the previous edition; dependencies among the chapters are also shown
in Figure 1.
Part A: Fundamentals (Chapters 1–8)
The first six chapters follow a traditional approach to basic programming concepts.
Students learn about control structures, stepwise refinement, and arrays. Objects are
used only for input/output and string processing. Input/output is first covered in
Chapter 2, which may be followed by an introduction to reading and writing text
files in Section 8.1.
In a course for engineers with a need for systems and embedded programming,
you will want to cover Chapter 7 on pointers. Sections 7.1 and 7.4 are sufficient for
using pointers with polymorphism in Chapter 10.
File processing is the subject of Chapter 8. Section 8.1 can be covered sooner for
an introduction to reading and writing text files. The remainder of the chapter gives
additional material for practical applications.
Preface ix
Part B: Object-Oriented Design (Chapters 9–10)
After students have gained a solid foundation, they are ready to tackle the implemen-
tation of classes. Chapters 9 and 10 introduce the object-oriented features of C++.
Chapter 9 introduces class design and implementation. Chapter 10 covers inheritance
and polymorphism. By the end of these chapters, students will be able to implement
programs with multiple interacting classes.
Any subset of these chapters can be incorporated into a custom print version of
this text; ask your Wiley sales representative for details, or visit customselect.wiley.com
to create your custom order.
Appendices
Appendices A and B summarize C++ reserved words and operators. Appendix C
lists character escape sequences and ASCII character code values. Appendix D docu-
ments all of the library functions and classes used in this book.
Appendix E contains a programming style guide. Using a style guide for program
ming assignments benefits students by directing them toward good habits and reduc-
ing gratuitous choice. The style guide is available in electronic form on the book’s
companion web site so that instructors can modify it to reflect their preferred style.
Appendix F, available in the E-Text, introduces common number systems used in
computing.
Fundamentals
1. Introduction
Object-Oriented Design
2. Fundamental
Data Types
3. Decisions
4. Loops
A gentle
introduction to recursion
5. Functions is optional.
Section 8.1
contains the core
material
6. Arrays
6. Iteration
and Vectors
7. Pointers 8. Streams 9. Classes
Sections 10. Inheritance
7.1 and 7.4 are
required
Figure 1 Chapter Dependencies
x Preface
Web Resources
This book is complemented by a complete suite of online resources. Go to www.wiley.
com/go/bclo3 to visit the online companion sites, which include
• Source code for all example programs in the book and its Worked Examples, plus
additional example programs.
• Worked Examples that apply the problem-solving steps in the book to other
realistic examples.
• Lecture presentation slides (for instructors only).
• Solutions to all review and programming exercises (for instructors only).
• A test bank that focuses on skills, not just terminology (for instructors only). This
extensive set of multiple-choice questions can be used with a word processor or
imported into a course management system.
• “CodeCheck” assignments that allow students to work on programming prob-
lems presented in an innovative online service and receive immediate feedback.
Instructors can assign exercises that have already been prepared, or easily add
their own. Visit http://codecheck.it to learn more.
Pointers in the print
companion describe what
students will find in their WORKED EXAMPLE 2.1
Computing Travel Time
E-Text or online.
Learn how to develop a hand calculation to compute the time that
a robot requires to retrieve an item from rocky terrain. See your
.
E-Text or visit wiley.com/go/bclo3
Courtesy of NASA.
EXAMPLE CODE See how_to_1/scores_vector in your companion code for a solution using vectors instead of arrays.
Walkthrough xi
A Walkthrough of the Learning Aids
The pedagogical elements in this book work together to focus on and reinforce key
concepts and fundamental principles of programming, with additional tips and detail
organized to support and deepen these fundamentals. In addition to traditional
features, such as chapter objectives and a wealth of exercises, each chapter contains
elements geared to today’s visual learner.
106 Chapter 4 Loops
4.3 The for Loop
Throughout each chapter,
It often happens that you want to execute a sequence of
margin notes show where The for loop is
used when a statements a given number of times. You can use a while
value runs from a loop that is controlled by a counter, as in the following
new concepts are introduced starting point to an
ending point with a
example:
and provide an outline of key ideas. constant increment
or decrement.
counter = 1; // Initialize the counter
while (counter <= 10) // Check the counter
{
cout << counter << endl;
counter++; // Update the counter
}
Because this loop type is so common, there is a special
form for it, called the for loop (see Syntax 4.2).
for (counter = 1; counter <= 10; counter++)
{
© Enrico Fianchini/iStockphoto.
cout << counter << endl;
}
You can visualize the
Some people call this loop count-controlled. In contrast, for loop as an orderly
the while loop of the preceding section can be called an sequence of steps.
event-controlled loop because it executes until an event
occurs (for example, when the balance reaches the target). Another commonly-used
Annotated syntax boxes term for a count-controlled loop is definite. You know from the outset that the loop
body will be executed a definite number of times––ten times in our example. In con-
provide a quick, visual overview trast, you do not know how many iterations it takes to accumulate a target balance.
Such a loop is called indefinite.
of new language constructs.
Syntax 4.2 for Statement
These three
expressions should be related.
See Programming Tip 4.1.
Annotations explain This initialization The loop is This update is
required components happens once
before the loop starts.
executed while
this condition is true.
executed after
each iteration.
and point to more information for (int i = 5; i <= 10; i++)
on common errors or best practices The variable i is
{
sum = sum + i;
This loop executes 6 times.
associated with the syntax. defined only in this
for loop.
}
See Programming Tip 4.3.
The for loop neatly groups the initialization, condition, and update expressions
together. However, it is important to realize that these expressions are not executed
together (see Figure 3).
Analogies to everyday objects are
used to explain the nature and behavior
of concepts such as variables, data
Like a variable in a computer types, loops, and more.
program, a parking space has
an identifier and contents.
xii Walkthrough
Memorable photos reinforce
analogies and help students
remember the concepts. pie(fruit) pie(fruit)
A recipe for a fruit pie may say to use any kind of fruit.
Here, “fruit” is an example of a parameter variable.
Apples and cherries are examples of arguments.
Problem Solving sections teach
techniques for generating ideas and
6.5 Problem Solving: Discovering Algorithms by Manipulating Physical Objects 277
evaluating proposed solutions, often
using pencil and paper or other Now how does that help us with our problem, switching the first and the second
half of the array?
artifacts. These sections emphasize Let’s put the first coin into place, by swapping it with the fifth coin. However, as
C++ programmers, we will say that we swap the coins in positions 0 and 4:
that most of the planning and problem
solving that makes students successful
happens away from the computer.
Next, we swap the coins in positions 1 and 5:
HOW TO 1.1
Describing an Algorithm with Pseudocode
This is the first of many “How To” sections in this book that give you step-by-step proce-
dures for carrying out important tasks in developing computer programs.
Before you are ready to write a program in C++, you need to develop an algorithm—a
method for arriving at a solution for a particular problem. Describe the algorithm in pseudo-
code––a sequence of precise steps formulated in English. To illustrate, we’ll devise an algo-
rithm for this problem:
How To guides give step-by-step
Problem Statement You have the choice of buying one guidance for common programming
of two cars. One is more fuel efficient than the other, but also
more expensive. You know the price and fuel efficiency (in miles tasks, emphasizing planning and
per gallon, mpg) of both cars. You plan to keep the car for ten
years. Assume a price of $4 per gallon of gas and usage of 15,000 testing. They answer the beginner’s
miles per year. You will pay cash for the car and not worry about
financing costs. Which car is the better deal? © dlewis33/Getty Images. question, “Now what do I do?” and
Step 1 Determine the inputs and outputs. integrate key concepts into a
In our sample problem, we have these inputs: problem-solving sequence.
• purchase price1 and fuel efficiency1, the price and fuel efficiency (in mpg) of the first car
• purchase price2 and fuel efficiency2, the price and fuel efficiency of the second car
WORKED EXAMPLE 1.1
Writing an Algorithm for Tiling a Floor
Problem Statement Your task is to tile a rectangular bathroom floor with alternating Worked Examples apply
black and white tiles measuring 4 × 4 inches. The floor dimensions, measured in inches, are
multiples of 4. the steps in the How To to
Step 1 Determine the inputs and outputs.
a different example, showing
The inputs are the floor dimensions (length × width), how they can be used to
measured in inches. The output is a tiled floor.
Step 2 Break down the problem into smaller tasks.
plan, implement, and test
A natural subtask is to lay one row of tiles. If you can a solution to another
solve that task, then you can solve the problem by lay-
ing one row next to the other, starting from a wall, until programming problem.
you reach the opposite wall.
How do you lay a row? Start with a tile at one wall.
If it is Names
Table 3 Variable white, putin
a black
C++ one next to it. If it is black, put
a white one next to it. Keep going until you reach the
Variable Name wall. The row will contain width / 4 tiles.
opposite Comment © rban/iStockphoto.
Step 3 Describe each subtask in pseudocode.
can_volume1 Variable names consist of letters, numbers, and the underscore
character.
x In mathematics, you use short variable names such as x or y. This is
legal in C++, but not very common, because it can make programs
harder to understand (see Programming Tip 2.1). Example tables support beginners
!
Can_volume Caution: Variable names are case sensitive. This variable name is with multiple, concrete examples.
different from can_volume.
These tables point out common
6pack Error: Variable names cannot start with a number.
can volume Error: Variable names cannot contain spaces.
errors and present another quick
double Error: You cannot use a reserved word as a variable name. reference to the section’s topic.
ltr/fl.oz Error: You cannot use symbols such as . or /
Walkthrough xiii
Consider the function call illustrated in Figure 3:
double result1 = cube_volume(2); Progressive figures trace code
• The parameter variable side_length of the cube_volume function is created. ❶
• The parameter variable is initialized with the value of the argument that was
segments to help students visualize
passed in the call. In our case, side_length is set to 2. ❷ the program flow. Color is used
• The function computes the expression side_length * side_length * side_length,
which has the value 8. That value is stored in the variable volume. ❸ consistently to make variables and
• The function returns. All of its variables are removed. The return value is trans-
ferred to the caller, that is, the function calling the cube_volume function. ❹
other elements easily recognizable.
1 Function call result1 =
double result1 = cube_volume(2);
1 Initialize counter
side_length = for (counter = 1; counter <= 10; counter++)
{
cout << counter << endl;
2 Initializing function parameter variable counter = 1 }
result1 =
double result1 = cube_volume(2);
2 Check condition
side_length = for (counter = 1; counter <= 10; counter++)
2
{
cout << counter << endl;
counter = 1 }
3 About to return to the caller result1 =
3 Execute loop body
for (counter = 1; counter <= 10; counter++)
side_length = 2 {
double volume = side_length * side_length * side_length;
return volume; cout << counter << endl;
volume = 8 counter = 1 }
4 After function call result1 = 8 4 Update counter
for (counter = 1; counter <= 10; counter++)
double result1 = cube_volume(2); {
cout << counter << endl;
counter = 2 }
Figure 3 Parameter Passing
5 Check condition again
for (counter = 1; counter <= 10; counter++)
{
cout << counter << endl;
counter = 2 }
Figure 3 Execution of a for Loop
Optional engineering exercises
engage students with applications
from technical fields. Engineering P7.12 Write a program that simulates the control
software for a “people mover” system, a set of
driverless trains that move in two concentric
circular tracks. A set of switches allows trains
to switch tracks.
In your program, the outer and inner tracks
should each be divided into ten segments.
Each track segment can contain a train that
moves either clockwise or counterclockwise.
sec02/cube.cpp A train moves to an adjacent segment in its track or, if that segment is occupied, to
the adjacent segment in the other track.
1 #include <iostream>
2 Define a Segment structure. Each segment has a pointer to the next and previous
3 using namespace std; segments in its track, a pointer to the next and previous segments in the other track,
4
5 /**
6 Computes the volume of a cube.
7 @param side_length the side length of the cube
8 @return the volume
9 */
10 double cube_volume(double side_length)
11 {
12 double volume = side_length * side_length * side_length;
13 return volume;
14 }
15
16 int main()
Program listings are carefully
17
18
{
double result1 = cube_volume(2); designed for easy reading,
double result2 = cube_volume(10);
19
20 cout << "A cube with side length 2 has volume " << result1 << endl; going well beyond simple
21 cout << "A cube with side length 10 has volume " << result2 << endl;
22 color coding. Functions are set
23 return 0;
24 } off by a subtle outline.
Program Run
A cube with side length 2 has volume 8
A cube with side length 10 has volume 1000
EXAMPLE CODE See sec04 of your companion code for another implementation of the earthquake program that you
Additional example programs
saw in Section 3.3. Note that the get_description function has multiple return statements.
are provided with the companion
code for students to read, run,
and modify.
xiv Walkthrough
Common Errors describe the kinds Common Error 2.1
Using Undefined Variables
of errors that students often make, You must define a variable before you use it for the first time. For example, the following
with an explanation of why the errors sequence of statements would not be legal:
double can_volume = 12 * liter_per_ounce;
occur, and what to do about them. double liter_per_ounce = 0.0296;
In your program, the statements are compiled in order. When the compiler reaches the first
statement, it does not know that liter_per_ounce will be defined in the next line, and it reports
an error.
Programming Tip 3.6
Hand-Tracing
A very useful technique for understanding whether a program
works correctly is called hand-tracing. You simulate the pro-
gram’s activity on a sheet of paper. You can use this method with
pseudocode or C++ code.
Get an index card, a cocktail napkin, or whatever sheet of
Programming Tips explain paper is within reach. Make a column for each variable. Have the
program code ready. Use a marker, such as a paper clip, to mark
good programming practices, the current statement. In your mind, execute statements one at a
time. Every time the value of a variable changes, cross out the old
and encourage students to be value and write the new value below the old one.
© thomasd007/iStockphoto.
For example, let’s trace the tax program with the data from the
more productive with tips and program run in Section 3.4. In lines 13 and 14, tax1 and tax2 are
Hand-tracing helps you
understand whether a
initialized to 0. program works correctly.
techniques such as hand-tracing. 6 int main()
7 {
8 const double RATE1 = 0.10; marital
9 const double RATE2 = 0.25; tax1 tax2 income status
10 const double RATE1_SINGLE_LIMIT = 32000;
11 const double RATE1_MARRIED_LIMIT = 64000; 0 0
12
13 double tax1 = 0;
14 double tax2 = 0;
15
In lines 18 and 22, income and marital_status are initialized by input statements.
16 double income;
17 cout << "Please enter your income: ";
18 cin >> income; marital
19 tax1 tax2 income status
20 cout << "Please enter s for single, m for married: ";
21 string marital_status; 0 0 80000 m
22 cin >> marital_status;
23
Because marital_status is not "s", we move to the else
branch of the outer if statement (line 36).
24 if (marital_status == "s")
25 {
26 if (income <= RATE1_SINGLE_LIMIT)
27
28
{ Special Topic 6.5
tax1 = RATE1 * income;
29
30
}
else The Range-Based for Loop
31 {
32 C++ 11 introduces a convenient syntax for visiting all elements in a “range” or sequence of ele-
tax1 = RATE1 * RATE1_SINGLE_LIMIT;
ments. This loop displays all elements in a vector:
vector<int> values = {1, 4, 9, 16, 25, 36};
for (int v : values)
{
cout << v << " ";
}
Special Topics present optional In each iteration of the loop, v is set to an element of the vector. Note that you do not use an
index variable. The value of v is the element, not the index of the element.
topics and provide additional If you want to modify elements, declare the loop variable as a reference:
for (int& v : values)
explanation of others. {
v++;
}
This loop increments all elements of the vector.
You can use the reserved word auto, which was introduced in Special Topic 2.3, for the type
of the element variable:
for (auto v : values) { cout << v << " "; }
The range-based for loop also works for arrays:
int primes[] = { 2, 3, 5, 7, 11, 13 };
for (int p : primes)
{
cout << p << " ";
}
Computing & Society 7.1 Embedded Systems The range-based for loop is a convenient shortcut for visiting or updating all elements of a
vector or an array. This book doesn’t use it because one can achieve the same result by looping
An embedded sys- would feel comfortable upgrading the duced in large volumes. Thus, the pro-
tem is a computer software in their washing machines grammer of an embedded system has
over index values. But if you like the more concise form, and use C++ 11 or later, you should
system that controls a device. The or automobile engines. If you ever a much larger economic incentive to certainly consider using it.
device contains a processor and other handed in a programming assignment conserve resources than the desktop
EXAMPLE CODE See special_topic_5 of your companion code for a program that demonstrates the range-based
hardware and is controlled by a com- that you believed to be correct, only to software programmer. Unfortunately, for loop.
puter program. Unlike a personal have the instructor or grader find bugs trying to conserve resources usually
computer, which has been designed in it, then you know how hard it is to makes it harder to write programs that
to be flexible and run many different write software that can reliably do its work correctly.
computer programs, the hardware task for many years without a chance C and C++ are commonly used
and software of an embedded system of changing it. Quality standards are languages for developing embedded
are tailored to a specific device. Com- especially important in devices whose systems.
puter controlled devices are becom- failure would destroy property or
ing increasingly common, ranging endanger human life. Many personal
from washing machines to medical computer purchasers buy computers Computing & Society presents social
equipment, cell phones, automobile that are fast and have a lot of stor-
engines, and spacecraft.
Several challenges are specific to
age, because the investment is paid
back over time when many programs
and historical topics on computing—for
programming embedded systems.
Most importantly, a much higher stan-
are run on the same equipment. But
the hardware for an embedded device
interest and to fulfill the “historical and
dard of quality control applies. Ven-
dors are often unconcerned about
is not shared––it is dedicated to one
device. A separate processor, memory,
social context” requirements of the
bugs in personal computer software,
because they can always make you
and so on, are built for every copy of
the device. If it is possible to shave a ACM/IEEE curriculum guidelines.
install a patch or upgrade to the next few pennies off the manufacturing © Courtesy of Professor Prabal Dutta.
version. But in an embedded system, cost of every unit, the savings can add
that is not an option. Few consumers up quickly for devices that are pro- The Controller of an Embedded System
Walkthrough xv
Interactive activities in the E-Text
engage students in active reading as they…
Trace through a code segment
Build an example table
Explore common algorithms
Arrange code to fulfill a task
Complete a program and Create a memory diagram
get immediate feedback
Acknowledgments xvii
Acknowledgments
Many thanks to Don Fowley, Graig Donini, Dan Sayre, Ryann Dannelly, David
Dietz, Laura Abrams, and Billy Ray at John Wiley & Sons for their help with this
project. An especially deep acknowledgment and thanks goes to Cindy Johnson for
her hard work, sound judgment, and amazing attention to detail.
I am grateful to Mark Atkins, Ivy Technical College, Katie Livsie, Gaston College,
Larry Morell, Arkansas Tech University, and Rama Olson, Gaston College, for
their contributions to the supplemental material. Special thanks to Stephen Gilbert,
Orange Coast Community College, for his help with the interactive exercises.
Every new edition builds on the suggestions and experiences of new and prior
reviewers, contributors, and users. We are very grateful to the individuals who pro-
vided feedback, reviewed the manuscript, made valuable suggestions and contribu-
tions, and brought errors and omissions to my attention. They include:
Charles D. Allison, Utah Valley State College
Fred Annexstein, University of Cincinnati
Mark Atkins, Ivy Technical College
Stefano Basagni, Northeastern University
Noah D. Barnette, Virginia Tech
Susan Bickford, Tallahassee Community College
Ronald D. Bowman, University of Alabama, Huntsville
Robert Burton, Brigham Young University
Peter Breznay, University of Wisconsin, Green Bay
Richard Cacace, Pensacola Junior College, Pensacola
Kuang-Nan Chang, Eastern Kentucky University
Joseph DeLibero, Arizona State University
Subramaniam Dharmarajan, Arizona State University
Mary Dorf, University of Michigan
Marty Dulberg, North Carolina State University
William E. Duncan, Louisiana State University
John Estell, Ohio Northern University
Waleed Farag, Indiana University of Pennsylvania
Evan Gallagher, Polytechnic Institute of New York University
Stephen Gilbert, Orange Coast Community College
Kenneth Gitlitz, New Hampshire Technical Institute
Daniel Grigoletti, DeVry Institute of Technology, Tinley Park
Barbara Guillott, Louisiana State University
Charles Halsey, Richland College
Jon Hanrath, Illinois Institute of Technology
Neil Harrison, Utah Valley University
Jurgen Hecht, University of Ontario
Steve Hodges, Cabrillo College
xviii Acknowledgments
Jackie Jarboe, Boise State University
Debbie Kaneko, Old Dominion University
Mir Behrad Khamesee, University of Waterloo
Sung-Sik Kwon, North Carolina Central University
Lorrie Lehman, University of North Carolina, Charlotte
Cynthia Lester, Tuskegee University
Yanjun Li, Fordham University
W. James MacLean, University of Toronto
LindaLee Massoud, Mott Community College
Adelaida Medlock, Drexel University
Charles W. Mellard, DeVry Institute of Technology, Irving
Larry Morell, Arkansas Tech University
Ethan V. Munson, University of Wisconsin, Milwaukee
Arun Ravindran, University of North Carolina at Charlotte
Philip Regalbuto, Trident Technical College
Don Retzlaff, University of North Texas
Jeff Ringenberg, University of Michigan, Ann Arbor
John P. Russo, Wentworth Institute of Technology
Kurt Schmidt, Drexel University
Brent Seales, University of Kentucky
William Shay, University of Wisconsin, Green Bay
Michele A. Starkey, Mount Saint Mary College
William Stockwell, University of Central Oklahoma
Jonathan Tolstedt, North Dakota State University
Boyd Trolinger, Butte College
Muharrem Uyar, City College of New York
Mahendra Velauthapillai, Georgetown University
Kerstin Voigt, California State University, San Bernardino
David P. Voorhees, Le Moyne College
Salih Yurttas, Texas A&M University
A special thank you to all of our class testers:
Pani Chakrapani and the students of the University of Redlands
Jim Mackowiak and the students of Long Beach City College, LAC
Suresh Muknahallipatna and the students of the University of Wyoming
Murlidharan Nair and the students of the Indiana University of South Bend
Harriette Roadman and the students of New River Community College
David Topham and the students of Ohlone College
Dennie Van Tassel and the students of Gavilan College
CONTENTS
PREFACE v CE2 Using Uninitialized Variables 33
SPECIAL FEATURES xxiv PT1 Choose Descriptive Variable Names 33
PT2 Do Not Use Magic Numbers 34
QUICK REFERENCE xxviii
ST1 Numeric Types in C++ 34
ST2 Numeric Ranges and Precisions 35
1 INTRODUCTION 1 ST3 Defining Variables with auto 35
1.1 What Is Programming? 2 2.2 Arithmetic 36
Arithmetic Operators 36
1.2 The Anatomy of a Computer 3
Increment and Decrement 36
C&S Computers Are Everywhere 5
Integer Division and Remainder 36
1.3 Machine Code and Programming Converting Floating-Point Numbers to
Languages 5 Integers 37
C&S Standards Organizations 7 Powers and Roots 38
CE3 Unintended Integer Division 39
1.4 Becoming Familiar with Your
CE4 Unbalanced Parentheses 40
Programming Environment 7
CE5 Forgetting Header Files 40
PT1 Backup Copies 10
CE6 Roundoff Errors 41
1.5 Analyzing Your First Program 11
PT3 Spaces in Expressions 42
CE1 Omitting Semicolons 13
ST4 Casts 42
ST1 Escape Sequences 13
ST5 Combining Assignment and Arithmetic 42
1.6 Errors 14 C&S The Pentium Floating-Point Bug 43
CE2 Misspelling Words 15
2.3 Input and Output 44
1.7 PROBLEM SOLVING Algorithm Design 16 Input 44
The Algorithm Concept 16 Formatted Output 45
An Algorithm for Solving an Investment
Problem 17
2.4 PROBLEM SOLVING First Do It By Hand 47
Pseudocode 18 WE1 Computing Travel Time 48
From Algorithms to Programs 19 HT1 Carrying out Computations 48
HT1 Describing an Algorithm with WE2 Computing the Cost of Stamps 51
Pseudocode 19 2.5 Strings 51
WE1 Writing an Algorithm for Tiling a Floor 21 The string Type 51
Concatenation 52
2 FUNDAMENTAL DATA String Input 52
String Functions 52
TYPES 25
C&S International Alphabets and Unicode 55
2.1 Variables 26
Variable Definitions 26 3 DECISIONS 59
Number Types 28
Variable Names 29 3.1 The if Statement 60
The Assignment Statement 30 CE1 A Semicolon After the if Condition 63
Constants 31 PT1 Brace Layout 63
Comments 31
PT2 Always Use Braces 64
CE1 Using Undefined Variables 33
PT3 Tabs 64
xix
xx Contents
PT4 Avoid Duplication in Branches 65 4.4 The do Loop 111
ST1 The Conditional Operator 65 PT4 Flowcharts for Loops 111
3.2 Comparing Numbers and Strings 66 4.5 Processing Input 112
CE2 Confusing = and == 68 Sentinel Values 112
CE3 Exact Comparison of Floating-Point Reading Until Input Fails 114
Numbers 68 ST1 Clearing the Failure State 115
PT5 Compile with Zero Warnings 69 ST2 The Loop-and-a-Half Problem and the
ST2 Lexicographic Ordering of Strings 69 break Statement 116
HT1 Implementing an if Statement 70 ST3 Redirection of Input and Output 116
WE1 Extracting the Middle 72 4.6 PROBLEM SOLVING Storyboards 117
C&S Dysfunctional Computerized Systems 72
4.7 Common Loop Algorithms 119
3.3 Multiple Alternatives 73
Sum and Average Value 119
ST3 The switch Statement 75 Counting Matches 120
3.4 Nested Branches 76 Finding the First Match 120
CE4 The Dangling else Problem 79 Prompting Until a Match is Found 121
PT6 Hand-Tracing 79 Maximum and Minimum 121
Comparing Adjacent Values 122
3.5 PROBLEM SOLVING Flowcharts 81
HT1 Writing a Loop 123
3.6 PROBLEM SOLVING Test Cases 83 WE1 Credit Card Processing 126
PT7 Make a Schedule and Make Time for
Unexpected Problems 84 4.8 Nested Loops 126
WE2 Manipulating the Pixels in an Image 129
3.7 Boolean Variables and Operators 85
CE5 Combining Multiple Relational Operators 88
4.9 PROBLEM SOLVING Solve a Simpler
CE6 Confusing && and || Conditions 88
Problem First 130
ST4 Short-Circuit Evaluation of Boolean 4.10 Random Numbers and Simulations 134
Operators 89 Generating Random Numbers 134
ST5 De Morgan’s Law 89 Simulating Die Tosses 135
3.8 APPLICATION Input Validation 90 The Monte Carlo Method 136
C&S Artificial Intelligence 92 C&S Digital Piracy 138
4 LOOPS 95 5 FUNCTIONS 141
4.1 The while Loop 96 5.1 Functions as Black Boxes 142
CE1 Infinite Loops 100 5.2 Implementing Functions 143
CE2 Don’t Think “Are We There Yet?” 101 PT1 Function Comments 146
CE3 Off-by-One Errors 101 5.3 Parameter Passing 146
C&S The First Bug 102 PT2 Do Not Modify Parameter Variables 148
4.2 PROBLEM SOLVING Hand-Tracing 103 5.4 Return Values 148
4.3 The for Loop 106 CE1 Missing Return Value 149
PT1 Use for Loops for Their Intended ST1 Function Declarations 150
Purpose Only 109 HT1 Implementing a Function 151
PT2 Choose Loop Bounds That Match WE1 Generating Random Passwords 152
Your Task 110 WE2 Using a Debugger 152
PT3 Count Iterations 110
5.5 Functions Without Return Values 153
Contents xxi
5.6 PROBLEM SOLVING Reusable Functions 154 6.4 PROBLEM SOLVING Adapting
5.7 PROBLEM SOLVING Stepwise Algorithms 198
Refinement 156 HT1 Working with Arrays 200
PT3 Keep Functions Short 161 WE1 Rolling the Dice 203
PT4 Tracing Functions 161 6.5 PROBLEM SOLVING Discovering Algorithms by
PT5 Stubs 162 Manipulating Physical Objects 203
WE3 Calculating a Course Grade 163 6.6 Two-Dimensional Arrays 206
5.8 Variable Scope and Global Variables 163 Defining Two-Dimensional Arrays 207
PT6 Avoid Global Variables 165 Accessing Elements 207
5.9 Reference Parameters 165 Locating Neighboring Elements 208
Computing Row and Column Totals 208
PT7 Prefer Return Values to Reference
Parameters 169 Two-Dimensional Array Parameters 210
CE2 Omitting the Column Size of a Two-
ST2 Constant References 170
Dimensional Array Parameter 212
5.10 Recursive Functions (Optional) 170 WE2 A World Population Table 213
HT2 Thinking Recursively 173
6.7 Vectors 213
C&S The Explosive Growth of Personal
Computers 174 Defining Vectors 214
Growing and Shrinking Vectors 215
Vectors and Functions 216
6 ARRAYS AND VECTORS 179 Vector Algorithms 216
Two-Dimensional Vectors 218
6.1 Arrays 180
PT2 Prefer Vectors over Arrays 219
Defining Arrays 180 ST5 The Range-Based for Loop 219
Accessing Array Elements 182
Partially Filled Arrays 183
CE1 Bounds Errors 184 7 POINTERS AND
PT1 Use Arrays for Sequences of Related STRUCTURES 223
Values 184
C&S Computer Viruses 185 7.1 Defining and Using Pointers 224
Defining Pointers 224
6.2 Common Array Algorithms 185
Accessing Variables Through Pointers 225
Filling 186 Initializing Pointers 227
Copying 186
CE1 Confusing Pointers with the Data to Which
Sum and Average Value 186 They Point 228
Maximum and Minimum 187
PT1 Use a Separate Definition for Each Pointer
Element Separators 187 Variable 229
Counting Matches 187
ST1 Pointers and References 229
Linear Search 188
Removing an Element 188 7.2 Arrays and Pointers 230
Inserting an Element 189 Arrays as Pointers 230
Swapping Elements 190 Pointer Arithmetic 230
Reading Input 191 Array Parameter Variables Are Pointers 232
ST1 Sorting with the C++ Library 192 ST2 Using a Pointer to Step Through
ST2 A Sorting Algorithm 192 an Array 233
ST3 Binary Search 193 CE2 Returning a Pointer to a Local Variable 234
PT2 Program Clearly, Not Cleverly 234
6.3 Arrays and Functions 194
ST3 Constant Pointers 235
ST4 Constant Array Parameters 198
xxii Contents
7.3 C and C++ Strings 235 8.5 Command Line Arguments 274
The char Type 235 C&S Encryption Algorithms 277
C Strings 236 HT1 Processing Text Files 278
Character Arrays 237 WE1 Looking for for Duplicates 281
Converting Between C and C++ Strings 237
8.6 Random Access and Binary Files 281
C++ Strings and the [] Operator 238
Random Access 281
ST4 Working with C Strings 238
Binary Files 282
7.4 Dynamic Memory Allocation 240 Processing Image Files 282
CE3 Dangling Pointers 242 C&S Databases and Privacy 286
CE4 Memory Leaks 243
7.5 Arrays and Vectors of Pointers 243 9 CLASSES 289
7.6 PROBLEM SOLVING Draw a Picture 246
HT1 Working with Pointers 248 9.1 Object-Oriented Programming 290
WE1 Producing a Mass Mailing 249 9.2 Implementing a Simple Class 292
C&S Embedded Systems 250 9.3 Specifying the Public Interface of
7.7 Structures 250 a Class 294
Structured Types 250 CE1 Forgetting a Semicolon 296
Structure Assignment and Comparison 251 9.4 Designing the Data Representation 297
Functions and Structures 252
9.5 Member Functions 299
Arrays of Structures 252
Structures with Array Members 253 Implementing Member Functions 299
Nested Structures 253 Implicit and Explicit Parameters 299
Calling a Member Function from a
7.8 Pointers and Structures 254 Member Function 301
Pointers to Structures 254 PT1 All Data Members Should Be Private; Most
Structures with Pointer Members 255 Member Functions Should Be Public 303
ST5 Smart Pointers 256 PT2 const Correctness 303
9.6 Constructors 304
8 STREAMS 259 CE2 Trying to Call a Constructor 306
ST1 Overloading 306
8.1 Reading and Writing Text Files 260 ST2 Initializer Lists 307
Opening a Stream 260 ST3 Universal and Uniform Initialization
Reading from a File 261 Syntax 308
Writing to a File 262
9.7 PROBLEM SOLVING Tracing Objects 308
A File Processing Example 262
HT1 Implementing a Class 310
8.2 Reading Text Input 265 WE1 Implementing a Bank Account Class 314
Reading Words 265 C&S Electronic Voting Machines 314
Reading Characters 266
9.8 PROBLEM SOLVING Discovering
Reading Lines 267
Classes 315
CE1 Mixing >> and getline Input 268
PT3 Make Parallel Vectors into Vectors of
ST1 Stream Failure Checking 269
Objects 317
8.3 Writing Text Output 270
9.9 Separate Compilation 318
ST2 Unicode, UTF-8, and C++ Strings 272
9.10 Pointers to Objects 322
8.4 Parsing and Formatting Strings 273
Dynamically Allocating Objects 322
The -> Operator 323
The this Pointer 324
Contents xxiii
9.11 PROBLEM SOLVING Patterns for Appendix A RESERVED WORD SUMMARY A-1
Object Data 324 Appendix B OPERATOR SUMMARY A-3
Keeping a Total 324 Appendix C CHARACTER CODES A-5
Counting Events 325
Appendix D C++ LIBRARY SUMMARY A-8
Collecting Values 326
Managing Properties of an Object 326 Appendix E C++ LANGUAGE CODING
Modeling Objects with Distinct States 327 GUIDELINES A-11
Describing the Position of an Object 328 Appendix F NUMBER SYSTEMS AND BIT AND SHIFT
C&S Open Source and Free Software 329 OPERATIONS (E-TEXT ONLY)
10 INHERITANCE 333 GLOSSARY G-1
INDEX I-1
10.1 Inheritance Hierarchies 334 CREDITS C-1
10.2 Implementing Derived Classes 338
CE1 Private Inheritance 341
CE2 Replicating Base-Class Members 341
PT1 Use a Single Class for Variation in Values,
ALPHABETICAL LIST OF SYNTAX BOXES
Inheritance for Variation in Behavior 342 Assignment 30
ST1 Calling the Base-Class Constructor 342 C++ Program 12
10.3 Overriding Member Functions 343 Class Definition 295
Comparisons 67
CE3 Forgetting the Base-Class Name 345
Constructor with Base-Class Initializer 342
10.4 Virtual Functions and Polymorphism 346 Defining an Array 181
The Slicing Problem 346 Defining a Structure 251
Pointers to Base and Derived Classes 347 Defining a Vector 213
Virtual Functions 348 Derived-Class Definition 340
Polymorphism 349 Dynamic Memory Allocation 240
PT2 Don’t Use Type Tags 352 for Statement 106
CE4 Slicing an Object 352 Function Definition 145
CE5 Failing to Override a Virtual Function 353 if Statement 61
ST2 Virtual Self-Calls 354 Input Statement 44
HT1 Developing an Inheritance Hierarchy 354 Member Function Definition 301
WE1 Implementing an Employee Hierarchy for Output Statement 13
Payroll Processing 359
Pointer Syntax 226
C&S Who Controls the Internet? 360
Two-Dimensional Array Definition 207
Variable Definition 27
while Statement 97
Working with File Streams 262
Exploring the Variety of Random
Documents with Different Content
The Project Gutenberg eBook of Harhama III
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.
Title: Harhama III
Author: Maiju Lassila
Release date: June 10, 2016 [eBook #52294]
Language: Finnish
Credits: E-text prepared by Juhani Kärkkäinen and Tapio Riikonen
*** START OF THE PROJECT GUTENBERG EBOOK HARHAMA III ***
E-text prepared by Juhani Kärkkäinen and Tapio Riikonen
HARHAMA III
Kirj.
Irmari Rantamala [Algot Untola]
Helsingissä, Suomalainen Kustannus-Osakeyhtiö Kansa, 1909.
A. W. Leinosen kirjapaino, Hämeenlinna.
HARHAMA
"Syntikin on ase Jumalan kädessä."
Elämän uuden aatto-illan unelma.
Elämä on petollinen unelma…
On puolipäivä.
Kesä on juuri päässyt kärkeensä, kukka täyteen väriinsä, metsä
lehteensä. Valo on korkeimmillaan, aurinko hehkuu, kuin ahjosta
otettu…
Huoleton käki kukkuu Harhamalan onnenkuusen punaisessa
latvassa. Paimenhuilu säestää sen kukuntaa. Luonto helisee, valo
värisee. Käen kukunta ja paimenen huilun soitto kilpailevat
keskenänsä kauneudesta:
— "Tui-tui!"
— "Kuk-kuu!"
— "Tui-tui!… Tui-tui!"
— "Kuk-kuu!… Kuk-kuu!"
— "Tui-tui!… Tui-tui!… Tui-tui!"
— "Kuk-kuu!… Kuk-kuu!… Kuk-kuu!"
Oli kukkien kosinta-aika, ilojuhla, jolloin Pohjola koreilee kesäisenä
kukkana. Yöt ovat päivinä, ilma on hopean-heleä ja metsät helskyvät
lintujen laulusta. Tyttö kulkee tunteissansa, mies vaalii
mielitekojansa.
Peruna kukki Harhamalan akkunan alla, keltakukat nuokkuivat
kainoina sen nurmella; mättäänkolossa, ojan reunassa, hautoi pikku
sirkun emo ja leppäpensaan varvulla viserteli sen ikävöivä puoliso
emonsa ajan kuluksi. Oli tulossa lemmen soitin-aika. Luonto laitteli
ansoja ikuisen rakkauden poluille. Metsä viritti lintunsa laulamaan,
nurmi nosti kukkansa tuoksumaan, kukka levitti värinsä nähtäväksi,
ja onnenkuusen latvasta pudotteli käki kukkujansa luonnon yleisen
soinnun sekaan.
Koko kevään oli kestänyt lemmen paulojen punonta. Niiden
ansojen punomista oli koko elämä ollut: Neito oli niiksi koonnut
poskeensa punaa, poveensa lämpöä ja silmäänsä armasta suloa,
kainoutta mieleen ja hyvettä sieluunsa. Kukka oli luonut teränsä
värilliseksi, perhonen koristanut siipensä kirjaviksi, pihlaja oli
pukeutunut valkeaan kukkaspukuun ja koivu viheriäihinsä ja sorsa
koreili värisulissa. Kaikki valmistuivat odottamaan elämää ja elämän
lyhyttä lemmen tarua.
Nyt olivat jo paulat valmiiksi punotut. Pitkä oli ollut työ. Puhtaat
tulivat myös ansat. Nyt odottivat kaikki vaan sitä hetkeä, jolloin
luonto avaisi lemmenantimien salatut kätköt, soittaisi kutsukellot.
Kaikki värisi odotuksesta. Valo oli korkeimmillaan, päivä pisimmillään,
kukka kauneimmillaan ja neito lemmestä lämminnä. Kaikkialla hehkui
lempi, sykki sydän, loisti lemmen puhdas paula…
Vihdoin kukahti odotettu käki ja huilunsoitto kutsui kaikki lemmen
paulaan, lemmen-antimien jaolle, luonnon puhtaan rakkauden
alttarin eteen…
Koko luonto ratkesi silloin ilosta ja värisi, kuin morsian armaansa
huulien ensi kosketuksesta. Päivä hehkui avaruuden kuperalla
laidalla, kuin neidon lämmin rinta. Nurmi kukki, puro nauroi
vallatonna ja koko luonnon povella paistoi suuri ilosanoma: "Nyt on
Pohjolan pisin päivä. Nyt on valon voitonjuhla, juhlien juhlan aatto.
Nyt on lemmen antopäivä." Paimenhuilu soitti taas Pohjolan kesän
ihanuutta ja vallaton käki kukkua helskytteli kuusen latvassa viime
kutsua luonnon suuteloille, kukkui sitä ja Harhamalan onnea:
— "Kuk-kuu!… Kuk-kuu!… Kuk-kuu!"
— "Tui-tui!… Tui-tui!… Tu-ii-ii!" — säesti paimen huilullansa.
Käen kukunnat putoelivat korkean kuusen latvasta autereiseen
ilmaan, kuin hopeapalat pehmeälle paadelle. Metsä ja mäet ja vetten
rannat helisivät niiden kaikua, kuin hopeakannel. Koko lemmen ja
runouden maailma heräsi ja hempi nousi neidon kypsään poveen,
hellyys miehen mieleen, lämpö luontoon, helle päivän valoon. Linnut
visersivät hautoville naaraillensa ihanimmat laulunsa, ja kukat
avasivat arastellen teriöittensä armaimmat kätköt sulhojensa
suuteloille… riutuivat ja herposivat ja ottivat vastaan sukunsa
lemmen-antimet… raukenivat niistä, äitiytyivät, painoivat päänsä
ujoina alas, kiittivät saadusta lemmestä ja uinahtivat sen ihanaan
muistoon…
Harhamalan pellon keltakukat olivat eläneet elämänsä onnen
hetken ohi ja kallistivat nyt päänsä nurmen viheriälle ruohopovelle…
Lemmen tarina oli lopussa. Luonto oli antanut jaloimpansa,
väsähtänyt, lähtenyt levolle. Kukka ja pihlaja alkoivat riisua
lemmenpaulojansa, joita niin kauvan olivat punoneet: Ne alkoivat
karistella kukkasiansa, varistella värejänsä. Neito ei huolinut enää
suortuviensa soreudesta, ei silmänsä sulosta, mielensä ujoudesta,
eikä poskensa punasta, kun oli kerran sulhonsa saanut.
Lyhyt ja suuri on lemmen tarina, jalo ja puhdas, kun se on oikea…
*****
Mutta yhä viheriöi Harhamalan onnenkuusi. Se on taas punainen
kävyistä. Joka oksanpäässä vihertää uusi, pehmeä havu, ja
sisemmällä ovat oravat piilosilla. Onni kypsyy kävyissä, oksanpäässä,
vihertävässä havussa uusi elämä ja pihkan puhdas tuoksu huokuu
kotilieden puhtautta…
Sitkeät olivat vielä Harhamalan onnenkuusen syyt, syvillä sen
juuret ja sen lustoon ei pystynyt tikan nokka. Ylpeänä seisoi se, kuin
metsän aateli, vaimon uskollisuuden ja miehen miehuuden ja kodin
puhtauden esikuvana…
Mutta kuusen pimeissä piiloissa torkkui yölepakko, odotellen oman
aikansa tuloa…
*****
Ulkona, pyöreässä pihlajamajassa, istui Harhama. Hän oli juuri
lopettanut perunanmullittamisen ja lähettänyt erään kirjoituksensa
postiin. Valkealle pöydälle oli siroteltu muutamia pihlajan pikku
lehtiä. Rouva Esempio toi kahvipannun, lämpimät leivokset ja
valkean liinanpalan.
Pikku sirkku visertää ilosta, luonto hehkuu äskeisen onnensa
muistoa ja rouva Esempio on taas entinen Riuttalan Helga-neiti.
Suortuva on valahtanut otsalle, valkea esiliina avautunut
kantimesta…
— "Tir-lir-tvii-ir!" — viserteli kivitasku varvulla, varpu heilahti ja
pudotti pari pihlajankukkaa rouva Esempion tukkaan. Hän oli nyt
sievä. Kukka puki häntä, kuin helmi. Luonto oli rauhaa täynnä…
metsä vihantaa… nurmi kukkia ja mieli tyyntä. Palavien
tervahautojen miellyttävä tuoksu hyväili kesän lämmöstä herkäksi
käynyttä ihoa… Tuulenhenki puhalteli. Se toi sanan toisista kylistä.
Siellä vieras vaimo liekutti lasta… Oksa heilahti, lintu laulahti. Väre
toi viestin tuudun luota, kertoi vaimon kehtolaulun, Vieras vaimo
lauloi Harhamalan pienelle Ritvalle:
"Tuuti, tuuti! Tuuti, aa!
Tuuti pientä lasta!
Eipä kalma häntä
saa viedä maailmasta.
Tuuti, tuu, itkusuu!
Tuuti, tuuti, tuuti, aa!
Tuuti pikkuruista.
Viihdy! Et sä aina saa
äidin rintaa muistaa!
Tuuti, aa! Tuuti, aa,
Harhamalan Ritvaa!"
Laulu loppui, kehto seisahtui ja lauluihin nukkui lapsi. Harhama
puristi rouva Esempion kättä ja lausui:
— "Helga! Kiitos kärsimyksistäsi, uskollisuudestasi ja
rakkaudestasi! Kiitos tytöstä, lapsesta, elämän sisällöstä ja
tarkotuksesta. Ne olet sinä antanut. Minä palkitsen ne kerta elämäni
työllä. Sinä olet tehnyt osasi… enemmänkin. Nyt on minun
vuoroni…"
— "Kiitos itsellesi rakkaudestasi ja siitä jonka annoit!… Minä
maksan sen uskollisuudellani", — keskeytti rouva Esempio.
Kanervankukka helähti, sirkka visersi. Rouva Esempio jatkoi:
— "Onni kypsyy meissä ihmisissä itsessämme, kuten nyt huomaat,
kuin kävyt kuusessa, ilman yhteiskuntaa ja kirkkoa. Uskotko jo
minua?"
Hän istahti, muisti pikku-Ritvaa, jota vieras vaimo hoiteli, pikku
Armiiran perinnön tähden… Pihlajankukka kaunisti mustaa tukkaa…
Hän muisteli elämänsä kevättä, jolloin Riuttalan ranta oli kukkinut
valkeana ja nuori mies lauleli järvenselällä Riuttalan rannan
onnenkukalle… Hän muisteli häitä, joita hän oli odotellut, ja koko
elämäänsä… Hän muisteli niitä kepeänä, kosketti niitä, kuin perhosen
siivellä kukkaa, solmi tukasta solahtaneen suortuvan takaisin
tukkaansa ja lausui:
— "Tänään on kuin elämän aatto-ilta…"
Ja Harhamasta tuntui, kuin kaikki elämän viulut soisivat ja
kutsuisivat suureen työhön. Hän oli viime päivät aivan elänyt
unelmissansa: Hän oli odottanut nyt teoksensa alkamista aivan
vaistomaisesti, kuin äiti, jolle kohtu ilmottaa, että synnytys-aika on
ovella…
Hän oli kävellyt jo ikäänkuin seppele päässä, kuten äiti, joka ajan
lähetessä jo nauttii äidin ilosta, on silittelevinänsä lapsensa
kiharoita… näkee sen tulevaisuuden kirkkaana… iloitsee sen onnesta
ja odottaa vaan hetkeänsä…
Ritvan syntymä ja niukat tulot olivat kaikkien entisten kiihottimien
lisäksi puhaltaneet häneen vielä lisävoiman: Teos oli tuova kultaa…
Hän näki jo kultapurojen juoksevan… hohtavan… välkkyvän…
kimaltelevan… Yöt hän jo näki unia seppeleestä… valkeista
linnuista… maineesta… kullasta… hän tunsi vihansa saavan
lauhduketta… rouva Esempio oli häntä jumaloiva… Korpela ylistävä…
Suomi ihaileva… maailma ihmettelevä… Hänestäkin tuntui, että oli
elämän aatto-ilta…
Hän puristi rouva Esempion kättä. Harhamalan onnenkuusen oksat
nuokkuivat hiljaa, kypsyvän käpypainon tuudittamina. Käki kukkui
sen latvasta taas onnea… Sen havut viheriöivät uskollisuuden
kuvina… Ja kaivon kannen alla lorisi ikuinen onnenvesisuoni…
Harhama tunsi, että hän oli polkenut elämänkäärmeen pään
murskaksi. Kaikki elämän halut purskahtivat hänestä. Kaikki alkoi
leimuta tulevaisuuden aamupunana ja pärskyä sen revontulina.
*****
Tulevaisuus pukeusi silloin kauneihin väreihin, elämä hohti
iltaruskoisena, sen tienvieret olivat kukkamaina. Koti kukki
rauhallisena, kuin lauvantai-ilta, sen joka nurkassa hymyili
mielentyyni… Sen akkunat olivat punaiset onnenkukista… Katolla
liehui ylpeä lippu… Perunamaat olivat valkeat kukista… Yöt olivat
hiljaiset ja päivä souteli päivisin talon päällitse kirkkaana
valoveneenä pitkin heleäväristä taivaanlakea.
Ja kaiken sen henkenä oli hänestä vaimo, kodin suoja ja sen
elämänrihmojen kehrääjä. Sillä hänestä juoksevat teoksen runojen
langat… Hän se viihdytteli rauhaa kodin nurkissa… kasteli sen
onnenkukkia… huolehti pirtin puhtaudesta… mielen rauhasta…
kylvyistä… havuista ja puhtaista vaatteista…
Hän itse kuvitteli aina kulkevansa maineen- ja kunniankukkulaa
kohti, kodin tulet aina edessä… sen rauha leposatamana… sen maine
johtovalona… sen onni työhön käskijänä… Ritva otsalta rypyn
silittäjänä…
Sumua sattuu ehkä tielle, mutta hän puhaltaa sumut hajalle…
Elämän pilvet hän puhaltaa taas punertaviksi, taivaanrannan
ruskoiseksi… Nälkäsuon punaiseksi karpalo-ulapaksi.
Halla nousee ja panee viljan… Mutta ei pane halla Nälkäsuon
karpalo-ulappaa… ei kukkaa Harhamalan akkunalla, eikä käpyjä sen
onnenkuusessa… Kotiliesi on aina puhdas… Yksilöllinen siveellisyys
on viety voittoon… herjaajat saatettu häpeään… Elämän suurin
kysymys on siten loistavasti ratkaistu… Vaimo on ollut siinä
tehtävässä apuna… Se on ollut enemmänkin: Vaimo on antanut
yksilöllisen siveellisyyden suuren aatteen… rohkaissut siihen…
tukenut sitä voittoon viedessä… ollut itse esikuvana ja teoksen
runorihmojen keränpohjallisena ja kaikkena… Ja hän laulaa vainionsa
ylistykseksi sen laulun, joka vie Harhamalan maineen yli esteiden,
kertoo siitä kaikille kansoille ja sukupolville… Korpikosken
korvakkeelle kohoaa Harhamalan kuulu runolinna… Lippu liehuu sen
tornissa ja runokannel on asetettu alttarillensa kotilieden vierelle…
Niin maksaa hän vaimon rakkauden, ostaa kodin onnen… Elämä
muuttuu joulujuhlaksi… Kotona palavat ikuiset joulukynttilät… Niiden
valossa sujuu työ, kuin kangas… Lapsi lepertelee laattialla… kasvaa…
varttuu… siunaa isäänsä… suutelee äitiänsä… Vuoden-ajat
vaihtelevat, talvi on ulkona, mutta kotona on lämmintä… Jo saapuvat
syyshallat… Maailmalla on kylmää… sadetta… tuulta, mutta aina
tuikkivat Harhamalassa joulukynttilät ja sen kartanolla soivat iloiset
elämänkulkuset…
Päivät poistuvat unina… Jo kukkii Harhamalan kuulu Ritva-neiti
isänsä ilona, äitinsä ylpeytenä… seudun kukkana… kaikkien
kadehtimana… Hän muuttaa Harhamalan kanervikot kukkaisiksi…
mäet marjoista punaisiksi… päivät kauneiksi uniksi… Hän itse tekee
yhä työtä monen edestä… Työ sujuu, teos valmistuu… Sen lehdet
muuttuvat valkoisiksi linnuiksi, jotka kulettavat kauvas kertomusta
Harhamalan talosta…
Jo on kuulu Harhamala… Se on kuulu vaimon puhtaudesta,
miehen työstä ja kodin kukasta, tyttärestä… Valkeat linnut ovat
palanneet kunnian- ja onnenseppeleet nokassa… Ilma on niistä
valkeana… Käet kukkuvat kilpaa Harhamalan kuusikossa talon
ylistystä… Korpikoskesta laskevat veneet runolinnan rantaan tuoden
täydet lastit rikkautta, ja aurinko soutelee taivaalla valoveneenä,
kaartaen kuulua taloa.
Sitten joutuu ruskoinen elämän ilta… sen päivä painaikse jo levolle
lämpimän yön povelle. Vaimo saattaa tyttären keralla miehensä
Tuonen mustalle virralle… Siellä odottaa valkea vene, seppele
mastonpäässä… Vene lähtee rannasta… Vaimo siunaa lähtevää
elämänsä matkatoveria… Se itkee kosteiksi Harhamalan pellon
keltakukat, odotellen terveisiä Tuonelasta… Aika soluu, suoltuen
valkeina rihmoina… Mies palaa Tuonelasta noutamaan yksin jäänyttä
vaimoansa, entisen kotinsa hyvää henkeä… Yhdessä laskevat he
veneessä Tuonen mustaa virtaa… Virta synkkenee, yö pimenee…
Vaan jo aukeaa odotettu ulappa ja vene lähenee Riuttalan rantaa,
joka on valkeana onnenkukista… lemmenkukista… uskollisuuden
kukista… Riuttalan Helgan hääkukista… Sinne laskevat he veneensä
ja siellä odottavat he tyttärensä tuloa… Jo on vene perillä. Hän
katkaisee ulapasta onnenkukan ja ojentaa sen vaimollensa palkkioksi
rakkaudesta, uskollisuudesta ja onnesta. Hän on tuonut Riuttalan
Helgan kotirantaansa…
Mutta siihen eivät he pysähdy… He laskevat veneensä maineen ja
kuolemattomuuden häikäiseville purppuraselille… He laskevat
veneensä vieläkin etemmä: He purjehtivat jumaluuden kirkkaille
vesille ensimäisinä ihmisinä, jotka ovat uskaltaneet sinne purtensa
laskea…
Niin ovat he ratkaisseet elämän ja kuoleman kysymyksen… Niin
ovat he pelastuneet kuoleman terävästä luukynnestä… Niin on
voitettu kaikenhäviö…
Mutta Harhamalan maine jää ainaiseksi jälelle… Sen onnenkuusi
on täynnä seppeleitä… Sen kuusikko on valkea valkolinnuista,
teoksen lehtien linnuista…
Ja niiden unelmien aallokosta roiskahti hänessä lopullinen päätös
tarttua kynään… Jo oli lakannut kyselykin: Mikä on totuus?… Ei hän
enää kysynyt: "Isäkö vai äiti?…" Hän ei enää kysynyt mitään… Hän
oli kuin äidinkohtu, joka ei aikansa tullessa kysy: "Synnyttääkö, vai
eikö?…" Kaikki himot käskivät häntä… Kaikki unelmat vetivät häntä…
Öiset unet houkuttelivat häntä… Kulta huikaisi silmiä… Ylistyslaulut
huumasivat korvia… Maineenseppeleet kiehtoivat, kuin ihanimmat
hameenhelmat… Kuolemattomuus houkutteli, tarjoutuen kuin ihanin
omena… Kunnia kutsui, kutsui kirkkaat kihlat kädessä…
Ja kun auringon valovene souteli kaarensa korkeimmalla kohdalla
ja koko luonto huusi valon voittoa ja otti onnensiemaustansa,
purskahti Harhamasta koko elämän-ijän kokoutunut runoaarre… Se
roiskahti, kuin revontulet Pohjolan jäiselle taivaalle.
Hän tarttui kynään ja alkoi…
Vihdoinkin! Lopultakin! Vihdoinkin riuhtaisi ihmishenki itsensä irti
epäilyn pauloista… Munkkien siunaamalla kynällä piirsi Harhama
paperille suuren, rohkean teoksensa ensimäiset sanat:
— "Minä tahdon tulla toimeen ilman Jumalaa…"
Munkin siunaamalla kynällä antoi hän ensi iskun Jumalalle, Se oli
hurjistuneen, piinautuneen hengen sokea hyökkäys tuntematonta
vastaan.
*****
Työ alkoi. Harhama suurenteli Pohjolan suuren luonnon
jumaluuden väriloisteiseksi taustaksi. Hän levitti siksi avaruuden,
sirotteli äärettömyyden kirkkaasti loistavilla maailmankauden
alkumaailmoilla, jotka paloivat vielä tulisina. Hän ripusteli sen
reunoille kirkkaita revontulia, helmitteli sen auringoilla ja soinnutti
kaikki käen kukuntaan, lintujen laulun ja paimenen huilun ihaniin
ääniin. Hän upotti kaikki väreihin, sirotteli loistavilla maisemilla ja
tunnelmilla ja vyötteli värivirroilla…
Jo olivat taustan värit valmiit. Se oli väriloistoinen syntymäliina,
jonka hän levitti sen suuren jumalasikiön vuoteeksi, jota hän nyt
rupesi vetämään luonnon emättimestä. Kaikki vuoti, kuin
puhenneesta paisumasta. Noin seitsemäntoista vuotinen puristuma
oli pakahtunut ja purki nyt runovirtojansa ryöppyävinä kuvina. Kaikki
puhkesi valmiina, kuin kukan nupusta, valui kuin utaristansa
irtipäässyt vuolas virta. Hän kirjoitti runomitalla ja runojaloissa ei
tuntunut solmua… Niiden ajatus oli kirkasta kultalankaa…
Työ jatkui. Runot vuotivat, kuin helminauhat kultakehiltä… Suuret
kuvat kumpusivat paperille, nousten, kuin saaristot merestä, tai
avautuen, kuin vuorenhuipulta ihanat maat, joissa paratiisit
muodostavat satumaisemia ja auringoilla koristellut taivaan kuvat
riippuvat vesien syvyydessä kirkkaina kuperoina.
Työ sujui: Runovirrat hyrskivät koskina… Ne kuvailivat jumaluuden
yötä… Ne kuvailivat sitä pimeyttä, jolloin jumaluus nukkui
itsetiedottomana sikiönä emättimessänsä: äärettömyydessä… Se
emätin oli pimeä, kuin naisen kohtu… Jääkylmä sumu seisoi
liikkumattomana… Pimeys hohotti hirvittävänä, kuin kuoleman
synkkä kita… Äänettömyys rutisti… Elottomuus puristi, kuin
ikipakkasen jääkoura… Ei ollut olemassa mitään muuta, kuin kuolon
pimeä hirmukylmyys… Ei ollut olemassa muuta, kuin äärimäinen
elottomuus… äärimäinen olemattomuus… aineettomuus… tyhjyys…
hirmupakkanen ja pimeä: Jumaluuden itiö ja sen emättimen
alkumuoto.
Jo oli valmis jumaluuden kylmä, ääretön emätin. Mittaamattomia
ijankaikkisuuden jaksoja kulki siinä jumaluus itsetiedottomana,
kehittyi ja valmistui sen suurena sikiönä… Itse kehitti se itseänsä…
Itse valmisti se emättimensä: äärettömyyden…
Jumaluuden itiö täytti jo äärettömyyden… Se kehittyi:
olemattomasta syntyi oleva, tyhjästä aine. Jumaluuden sikiö
kehkeytyi ja kehitti emätintänsä, kuin sikiö kohtuansa.
Lukemattomat miljaardit ijankaikkisuuden ajanjaksot kuluivat.
Jumaluus kehittyi: Aine tiivistyi sumuksi… Se lepäsi sumuna
mittaamattomat ijankaikkisuudet… Sen hirmukylmä syntymä-emätin,
äärettömyys, oli kuoleman-pimeä… Se oli kamalan-mykkä… Se oli
äärimäisen-eloton, liikkumaton, värähtämätön… Se oli ikivuorta
värähtämättömämpi ja elottomampi…
Ijankaikkisuus pysyi, kuin kivivuori… Ei ollut vielä aikaa, koska ei
ollut ajan mittaajaa liikuntoa. Jumaluuden emätin oli vielä ajaton,
kuin ikivuori…
*****
Teoksen runovirta hyrski pauhuna. Jumaluuden kehitys jatkui. Sen
emätin kehkeytyi sikiönsä kehittämänä. Ajattomuudesta syntyi aika…
Eloton aine värähti… Sumu liikahti… Synkkä pimeys vavahti…
äänettömyys huoahti… Se oli jumaluuden ensimäinen elonmerkki,
sen havahtuminen ijankaikkisesta levosta ijankaikkiseen liikuntoonsa.
Se oli sen itsetietoisuuteensa kehittymisen ensimäinen elollinen
ilmiö…
Ijankaikkisuuden jaksot suoltuivat lukemattomin miljaardiluvuin…
Jumaluus kehkeytyy… Sen kuollut syntymäemätin herää elolliseen
elontoimintaan… Se herää siihen suuren sikiönsä elonkipinästä ja sen
kehittyvästä voimasta… Se ravitsee kannettavaansa, kuin äidinkohtu
lasta ja itse kehkeytyy ravittavansa elämänkehityksen antamasta
ravinnosta ja voimasta… Jumaluus, ollen ainoa oleva, luo itse
itsensä.
Jumaluus kehittyy edelleen, avaruus-emätin elää… Jäiset sumut
kierivät… Mutta ei ole vielä ääntä… Kaikki on äänetöntä kuin
ikivuori… Kaikki on tajutonta… Mutta jo alkaa ääni kehittyä
äänettömyydestä… Se kehittyy jumaluudesta jumaluuden kehityksen
kehkeyttämänä… Se kehittyy äänettömyydestä, kuin aine tyhjästä,
oleva olemattomasta… Sitä kehittää elottomien sumujen kierintä…
Se kierintä jatkuu mittaamattomia ijankaikkisuuden jaksoja…
Äänettömyys pakahtuu itseensä, kuin ajettuma sisältöönsä… Se
valmistautuu puhkeamaan omana pakahtumanansa… Se pingottuu…
kiihtyy… yltyy… halkeaa viimein kivusta… pakahtuu tuskasta ja
puhkeaa hirvittäväksi maailmanpauhuksi… Jumaluus on kehkeytynyt
äänettömyydestä ääneksi, oman itsensä kautta.
Teos jatkui: Jumaluus kehittää itseänsä itsetiedottomana
järjellisyytenä, kuin sikiö emättimessä… Jäinen hirmukylmyys on
ajautunut pakahtumaksi, kehittynyt huippuunsa ja valmistautuu
puhkeamaan vastakohdaksensa… Jumaluuden emätin on
kehkeytynyt kylmänpakahtumaksi… Se on jo tuskaansa haleta…
Kehitys jatkuu: Kylmänpakahtuma, sumuna kierivä äärettömyys:
Jumaluus puhkaisee itsensä… Ikikylmyydestä kehkeytyy se
ikikuumuudeksi… Se halkaisee pakahtumansa, purkaa tuskansa
tulikuumuudeksi…
Lämpö on syntynyt kylmyydestä… Jumaluus alkaa kehittää
itseänsä kuumuuden pakahtumaksi…
Avaruus on tulena… äärettömyys pauhuna ja hehkuvat
sumupaljoudet syöksyvät hirmukierinnässä ympäriinsä… Jumaluuden
kohtu, maailmoiden emätin, rannaton avaruus: Jumaluus itse
kiemurtelee synnytyskivuissa… Sen tuskanhuuto on
maailmanpauhua… Sen tuskat pursuavat maailmantulena… Se
pakenee vaivojansa, kiertäen oman itsensä ympäri… omassa
itsessänsä… oman itsensä pitelemänä, puristamana, polttamana.
Teos jatkui: Iankaikkisuus vuoti virtana. Jumaluus kehkeytyy
kohdussansa, äärettömässä ikitulessa… Se luo itse itseänsä
emättimensä aineesta, jonka se on itsestänsä luonut… Syntymäkivut
yltyvät… Niiden kourissa raivostuu tulinen avaruus yhä hurjempaan
kierintäänsä… Maailmantuli kiihtyy siitä kierinnästä… Se hehkuu
hirmutulena, jolla ei ole äärtä, ei rantaa, ei keskikohtaa…
Tuskanhuuto kovenee kauhunhuudoksi: Maailman syntymäpauhu
pakahtuu jo omaan itseensä… Kivut yhä kiihtyvät… Jumaluuden
elonmerkit tuntuvat emättimessä, ennustaen sen tietoisuuden
syntymähetken tuloa… Äärettömyys pakahtuu taas tuskiinsa…
avaruuden hirmuhuuto omaan pauhuunsa… maailmantuli omaan
kuumuuteensa… Jumaluuden kohtu ajettuu tuliseksi
maailmanpakahtumaksi… Kaikki kiihtyy… Kaikki yltyy… Kaikki
raivostuu… Kaikki riehuu ja vääntelee suurissa syntymäkivuissa… Jo
joutuu uusi suuri hetki… Jumaluuden kehkeytymisen
monimiljaardikausinen silmänräpäys: uusi käännekohta… Maailman
ajettuma on jo valmis uudeksi pakahtumaksi… Kaikki pakahtuu oman
itsensä tuskiin ja tuleen ja pauhuun… Kaikki kutistuu omaan
itseensä… äärettömyys repeää omaan rajattomuuteensa… avaruus
vetäytyy äärettömän itsensä tulipaisumaan…
Kuuluu hirveä pauhu: Ajettuma on puhennut… Tuliavaruus
repeää… Jumaluuden kohtu purkaa sisälmyksiänsä omaan itseensä.
Hehkuvat maailmansumut syöksyvät tulikerinä, äärettömyyteen
paeten, yhteisestä emättimestä, kuin hirmun tulipesästä… Eri
ainesarjat sinkoavat kukin omiksi maailman tulisumuiksi, alkaen
kehittää jumaluutta ja itse kehkeytyä sen kehityksestä…
Tulipaljouksina alkavat ne kieriä avaruudessa, etsien siellä
ratojansa… Avaruus vapisee… Se pakahtuu valoon… loistaa
kirkkautena, kuin tuliset maailmasumut karkeloivat hehkuvina
palloina sen sisässä… Pimeys on hävinnyt… Ikuinen valo on
puhennut ikipimeyden pakahtumasta…
Jumaluus luo itseänsä uudella kehityskaudellansa. Maailmat
alkavat jäähtyä: Aine eroutuu olemattomasta… Maailmoiden
jäähtyessä eroaa valo pimeydestä… lämpö kylmästä… Jumaluus
kehittäytyy korkeammaksi…
Teos jatkui: Äärettömyys, jumaluuden emätin jatkaa suurta
työtänsä jumaluutena itsenänsä… Kaikki on jo valon ja pimeyden
taistelua, kylmyyden ja kuumuuden ottelua… häviön kautta elämään
kulkemista… Lukemattomat maailmat sinkoilevat äärettömässä
pimeydessä, loistaen kirkkaina tulitähtinä… Kaikki löytää oman
ratansa… Ei mikään eksy omaltansa… Kaikki kiertää toistansa…
kaikki antaa toisillensa tietä… kaikki murskaa toistansa.
Jumaluus on kehkeytynyt luonnonjärjen pakkotilasta
vaistomaiseksi järjellisyydeksi, kohdun varassa elävän sikiön tilasta
siksi, joka lapsen vaistolla itse etsii oikeat tiensä…
Teos jatkui, kulkien ijankaikkisuuteen jäänyttä jumaluuden
syntymäuomaa. Jumaluus jatkaa syntymäänsä ja kehittää äitinsä
kohtua: äärettömyyttä: Maailmasumut jäähtyvät, aine muuttuu
kiinteäksi… Myöhemmät maailmat syntyvät vanhemmista,
vanhemmat häviävät myöhempiin… Kaikki häviää omaan itseensä…
kaikki syntyy oman itsensä häviöstä… Kaikki kiertää itseänsä… kaikki
kiertää toistansa… Toinen vetää toistansa, kaikki yhtä ja yksi
kaikkea… Siksi ei mikään hajoa… ei mikään häviä… ei eksy.
Jumaluuden järjellisyys kehkeyttäytyy elottomassa luonnossa:
emättimensä kivikovuudessa. Aineet erkanevat toisistansa: vesi
maasta, rauta kullasta. Kaikki yhtyvät uudestaan: Jumaluus luo
omaa tietoisuuttansa, kehittää järjellisyyttänsä ja kirkastaa omaa
itseänsä, samalla kohtuansa kehittäen: luoden maailmoita…
*****
Harhama hengähti ja luki luomuksensa. Hän itsekin hämmästyi
sen ihanuutta. Sen runosäkeet olivat virheettömiä, helmikirkkaita,
kuin luonnon kovien kourien hiomat helmet… Sen runojaloissa ei
näkynyt ihmiskäden jälkeä, sillä ne olivat valmistuneet ihmishengen
pakahtumassa, kuin helmi luonnon nisissä…
Seitsemäntoista vuotta oli hän suunnitellut sitä, luonut
uudenaikaisen myytin. Sen monet piirteet olivat vuosi vuodelta
puhdistuneet ja eheytyneet. Tänä viime vuotena oli hän sen puitteet
taas hiljaisuudessa uudestaan muodostellut. Hän oli sen tarujen
hengettäreksi ottanut rouva Esempion, kietonut hänet Esempio-
ihmisenä [Esempio = esimerkki] tarujen hienoimpiin väreihin ja
luonut hänestä kaiken kauniin ja hyvän vertauskuvan.
Maailmankurjuuden oli hän korottanut siksi, jossa kehittyvät
jumaluuden korkeimmat ominaisuudet: hyve… itsensä uhraaminen…
vähään tyytyminen… "ei omaansa etsiminen", ja jumaluuden suuri
tunnus: omaan käsivarteensa luottaminen, koska jumaluudella ei voi
olla kehen luottaa, kenen työllä elää… Kauvan oli hän tätä
kertomuksen juonta ajatuksissaan kerinyt, purkanut ja taas kerinyt.
Siksi vuotikin hänen sielustansa nyt kaikki, kuin rihma kerältä,
selvänä, suurena ja voimakkaana.
Ja kun hän oli sen lukenut, vilahti hänen silmiinsä pohjalaisnoita,
kädessä lippu, johon oli kirjoitettu vanha ennustus: "Sinä kirjoitat
kirjan, jonka lehdet muuttuvat linnuiksi, lentävät ympäri maailman ja
palaavat seppeleet nokassa…" Kunnian ja maineen liput liehuivat…
kulta hohti ja kuolemattomuus kohosi elämänsumuista verikirkkaana
auringonpyöränä.
— "Katso työtäsi! Se todistaa, että ennustus toteutuu… Sinä voitat
Sen, jota vastaan nostat kynäsi", — kuiskasi hänelle silloin ääni
hänen povestansa… Maailman ihanuus avautui hänen eteensä…
Elämänkäärme makasi pää murskaksi polettuna… Epäilyksen tomut
olivat pois puhalletut ja elämä avautui ihanimpana aatto-illan
unelmana…
Kun hän oli alkukohtauksen kirjottanut, pyysi hän rouva Esempion
sen lukemaan ja siten ikäänkuin siunaamaan hänen työnsä,
puhaltamaan siihen henkensä puhtaan leiman. Rouva Esempio täytti
pyynnön ja korjasi lukiessansa lyijykynällä parin epäselvästi
kirjotetun sanan kirjaimet selviksi.
— "Ai miten kaunista!… Jo se nyt runoilee!… Tämä on
grandieux'tä", — lausui hän, lopetettuaan lukemisen.
— "Kiitos korjauksestasi ja siunauksestasi! Nyt on elämän aatto ja
sen kevät", — lausui Harhama. Sen enempää ei hän selittänyt rouva
Esempiolle kirjoituksensa tarkotusta, tai sisältöä. Hän salasi taas
kaiken. Hän uskoi, että rouva Esempio, teoksen jumaluuden
vertauskuva, ei sitä käsitä. Hän ei raaskinut viskata helmeänsä
ihmissilmien nähtäväksi, kätki sitä, kuin peto pentuansa…
Elämän uneksittu työ oli vihdoinkin alettu, sen ääriviivat olivat
valmiiksi vedetyt. Uusi Jumala oli tulossa… Korpelan aurinko oli
nähnyt sen syntymisen ja levitteli valoliinansa sen tielle…
Innostuneena katseli Harhama Nälkäsuon kuulua ulappaa ja lausui
leikillä rouva Esempiolle:
— "Se aika tulee, jolloin Nälkäsuon punaisen karpalo-ulapan
keskelle pystytetään Harhaman muistopatsas."
Rouva Esempio puuhaili leivoksiensa kanssa, poski punehtuneena,
hiuksissa pihlajankukka. Hän muisteli omia unelmiansa… häitä…
Riuttalan rantakukkaa ehkä ja paljoa muuta ja lausui puuhiensa
lomasta:
— "Elämä on pettävä unelma…"
Ilta oli jo tullut. Aattopäivän lämmin aurinko kosketteli jo
reunallansa taivaan rusorantaa. Linnut lakkasivat laulamasta.
Onnenkuusen oksalla nukkui rauhallisena orava, kypsyvien käpyjen
keskellä, ja näki makeaa unta herkuistansa, tuoksuavista kävyistä, ja
punainen käpypaino huojutti oksaa hiljaa, kuin armas tuuli,
tuuditellen uneen metsän pientä, kaunista heiluhäntää. Pikku Ritva
nukkui kaukaisessa kehdossa viatonna ja näki kaunista unta äidin
armaista rinnoista, näki unta äidin etäisistä rinnanpäistä…
Se oli Harhaman elämän uuden aatto-illan unelma… Läheni
lempeä yö, josta oli valkeneva työn ja elämän juhla.
Pohjolan sydän-yön aurinko kirkastui punertavaksi. Verkalleen,
taivaan ja valon majesteettina laskeutui se pohjoisen taivaanrannan
käyrälle reunaviivalle ja pysähtyi siihen lepäämään. Se näytti
tulikuumalta rautakiekolta, joka ei raaski polttavalla reunallansa
koskea taivaanrannan heikkoa äärtä. Siinä säteili se yösydännä,
todistaen valon voittoa… Se huokasi siinä hetken, alkaaksensa taas
kiivetä kaartansa pitkin taivaanlaelle. Kaikki kääriytyi yön kirkkaisiin
valo-utuihin. Luonto värähti, metsä hymähti. Elämän aatto-illan
rauha laski kukkivalle kanervikolle ja Harhamalan kehäkukille, sirkka
nukahti ja yölepakko lähti onnenkuusen kätköistä öiselle
matkallensa…
Utuisten mielikuvien, himojen ja toiveiden ja unelmien vaikutteesta
oli Harhama lopullisesti alkanut suuren työnsä. Mielikuvat ja unelmat
ja halut loivat siten ihmis-elämää. Mutta mielikuvien langat juoksevat
tuntemattomilta keriltä…
*****
Korkeuden kellot soivat, syvyyden pohjilla solui elämän pohjavirta.
Näkymättömät lovet avautuivat… Salaiset kädet kehräsivät
rihmojansa…
Lammaskallion alla on kaunis Unelmala, syvällä kallion juurien alla.
Sen katto on kuunvaloa… Sen pohja on kukan väriä… Sen seinillä
riippuvat taivaalta siepatut ruskopilvet… Ne riippuvat seinillä kauniina
laskoksina… Ne heilahtelevat unelmia… Niiden laskoksia sitovat
solmukoiksi vesikaaresta leikatut nauhat… Niiden laskoksien lomiin
on ripustettu taivaalta varastettu iltarusko, kauniina verhona, somina
laskoksina… Toisaalla häilyvät laskoksina ihmisten kauneimmat
unelmat: tytön toiveet… morsiamen unet hääyön ihanuuksista…
sulhasen unelmat niistä… miehen kunnian-unelmat… vaimon äidin-
unelmat… kaikkien elämän unelmat… tulevaisuuden toiveet ja
halut…
Sata pientä lammikkoa läikkyy Unelmalan lattialla kauneina
kuvastimina… Joka lammessa on satusaari… joka saaressa
satumaja… Joka majassa istuvat ihanat enkelit kehräten ihmisten
unelmia… niiden lankoja… niiden rihmoja… niiden juonia punoen…
niiden juonia langaksi kerraten…
Luolan laskosten takana istuu toisia enkeleitä… mitkä kehräten…
mitkä kerien… mitkä vyyhdeten… kehien… luoden luomapuulle…
pirtaan ja niisiin pujottaen… käämejä punoen… kutoen kauneinta
unelmakangasta, tai kaunista unelmaverkkoa…
Unelmala-luolan keskellä on kaunis unelma-alttari. Sillä seisoo
kaunis Raala pystyyn pannun kauniin kehän vierellä, kädessä kaunis
värttinän puolain, vyöllä siro sukkula, koreassa kannattimessa… Hän
johtaa tuhansia enkeleitä, kun ne valmistavat ihmisten vääriä
unelmia Perkeleen vallan ohjaksiksi… Hänen kehältään juoksevat
väärien unelmien rihmat…
Unelma-alttarin edessä istuu kaksitoista kaunista enkeliä, ijäti
soittaen kaunistekoista kannelta… Ne säveleet kantavat unelmia
ihmisten maailmoihin… solmivat ne ihmissydämiin… sitovat niillä
ihmisiä unelmoitaviinsa…
Unelma-luolassa soivat sointuisimmat sävelet… siellä karkeloivat
kauneimmat värit…
*****
Kun Harhama oli alkanut teoksensa, laskeutui Perkele
Lammaskallion kivensyytä myöten Unelma-luolaan ja istuutui valta-
istuimellensa, kutsuen pääenkelinsä eteensä. Hän heittäytyi
istuimellensa lepoasentoon ja puhui ihastuneena:
— "Nyt on voitto!"
— "Voitto!… Voitto!… Voitto!" — kertasivat kumartuvat palvelijat.
Värit karkeloivat vilkkaina, unelmat kauneina. Perkele jatkoi:
— "Nyt nukkuu maailma lihan käsivarrella… Nyt lämmittelevät
Jehovan papitkin vaimojensa sylissä… Jehovan verkot ovat tyhjät."
— "Ja joka ei ole Jehovan verkossa, se kulkee sinun poluillasi", —
keskeyttivät palvelijat.
Ja yhä kirkkaammin paistoi kuunvalo luolan laesta ja iltaruskoiset
verhot rusottivat laskoksina. Perkele jatkoi voiton-ilolla:
— "Koko maailma on kypsä: 'Rakkaus'… pyh!… Niin: 'rakkaus' on
omenana, joka on eukon kädessä. Se kääntää miehen Jehovan
kirkkotieltä tytön luhtiin…"
— "Ja siellä" — yrittivät palvelijat.
— "Siellä ei Jehovan virsiä veisata", — keskeytti Perkele. —
"Jehova on luonut miehen kylkiluusta itsellensä surmankiven."
— "Jonka sinä vierität aina Hänen tiellensä", — lisäsivät palvelijat.
Ja taas kisailivat iloiset valot ja hekkumallinen hämärä… Värit
puhkesivat kauniina, kuin kukanterältä… suutelivat toisiansa… sulivat
yhdeksi hämyksi… hävisivät… haihtuivat. Perkele jatkoi:
— "Nyt on Harhama minun: Hän on alkanut teoksensa… Hän on
nostanut kurikkansa Jehovan kasvoja vastaan…"
— "Kiitos sinun viisautesi!" — lauloivat palvelijat.
— "Ja sinun armosi!" — lisäsi ihana sävel.
— "Sinussa päättyvät kaikki tiet… Sinuun johtavat kaikki polut", —
todisti ylistys vallattomien valojen seasta.
— "Sinussa loppuu kaikki… Sinusta alkaa kaikki" — kertaili iloinen
kaiku. Perkele jatkoi:
— "Harhama on siihen kurikkaan kulkenut Raalan, Tuulan,
Eeremen, Aaraman ja Uuratin kauniissa köysissä… Hänet on Herve
vienyt oikeaan satamaan ja Ooti ja Iila ovat hänet sinne soutaneet
taitavasti kaikkien Jehovan karien läpi…"
— "Sinä olet heille kaikille voiman ja viisauden antanut", —
ylistivät enkelit… Perkele jatkoi järkeilyään suurena:
— "Jehovan luoma ihminen on kahtia: Ne ovat naisia ja miehiä. —
Se jako on jakava miehet Kainiksi ja Aabeliksi. Jehova pani miehen ja
naisen välille rakkauden, mutta minä olen muuttanut sen rakkauden
himoksi… Luonnon määräämän siittämisen minä olen muuttanut
nautinnoksi… irstailuksi… Siihen rapaan on Jehova kantapäänsä
astuva…"
— "Siinä on Hän tapaava sinun hampaasi", — lisäsi Piru.
Perkeleen vihjauksesta avautuivat luolan laskokset ja niiden takaa
näkyivät taiteilijoiden työpajat, runoilijoiden huoneet ja ihmisten
asunnot. Kaikki olivat työssä… Kaikki ahersivat naisen ruumiin
ääressä… Taiteilijat hakkasivat sitä kivestä… maalarit maalasivat sitä
kankaalle… runoilijat kirjoittelivat sille runoja… säveltäjät ylistivät sitä
sävelillä… soittajat soittivat sen ylistystä… muut uneksivat siitä…
Perkele osoitti näkyä lausuen:
— "Noin palvelevat ihmiset naisen ruumista… He kihisevät siinä,
kuin toukat juustopalassa, madot lihassa… He eivät vaihda sitä palaa
Jehovan enkeleihin… He eivät edes välitä naisen hengestä…
Aadamista lähtien eivät he ole ylistäneet muuta, kuin naisen lihaa…"
— "Siksi horjuu Jehovan valta",—huomautti Horna.
— "Harhamakin on ryhtynyt työhönsä naiselle uhratessansa. Sen
tähden kokoaa hän kultaa ja kunniaa… Hän kokoaa sitä, kuin
riikinkukko häntäsulkiensa väriä", — jatkoi Perkele.
— "Mutta hän samalla pelastuu sen kautta Jehovan kynsistä", —
oikaisi Lempo.
— "Sinä olet hänen silmänsä avannut… Sinä olet hänet
pelastanut… Nyt on hän sinun", — kohisi ylistys. Ja kaukaiset
kanteleet ja huilut soivat ja niiden sävel sekautui ihanaan
enkelilauluun, joka ylisti Perkeleen armoa ja viisautta. Perkele lausui
sen loputtua tyytyväisenä:
— "Hän ei tosin ole vielä Kain… itsemielestänsä… mutta siihen
johtava askel ei ole enää pitkä… Hyvin olette tehtävänne täyttäneet.
Harhama antoi eropassin Jehovalle, Jehovan omien munkkien
siunaamalla kynällä… Ja munkki Pietarin siunaamana… Palvelijani!
Palkinnoille!"
Satatuhatta ihaninta enkeliä helähti silloin luolan hekkumalliseen
hämärään… Kuutamo laski laesta niiden soleille vartaloille…
purppuraverhojen rusko leikki hienolla hipiällä… Ikuinen nuoruus
kukki ihossa… kauneus poskessa. Joka jäsen oli notkeutta…
suloutta… ja sulo ja suloiset värit pukivat ruumiin pehmeät piirteet
hämäräisillä harsoillansa… Koko luola oli täynnä hämyä…
hekkumaa… kauneutta… sulavuutta… väriä… nuoruutta ja
notkeutta…
Taas soi ihana soitto. Enkelit keinuivat sävelvirrassa, kuin nipukat
rauhallisilla laineilla. Perkele puhui taas:
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about testbank and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!
ebooksecure.com