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

C++ Programming: An Object-Oriented Approach, 1e ISE 1st Edition Behrouz A. Forouzan - eBook PDF pdf download

The document is an overview of the book 'C++ Programming: An Object-Oriented Approach' by Behrouz A. Forouzan and Richard F. Gilberg, published by McGraw-Hill Education. It includes a table of contents detailing chapters on various programming concepts, including basics of C++, functions, classes, and data structures. Additionally, it provides links to download the eBook and other related resources.

Uploaded by

ligawmabura
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
16 views

C++ Programming: An Object-Oriented Approach, 1e ISE 1st Edition Behrouz A. Forouzan - eBook PDF pdf download

The document is an overview of the book 'C++ Programming: An Object-Oriented Approach' by Behrouz A. Forouzan and Richard F. Gilberg, published by McGraw-Hill Education. It includes a table of contents detailing chapters on various programming concepts, including basics of C++, functions, classes, and data structures. Additionally, it provides links to download the eBook and other related resources.

Uploaded by

ligawmabura
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

C++ Programming: An Object-Oriented Approach, 1e

ISE 1st Edition Behrouz A. Forouzan - eBook PDF


pdf download

https://ebooksecure.com/download/c-programming-an-object-
oriented-approach-1e-ise-ebook-pdf/

Download more ebook from 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) Microsoft Visual C#: An Introduction to


Object-Oriented Programming 7th Edition

http://ebooksecure.com/product/ebook-pdf-microsoft-visual-c-an-
introduction-to-object-oriented-programming-7th-edition/

Foundations of Computer Science 4th Edition Behrouz


Forouzan - eBook PDF

https://ebooksecure.com/download/foundations-of-computer-science-
ebook-pdf/

Design patterns: elements of reusable object-oriented


software 1st edition - eBook PDF

https://ebooksecure.com/download/design-patterns-elements-of-
reusable-object-oriented-software-ebook-pdf/

Data Communications and Networking with TCP/IP Protocol


Suite 6th Edition Behrouz A. Forouzan - eBook PDF

https://ebooksecure.com/download/data-communications-and-
networking-with-tcp-ip-protocol-suite-ebook-pdf/
Programming in C 1st Edition - eBook PDF

https://ebooksecure.com/download/programming-in-c-ebook-pdf/

Readings from Programming with C++ 1st Edition Kyla


Mcmullen - eBook PDF

https://ebooksecure.com/download/readings-from-programming-with-
c-ebook-pdf-2/

Readings from Programming with C++ 1st Edition Kyla


Mcmullen - eBook PDF

https://ebooksecure.com/download/readings-from-programming-with-
c-ebook-pdf/

Object Relations Theory and Practice: An Introduction


(eBook PDF)

http://ebooksecure.com/product/object-relations-theory-and-
practice-an-introduction-ebook-pdf/

Principles of Microeconomics: A Streamlined Approach,


4e ISE 4th/ISE Edition Robert H. Frank - eBook PDF

https://ebooksecure.com/download/principles-of-microeconomics-a-
streamlined-approach-4e-ise-ebook-pdf/
C++ Programming:
An Object-Oriented Approach

Behrouz A. Forouzan
Richard F. Gilberg
C++ PROGRAMMING: AN OBJECT-ORIENTED APPROACH

Published by McGraw-Hill Education, 2 Penn Plaza, New York, NY 10121. Copyright © 2020 by McGraw-Hill Education. All rights
reserved. Printed in the United States of America. No part of this publication may be reproduced or distributed in any form or by any
means, or stored in a database or retrieval system, without the prior written consent of McGraw-Hill Education, including, but not
limited to, in any network or other electronic storage or transmission, or broadcast for distance learning.

Some ancillaries, including electronic and print components, may not be available to customers outside the United States.

This book is printed on acid-free paper.

1 2 3 4 5 6 7 8 9 LWI 21 20 19

ISBN 978-0-07-352338-5 (bound edition)


MHID 0-07-352338-0 (bound edition)
ISBN 978-1-259-57145-9 (loose-leaf edition)
MHID 1-259-57145-9 (loose-leaf edition)

Executive Portfolio Manager: Suzy Bainbridge


Product Developer: Heather Ervolino
Marketing Manager: Shannon O’Donnell
Content Project Managers: Jane Mohr and Sandra Schnee
Buyer: Laura Fuller
Designer: Egzon Shaqiri
Content Licensing Specialist: Shawntel Schmitt
Cover Image: ©McGraw-Hill Education
Compositor: MPS Limited

All credits appearing on page or at the end of the book are considered to be an extension of the copyright page.

Library of Congress Cataloging-in-Publication Data

Forouzan, Behrouz A., author. | Gilberg, Richard F., author.


C++ programming : an object-oriented approach / Behrouz A. Forouzan, Richard F. Gilberg.
First edition. | New York, NY : McGraw-Hill Education, [2020] |
Includes index.
 LCCN 2018030975| ISBN 9780073523385 (bound edition : acid-free paper) |
ISBN 0073523380 (bound edition : acid-free paper) | ISBN 9781259571459 (loose-leaf edition) |
ISBN 1259571459 (loose-leaf edition)
LCSH: Object-oriented programming (Computer science) | C++ (Computer program language)
LCC QA76.64 .F684 2019 | DDC 005.1/17—dc23
LC record available at https://lccn.loc.gov/2018030975

The Internet addresses listed in the text were accurate at the time of publication. The inclusion of a website does not indicate an endorse-
ment by the authors or McGraw-Hill Education, and McGraw-Hill Education does not guarantee the accuracy of the information presented
at these sites.

mheducation.com/highered
To my wife, Faezeh
Behrouz A. Forouzan

To my wife, Evelyn
Richard F. Gilberg
This page intentionally left blank
Brief Table of Contents

Preface xv
Chapter 1 Introduction to Computers and Programming Languages 1
Chapter 2 Basics of C++ Programming 19
Chapter 3 Expressions and Statements 59
Chapter 4 Selection112
Chapter 5 Repetition158
Chapter 6 Functions208
Chapter 7 User-Defined Types: Classes 273
Chapter 8 Arrays338
Chapter 9 References, Pointers, and Memory Management  380
Chapter 10 Strings443
Chapter 11 Relationships among Classes 496
Chapter 12 Polymorphism and Other Issues  553
Chapter 13 Operator Overloading 597
Chapter 14 Exception Handling 657
Chapter 15 Generic Programming: Templates 693
Chapter 16 Input/Output Streams 716
Chapter 17 Recursion776
Chapter 18 Introduction to Data Structures 813
Chapter 19 Standard Template Library (STL) 852
Chapter 20 Design Patterns Available online

v
Appendixes A-R  Available online

Appendix A Unicode
Appendix B Positional Numbering System

Appendix C C++ Expressions and Operators

Appendix D Bitwise Operations

Appendix E Bit Fields

Appendix F Preprocessing

Appendix G Namespaces

Appendix H Ratios

Appendix I Time

Appendix J Lambda Expressions

Appendix K Regular Expressions

Appendix L Smart Pointers

Appendix M Random Number Generation

Appendix N References

Appendix O Move versus Copy

Appendix P A Brief Review of C++ 11

Appendix Q Unified Modeling Language (UML)

Appendix R Bitset

CheckPoints  Available online

True/False Questions  Available online

Review Questions  Available online

Glossary  Available online

Index 915
Contents

Preface xv
What Is the C++ Language? xv
Why This Book? xv
Appendicesxvi
Instructor Resources xvii
Acknowledgmentsxvii

1
Introduction to Computers and Programming Languages 1

1.1 Computer System 1


1.2 Computer Languages 5
1.3 Language Paradigms 7
1.4 Program Design 10
1.5 Program Development 13
1.6 Testing15
Key Terms 16
Summary17
Problems17

2
Basics of C++ Programming 19

2.1 C++ Programs 19


2.2 Variable, Value, and Constant 26
2.3 Components of a C++ Program 32
2.4 Data Types 36
Key Terms 52
Summary52
Problems52
Programming Projects 57

vii
viii Contents

3
Expressions and Statements 59

3.1 Expressions59
3.2 Type Conversion  71
3.3 Order of Evaluation 76
3.4 Overflow and Underflow 81
3.5 Formatting Data 85
3.6 Statements93
3.7 Program Design  98
Key Terms 105
Summary105
Problems106
Programs110

4
Selection 112

4.1 Simple Selection 112


4.2 Complex Decisions 126
4.3 Decisions on Specific Values 134
4.4 Conditional Expressions 142
4.5 Program Design  144
Key Terms 152
Summary153
Problems153
Programs156

5
Repetition 158

5.1 Introduction158
5.2 The while Statement 161
5.3 The for Statement 175
5.4 The do-while Statement  180
5.5 More About Loops 184
5.6 Other Related Statements  188
5.7 Program Design  191
Key Terms 203
Summary203
Problems204
Programs206
Contents ix

6
Functions 208

6.1 Introduction208
6.2 Library Functions  213
6.3 User-Defined Functions 224
6.4 Data Exchange 233
6.5 More About Parameters 244
6.6 Scope and Lifetime  248
6.7 Program Design  256
Key Terms 265
Summary265
Problems266
Programs269

7
User-Defined Types: Classes 273

7.1 Introduction273
7.2 Classes275
7.3 Constructors and Destructors 283
7.4 Instance Members 294
7.5 Static Members 302
7.6 Object-Oriented Programming 311
7.7 Designing Classes 320
Key Terms 332
Summary332
Problems333
Programs335

8
Arrays 338

8.1 One-Dimensional Arrays 338


8.2 More on Arrays 349
8.3 Multidimensional Arrays 363
8.4 Program Design  369
Key Terms 376
Summary376
Problems376
Programs378
x Contents

9
References, Pointers, and Memory Management  380

9.1 References380
9.2 Pointers391
9.3 Arrays and Pointers 405
9.4 Memory Management 414
9.5 Program Design 425
Key Terms 437
Summary437
Problems437
Programs442

10
Strings 443

10.1 C Strings 443


10.2 The C++ String Class 460
10.3 Program Design 484
Key Terms 492
Summary492
Problems493
Programs494

11
Relationships among Classes 496

11.1 Inheritance496
11.2 Association519
11.3 Dependency528
11.4 Program Design 532
Key Terms 546
Summary546
Problems547
Programs550

12
Polymorphism and Other Issues  553

12.1 Polymorphism553
12.2 Other Issues 567
Contents xi

Key Terms 594


Summary594
Problems594
Programs596

13
Operator Overloading 597

13.1 Three Roles of an Object 597


13.2 Overloading Principles 602
13.3 Overloading as a Member 605
13.4 Overloading as a Nonmember  621
13.5 Type Conversion 625
13.6 Designing Classes 626
Key Terms 652
Summary653
Problems653
Programs654

14
Exception Handling 657

14.1 Introduction657
14.2 Exceptions in Classes 675
14.3 Standard Exception Classes 682
Key Terms 688
Summary688
Problems689
Programs692

15
Generic Programming: Templates 693

15.1 Function Template 693


15.2 Class Template 703
Key Terms 713
Summary713
Problems714
Programs715
xii Contents

16
Input/Output Streams 716

16.1 Introduction716
16.2 Console Streams 720
16.3 File Streams 729
16.4 String Streams 751
16.5 Formatting Data 755
16.6 Program Design 766
Key Terms 773
Summary773
Problems774
Programs774

17
Recursion 776

17.1 Introduction776
17.2 Recursive Sort and Search 792
17.3 Program Design 803
Key Terms 808
Summary808
Problems809
Programs811

18
Introduction to Data Structures 813

18.1 Introduction813
18.2 Singly Linked List 815
18.3 Stacks and Queues 825
18.4 Binary Search Trees 841
Key Terms 849
Summary850
Problems850
Programs851
Contents xiii

19
Standard Template Library (STL) 852

19.1 Introduction  852


19.2 Iterators853
19.3 Sequence Containers 856
19.4 Container Adapters 877
19.5 Associative Containers 884
19.6 Using Functions  894
19.7 Algorithms899
Key Terms 910
Summary910
Problems911
Programs911

20
Design Patterns Online

20.1 Introduction
20.2 Creational Patterns
20.3 Structural Patterns
20.4 Behavioral Patterns
Key Terms
Summary
Problems
Programs

Online Appendices
Appendix A Unicode
Appendix B Positional Numbering System
Appendix C C++ Expressions and Operators
Appendix D Bitwise Operations
Appendix E Bit Fields
Appendix F Preprocessing
xiv Contents

Appendix G Namespaces
Appendix H Ratios
Appendix I Time
Appendix J Lambda Expressions
Appendix K Regular Expressions
Appendix L Smart Pointers
Appendix M Random Number Generation
Appendix N References
Appendix O Move versus Copy
Appendix P A Brief Review of C++ 11
Appendix Q Unified Modeling Language (UML)
Appendix R Bitset

CheckPoints Available online

True/False Questions Available online

Review Questions Available online

Glossary Available online

Index 915
Preface

This book complements a course designed to teach object-oriented programming using the syntax
of the C++ language. It will also prepare students for advanced concepts such as data structure
and design patterns. Students who have completed this course will be ready to take on any other
object-oriented language course, a data-structure course, or a course about design patterns.

What Is the C++ Language?


C++ is a progressive programming language derived from its predecessors, the C language
and the B language. The C++ language expands the idea of a struct to a class in which dif-
ferent objects can be created from one single definition of a class with different values for
each data element.
Furthermore, the C++ language explores the idea of object-oriented languages that
simulate real life. In real life, we define a type and then we have objects of that type. In the
C++ language, we define a class and then we create objects from that class. C++ also in-
cludes the idea of inheritance. In inheritance, we can create a class and then extend the defi-
nition to create other classes, just as in real life where the idea of an animal can be extended
to create the idea of a horse, a cow, a dog, and so on.
Perhaps the most interesting addition to C++ is the idea of polymorphism. Polymor-
phism gives us the ability to write several versions of an action with the same name to be
used by different objects. This practice is found in real life when we use the verb open. We
can say that we open a business, open a can, open a door, and so on. Although the word open
is used in all cases, it elicits different actions on different objects.
The most recent additions to C++ include the Standard Template Library (STL), a
collection of predefined complex objects and actions that can be applied to those objects, as
well as design patterns to make problem solving more efficient and coherent.

Why This Book?


The book has five distinctive goals as discussed below.

Teach Computer Programming


The book can be used as the first course in computer programming using the C++ language
as the vehicle. Chapters 1 to 6 are designed for this purpose. They discuss computer systems
and languages. They also discuss the basics of the C++ syntax and program controls, such
as decisions and repetitions. Chapters 1 to 6 are essential to learning programming using the
C++ language.

Teach the Syntax of the C++ Language


Chapters 7 to 12 are essential in the study of object-oriented programming. Although Chap-
ters 8 and 9 are not directly related to the object-oriented features of C++, we believe that
these two chapters can be taught after students understand the basics of object-oriented pro-
gramming, which are discussed in Chapter 7.
xv
xvi Preface

Present New Features of C++


Chapters 13 to 17 discuss other topics normally taught in a first or second course in program-
ming. They can be taught in any order.

Discuss Data Structure and Introduce the STL Library


Chapters 18 and 19 are an introduction to data structures. They prepare students for a course
in data structures.

Introduce Design Patterns


Chapter 20 (which can be found online) gives simple and alternative solutions to some
typical problems in object-oriented programming that would be more difficult to solve if
patterns were not used. Chapter 20 gives students an insight to object-oriented programming
through a set of standard solutions to specific problems. Although design patterns are nor-
mally taught in computer graphics courses, we have applied them to nongraphic problems
for students who have no graphical programming experience.

Course Outline
The twenty chapters of the book are outlined in the following figure.

Chapter 1

Chapter 6

Chapter 7 Chapter 8
Chapter 10 Chapter 9
Chapter 11
Chapter 12

Chapter 13
Legend:
Chapter 17 Basic C++ language
Object-oriented concepts
Chapter 18 Can be taught in anywhere after chapter 7
Chapter 19 Can be taught if time allows (second course)
Data structures (optional)
Chapter 20 Design patterns (optional)

Appendices
Appendices can be found online and are divided into six categories.

References
Appendices A to E are designed to be used as references for students. Students may need to
consult these appendices when studying chapters in the book.

Language Knowledge
Appendices F and G give students information about how C++ prepares a source code for
compilation and how it handles names in different sections.
Preface xvii

Advanced Topics
Appendixes H to O discuss some advanced topics that were added to C++. They can be
taught in the class, or students can use them as a source of additional information.

Brief Review of C++ 11


Appendix P gives a brief review of C++ 11 topics that were not discussed in the appendices
that discussed advanced topics.

Brief Review of UML


We have used UML diagrams in the text. Appendix Q provides general insight into UML as
a tool for designing object-oriented projects.

Bitset
The concept of bitset becomes more popular when C++ is used in network programming.
We have included this topic in Appendix R.

Instructor Resources
Accompanying this text are several additional resources which can be found online at www
.mhhe.com/forouzan1e. These include CheckPoint questions that help instructors gauge stu-
dent understanding after reading each section of a chapter. True/false and review questions
are also available to further test student’s knowledge. Complete solutions to the CheckPoint
features, true/false questions, review questions, and problems are provided as well. Lastly,
Lecture PPTs, text image files, and sample programs are provided as well.

Acknowledgments
We would like to express our gratitude to the reviewers of this text. Their insight and sug-
gestions over the last few years greatly influenced this first edition. In alphabetical order, the
reviewers are as follows:

Vicki H. Allan, Utah State University


Kanad Biswas, Institute of Technology, Delhi
Gary Dickerson, Union College
Max I. Formitchev, Maximus Energy
Cynthia C. Fry, Baylor University
Barbara Guillott, Q&A Analyst, CGI, Lafayette, LA
Jon Hanrath, Illinois Institute of Technology
David Keathly, University of North Texas
Robert Kramer, Youngstown State University
Kami Makki, Lamar University
Christopher J. Mallery, Principal Software Engineering Lead for Microsoft
Michael L. Mick, Purdue University, Calumet
Amar Raheja, California State Polytechnic University, Pomona
Brendan Sheehan, University of Nevada–Reno

At McGraw-Hill, we would like to thank the following editorial and production staff:
Thomas Scaife, Senior Portfolio Manager; Suzy Bainbridge, Executive Portfolio Manager;
Heather Ervolino, Product Developer; Shannon O’Donnell, Marketing Manager; Patrick
Diller, Business Project Manager; and Jane Mohr, Content Project Manager.
This page intentionally left blank
1 Introduction to Computers
and Programming Languages
In this chapter, we describe the components of a computer system and discuss the general
ideas behind computer languages. The overview provided in this chapter will help prepare
you for future chapters. You can skip the chapter in the first reading and return to it when
you have a better understanding of programming.

Objectives
After you have read and studied this chapter, you should be able to:

• Discuss the two major components of a computer: hardware and software.


• Describe the six parts of hardware: CPU, primary memory, secondary storage, input system,
output system, and communication system.
• Describe the two major categories of software: system software and application software.
• Describe the evolution of computer languages from machine languages, to assembly
languages, and to high-level languages.
• Discuss four different paradigms of computer languages: procedural, object-oriented,
functional, and logic.
• Describe the two steps of program design: understand the problem and develop a solution.
• Describe the multistep procedure that transforms a program written in the C++ language to
an executable program.

1.1 COMPUTER SYSTEM


A computer system is made of two major components: hardware and software. The com-
puter hardware is the physical equipment. The software is the collection of programs
(instructions) that allow the hardware to do its job.

1.1.1 Computer Hardware


The hardware of a computer system consists of six parts: a central processing unit (CPU),
main memory, secondary storage, the input system, the output system, and the communica-
tion system. These components are connected together by what is called a bus. Figure 1.1
shows these six components and their connection.

Central Processing Unit (CPU)


The central processing unit (CPU) consists of the arithmetic-logical unit (ALU), the con-
trol unit, and a set of registers to hold data temporarily while being processed. The control
unit is the traffic cop of the system; it coordinates all the operations of the system. The ALU

1
2 Chapter 1  Introduction to Computers and Programming Languages

CPU

Bus

Main Secondary Input Output Communication


memory storage system system system

Figure 1.1 Basic hardware components

ALU Registers
Control unit

Central processing unit (CPU)

Figure 1.2 Central processing unit


(photo) ©leungchopan/Getty Images

executes instructions such as arithmetic calculations and comparisons among data. Figure 1.2
shows the general idea behind a central processing unit.

Primary Memory
Primary memory is where programs and data are stored temporarily during processing.
The contents of primary memory are lost when we turn off the computer. Figure 1.3 shows
primary memory in more detail. Each storage location in memory has an address, much like
a street address, that is used to reference the memory’s contents. The addresses in Figure
1.3(a) are shown on the left as numbers ranging from zero to (n – 1), where n is the size of
memory. In Figure 1.3(b) the address is shown symbolically as x.

0
1 Address Contents
Operating
system
x 256

(b) Address and contents


Program

256
15.34
Hello Data

n−1
(a) General layout
Figure 1.3 Primary memory
(photo) ©Simon Belcher/Alamy
1.1  Computer System 3

Figure 1.4 Some secondary storage devices


©Shutterstock/PaulPaladin; ©David Arky/Getty Images; ©McGraw-Hill Education

Figure 1.5 Some input systems


©JG Photography/Alamy; ©Keith Eng 2007

Generally, each address refers to a fixed amount of memory. In personal computers,


the amount of storage accessed is usually one, two, or four bytes. In large computers, it can
be many bytes. When more than one byte is accessed at a time, word rather than byte is usu-
ally used for the memory size.
In general, primary memory is used for three purposes: to store the operating system,
to store the program, and to store data. The type of data stored is dependent on the applica-
tion. In Figure 1.3, we demonstrate three different types of data: an integer (256), a real
number (15.34), and a string (Hello).

Secondary Storage
Programs and data are stored permanently in secondary storage. When we turn off the
computer, our programs and data remain in the secondary storage ready for the next time
we need them. Examples of secondary storage include hard disks, CDs and DVDs, and flash
drives (Figure 1.4).

Input System
The input system is usually a keyboard where programs and data are entered into the com-
puter. Examples of other input devices include a mouse, a pen or stylus, a touch screen, or
an audio input unit (Figure 1.5).

Output System
The output system is usually a monitor or a printer where the output is displayed or printed.
If the output is displayed on the monitor, we say we have a soft copy. If it is printed on the
printer, we say we have a hard copy (Figure 1.6).

Communication System
We can create a network of computers by connecting several computers. Communication
devices are installed on a computer system for this purpose. Figure 1.7 shows some of these
devices.
4 Chapter 1  Introduction to Computers and Programming Languages

Figure 1.6 Some output systems


©Roy Wylam/Alamy; ©Stephen VanHorn/Alamy

Figure 1.7 Some communication devices


©Ingram Publishing; ©somnuek saelim/123RF

1.1.2 Computer Software


Computer software is divided into two broad categories: system software and application
software. This is true regardless of the hardware system architecture. System software man-
ages the computer resources. Application software, on the other hand, is directly responsible
for helping users solve their problems.

System Software
System software consists of programs that manage the hardware resources of a computer
and perform required information processing. These programs are divided into three groups:
the operating system, system support, and system development.
Operating System The operating system provides services such as a user interface, file and
database access, and interfaces to communication systems. The primary purpose of this soft-
ware is to operate the system in an efficient manner while allowing users access to the
system.

System Support System support provides system utilities and other operating services. Ex-
amples of system utilities are sort programs and disk format programs. Operating services
consist of programs that provide performance statistics for the operational staff and security
monitors to protect the system and data.

System Development System development software includes the language translators that
convert programs into machine language for execution, debugging tools to assure that the
programs are error-free, and computer-assisted software engineering (CASE) systems that
are beyond the scope of this book.
1.2  Computer Languages 5

Application Software
Application software is broken into two categories: general-purpose software and
application-specific software.
General-Purpose Software General-purpose software is purchased from a software devel-
oper and can be used for more than one application. Examples of general-purpose software
include word processors, database management systems, and computer-aided design sys-
tems. These programs are called general purpose because they can solve a variety of user
computing problems.

Application-Specific Software Application-specific software can be used only for its in-
tended purpose. A general ledger system used by accountants and a material requirements
planning system used by engineers are examples of application-specific software. They can
be used only for the task they were designed for; they cannot be used for other generalized
tasks.

1.2 COMPUTER LANGUAGES


To write a program for a computer, we must use a computer language. Over the years,
computer languages have evolved from machine to symbolic to high-level languages and
beyond. A time line for computer languages is seen in Figure 1.8.

1.2.1 Machine Languages


In the earliest days of computers, the only programming languages available were machine
languages. While each computer still has its own machine language, which is made of
streams of 0s and 1s, we no longer program in machine language.

The only language understood by a computer is its machine language.

1.2.2 Symbolic Languages


It became obvious that not many programs would be written if programmers continued to
work in machine language. In the early 1950s, Grace Hopper, a mathematician and a mem-
ber of the United States Navy, developed the concept of a special computer program for
converting programs into machine language (see Figure 1.9).
Her work led to the use of programming languages, which simply mirrored the ma-
chine languages using symbols, or mnemonics, to represent the various machine language
instructions. Because they used symbols, these languages were known as symbolic lan-
guages. A special program called an assembler is used to translate symbolic code into ma-
chine language. Because symbolic languages have to be assembled into machine language,
they soon became known as assembly languages. This name is still used today for symbolic
languages that closely represent the machine language of their computer.

High-level languages
Symbolic languages
Machine languages
Time
1940 1950 1960 1970 1980 1990 2000 2010

Figure 1.8 Computer language evolution


6 Chapter 1  Introduction to Computers and Programming Languages

Figure 1.9 Grace Hopper


©Cynthia Johnson/Getty Images

Symbolic language uses mnemonic symbols to


represent machine language instructions.

1.2.3 High-Level Languages


Although symbolic languages greatly improved programming efficiency, they still required
programmers to concentrate on the hardware they were using. Working with symbolic lan-
guages was also very tedious because each machine instruction had to be individually coded.
The desire to improve programmer efficiency and to change the focus from the computer to
the problem being solved led to the development of high-level languages.
High-level languages are portable to many different computers, which allows the pro-
grammer to concentrate on the application problem at hand rather than the intricacies of the
computer. High-level languages are designed to relieve the programmer from the details of
the assembly language. However, high-level languages share one thing with symbolic lan-
guages: They must be converted to machine language. This process is called compilation.
The first widely used high-level language, FORTRAN (Formula Translation), was
created by John Backus and an IBM team in 1957. Following soon after FORTRAN was
COBOL (Common Business-Oriented Language). Admiral Grace Hopper was again a key
figure, this time in the development of the COBOL business language.
1.3  Language Paradigms 7

Over the years, several other languages—most notably BASIC, Pascal, Ada, C, C++,
and Java—were developed. Today, one of the popular high-level languages for system soft-
ware and new application code is C++, which we discuss in this book.

1.3 LANGUAGE PARADIGMS


Computer languages can be categorized according to the approach they use in solving a prob-
lem. A paradigm is a model or a framework for describing how a program handles data. Al-
though there are several taxonomies for dividing current languages into a set of paradigms, we
discuss only four: procedural, object-oriented, functional, and logic, as shown in Figure 1.10.
The figure also shows which language belongs to which paradigm according to our taxonomy.
Note that the C++ language can be used both as a procedural and an object-oriented
paradigm, as we will see in future chapters.

1.3.1 Procedural Paradigm


In a procedural (also called imperative) paradigm, a program is a set of commands. The
execution of each command changes the state of the memory related to that problem. For
example, assume we want to find the sum of any two values. We reserve three memory
locations and call them a, b, and sum. The combination of these three memory locations
comprises a state in this case. Figure 1.11 shows how a procedural paradigm uses four com-
mands to change the state of memory four times. Note that the memory locations in gray
show the original state, wherein the locations are reserved for the program.
To get the value of the first number, a, into memory, we use an input command (input
a). After execution of this command, the computer waits for us to enter a number on the
keyboard. We entered 6. When we press the enter key on the keyboard, the number 6 is
stored in the first memory location and the state of memory is changed. After the second
command, again the state of the memory is changed and now both 6 and 8 are stored in
memory. The third command changes the memory state by adding the values of a and b
and storing the result in sum. Although the last command (output sum) does not look like it
is changing the memory state, it is considered a change because the value of sum is output.
The way we have written the code in Figure 1.11 is very inefficient for two reasons.
First, it contains some commands that can be repeated in the same program or other pro-
grams. Second, if the set of data to be handled is large, we need to handle them one by one.
To remove these two inefficiencies, the procedural paradigm allows packaging commands
and data items.

Computer language
paradigms

Object-
Procedural Functional Logic
oriented

FORTRAN Smalltalk LISP Prolog


COBOL C++ Scheme
BASIC Visual Basic
Ada C#
Pascal Java
C
C++

Figure 1.10 Language paradigms


8 Chapter 1  Introduction to Computers and Programming Languages

a
b
sum
a 6 6
input a b
sum
input b
a 6
sum = a + b 8
b 8
output sum sum
a 6
Program b 8
sum 14
a 6
b 8 14
14
sum 14
States

Figure 1.11 An example of a procedural paradigm

a. If we are writing code for different programs, we can package the code and create
what is called a procedure (or function). A procedure can be written once and then
copied in different programs. The standard procedures can be stored in the language
library and be used instead of rewritten.
b. If we are handling a large set of data items (for example, hundred or thousands of
numbers), we need to store them in a package (called different names such as array
or record) and input them all together, process them all together, and output them
all at the same time. The operation at the background is still done one data item at a
time, but the program can see the data items as packages.
The following shows how a procedural paradigm uses three lines of code to sort a list of
numbers of any size. Of course, we must have already written the procedures and already
packaged data items into a list.

input (list);
sort (list);
output (list);

1.3.2 Object-Oriented Paradigm


In the procedural paradigm, the often-used procedures can be created and saved. We then
apply a subset of these procedures to the corresponding data packages to solve our particular
problem. One thing that is obvious in this paradigm is that there is no explicit relationship
between the set of procedures and the set of data packages. When we want to solve a prob-
lem, we need to choose our data package and then go and find the appropriate procedure(s)
to be applied to it.
The object-oriented paradigm goes further and defines that the set of procedures that
can be applied to a particular type of data package needs to be packaged with the data. The
whole is referred to as an object. In other words, an object is a package containing all pos-
sible operations that can be applied to a particular type of data structure.
This is the same concept we find in some physical objects in our daily life. For exam-
ple, let us think about a dish-washing machine as an object. The minimum operations we ex-
pect from a dishwasher are washing, rinsing, and drying. All of these operations are included
1.3  Language Paradigms 9

Objects

13 17 8 10 list1
sort ( )
reverse ( )
11 17 38 14 list2
search (...)

print (...)
Shared 12 10 91 20 listn
Procedures

Figure 1.12 An example of an object-oriented paradigm

in any typical dish-washing machine. However, each time we load the machine with a dif-
ferent set of dishes (same as a different set of data). We need to be careful, however, not to
load the machine with a load it is not designed for (not to wash clothes, for example, in the
dish-washing machine).
In the real world, all the hardware necessary for an operation is included in an object;
in the object-oriented programming world, each object holds only data, but the code that
defines the procedures is shared. Figure 1.12 shows the relationship between the procedures
and data in the object-oriented paradigm.

1.3.3 Functional Paradigm


In the functional paradigm, a program is a mathematical function. In this context, a func-
tion is a black box that maps a list of inputs to a list of outputs. For example, adding num-
bers can be considered as a function in which the input is a list of numbers to be added and
the output is a list with only one item, the sum. In other words, the functional paradigm is
concerned with the result of a mathematical function. In this paradigm, we are not using
commands and we are not following the memory state. The idea is that we have some primi-
tive functions, such as add, subtract, multiply, divide. We also have some primitive func-
tions that create a list or extract the first element or the rest of the elements from a list. We
can write a program or a new function by combining these primitive functions. Figure 1.13
shows how we add two numbers using the functional paradigm. The code is symbolic, but
each language in this paradigm has its own definition for a function. Note also that in our
code, we distinguish between a number and a list. We have a number as 8, but a list with one

list (6, 8)

first () rest ()

sum (first (6, 8), first (rest (6, 8))) (8)


6 first ()
Code 8
sum ()
14

Visualization

Figure 1.13 An example of a functional paradigm


10 Chapter 1  Introduction to Computers and Programming Languages

Parent (Fay, Tara)


Parent (Tara, Willie) 1. Parent (Willie, Tara)? No
Parent (Tara, Benji) 2. Parent (Fay, Benji)? No
Facts 3. Parent (Tara, Benji)? Yes
4. Grandparent (Tara,Willi)? No
Grandparent (X, Y) 5. Grandparent (Fay, Benji)? Yes
Parent (X, Z) AND Parent (Z, Y) 6. Grandparent (Fay, Willi)? Yes
Queries
Rule

Figure 1.14 An example of a logic paradigm

element is (8). The function first gets a number, but the function rest gets a list. To get
the second number in the list, we first use the function rest to get the list (8) and then use
the function first to get 8.

1.3.4 Logic Paradigm


The logic paradigm uses a set of facts and a set of rules to answer queries. It is based on
formal logic as defined by Greek mathematicians. We first give the program the facts and
rules before asking queries. Figure 1.14 shows a simplified and symbolic version of a logic
paradigm. A fact such as Parent (Fay, Tara) is read as “Fay is the parent of Tara.”

1.3.5 Paradigms in C++ Language


Our discussion of four paradigms might lead you to wonder where the C++ language stands.
C++ is an extension to the C language and is based on the procedural paradigm. However,
the existence of classes and objects allows the language to be used as an object-oriented lan-
guage. In this book we use C++ mostly as a procedural paradigm in early chapters (except
for input/output that are done using objects). However, we use the language as an object-
oriented paradigm after the introductory chapters.

1.4 PROGRAM DESIGN


Program design is a two-step process that requires understanding the problem and then de-
veloping a solution. When we are given the assignment to develop a program, we are given
a program requirements statement and the design of any program interfaces. In other words,
we are told what the program needs to do. Our job is to determine how to take the inputs we
are given and convert them to the outputs that have been specified. To understand how this
process works, let’s look at a simple problem.

Find the largest number in a list of numbers.

How do we go about doing this?

1.4.1 Understand the Problem


The first step in program design is to understand the problem. We begin by reading the
requirements statement carefully. When we fully understand it, we review our understand-
ing with the user. Often this involves asking questions to confirm our understanding. For
example, after reading our simple requirements statement, we should ask several clarifying
questions.
1.4  Program Design 11

What type of numbers are we dealing with (with fractions or without fractions)?
Are the numbers arranged in any special sequence, such as lowest to highest?
How many numbers can we expect?

If we don’t clarify the problem—that is, if we make assumptions about the input or
the output—we may supply the wrong answer. To answer our questions, we need to process
integers arranged in any sequence. There is no limit as to the number of integers.
As this example shows, even the simplest problem statements may require clarifica-
tion. Imagine how many questions must be asked for a program that contains hundreds or
thousands of detailed statements.

1.4.2 Develop the Solution


Once we fully understand the problem and have clarified any questions we may have, we
develop a solution in the form of an algorithm. An algorithm is a set of logical steps neces-
sary to solve a problem. Algorithms have two important characteristics: first, they are inde-
pendent of the computer system. This means that they can be used to implement a manual
system in an office as well as a program in a computer. Second, an algorithm accepts data as
input and processes the data into an output.
To write the algorithm for our problem, we use an intuitive approach, calling not only
on the problem statement but also our knowledge and experience. We start with a small set
of five numbers: Once we have developed a solution for five numbers, we extend it to any
number of integers.

13  7  19  29  23

We begin with a simple assumption: The algorithm processes the numbers one at a
time. We name the algorithm FindLargest. Every algorithm has a name to identify it.
FindLargest looks at each number in turn without knowing the values of the others. As it
processes each number, it compares it to the largest number known to that point and deter-
mines if the new number is larger. It then looks at the next number to see if it is larger, and
then the next number and the next number until all of the numbers have been processed.
Figure 1.15 shows the steps in determining the largest among five integers.
The algorithm requires that we keep track of two values, the current number and the
largest number found. We determine the largest number using the following steps.
∙∙ Step 1: We input the first number, 13. Since largest has no value, we set it to the
value of the first number.
∙∙ Step 2: We input the second number, 7. Since 7 is less than 13, the value of largest
does not need to be changed.
∙∙ Step 3: We input the third number 19. When we compare 19 to the value of largest, 13,
we see that 19 is larger. We therefore set largest to 19.
∙∙ Step 4: We input the fourth number, 29. When we compare 29 to the value of largest,
19, we see that 29 is larger. We set largest to 29.
∙∙ Step 5: We input the fifth number, 23. Because it is smaller than 29, largest does not
need to be changed. Because there is no more input, we are done and we have deter-
mined that the largest value is 29.
∙∙ Step 6: We output the value of largest, which is 29.
Discovering Diverse Content Through
Random Scribd Documents
Sinun altis Einar Henning."

Gunvor aikoi mennä ensin näyttämään äidille tätä kirjettä, mutta


jätti sen tuuman. Hänen äitinsä tulisi ehkä levottomaksi: neuvoisi
yhtäälle ja toisaalle… ei oikein, poloinen, tietäisi, mitä tehdä… Eikä
hänkään, Gunvor, ehkä oikein tiennyt. Mutta hän ei peljännyt.
Tulkoon, mitä tuli… Kunhan näkyisi vaan vähänkin hyvyyttä…
Lausuisivat sanan, joka ilmaisisi, että he pitivät hänestä — oi, hän
myöntelisi mielellään… Suostuisi kaikkiin mahdottomuuksiin, pieniin
typeryyksiin… ei haittaisi. Mutta kunhan eivät vain olisi ahtaita, kuten
ennen oli kokenut…

Mikä tietää, ehkä Einar vain oli ovela. Ehkäpä hän kirjoitti tämän
ankaran kirjeen vain tyydyttääkseen isäänsä ja äitiään. Mutta oli
kuitenkin heitä taivutellut…

Mutta… lopultakin: voisivatko he osoittaa pitävänsä hänestä… he,


jotka eivät pitäneet? He, jotka olivat soimanneet hänen isäänsäkin…

Hän nousi korkeita hotellin portaita, ja kolkutti oveen, jonka


portieri oli hänelle neuvonut. "Sisään", kuului kamarista. Hän avasi
oven ja astui keskolaiseen kamariin. Vouti istui nojatuolissa. Ikkunan
ääressä rouva ommellen. Einar tuli häntä vastaan ja mutisi, mitä lie
mutissut: "Iltaa, Gunvor, hyvä, että tulit, istu." Ja Einar toi tuolin,
Gunvor istuutui.

Vouti Henning oli koko ajan katsellut häntä ankarasti. Nyt hän
sanoi verkkaan ja painolla:

"Gunvor Kjeld! Tietääkseni haluaa tuleva miehesi lausua sinulle


pari sanaa minun kuulteni."
"Einarko aikoo sanoa?" vastasi Gunvor.

"Henning aikoo", oikaisi vouti. "Ehkäpä sinusta on yhtä


ihastuttavaa sanoa häntä Henningiksi. Sillä sen seikan saat heti
tietää: on välttämätöntä, että astut tähän kotiin niin alastomana kuin
äitisi kohdusta. Kaikki itsenäisyydet ja itsetietoisuudet ja muut sen
tapaiset jätät etehiseen, kun astut meidän Henningin sukuun."

Gunvor taisi hieman kalveta. Hänestä oli hyvin ilkeätä istua tässä
huoneessa. Mitä noilla oli hänelle asiaa? Olivatko ne hänen
vihamiehiään? Miksi ne puhuivat sellaista?

"Einar!" huudahti hän, "mitä tämä on? Sinäkin haluat puhua


kanssani, sanoo isäsi. No puhu sitten, Einar. Tätä minä en ymmärrä."

Gunvor kuuli hiljaista nurinaa ikkunan luota, jossa rouva Henning


istui. Ehkä Gunvor oli hänestä liian uskalias… kun ei edes huolinut
sanoa sulhastaan Henningiksi!

Einar huomautti samassa kuivasti ja ankarasti: "Asia on selvä,


Gunvor. Hän on pahastunut. Hän näkee, että sinä käyttäydyt
sopimattomasti häntä ja äitiä kohtaan. Sinä et koeta miellyttää heitä.
Hänestä on sitäpaitsi käytöksesi hiukan liian vapaata. Hän kaipaa
myös oikeaa sävyä puhutellessasi häntä… ja ehkä kaipaa silloinkin,
kun puhuttelet minua."

Gunvor vastasi:

"Hyvänen aika, mitä arvella siitä, mitä puhut, Einar. Mitä minun on
sinun isäsi mielestä tehtävä? Sinä aikana, kun kävin viimeksi täällä,
ei yhtään lämmintä sanaa minulle. Minä en siedä sitä tapaa. Sinä
tarkoitat, että pitäisi noin vain olla nöyrä ja rakastettava. Minä en ole
muokattu siten kunnioittamaan."

Einar Henning vastasi rauhallisesti:

"On tosiaan parasta käyttää toista kieltä, Gunvor. Ei asia käy


mukavammaksi tuolla tavalla puhuen."

Vouti pystyttihe tuolillaan. Hän oli punainen vihasta. Hän huusi


kovalla äänellä ja ankarasti:

"Minä olen jo kerran sanonut, että kun sinä meidän sukuumme


tulet, niin sinun täytyy tulla niin alastonna kuin äitisi kohdusta! Mihin
sinä olet tottunut ja harjaantunut — ne saat unohtaa, tiedätkö sen?
Siitä, mitä sinun kodissasi pidetään kai hyvänä traditsioonina, siitä ei
me välitetä yhtään. Minä puhuin äitisi kanssa ja näin hiukan,
millainen katsomus sillä taholla vallitsee. Minä vaadin muun muassa,
että isävainajasi vapaa-ajattelu ja aatteet ja muut sellaiset elkööt
tohtiko astua Henningin kodin kynnyksen yli."

Gunvor huudahti — äänessään kuin avunhuuto:

"Minua solvataan, Einar! Hän on minulle paha. Mennään, Einar!


Tule kanssani! Minä en voi olla näiden seurassa!"

Gunvor kuuli rouva Henningin hiljaa käheästi naurahtavan: "Noo,


sanoppas muuta!"

Einar vastasi aivan rauhallisesti:

"Minusta sinä olet liian hätäinen, Gunvor. Jos sen tahdot tietää,
minä olen tässä asiassa samaa mieltä kuin isäni. Minäkään en pidä
noista vapaista ajattelemisista!"
Gunvor katsoi Einariin. Oliko Einar ihan tosissaan? Gunvorhan oli
kertonut hänelle kaikki isästään… siitä lähtien… Ah, Einar oli vain
muka tarkoittavinaan.

"Toinen asia on", jatkoi Einar, "se että sinä pidät isästäsi ja muistat
häntä isänäsi. Sehän on kylläkin kaunista… Mutta hänen
ajatuksensa, mitä? niitä ei sinun sovi niin kiivaasti puolustaa."

Gunvor istui yhä paikallaan ja katseli Einaria. Hänen korvissaan


vihelsi. Nuo sanat, joita hän ei voinut ymmärtää, lausui Einar…
Sanat, jotka yhtäkkiä kuitenkin tuntuivat niin hänen luonteensa
mukaisilta.

"Isäni!" huusi hän, hänen äänessään oli outo, riemuitseva sointu,


"hän oli suuri ihminen… minun ei kannata närkästyä… jos sellainen
mies, jota sanot isäksesi… jos hän koettaa tahrata häntä… Haha!
hän ei kykene! Oh, koettakoon vaan!"

Sitten hän keskeytti ja puhkesi yhtäkkiä itkuun: "Oi, Einar! Se on


sittenkin mahdotonta… se sinun ja minun. Minä luulin kyllä. Me
olemme erehtyneet, Einar…"

Gunvor istui kuin lamautuneena, sitten hän katseli ympärilleen,


nousi ylös ja meni suorana ovelle, tuolin luo, jossa hänen
päällysvaatteensa olivat. Hän sai hatun käteensä… niin, se oli
hänen… muisti vaippansa. Ei pannut sitä ylleen, vaan heitti
käsivarrelleen. Hän meni horjuen ulos, laskeusi monet portaat, näki
ulko-oven. Huomasi, että portieri katseli häntä.

Hän sai selvitellä, ennenkuin käsitti, minne oli menossa. Mutta


sitten hän asteli reippaasti.
Melkein seuraavassa kulmassa tavoitti hänet Einar Henning, joka
tuli jäljestä. "Sitäkö tarkoitat?" huusi hän, "aiotko tosiaan mennä?"
Ja hän otti Gunvoria käsipuolesta. "Elä koske minuun!" "Elä toki
sellaista", jatkoi Einar, "isä käski minun juoksemaan perästä. Että
tulet pyytämään anteeksi. Sinä et mene tällä tavalla, sen sanon
sinulle, Gunvor!"

Gunvor tunsi yhtäkkiä sydämessään heräävän vihan miestä


vastaan, joka puhui tuolla lailla.

"Elä koske minuun!" huusi hän hurjasti, "mene tiehesi!…" Einar


töllisteli. "Hyvä ihminen!" jatkoi Gunvor, "totta kai ymmärrät, että
välimme ovat selvät! Etkö sitä nähnyt."

"Hst, elä nyt huuda! Ihmiset kaikki kuulevat!" lausui Einar aivan
kiihkeästi ja tuijotti levottomana pariin kulkijaan, jotka olivat
pysähtyneet kadun toiselle puolelle.

"En, en, elä vain koske minuun!" vastasi Gunvor hiljaa ja poistui…

Hän kulki kauan hiljaa. Sitten hän alkoi vaikerrella, kuiskaten kuin
hirveässä tuskassa.

"Sellainen siis Einar oli. Siitä nyt näin hänet kokonaan. Sellainen
mies. Sellainen siis oli mies."
KOLMAS KIRJA
I.

Gunvor kertoi äidilleen kaikki. Rouva Kjeld istui kauan kuunnellen.


Mikään ei voinut arvata, mitä hän tunsi. Hänen silmänsä olivat hellät.
Koko ajan hän nyökkäili kärsivällisesti päätänsä.

Mutta kun Gunvor kertoi hänelle, mihin se asia päättyi; kun hän
kuuli, miten yksimielisesti nuo kaksi miestä olivat syyttäneet Kjeldiä,
ja kun hän näki Gunvorin syvän surun, silloin hän näytti ikäänkuin
heräävän. Hellät silmät tulivat luja-ilmeisiksi, silmäterät laajenivat,
pää kohosi. Hän tuli aivan toisellaiseksi kuin oli yksin istuessaan ja
levätessään. Ikäänkuin taistelu kutsui häntä jälleen. Hän hytkähti
tuolissaan, mutta vavahti kuten ihminen, jonka elinkohtaan isketään,
vaan jolla kuitenkin on voimaa kostaa.

Ja ehkä muistellen entistä rauhaansa, jolloin hän halusi vain lepoa,


hän mutisi:

"Miten heikko minä olen ollut viime aikoina. Niin taipuisa ja untelo.
Nyt minä palaan jälleen Kjeldin luo. Gunvor… Minä palaan Kjeldin
luo."

Kjeldin hahmo kohosi verkalleen ja asettui noiden kahden naisen


läheisyyteen. Sen voi huomata heidän kasvoistansa, joissa oli jonkin
kalliin muiston piirteitä, sen voi havaita heidän silmiensä raskaasta
loisteesta, levosta, joka heistä oli suuttumuksesta huolimatta. Nyt
hän palasi valtavana kuin ennenkin. Hänen henkensä suhisi
huoneessa, jossa he olivat. Koko hänen intonsa, hänen sielunsa tuli,
uhrialttarin liekintä, kaikki, mikä hänestä oli oikeaa ja mistä hän ei
koskaan tinkinyt. Oikeaa, — jonka oikeuden perustana eivät olleet
opitut käsitteet, vaan hänen sielunsa ääni… Kaiken sen hän toi
tullessaan. Ja häntä seurasivat myös meren ja erämaan kohina.
Vuoret kohosivat autioina, illan hiljaisuus tähtiensä alla. Mutta joskus
oli aurinko keskellä taivasta hänen päänsä päällä, ja hän kulki
vuorella, ja villejä kukkia kasvoi kallionkoloista, ja kaukaisten kellojen
läpätessä tuli väkeä hänen luokseen puhelemaan hänen kanssaan.

Tahi kaupunki. Siellä oli ihmisiä, joiden elämä oli vaikeaa. Heidän
ilonsa olivat olleet suurin osin huokausta. Ehkä he tiesivät suuret
syntinsä. He eivät halunneet pappeja. Pappi olisi vaatinut heiltä
ainoastaan katumusta ja uskoa seikkoihin, joita juuri pappi itse
uskoi. Ja lisäksi hän olisi puhunut helvetistä.

Kjeld oli ymmärtänyt heidät: "Teidän tuskanne on ollut niin suuri,


että kaikki teille annetaan anteeksi. Iloitkaa, sillä te olette tulleet
lapsen-sieluiksi! Ja teidän tuskallisessa katseessanne minä näen
loistavat lapsen-silmät, jotka rukoilevat ja kaipaavat. Iloitkaa te
surusta. Siitä syntyi teidän kaipuunne, joka jälleen saattoi teidät
aavistamaan ylösnousemusta. Ihmissielu on kuin timantti. Se täytyy
vain hioa tomussansa."

Kaikki se tuli nyt. Gunvor, joka suoriaisi elosta ilolla ja leikillä, jos
hän vain myöntyisi ja tinkisi siinä ja siinä kohden… hänen täytyi kuin
täytyikin käydä rintamaan. Hän oli Johannes Kjeldin tytär. Hän näki
sen selvästi. Hänen kirkkaimmassakin ilossaan olivat kaukaiset äänet
häntä usein kutsuneet ja hän oli kuunnellut. Nyt ne kutsuivat häntä
kovemmin, ja hän kuunteli jälleen niiden sanoja. Hän ei itkenyt ilon
kaipuusta… Tora… Tora, jota hän oli rakastanut, oli taipunut itkun ja
surun kuorman alla. Mutta hän oli ollut alusta alkaen päivänpaisteen
lapsi. Mutta Gunvor oli jo pienenä rakastanut isäänsä, tuota suurta,
yksinäistä, ja monta kertaa olivat jo pahuus ja halveksinta
itkettäneet häntä.

Mutta kaikki se raskas kauna, joka oli nostanut vedet pikku


Gunvorin silmiin, kun häntä pienenä loukattiin ja kun hän sai kuulla
häijyjä nimityksiä, se heräsi hänessä nyt, mutta taipumatonna ja
katkerana. Hän kohotti päätänsä ja tuimistautui heitä vastaan, jotka
jälleen huusivat hänelle: "Vapaa-ajattelijan likka…" Heidän välillänsä
oli nyt auttamaton juopa: eräitä ihmisiä loukataan, ja he voivat antaa
anteeksi, mutta toisiin sattuu juuri paikkaan, jossa haavat ei koskaan
parane.

Gunvor oli rakastanut häntä. Hän oli rakastanut häntä siinä


maailmassa, johon oli päässyt sisään. Hän oli rakastanut häntä
nuorin aistimin ja iloisin silmin. Mutta ne hetket elivät niin vähän
aikaa hänessä. Ne eivät vallinneet häntä. Niiden tuokioiden takana
oli niin monta hetkeä, jotka hän ennen oli elänyt. Hetkiä, joissa
tykyttivät elämän moninaiset suonet, joissa oli salaperäisyyksiä.

Kannettu kaipuu oli tosin ollut monta kertaa kovaa. Mutta kukaan
ei saanut sitä hänessä huomata. Siksi eli hän pitkät ajat yksin.
Leikatkoon veitsi, tippukoon veri, ja menkööt haavat umpeen. Hän
jutteli ainoastaan äitinsä kanssa. Hän käveli joka päivä, mutta ei
kaupunkiin päin. Hän kulki toisella taholla kuin muut. Kaupungista
ojentausi yksinäinen katu kauas, kuin metsään ja erämaahan
osoittaen. Se päättyi jyrkkään polkuun, joka nousi vuorelle. Sitä
polkua hän käveli. Siellä ei kulkenut ketään tuttuja. Hän kiersi siellä
joka päivä. Sohjussa, sateessa, pyryssä. Jotain vanhaa murtui, ja
uutta rakennettiin. Hän aivan laihtui noina aikoina, hänen silmänsä
tulivat tarkkaaviksi, hänestä hälveni pehmeys. Hänen kasvonsa
muuttuivat puhdaspiirteisiksi ja kylmiksi…

Kevät tuli. Uusi kesä pilkistihe. Miten outoa ajatella: vain vuosi
sitten oli se suuri kesä, jolloin Tora ja hän olivat olleet yksissä,
saman tunteen täyttäminä. Jolloin aurinko kultasi pitkät tiet, jolloin
kukat aukoivat umpujaan joka tarhassa, jolloin he kumpikin
rakastivat löytämäänsä… Oi, mitenkä he molemmat olivat olleet
älyttömiä ja iloisia, valmiita tuhlaamaan kaiken, mitä he olivat
koonneet. Niinkuin naiset voivat tuhlata. Kaiken elämän, mitä heillä
oli ja minkä he tahtoivat antaa hänelle.

Hän istuskeli siellä vuorella useita kevätpäiviä ja katseli kaupunkiin


ja ajatteli.

Tämä talvi, joka nyt oli vierinyt: usvaa, joka olisi tukehuttanut
hänet, jos se olisi palannut! Kaksi kirjettä Toralta, joka kertoi
elämästänsä siellä etelässä, työstään ja edistymisestään, — ja vain
yksi kirje Gunvorilta Toralle. Torallekaan hän ei voinut uskoa täysin…
niin, kyllä kaiken muun, mutta ei tätä… vaikka Tora silloin oli
kertonut hänelle… oh, he olivat niin erilaisia, ehkäpä hän juuri
sentähden rakasti Toraa…

Ja Janna, joka oli ensin käynyt hänen luonaan. Silloin oli se paha
hyvin vaikeaa. Kun hän ei vielä voinut sietää ketään.

Viime kerralla Janna sen ymmärsi. Hän nousi pian paikaltansa ja


poistui. Mutta mennessään hän sanoi: "Tule käymään luonani,
Gunvor, jos milloin haluat pakista vanhan toverin kanssa." "Kiitos,
Janna, haluanhan minä…"

Ja nekin hän muisti: nuo Einar Henningin kirjeet! Nyt tahtoi Einar
selittää koko asian! Hänellä oli ensin ollut pahin puuha
käännyttääkseen rakasta isäänsä. Ja hän oli samalla aikaa tahtonut
säästää Gunvoria, siksi ei hän koskaan maininnut sanaakaan hänelle.
Jos Gunvor siis olisi ollut hieman viisas ja ovela, jos hän olisi antanut
rakkaan isän huomata, että hän oli hiljainen, kiltti nainen, niin olisi
kaikki käynyt hyvin… Einarilla oli kai oikeus pyytää selitystä, miksi
hän oli niin käyttäytynyt…

Melkein koko kirje sentapaista… — Mutta nyt tuli kevät ja kesä.


Hän ei voinut olla joutilaana enää. Hänen täytyi yrittää jotakin.

Kerran hän meni Jannan luo. "Kuules, Janna. Muistatkos, viime


kerrallahan sinä sanoit, että tulisin luoksesi. Ja nyt minä tulen… ja
minä käyn heti asiaan, sen sanon. Minä aion samaa kuin sinäkin,
Janna. Sinun pitää auttaa minua mikäli voit. Minä haluan opettajaksi.
Mieluimmin pikkulasten, ymmärrätkös."

Janna nauroi ja näytti kauneimpansa: valkeat, terävät hampaansa.

"No tulitkos viimein, sinä suuri, murheellinen hassu! Herra Jumala,


miten minä olen hyvilläni, kun sinä sittenkin tulit."

Ja häpeilemättä tulivat kyynelet hänen iloisiin silmiinsä. Ja hän


nauroi jälleen ja sanoi:

"Mitä turkasta annat tästä. Kyllä minä ryhdyn toimeen… No,


mennään nyt yhdessä ulos. Voimme juoda kahvia eräässä pienessä,
hupaisessa kahvilassa, jonka minä kerran löysin. Minä toikkaan
oikein leivosten kanssa."

Ja matkalla hän haukkui:

"No kyllä sinä olet jaksanut sitä surua surra. Herra Jumala, sinä ja
Tora! niinpä tuottaa kauneus melkein pahempaa surua… — Niin, ole
varma siitä, kyllä minä järjestän asiasi… Ala vain heti kohta. Lue
kesällä jo. Niin että ehkä voit syksyllä suorittaa tutkinnon. Niin, ensi
syksynä, ymmärrätkös."

Iltasella sanoi Gunvor äidilleen, istahtaen hänen viereensä:

"Nyt se on päätetty, äiti. Minä rupean opettajaksi. Minulla on sillä


alalla tekemistä, uskoakseni. Ja minähän olen sitäpaitsi kohta
vanhapiika. Minun täytyy yrittää jotakin."

"Niin, rakas Gunvor, siinä olet oikeassa. Yritä vain jotakin.


Opettajaksi?… Niin, sinä tahdot sitä, sinä tahdot, etkä sinä hellitä,
joten sinä kyllä siinä pysynet. Mutta hyvähän se on niinkin. Minä
luulen melkein, että taistelevaa elämää se taivaan Herra meiltä
tahtookin."
II.

Janna laati hänelle luettelon kirjoista, jotka hänen oli hankittava, ja


näytti hänelle, mitä hänen pitää lukea. "Jos jaksat suoriutua tästä
kurssin alkuun", sanoi hän, "niin pidän minä huolen siitä, että pääset
ylimmälle luokalle ja valmistut kaikkiaan vuodessa."

Gunvor istui lueskellen kirjojaan. Moni seikka intresseerasi häntä,


mutta moni tuntui hänestä hyödyttömältä; no, luettava niitä vain oli.
Ja hän ne luki.

Hän luki koko pitkän kesän. Aamusta iltaan. Joskus hän kohotti
päätänsä ja katsoi yli matalan katon, joka oli vastapäätä. Hän näki
sen takana vielä toisenkin katon, ja lepuutti sitten silmiään pienessä
metsikössä, joka oli täydessä lehdessä, tuuheaa kesän mehuista.

Hän oli sitkeä ja voitti nuo vastahakoiset sivut, jotka olivat sullotut
täyteen tietoja, joita hän ei juuri kaivannut, mutta jotka hän tahtoi
saada.

Huone, jossa Toran ääni vuosi sitten kaikui hänen Jutellessaan ja


laulaessaan, vaikeni nyt. Ja Tora itse oli poissa, ahersi omalla
tahollansa. Maailman vallitsija oli tullut hänen läheisyyteensä:
kieltäymys. Mutta se vahva kieltäytymys, joka antaa tahdon pohtia
uutta elämää, uutta taistelua onnen vuoksi.

Sillä niin oli asia pohjaltansa: hän ei tahtonut elää niukalla


surrogaatilla, hän tahtoi vallata uusia maita. Hän tahtoi saada
elämänsä täällä kukoistamaan kuten entisenkin.

Kaiken suuren olivat tehneet ne, jotka olivat kokeneet kaipuun


kuoleman-tuskat. Jos ihminen jaksoi niistä pois ponnistautua, kohosi
hän entistä korkeammalle. Hänet vihittiin rikkaampaan elämään.

"Ja puritaanit lähtivät kotimaastansa uskonsa vuoksi, jota heidän


ei sallittu tunnustaa. Ja he matkasivat meren yli kaukaiseen länteen,
ja nousivat karulle kalliorannalle, loitos muista ihmisistä. Ja laulaen
virsiä ja lauluja, kaivaten suuresti kotimaatansa, he kuitenkin
uutterasti kyntivät tuota hedelmätöntä maata, minkä he olivat
itselleen valinneet, ja viljelivät sen kukoistavaksi. Ja heidän luja
tahtonsa liikkuu yhä noilla seuduilla: juuri siellä kuohuu nyt uuden
maanosan korkein elämä."

Niinpä niin, haaveita… Kun Gunvor oli väsynyt ja heittäysi


nojalleen, tunkeutuivat ne kuitenkin luo. Väkevät unelmat jostakin,
joka hänellekin kerran kukkisi.

Jokin uusi kukkisi! Tämän lukutyön jälkeen, joka puolittain häntä


rasitti, se kukkisi. Hän kaipasi päästä puhelemaan pienokaisten
kanssa. Kaipa rakkaudenvaisto hänessä valvoi ja vaati sitä. Vai oliko
se jälleen hänen isänsä, joka tässä nousi esiin ja puhui hänelle: ole
niille hyvä. Hän kaipasi nähdä monet pikku kasvot ja monellaisia
silmiä: arkoja, vekkulimaisia, surullisia, iloisia, hämillään olevia,
unisia, ovelia… Hän tahtoi seurata kaikkia ja muistaa jokaista
yksityistä. Hän tahtoi painaa mieleensä heidän nimensä, ja hän
katsoisi heihin niin, että he tietäisivät hänet ystäväkseen. Ja hän
aikoi kutsua heitä kotiinsa, ensin kaksin, sitten kolmin, ja jutella
heidän kanssaan. Ja ne tulla tepsuttaisivat pikku jaloin, ja olivatko he
siroja tai kömpelöjä, niin hän taputtaa heidän päätänsä, kun he
ottavat kuluneet hatut päästään. Ja he kertoisivat hänelle kaikki, ja
he ajattelisivat lähtiessään, että hänen luonaan pitää käydä vielä
toisen kerran. Ja hänelle saattoi uskoa, olipa asia mikä tahansa.

Jos joku niistä olisi paha… tosiaan paha… Niin, silloin sitä
koetettaisiin! Jos hän kuuntelisi tarkkaan, jos hän seuraisi kahta
hartaammin, — eiköhän hän pääsisi hänestä selville? Juuri siinä oli
kuunneltavaa. Juuri siinä voi lasku tulla pulmalliseksi, ja vaikeaksi
ratkaista. Juuri nuo köyhäin kotien kalpeat pienokaiset kaipasivat
vapaata, armeliasta ihmistä…

— Hänelle tuli toisellainen vuosi. Koulunkäyntiä ja kotilukua.


Lähteä kotoa joka aamu varhain, olipa sää hyvä tai huono. Tunteja,
joina korjattiin latoon, toisia, jotka luistivat tylsinä ohi. Opettajia,
joista hän piti, muutamia, jotka hänestä olivat oikein pahoja.

Pitkä vuosi, jolloin oli paljon ponnistusta, ja huvituksia ei yhtään.


Monta yksitoikkoista päivää, joina elämä soljui hänen luotansa pois,
hänen istuessaan väsyneenä ja katsellen tuijottaen sen
loittonemista. Mutta monta rauhallisen ilon päivää, kun vaali läheni.
Ja yksi ilta kuin suuri välitunti. Lauantai-illat Jannan luona.

Hän tutustui moneen hupaiseen ihmiseen niinä lauantaina Jannan


asunnossa. Jannan isosta huoneesta oli vuorten varrella tullut oikea
"salonki." Sinne tuli yksi idästä, toinen lännestä, ja siellä pakistiin ja
keskusteltiin, ja siellä syötiin ja juotiin — niinpä niinkin, Jannan
kunnianasia oli olla hyvä emäntä. Jok'ainoa lauantai-ilta tuotiin sinne
jotakin herkkua ja monenlaisia leikkeleitä, ja Janna leikkasi leipää ja
järjesti tarjottavat, ja viimein tuli isot vadit voileipiä ja teetä. Ja
juhlatilaisuuksissa olutta ja naukut. Aina kelpo kestitys. Niin, sitä
oltiinkin Janna Vikin luona.

Jannan luona kävi paljon merkillisiä olentoja. Nuoria naisia ja


miehiä, joiden elämä monestikin oli hyvin pulmallista. Reippaita
tyttöjä, samanluontoisia kuin Janna, jotka ponnistivat kehittyäkseen
joksikin "orjaa itseänsä". Mutta välistä köyhäin kotien tyttöjä, jotka
iloisesti nauroivat ja toivoivat pääsevänsä maaliin ja kuulumaan
elämään, ja joilla oli korkeat käsitykset suurista miehistä ja aatteista.

Tuli ylioppilaita, jotka mieluummin kävivät Jannan luona kuin


osakunnassa; joku nuori tiedemies, joku taiteilija, kaikki olentoja,
joista ihmiset sanoivat: "Katso, tuossa menee se!"

Juteltiin hartaasti kaikesta Jannan luona. Jos liikkui sodan huhuja


— puhuttiin siitä. Kun ilmestyi sytyttävä kirja — se oli tavallisesti
Jannan pöydällä ja siitä keskusteltiin; kuten muissa seuroissa
soitettiin pianoa, niin luettiin täällä usein ääneen kirjoja. Runoa, joka
oli purkautunut sielusta, minkä sukua kaikki tunsivat olevansa. Joku
loimuava luku. Tai joku juttu, joka purkausi väkivaltaisena ja vietti-
kuumana, niin että moni painoi päänsä kumaraan. Näytettiin, kun
sattui, jotakin uutta aikakausikirjaa, joka piti kovaa meteliä
ihkauudesta maailman osasta, minkä asujat luulivat löytäneensä
jonkin ainoan välttämättömän, — lehteä, jota toimitti joku
huimahattu, rynnäten ja huutaen ja vannoen, että nyt hän tulee!
Toistakin vihkoa ehkä, jossa yli-hienostuksen ja hekumallisen
heikkouden himmeä kaiku. Mutta silloin murisi moni Jannan karhu:
tuo ei ole kerrassaan mitään!

Joitakuita Jannan vieraita: Martin Sirdal, Erik Midtgaard, kumpikin


talonpoikais-ylioppilaita, jotka saivat joskus otella henkensä edestä
toimeentulostaan. Keskenään ystäviä ja torin "Kellarin"
pöytätovereita, jossa he aterioitsivat nälkä-päivällisen, kumpikin yhtä
raivoissaan kaikille "kaupungin ilveille." — — —

Harald Brandt, terävä, kunnon vintiö, konttoripäällikkö, vanhahko,


— kaivaten aina nuoruuden päiviänsä, jolloin hän näki nälkää höylää
lykkien ja uskoen tuleviin parempiin päiviin. Aina hävyttömimpäin
ylioppilaiden ystävä, jotka yksinäisinä ja köyhinä olivat tulleet
alkuperäisistä maa-oloista.

Jan Grögaard, kemisti, ihaili suuresti tieteen voittoja joka alalla.


Uskoi syvästi ja pyhästi, että ainoastaan se voi pelastaa ihmiskunnan
rauhattomuudesta ja sodasta ja taudeista ja kaikesta kurjuudesta.
Hän oli yleensä melkoisen harvapuheinen, mutta kun jokin asia sattui
häneen, niin hän kiihoittui ja oli usein voimakas ja erikoinen. Häntä
kuunneltiin tarkkaavasti.

Hän oli aina touhussa. Opettajana, esitelmöijänä, sanomalehti-


kirjailijana. Hän oli melkoisen pitkä ja vaaleaverikkö. Hän oli väkevä
ja jäntevä. Posket vain olivat ehkä hieman kuopallansa, mutta tuo
laihuus teki hänen silmiensä loiston sitä syvemmäksi ja
kirkkaammaksi.
III.

Tuli se suuri päivä. Gunvor oli saanut tutkintotodistuksensa. Hän söi


päivällistä äitinsä kanssa, ja hänen oli hyvä olla. Hän oli itse iloissaan
ja tiesi, että äiti iloitsi. Ja hän ajatteli iloiten kekkereitä, joihin Janna
oli hänet kutsunut. Janna piti näet vartavasten hänelle kekkerit
kotonaan.

Hän, Gunvor, tuli sinne kauneimmassa puvussaan, ja kaikki ystävät


tulivat. Janna sanoi heidät tervetulleiksi, ja kohta senjälkeen tuotiin
sinne pulska illallinen. Janna ei tyhjänpäiten opettanut kolmessa
paikassa. Hän saattoi kyllä juhlatilassa tuotattaa kaksi ruokalajia
hotellista: kalamuhennosta ja kotletteja; ja hänen kannatti toikata
puna-viiniäkin, tai, jos joku herroista piti parempana, olutta.

Niin, he aterioivat ja joivat, ja Janna piti puheita Gunvorille. Hän


tunsi Gunvorin, ja hän tohti tunnustaa hänelle, että he kaikki pitivät
hänestä. Jospa hän viihtyisi heidän parissaan!

Mutta kohta kun Janna oli puhunut, nousi Jan Grögaard, ja kaikki
huomasivat, että nyt hänellä oli jotakin sanottavaa.

"Sanotaan kyllä usein naisista", alkoi hän, "jotka eroittautuvat


toisista, jotka odottavat naimisiin pääsyä, ei rakkautta, vaan sopivata
miestä… sanotaan kyllä usein niistä, jotka eivät seiso näiden rivissä,
että he eivät ole naisellisia eivätkä tavallisesti juuri kauniita!

"Eikö hame sovi? Ei, katsokaas vaan mokomaa! Ja vaippa riippuu


liian pitkällä etupuolta! ja tukka — se on sitaistu vain hutiloiden
solmuun.

"Ja hienot herrat, joiden ihanteena on saada viattomia tyttöjä


vaimoiksensa, ja paitsi tuota kaunista tyttölasta myöskin lihavat
illalliset, he puhuvat nenäänsä nyrpistellen noista 'emansipoiduista'
ja kiittävät omaa kelpo vaimoansa, joka ei ole koskaan kapinoinut, ja
myös noita suloisia, ennakkoluulottomia naisia, jotka väliajoilla
sulostuttavat heidän elämäänsä.

"Ja ehkäpä joku ylen uljas lyyrikko, jolla on reikäiset aivot,


kirjoittaa runoja naisesta, jota hän yksin voi rakastaa, kavalasta
naisesta, miehille suloisesta.

"Mutta se ei pysähdy! se edistyy sittenkin, naisten kulku.

"Ja katso: naiset taipuvat niitten puoleen, joissa elämä palaa


korkeana. Jotka kyllä voisivat saada miehen, niin kyllä! Mutta
ennenkaikkea kaipaavat turmeltumatonta ihmisarvoa ja
kukistamatonta sielua.

"Ensimäinen taistelevain naisten joukko on nyt vaipumallaan


maahan, kuolemaan saakka väsyneenä, ja kulunein asuin ja
painunein povin, sen ankaran elämän kuiviin pusertamina, jonka
syynä ovat kovuus ja tyhmyys.

"Mutta totisesti sanon minä teille! näiden suurten, kuolemaan


saakka väsyneiden takana seisoo nuorempia suorissa riveissä,
säteilevin silmin. Haluten suudella väsyneiden sisarien käsiä, ja
valmiina jatkamaan! Meillä on täällä joukossamme ollut jonkin aikaa
nuori nainen, luja ja ystävällinen, kaikella hyvällä varustettu, mitä
nainen saattaa toivoa. Niin selvä, hehkuva, niin horjumaton. Ei
hempeilyä, ei imeltelyä miesten edessä. Ihminen, nuori ja ylpeä!
Gunvor Kjeldin malja!"

Hänen kanssaan kilistettiin. Kaikkien silmistä loisti ilo, ikäänkuin he


olisivat sydämestänsä sallineet hänelle sen, mitä äsken sanottiin…

Gunvor tuli niin iloiseksi hänen sanoistansa. Ne ojensivat hänelle


jotakin kaunista, jotakin ihanampaa kuin kukkaset. Ja kaikki
toivottivat hänelle onnea: hänen päätänsä aivan huimasi ottaessaan
siinä tällaista hyvyyttä vastaan.

Täytyihän hänen mennä kiittämään Grögaardia. Hän sanoi: "Te


puhuitte niin kauniisti. Ihanko minä nyt sen teidän mielestänne
ansaitsin?" Silloin hymyili Grögaard ja katsoi häntä ja sanoi niin
lämpöisellä äänellä: "Kyllä, neiti Kjeld… vaikken minä tunne Teitä
kovin, niin uskallan sanoa, että Te sen ansaitsette. Minä ikäänkuin
tunnen sen luissani, että Te ansaitsette sen sata-kertaisesti."

Illasta tuli oikea juhla, ja se päättyi siihen, että he kaikki saattoivat


Gunvoria kotiin.

Hän valvoi sinä yönä ja ajatteli uutta työtä, joka hänellä nyt oli
edessä. Hän ryhtyi siihen niin rohkein mielin. Ja mikään ei kytkenyt
häntä, mikään vanha petos ei pidättänyt häntä. Hän tarkasteli
itseänsä hartaasti, ja kaikki viime vuosien tunteet olivat kuolleet ja
haipuneet! Hän ei niitä kaivannut, ei toivonut mitään takaisin!
IV.

Ainoa, jota hän ehkä kaipasi siltä ajalta, oli se pehmoinen, kalpea,
joka ilmestyi hänen sielunsa silmäin eteen, kun hän lausui Tora
Pharon nimen: tuo iloinen, aistillinen Tora, joka uhkui musiikkia ja
rakkautta… ja vielä se heikko ja surullinen Tora, hän, joka ikäänkuin
soljui hänen huoneestansa pois sinä viimeisenä iltana: "Hyvästi,
Gunvor!"

Hän taisteli tosiaan omalla tahollaan kuin kunnon tyttö ainakin.


Sen näki hänen kirjeistään. Hän edistyi hyvin. "Jospa nyt saisit
kuunnella minua, Gunvor", seisoi niissä usein.

Mitä merkitsivät siis ne huhut, joita Gunvor oli kuullut äskettäin,


että Toran elämä oli häikäilemätöntä, että hänen nimensä asetettiin
kahden miehen nimen yhteyteen, joista toinen oli hänen tähtensä
onneton… Oi, sitä tyttöä, jonka mielestä mikään ei ollut mistään
kotoisin ilman rakkautta! etsikö hän nyt sitä, josta hän saattoi pitää…
ja valitsiko ehkä hillittömästi? Gunvor ei tiennyt siitä mitään. Hän
tiesi vain, että Tora ponnisteli, käytti voimiansa ankarasti, ja että
hänen rohkeutensa kasvoi ja voitot suurenivat.
Niin eli hän itsekin. Huomenna hän aikoi kirjoittaa Toralle. Kuten
nainen kirjoittaa toiselle. Ja hän aikoi kertoa hänelle kaikki viime
aikain tapahtumat, ja Jannan pitämistä kekkereistä, ja hän tiesi, että
Tora siitä iloitsisi! Eikä yhtään kysymyksiä, ei uteliasta tutkistelua.
Vain huuto… kuten korkeudesta. Niin juuri. Ja Tora vastaisi samalla
tavalla. He tapaisivat toisensa korkeuksissa.
V.

Miten perinpohjaisen vapautunut hän oli kaikesta entisestä, sen hän


sai piakkoin huomata…

Monina kuukausina, jotka seurasivat hänen ja Einar Henningin


välien purkautumista, ja sinä vuonna, jona hän luki niin paljon, hän
oli tuskin ollenkaan käynyt kaupungissa. Siksi ei hän koko tuona
aikana ollut nähnyt Einar Henningiä kuin yhden ainoan kerran. Hän
käveli silloin erään herran kanssa, jota Gunvor ei tuntenut. Kun
Gunvor meni heidän ohitsensa, oli hän huomaavinaan, että herra
hymyili veitikkamaisesti, kuten sanoakseen: "Katsos, tuossa meni
se!"

Gunvor näytti juuri sinä päivänä hyvin väsyneeltä ja huonolta, sen


hän tunsi itse. Ehkäpä Einar korjasi tämän seikan omaksi
ansiokseen. Hän näytti hyvin rauhalliselta ja arvonsa tuntevalta siinä
kulkiessaan. Hän ei edes katsonut Gunvoriin.

Mutta eräänä päivänä kohta tutkinnon jäljestä hänellä oli asiaa


kaupungille. Hän läksi, ja hänestä oli hauskaa kävellä, kun ilma oli
niin kaunis. Yhtäkkiä hän kohtasi Einar Henningin. Einar näki hänet,
tuli tarkkaavaksi ja näytti aikovan tervehtiä… mutta Gunvor ei
katsonut häneen. Hän ei siis tervehtinyt, asema oli tosin hänestä
hieman pulmallinen. Hän ei ollut siinä aivan herrana.

Toisena päivänä nousi Gunvor linnanmäkeä. Joku tuli hänen


perästänsä. Hän kuuli mainittavan nimeään. Hän huomaa Einar
Henningin vieressään. Einar kääntyi hänen puoleensa ja tervehti.
Gunvor ei vastannut, mutta hänen kasvojensa ilme oli kysyvä: "Mitä
Teillä on asiaa?" Einar alkoi selittää. Eräs seikka oli vaivannut häntä.
Olivatko he tosiaan vihamiehiä? Eivätkö he voisi sopia, etteivät
kantaisi toisilleen kaunaa? Gunvor vastasi: "Minä en ymmärrä
yhtään, mitä Te sanotte. En minä kanna Teille kaunaa, jos se tieto
Teitä ilahduttaa. Kaikki välimme ovat loppuneet, siinä koko asia.
Sentähden en ymmärrä, mitä Te tahdotte, tahi miksi Te puhutte
minulle."

Einar ei vastannut, mutta hän katseli vain Gunvoria se pieni


kimalle silmissään, jonka piti muistuttaa Gunvorille sitä kertaa: sillä
tavallahan hän katseli Gunvoria, kun tahtoi kiehtoa hänet!

Gunvor ajatteli rauhallisesti: miten tuo itserakas luulottelu on


hänelle ominaista! Hän kai luuli, etten minä mitään toimittanut sinä
pitkänä aikana, kun karkoitin häntä sielustani. Nyt on hänen
turhamaisuuttansa kai loukattu: tohtisinko minä tosiansa olla
välinpitämätön häntä kohtaan, johon minä olen ollut niin rajattoman
rakastunut!

Einar alkoi jutella: hän oli varma siitä, että Gunvor muisti hänet!
Niin, Gunvor ei unhoittaisi häntä. Hän näki Gunvorin silmistä, että
hän yhä muisteli häntä.

Gunvor katsoi Einar Henningiin. Ei ymmärtänyt, oliko tuo mies


tosiansa tuottanut hänelle sellaista tuskaa. Hän tunsi päässeensä
vahvemmaksi. Einarin viimeiset sanat, että Gunvorin silmät muka
ilmaisivat jotakin, hymyilyttivät häntä. Niin, häntä nauratti, hän ei
muuta voinut…

Einar siirtyi heti tuttavallisempaan sävyyn:

No… se oli hyvä! Gunvor oli kaikkein parhaimman näköinen silloin


kun hän oli luonnollinen.

"Nyt Te voitte mennä", vastasi Gunvor seisattuen. "Minua jo


kyllästyttää."

Ei, Einar ei mennyt. Hän seisoi hyvän aikaa selitellen silloista


tukalaa asemaansa. Nyt he saattoivat tutustua toisiinsa.

Gunvor jatkoi matkaansa. Einar tuli jäljestä. Ja jutteli yhä. Gunvor


ei vastannut sanaakaan, vaan kulki ripeämmin. Einar pysyttelihe
samassa vauhdissa… kunnes tuli vastaan kävelijöitä… silloin hän
alkoi huomattavasti arastella… Näkihän helposti, että hän seurasi
Gunvoria hänen tahtomattaan. Ja hän poistui.
VI.

Miten pienokaiset sillä luokalla, jonka hän sai opetettavakseen,


istuivat tarkkaavaisina, kun hän ensi kertaa astui heidän eteensä. He
ikäänkuin ojensivat tuntosarviansa. Pitiköhän neiti heistä, vai oliko
hän ainoastaan sellainen, joka tahtoi, että heidän oli toteltava?
Gunvor huomasi, mitä he aprikoivat. Ja niinkuin kesäpäivä, joka
antaa auringonpaistetta ja vettä runsaasti ja ajattelematta, lankeeko
joka pisara hyödyksi tai pääseekö jokainen päivänsäde minne sen
pitää, — samoin ei hänkään säästänyt. Hän antoi virrata sen mitä
hänellä oli annettavaa. Ja parasta siinä oli se, että moinen tuhlaus toi
hänelle sijaan enemmän kuin hän antoi. Kas, tuollahan ne pienet
istuivat rivittäin penkeillä. Ja jotkut heistä olivat ahkeria ja jotkut
unteloja, ja toiset vallattomia, toiset kilttejä. Hän työskenteli heidän
jokaisen apuna. Joskus olisi ehkä joku pojan-vintiö ansainnut
nuhdetta ja kuria. Mutta jonakin hiljaisena hetkenä hän tuli
katsoneeksi häneen. Ja lomalla herätti pojan käytös ehkä hänen
sääliänsä. Hän oli aprikoinut, mikä tuo lapsi oikeastaan pohjaltaan
oli. Ja nyt, kun se oli vallaton, niin hän saattoi vain silittää hänen
päätänsä ja katsoa häntä silmiin, ja ehkä hymyillä hänelle: "Jos nyt
neiti on sinulle kiltti, niin tottakai et tahdo olla häijy hänelle."
Miten monta tärkeää seikkaa hän oppi noiden poikainsa ja
tyttöjensä parissa. Miten siellä piti olla varova. Miten paljon siellä oli
itsellään opittavaa. Joskus hän kyllä saattoi uupuakin; hän saattoi
tulla kärsimättömäksi ja kiivastua, kun opiskelu sujui huonosti tai kun
hidastajuisuus kiusoitti häntä… no, se ei haitannut paljoa:
pienokaiset ymmärsivät kyllä, ettei se mitään merkitse. Heidän
sydämessään piili säästettyjä aarteita, joilla jotkut
epäsäännöllisyydet korvattiin.

Koulun ulkopuolella hänellä oli paljon puuhaa. Hän kävi


pienokaisten kodeissa, tai ne tulivat hänen luokseen. Hän koki joskus
näiden oppilaidensa parissa tapauksia, jotka saattoivat hänet
syvemmin käsittämään työnsä vaikeuden ja merkityksen. Hän
huomasi ne tuhannet tehtävät, jotka oli tekemättä. Ah, hänen täytyi
ymmärtää vielä enemmän, hänen täytyi olla vielä viisaampi ja
ennakkoluulottomampi ollakseen heidän oikea opettajansa. Niin
nuori kuin hän oli, hän katkeroitui monta kertaa ajatellessaan, miten
välinpitämättöminä monet opettajat ja opettajattaret menivät
työhönsä, kuulustelemaan läksyjä ja pänttäyttämään päähän
oppimatta syvemmin opetettaviaan.

Siitä hän mainitsi Grögaardille, kun he kerran tapasivat.

"Siitä on valtio vastuunalainen", vastasi Grögaard kiivaasti.


"Opettajat ovat sen lapsipuolia. Se antaa heille niukan leivän,
niinkauan kuin he työskentelevät, ja köyhyyttä, kun he tulevat
vanhoiksi. Se sanoo: Täss' on sulle hiljaista, harmaata huolta
kaikeksi iäksesi, mene ja hanki minulle voimakasta ja uljasta
sukupolvea."
VII.

Jan Grögaardia hän tapasi nyt hyvinkin usein. He olivat aina olleet
hyvässä sovussa. Mutta siitä illasta alkaen, jolloin Grögaard piti
puheen hänelle, oli Gunvor saanut häneltä jotakin, jota ei voinut
unhoittaa… Niin, nuo hänen sanansa, jotka hän lausui kuin näyn
nähden, ne olivat ikäänkuin vihkineet hänet uuteen elämään
ihmisenä ja naisena.

Grögaard pyysi häntä usein tulemaan tapaamaan häntä jonkun


esitelmän päätyttyä, jonka hän oli pitänyt jossakin yhdistyksessä,
tahi rasittavan koulutunnin jälkeen. Tahi Gunvor pyysi häntä
tulemaan itseänsä tapaamaan. Ja he tulivat, ja kävelivät yhdessä, ja
keskustelivat ja olivat yhtä mieltä ja eri mieltä. Mutta joskus he
lepäsivät ajatuksessa, jota toinen oli ajatellut, tai haaveessa, jota
toinen oli uneksinut.

Usein he juttelivat toisillensa hauskoja juttuja ja nauroivat


kumpikin. Tahi kertoivat omasta elämästään. Grögaard puhui
kodistansa, lapsuudestaan, ja miten hän oli johtunut kulkemaan
omia teitänsä ja ajattelemaan omia ajatuksiaan monestakin asiasta.
Gunvor kertoi hänelle kodistaan, lapsuudestaan, hän mainitsi kerran
kihlauksestaankin ja sen purkamisesta, joka tapahtui niin yhtäkkiä.

You might also like