0% found this document useful (0 votes)
298 views54 pages

(Ebook PDF) Brief C++: Late Objects, 3rd Edition Download

The document provides information about various eBooks related to C++ and Java programming, including titles like 'Brief C++: Late Objects, 3rd Edition' and 'Java How to Program, Late Objects Global Edition 11th Edition'. It highlights the features of the Enhanced E-Text format, which includes interactive activities to engage students and reinforce programming concepts. Additionally, it outlines the structure of the book, focusing on both fundamental programming principles and object-oriented design.

Uploaded by

ntbyrrtps4288
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
0% found this document useful (0 votes)
298 views54 pages

(Ebook PDF) Brief C++: Late Objects, 3rd Edition Download

The document provides information about various eBooks related to C++ and Java programming, including titles like 'Brief C++: Late Objects, 3rd Edition' and 'Java How to Program, Late Objects Global Edition 11th Edition'. It highlights the features of the Enhanced E-Text format, which includes interactive activities to engage students and reinforce programming concepts. Additionally, it outlines the structure of the book, focusing on both fundamental programming principles and object-oriented design.

Uploaded by

ntbyrrtps4288
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/ 54

(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
pro­grams. 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 intro­duction to reading and writing text files. The remainder of the chapter gives
addi­tional 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

You might also like