100% found this document useful (4 votes)
176 views

(Ebook PDF) Starting Out With C++: From Control Structures Through Objects, Brief Version 8th Edition Download PDF

Starting

Uploaded by

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

(Ebook PDF) Starting Out With C++: From Control Structures Through Objects, Brief Version 8th Edition Download PDF

Starting

Uploaded by

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

Download the full version of the ebook now at ebooksecure.

com

(eBook PDF) Starting Out with C++: From


Control Structures through Objects, Brief
Version 8th Edition

https://ebooksecure.com/product/ebook-pdf-
starting-out-with-c-from-control-structures-
through-objects-brief-version-8th-edition/

Explore and download more ebook at https://ebooksecure.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

(eBook PDF) Starting Out with C++: From Control Structures


through Objects 8th Edition

https://ebooksecure.com/product/ebook-pdf-starting-out-with-c-from-
control-structures-through-objects-8th-edition/

ebooksecure.com

(eBook PDF) Starting Out with Java: From Control


Structures through Objects, 7th Edition

https://ebooksecure.com/product/ebook-pdf-starting-out-with-java-from-
control-structures-through-objects-7th-edition/

ebooksecure.com

(eBook PDF) Starting Out with C++ from Control Structures


to Objects 9th Edition

https://ebooksecure.com/product/ebook-pdf-starting-out-with-c-from-
control-structures-to-objects-9th-edition/

ebooksecure.com

(eBook PDF) Math in Our World 3rd Edition by David Sobecki


Professor

https://ebooksecure.com/product/ebook-pdf-math-in-our-world-3rd-
edition-by-david-sobecki-professor/

ebooksecure.com
Diagnostic Imaging: Obstetrics 4th Edition Paula J.
Woodward Md - eBook PDF

https://ebooksecure.com/download/diagnostic-imaging-obstetrics-ebook-
pdf/

ebooksecure.com

(eBook PDF) Economic Methodology 2nd by Marcel Boumans

https://ebooksecure.com/product/ebook-pdf-economic-methodology-2nd-by-
marcel-boumans/

ebooksecure.com

Financial and Managerial Accounting 9th Edition John J.


Wild - eBook PDF

https://ebooksecure.com/download/financial-and-managerial-accounting-
ebook-pdf/

ebooksecure.com

Child and Adolescent Development in Your Classroom,


Topical Approach 3rd Edition (eBook PDF)

https://ebooksecure.com/product/child-and-adolescent-development-in-
your-classroom-topical-approach-3rd-edition-ebook-pdf/

ebooksecure.com

(eBook PDF)

https://ebooksecure.com/product/ebook-pdf-international-economics-
theory-and-policy-10th-edition/

ebooksecure.com
Communicating at Work: Strategies for Success in Business
and the Professions 11th Edition (eBook PDF)

https://ebooksecure.com/product/communicating-at-work-strategies-for-
success-in-business-and-the-professions-11th-edition-ebook-pdf/

ebooksecure.com
Contents

Preface xv

Chapter 1 Introduction to Computers and Programming 1


1.1 Why Program? 1
1.2 Computer Systems: Hardware and Software 2
1.3 Programs and Programming Languages 8
1.4 What Is a Program Made of? 14
1.5 Input, Processing, and Output 17
1.6 The Programming Process 18
1.7 Procedural and Object-Oriented Programming 22

Chapter 2 Introduction to C++ 27


2.1 The Parts of a C++ Program 27
2.2 The cout Object 31
2.3 The #include Directive 36
2.4 Variables and Literals 37
2.5 Identifiers 41
2.6 Integer Data Types 42
2.7 The char Data Type 48
2.8 The C++ string Class 52
2.9 Floating-Point Data Types 54
2.10 The bool Data Type 57
2.11 Determining the Size of a Data Type 58
2.12 Variable Assignments and Initialization 59
2.13 Scope 61
2.14 Arithmetic Operators 61
2.15 Comments 69
2.16 Named Constants 71
2.17 Programming Style 73

vii
viii Contents

Chapter 3 Expressions and Interactivity 83


3.1 The cin Object 83
3.2 Mathematical Expressions 89
3.3 When You Mix Apples and Oranges: Type Conversion 98
3.4 Overflow and Underflow 100
3.5 Type Casting 101
3.6 Multiple Assignment and Combined Assignment 104
3.7 Formatting Output 108
3.8 Working with Characters and string Objects 118
3.9 More Mathematical Library Functions 124
3.10 Focus on Debugging: Hand Tracing a Program 130
3.11 Focus on Problem Solving: A Case Study 132

Chapter 4 Making Decisions 149


4.1 Relational Operators 149
4.2 The if Statement 154
4.3 Expanding the if Statement 162
4.4 The if/else Statement 166
4.5 Nested if Statements 169
4.6 The if/else if Statement 176
4.7 Flags 181
4.8 Logical Operators 182
4.9 Checking Numeric Ranges with Logical Operators 189
4.10 Menus 190
4.11 Focus on Software Engineering: Validating User Input 193
4.12 Comparing Characters and Strings 195
4.13 The Conditional Operator 199
4.14 The switch Statement 202
4.15 More About Blocks and Variable Scope 211

Chapter 5 Loops and Files 227


5.1 The Increment and Decrement Operators 227
5.2 Introduction to Loops: The while Loop 232
5.3 Using the while Loop for Input Validation 239
5.4 Counters 241
5.5 The do-while Loop 242
5.6 The for Loop 247
5.7 Keeping a Running Total 257
5.8 Sentinels 260
5.9 Focus on Software Engineering: Deciding Which Loop to Use 261
5.10 Nested Loops 262
5.11 Using Files for Data Storage 265
5.12 Optional Topics: Breaking and Continuing a Loop 284

Chapter 6 Functions 299


6.1 Focus on Software Engineering: Modular Programming 299
6.2 Defining and Calling Functions 300
6.3 Function Prototypes 309
6.4 Sending Data into a Function 311
Contents ix

6.5 Passing Data by Value 316


6.6 Focus on Software Engineering: Using Functions in a
Menu-Driven Program 318
6.7 The return Statement 322
6.8 Returning a Value from a Function 324
6.9 Returning a Boolean Value 332
6.10 Local and Global Variables 334
6.11 Static Local Variables 342
6.12 Default Arguments 345
6.13 Using Reference Variables as Parameters 348
6.14 Overloading Functions 354
6.15 The exit() Function 358
6.16 Stubs and Drivers 361

Chapter 7 Arrays 375


7.1 Arrays Hold Multiple Values 375
7.2 Accessing Array Elements 377
7.3 No Bounds Checking in C++ 384
7.4 Array Initialization 387
7.5 The Range-Based for Loop 392
7.6 Processing Array Contents 396
7.7 Focus on Software Engineering: Using Parallel Arrays 404
7.8 Arrays as Function Arguments 407
7.9 Two-Dimensional Arrays 418
7.10 Arrays with Three or More Dimensions 425
7.11 Focus on Problem Solving and Program Design: A Case Study 427
7.12 If You Plan to Continue in Computer Science: Introduction to the
STL vector 429

Chapter 8 Searching and Sorting Arrays 457


8.1 Focus on Software Engineering: Introduction to Search Algorithms 457
8.2 Focus on Problem Solving and Program Design: A Case Study 463
8.3 Focus on Software Engineering: Introduction to Sorting Algorithms 470
8.4 Focus on Problem Solving and Program Design: A Case Study 477
8.5 If You Plan to Continue in Computer Science: Sorting and
Searching vectors 485

Chapter 9 Pointers 495


9.1 Getting the Address of a Variable 495
9.2 Pointer Variables 497
9.3 The Relationship Between Arrays and Pointers 504
9.4 Pointer Arithmetic 508
9.5 Initializing Pointers 510
9.6 Comparing Pointers 511
9.7 Pointers as Function Parameters 513
9.8 Focus on Software Engineering: Dynamic Memory Allocation 522
9.9 Focus on Software Engineering: Returning Pointers from Functions 526
9.10 Using Smart Pointers to Avoid Memory Leaks 533
9.11 Focus on Problem Solving and Program Design: A Case Study 536
x Contents

Chapter 10 Characters, C-Strings, and More About the string Class 547
10.1 Character Testing 547
10.2 Character Case Conversion 551
10.3 C-Strings 554
10.4 Library Functions for Working with C-Strings 558
10.5 C-String/Numeric Conversion Functions 569
10.6 Focus on Software Engineering: Writing Your Own
C-String-Handling Functions 575
10.7 More About the C++ string Class 581
10.8 Focus on Problem Solving and Program Design: A Case Study 590

Chapter 11 Structured Data 599


11.1 Abstract Data Types 599
11.2 Focus on Software Engineering: Combining Data into Structures 601
11.3 Accessing Structure Members 604
11.4 Initializing a Structure 608
11.5 Arrays of Structures 611
11.6 Focus on Software Engineering: Nested Structures 613
11.7 Structures as Function Arguments 617
11.8 Returning a Structure from a Function 620
11.9 Pointers to Structures 623
11.10 Focus on Software Engineering: When to Use ., When to Use ->,
and When to Use * 626
11.11 Unions 628
11.12 Enumerated Data Types 632

Chapter 12 Advanced File Operations 657


12.1 File Operations 657
12.2 File Output Formatting 663
12.3 Passing File Stream Objects to Functions 665
12.4 More Detailed Error Testing 667
12.5 Member Functions for Reading and Writing Files 670
12.6 Focus on Software Engineering: Working with Multiple Files 678
12.7 Binary Files 680
12.8 Creating Records with Structures 685
12.9 Random-Access Files 689
12.10 Opening a File for Both Input and Output 697

Chapter 13 Introduction to Classes 711


13.1 Procedural and Object-Oriented Programming 711
13.2 Introduction to Classes 718
13.3 Defining an Instance of a Class 723
13.4 Why Have Private Members? 736
13.5 Focus on Software Engineering: Separating Class Specification
from Implementation 737
13.6 Inline Member Functions 743
13.7 Constructors 746
13.8 Passing Arguments to Constructors 750
Contents xi

13.9 Destructors 758


13.10 Overloading Constructors 762
13.11 Private Member Functions 765
13.12 Arrays of Objects 767
13.13 Focus on Problem Solving and Program Design: An OOP Case Study 771
13.14 Focus on Object-Oriented Programming: Simulating Dice with Objects 778
13.15 Focus on Object-Oriented Programming: Creating an Abstract Array
Data Type 782
13.16 Focus on Object-Oriented Design: The Unified Modeling Language (UML) 785
13.17 Focus on Object-Oriented Design: Finding the Classes and Their
Responsibilities 788

Chapter 14 More About Classes 811


14.1 Instance and Static Members 811
14.2 Friends of Classes 819
14.3 Memberwise Assignment 824
14.4 Copy Constructors 825
14.5 Operator Overloading 831
14.6 Object Conversion 858
14.7 Aggregation 860
14.8 Focus on Object-Oriented Design: Class Collaborations 865
14.9 Focus on Object-Oriented Programming: Simulating the Game
of Cho-Han 869

Chapter 15 Inheritance, Polymorphism, and Virtual Functions 891


15.1 What Is Inheritance? 891
15.2 Protected Members and Class Access 900
15.3 Constructors and Destructors in Base and Derived Classes 906
15.4 Redefining Base Class Functions 918
15.5 Class Hierarchies 923
15.6 Polymorphism and Virtual Member Functions 929
15.7 Abstract Base Classes and Pure Virtual Functions 945
15.8 Multiple Inheritance 952

Appendix A: Getting Started with Alice 971


Appendix B: The ASCII Character Set 997
Appendix C: Operator Precedence and Associativity 999
Quick References 1001
Index 1003
Credit 1019

Online The following appendices are available at www.pearsonhighered.com/gaddis.


Appendix D: Introduction to Flowcharting
Appendix E: Using UML in Class Design
Appendix F: Namespaces
Appendix G: Passing Command Line Arguments
xii Contents

Appendix H: Header File and Library Function Reference


Appendix I: Binary Numbers and Bitwise Operations
Appendix J: Multi-Source File Programs
Appendix K: Stream Member Functions for Formatting
Appendix L: Answers to Checkpoints
Appendix M: Solutions to Odd-Numbered Review Questions
LOCATION OF VIDEONOTES IN THE TEXT
VideoNote

Chapter 1 Introduction to Flowcharting, p. 20


Designing a Program with Pseudocode, p. 20
Designing the Account Balance Program, p. 25
Predicting the Result of Problem 33, p. 26
Chapter 2 Using cout, p. 31
Variabe Definitions, p. 37
Assignment Statements and Simple Math Expressions, p. 62
Solving the Restaurant Bill Problem, p. 80
Chapter 3 Reading Input with cin, p. 83
Formatting Numbers with setprecision, p. 111
Solving the Stadium Seating Problem, p. 142
Chapter 4 The if Statement, p. 154
The if/else statement, p. 166
The if/else if Statement, p. 176
Solving the Time Calculator Problem, p. 221
Chapter 5 The while Loop, p. 232
The for Loop, p. 247
Reading Data from a File, p. 274
Solving the Calories Burned Problem, p. 293
Chapter 6 Functions and Arguments, p. 311
Value-Returnlng Functions, p. 324
Solving the Markup Problem, p. 366
Chapter 7 Accessing Array Elements With a Loop, p. 380
Passing an Array to a Function, p. 407
Solving the Chips and Salsa Problem, p. 448
Chapter 8 The Binary Search, p. 460
The Selection Sort, p. 474
Solving the Charge Account Validation Modification Problem, p. 492
Chapter 9 Dynamically Allocating an Array, p. 523
Solving the Pointer Rewrite Problem, p. 545
Chapter 10 Writing a C-String-Handling Function, p. 575
More About the string Class, p. 581
Solving the Backward String Problem, p. 594
(continued on the next page)
LOCATION OF VIDEONOTES IN THE TEXT (continued)
VideoNote

Chapter 11 Creating a Structure, p. 601


Passing a Structure to a Function, p. 617
Solving the Weather Statistics Problem, p. 652
Chapter 12 Passing File Stream Objects to Functions, p. 665
Working with Multiple Files, p. 678
Solving the File Encryption Filter Problem, p. 708
Chapter 13 Writing a Class, p. 718
Defining an Instance of a Class, p. 723
Solving the Employee Class Problem, p. 802
Chapter 14 Operator Overloading, p. 831
Class Aggregation, p. 860
Solving the NumDays Problem, p. 885
Chapter 15 Redefining a Base Class Function in a Derived Class, p. 918
Polymorphism, p. 929
Solving the Employee and Production-Worker Classes Problem, p. 963
Preface

Welcome to the Brief Version of Starting Out with C++: From Control Structures through
Objects, 8th edition. This book is intended for use in a one or two-semester C++ ­programming
sequence, or an accelerated one-semester course. Students new to programming, as well as
those with prior course work in other languages, will find this text beneficial. The funda-
mentals of programming are covered for the novice, while the details, pitfalls, and nuances
of the C++ language are explored in-depth for both the beginner and more experienced
student. The book is written with clear, easy-to-understand language, and it covers all the
necessary topics for an introductory programming course. This text is rich in example pro-
grams that are concise, practical, and real-world oriented, ensuring that the student not only
learns how to implement the features and constructs of C++, but why and when to use them.

Changes in the Eighth Edition


C++11 is the latest standard version of the C++ language. In previous years, while the stan-
dard was being developed, it was known as C++0x. In August 2011, it was approved by
the International Standards Organization (ISO), and the name of the standard was officially
changed to C++11. Most of the popular compilers now support the C++11 standard.
The new C++11 standard was the primary motivation behind this edition. Although this
edition introduces many of the new language features, a C++11 compiler is not strictly
required to use the book. As you progress through the book, you will see C++11 icons in the
margins, next to the new features that are introduced. Programs appearing in sections that
are not marked with this icon will still compile using an older compiler.
Here is a summary of the new C++11 topics that are introduced in this edition:
l The auto key word is introduced as a way to simplify complex variable definitions.
The auto key word causes the compiler to infer a variable’s data type from its initial-
ization value.
l The long long int and unsigned long long int data types, and the LL literal
suffix are introduced.
l Chapter 5 shows how to pass a string object directly to a file stream object’s open
member function, without the need to call the c_str() member function. (A discus-
sion of the c_str()function still exists for anyone using a legacy compiler.)

xv
Visit https://testbankfan.com
now to explore a rich
collection of testbank or
solution manual and enjoy
exciting offers!
xvi Preface

l The range-based for loop is introduced in Chapter 7. This new looping mechanism
automatically iterates over each element of an array, vector, or other collection,
without the need of a counter variable or a subscript.
l Chapter 7 shows how a vector can be initialized with an initialization list.
l The nullptr key word is introduced as the standard way of representing a null
pointer.
l Smart pointers are introduced in Chapter 9, with an example of dynamic memory
allocation using unique_ptr.
l Chapter 10 discusses the new, overloaded to_string functions for converting numeric
values to string objects.
l The string class’s new back() and front() member functions are included in
Chapter 10’s overview of the string class.
l Strongly typed enums are discussed in Chapter 11.
l Chapter 13 shows how to use the smart pointer unique_ptr to dynamically allocate
an object.
l Chapter 15 discusses the override key word and demonstrates how it can help prevent
subtle overriding errors. The final key word is discussed as a way of preventing a virtual
member function from being overridden.
In addition to the C++11 topics, the following general improvements were made:
l Several new programming problems have been added to the text, and many of the
existing programming problems have been modified to make them unique from previ-
ous editions.
l The discussion of early, historic computers in Chapter 1 is expanded.
l The discussion of literal values in Chapter 2 is improved.
l The introduction of the char data type in Chapter 2 is reorganized to use character
literals in variable assignments before using ASCII values in variable assignments.
l The discussion of random numbers in Chapter 3 is expanded and improved, with the
addition of a new In the Spotlight section.
l A new Focus on Object-Oriented Programming section has been added to Chapter 13,
showing how to write a class that simulates dice.
l A new Focus on Object-Oriented Programming section has been added to Chapter 14,
showing an object-oriented program that simulates the game of Cho-Han. The program
uses objects for the dealer, two players, and a pair of dice.

Organization of the Text


This text teaches C++ in a step-by-step fashion. Each chapter covers a major set of topics
and builds knowledge as the student progresses through the book. Although the chapters
can be easily taught in their existing sequence, some flexibility is provided. The diagram
shown in Figure P-1 suggests possible sequences of instruction.
Preface xvii

Figure P-1  

Chapter 1
Introduction

Chapters 2–7
Basic Language
Elements

Chapter 8 Chapter 9 Chapter 12


Searching and Pointers Advanced File
Sorting Arrays Operations*

*A few subtopics in
Chapter 12 require
Chapter 10 Chapters 9 and 11.
Characters, Strings, Chapter 11
and the string Class Structures

Chapter 13
Introduction to
Classes

Chapter 14
More About Classes

Chapter 15
Inheritance and
Polymorphism

Chapter 1 covers fundamental hardware, software, and programming concepts. You may
choose to skip this chapter if the class has already mastered those topics. Chapters 2 through
7 cover basic C++ syntax, data types, expressions, selection structures, repetition structures,
functions, and arrays. Each of these chapters builds on the previous chapter and should be
covered in the order presented.
After Chapter 7 has been covered, you may proceed to Chapter 8, or jump to either Chapter
9 or Chapter 12. (If you jump to Chapter 12 at this point, you will need to postpone sections
12.7, 12.8, and 12.10 until Chapters 9 and 11 have been covered.)
After Chapter 9 has been covered, either of Chapters 10 or 11 may be covered. After
­Chapter 11, you may cover Chapters 13 through 15 in sequence.
This text’s approach starts with a firm foundation in structured, procedural programming
before delving fully into object-oriented programming.
xviii Preface

Brief Overview of Each Chapter


Chapter 1: Introduction to Computers and Programming
This chapter provides an introduction to the field of computer science and covers the fun-
damentals of programming, problem solving, and software design. The components of pro-
grams, such as key words, variables, operators, and punctuation are covered. The tools of
the trade, such as pseudocode, flow charts, and hierarchy charts are also presented.

Chapter 2: Introduction to C++


This chapter gets the student started in C++ by introducing data types, identifiers, vari-
able declarations, constants, comments, program output, simple arithmetic operations, and
C-strings. Programming style conventions are introduced and good programming style
is modeled here, as it is throughout the text. An optional section explains the difference
between ANSI standard and pre-standard C++ programs.

Chapter 3: Expressions and Interactivity


In this chapter the student learns to write programs that input and handle numeric, char-
acter, and string data. The use of arithmetic operators and the creation of mathematical
expressions are covered in greater detail, with emphasis on operator precedence. Debug-
ging is introduced, with a section on hand tracing a program. Sections are also included on
simple output formatting, on data type conversion and type casting, and on using library
functions that work with numbers.

Chapter 4: Making Decisions


Here the student learns about relational operators, relational expressions and how to con-
trol the flow of a program with the if, if/else, and if/else if statements. The condi-
tional operator and the switch statement are also covered. Crucial applications of these
constructs are covered, such as menu-driven programs and the validation of input.

Chapter 5: Loops and Files


This chapter covers repetition control structures. The while loop, do-while loop, and for
loop are taught, along with common uses for these devices. Counters, accumulators, run-
ning totals, sentinels, and other application-related topics are discussed. Sequential file I/O
is also introduced. The student learns to read and write text files, and use loops to process
the data in a file.

Chapter 6: Functions
In this chapter the student learns how and why to modularize programs, using both void
and value returning functions. Argument passing is covered, with emphasis on when argu-
ments should be passed by value versus when they need to be passed by reference. Scope of
variables is covered, and sections are provided on local versus global variables and on static
local variables. Overloaded functions are also introduced and demonstrated.
Preface xix

Chapter 7: Arrays
In this chapter the student learns to create and work with single and multidimensional
arrays. Many examples of array processing are provided including examples illustrating
how to find the sum, average, highest, and lowest values in an array and how to sum the
rows, columns, and all elements of a two-dimensional array. Programming techniques using
parallel arrays are also demonstrated, and the student is shown how to use a data file as
an input source to populate an array. STL vectors are introduced and compared to arrays.

Chapter 8: Sorting and Searching Arrays


Here the student learns the basics of sorting arrays and searching for data stored in them.
The chapter covers the Bubble Sort, Selection Sort, Linear Search, and Binary Search algo-
rithms. There is also a section on sorting and searching STL vector objects.

Chapter 9: Pointers
This chapter explains how to use pointers. Pointers are compared to and contrasted with
reference variables. Other topics include pointer arithmetic, initialization of pointers, rela-
tional comparison of pointers, pointers and arrays, pointers and functions, dynamic mem-
ory allocation, and more.

Chapter 10: Characters, C-strings, and More About the string Class
This chapter discusses various ways to process text at a detailed level. Library functions for
testing and manipulating characters are introduced. C-strings are discussed, and the tech-
nique of storing C-strings in char arrays is covered. An extensive discussion of the string
class methods is also given.

Chapter 11: Structured Data


The student is introduced to abstract data types and taught how to create them using struc-
tures, unions, and enumerated data types. Discussions and examples include using pointers
to structures, passing structures to functions, and returning structures from functions.

Chapter 12: Advanced File Operations


This chapter covers sequential access, random access, text, and binary files. The various
modes for opening files are discussed, as well as the many methods for reading and writing
file contents. Advanced output formatting is also covered.

Chapter 13: Introduction to Classes


The student now shifts focus to the object-oriented paradigm. This chapter covers the fun-
damental concepts of classes. Member variables and functions are discussed. The student
learns about private and public access specifications, and reasons to use each. The topics of
constructors, overloaded constructors, and destructors are also presented. The chapter pres-
ents a section modeling classes with UML and how to find the classes in a particular problem.
xx Preface

Chapter 14: More About Classes


This chapter continues the study of classes. Static members, friends, memberwise assign-
ment, and copy constructors are discussed. The chapter also includes in-depth sections on
operator overloading, object conversion, and object aggregation. There is also a section on
class collaborations and the use of CRC cards.

Chapter 15: Inheritance, Polymorphism, and Virtual Functions


The study of classes continues in this chapter with the subjects of inheritance, polymor-
phism, and virtual member functions. The topics covered include base and derived class con-
structors and destructors, virtual member functions, base class pointers, static and dynamic
binding, multiple inheritance, and class hierarchies.

Appendix A: Getting Started with Alice


This appendix gives a quick introduction to Alice. Alice is free software that can be used to
teach fundamental programming concepts using 3D graphics.

Appendix B: ASCII Character Set


A list of the ASCII and Extended ASCII characters and their codes.

Appendix C: Operator Precedence and Associativity


A chart showing the C++ operators and their precedence.

The following appendices are available online at www.pearsonhighered.com/gaddis.

Appendix D: Introduction to Flowcharting


A brief introduction to flowcharting. This tutorial discusses sequence, selection, case, repeti-
tion, and module structures.

Appendix E: Using UML in Class Design


This appendix shows the student how to use the Unified Modeling Language to design
classes. Notation for showing access specification, data types, parameters, return values,
overloaded functions, composition, and inheritance are included.

Appendix F: Namespaces
This appendix explains namespaces and their purpose. Examples showing how to define a
namespace and access its members are given.

Appendix G: Passing Command Line Arguments


Teaches the student how to write a C++ program that accepts arguments from the command
line. This appendix will be useful to students working in a command line environment, such
as Unix, Linux, or the Windows command prompt.

Appendix H: Header File and Library Function Reference


This appendix provides a reference for the C++ library functions and header files discussed
in the book.
Exploring the Variety of Random
Documents with Different Content
hän eukon muistia verestelläkseen luki tälle ennen paperille
panemiansa lauluja huudahti eukko: »Vieläkö nyt sitäkin maassa
lauletaan ja ken sitä teille lauloi? Minähän sen ennen nuorra tyttönä
ollen tein.»

Yhä pohjoisempaan saamme siirtyä Kalevalan laulajain etsinnässä


ja lähteä Ilomantsista kokonaan rajan tuolle puolen, sillä Koitereen
pohjoispuolella Suomessa loppuu jo varsinainen kertovaisten
runojen alue. Pohjois-Aunuksessa on vastassamme synkät
luonnonkauniit erämaat. Sielläkin lauletaan yleisesti vanhoja runoja,
vaikkei tiedetä nimittää ketään etevää miestä, joka olisi laulanut niille
runonkerääjille, joiden kokoelmia on käytetty Kalevalaan.

Menemme siis Kalevalan varsinaisille syntymäseuduille,


laukunkantajain vieraanvaraisille kotisaloille, Vienan lääniin. Rajan
lähettyvillä pysyttelee runoalue. Etelästä mennen on runorikkaimpina
pidettävä Miinoaa ja Akonlahtea. Jo Topelius vanhempi oli saanut
käsiinsä Akonlahdesta olevan laukunkantajan nimeltä Timonen, joka
taisi runoja. Lönnrot sai hyvän saaliin vuoden 1832 matkallansa
täältä Trohkimon Soava-nimiseltä isännältä. Ja vielä Castrén keksi
kylässä uuden tähden, tietäjän, jolla loitsuja riitti kirjoittaa viisi
vuorokautta. Castrén'in kokoelmissa niitä onkin lähes 40 kappaletta.
Otaksutaan loihtijan nimen olleen Hova.

Aivan rajalla Hietajärven kylässä Europaeus sattui saamaan


runoille eukon nimeltä Taaria, josta kertoo: »Siinä oli vanha eukko,
jonka kyllä työn tuskin sain lauluille, mutta sen yksi sana maksoi
enemmän kuin monta kymmentä muiden.» Tohtori Niemi on
julkaissut Taariasta seuraavat tiedot: tämä eukko ei ollutkaan
tavallisia naisia. Kotoisin hän oli Latvajärvestä ja omaa sukuaan
Toarie Lesoni. Kolme miespolvea sitten, eli noin v. 1800, oli kaukaa,
likeltä Valkeanmerenrantaa, Suikujärvestä tullut tänne rajaseudulle
mies paeten sotamiehenottoa. Hänen oikea nimensä oli Tomenttei
Sikoff, mutta täällä alettiin häntä nimittää Lauri Huoviseksi, jonka
nimen asianomainen itsekin omisti. Lähes kymmenen vuotta
palveltuansa renkinä nai pakolainen yllämainitun Taarian, joka palveli
samassa talossa, ja pariskunta saaden lehmän vuoden palkastaan,
valitsi asuinpaikaksensa Kuivajärven niemekkeen Suomen puolella.
Lehmänsä sitoivat he puuhun, tekivät havumajan suojakseen ja
alkoivat pesää rakentaa, peltoa perata ja kaskea kaataa. Ne olivat
sitkeätä ja lujaa väkeä nuo tuon ajan ihmiset. Sitä kuvaa seuraavakin
Taarian itsensä varotukseksi miniöillensä kertoma tapaus. Taaria oli
ollut kyntämässä kun tuli synnytyksen hetki. Vastasyntyneen kääri
äiti riepuihin, jätti sen kivirauniolle, kunnes sai kynnetyksi
peltosarkansa loppuun, vasta sitten läksi kotiin, lämmitti saunan ja
vei pienokaisen sinne lämpiämään. Taaria eli 102 vuoden vanhaksi.

Yhä pohjoiseen mennessä tulemme pienen järven rannalle


Maanselän rinteellä olevaan Latvajärven kyläryhmään. Muutamilla
vaaroilla on noin puoli sataa taloa. Köyhästi noissa pirteissä eletään,
usein on ruokana vain »silkkuo» (olkijauhon sekaista leipää) ja
»muikieta maitoa». Paljon on tällä seudulla silti ollut antaa
runoaarteita eepokseemme. 80-vuotinen vanhus oli jo paikkakunnan
etevin laulaja Arhippa Perttunen kun Lönnrot v. 1834 osui tähän
kylään. Mutta ukko ehti tietonsa silti vielä tyhjentää muillekin
kerääjille. Cajan kävi hänen luonaan paria vuotta myöhemmin ja
Castrén v. 1839. Ukon virsilipas sisälsi tosin vain 60 runoa, mutta
niistä on Kalevalaan tullut enemmän kuin kenenkään muun tiedoista.
Ne näet ovat sekä sisällykseltänsä että muodoltansa selviä ja
elävyyttä lisäävät hienot yksityiskuvaukset. Pisin runo käsittää
kokonaista 452 säettä. Yhteensä on Arhippa laulanut 4,500 säettä.
Perttusen suvun tietävät tarinat olevan lähtöisin Oulunjoen
tienoilta; Arhipan isän-isän piti sieltä käsin muuttaneen Maanselän
itäpuolelle. Tästä ehkä etevimmästä Kalevalan laulajasta antaa
Lönnrot matkakertomuksessaan hauskan kuvauksen, joka vie
meidät keskelle virrensepän jokapäiväistä elämää. Hän kertoo:
»Vaikka Arhipan talo olikin köyhä, tuntui se minusta hauskemmalta
kuin moni varakkaampi. Itse ukko Arhippaa koko talo kunnioitti kuin
muinaisaikaista patriarkkaa ainakin, ja sellainen hän oli minunkin
silmissäni. Sen ohella hän oli vapaa monesta ennakkoluulosta, jotka
muualla täällä ovat vallitsevina. Hän ja koko talonväki söi minun
kanssani saman pöydän ääressä, samalla kertaa ja samoista
astioista, mitä harvassa muussa paikassa on tapahtunut. Mitäpä siis
merkitsikään se pieni kömpelyys, jota ukko syödessään osotti! Hän
esim. otti käsin kalan vadista ja pani sen minun lautaselleni. Kuinka
oudolta tämä vanhuksen tarjoamistapa näyttäneekin, ymmärsin
kuitenkin panna arvoa hänen hyväntahtoisuuteensa. Ruokahalu ei
siitä ollenkaan kärsinyt, sillä täällä, kuten myös muissa tämän
seudun taloissa, pidetään hyvin tarkkaa huolta käsien pesemisestä
ennen ateriaa; tämä peseminen toistetaan aterian jälkeen.»

Ukosta runoniekkana kertoo Lönnrot: »Kokonaista kaksi päivää,


jopa hieman kolmatta, hän piti minua runonkirjoitustyössä. Runot
hän lauloi hyvässä järjestyksessä, jättämättä huomattavia aukkoja, ja
useimmat niistä olivat sellaisia, joita en ennen muilta ole saanut;
epäilen, olisiko niitä enää muilta saatavissa.

»Ukko innostui, kun välistä tuli puhuneeksi lapsuudestaan ja


monta vuotta sitten kuolleesta isästään, jolta hän oli saanut
perinnöksi runonsa. 'Kun silloin', hän sanoi, 'Lapukan rannalla
nuotalla ollessamme lepäsimme nuotion ääressä, ka siinä teidän
olisi pitänyt olla. Meillä oli apurina muuan lapukkalainen, kelpo
laulaja hänkin, mutta ei kuitenkaan isävainajani vertainen. Yökaudet
he usein lauloivat käsitysten valkean ääressä, eikä samaa runoa
koskaan kahdesti laulettu. Olin silloin pieni poika ja kuuntelin heitä,
joten vähitellen opin parhaat laulut. Mutta paljon olen jo unhottanut.
Pojistani ei tule yhtäkään laulajaa minun kuoltuani, kuten minusta
isäni jälkeen. Ei enää pidetä vanhoista lauluista niinkuin minun
lapsuudessani, jolloin niillä oli etusija, tehtiinpä työtä tai kokoonnuttiin
joutohetkinä kylässä. Tosin kuulin vielä jonkun kokouksissa niitä
laulavan, etenkin kun on hieman ryypätty, mutta harvoin sellaisia,
joilla olisi jotakin arvoa. Sen sijaan nuori väki nyt laulelee omia rivoja
laulujaan, joilla en edes tahtoisi huuliani saastuttaa. Jospa silloin
joku, kuten nyt, olisi etsinyt runoja, ei hän kahdessa viikossa olisi
ehtinyt panna kirjaan edes sitä, minkä isäni yksinänsä osasi.' Näin
puhuessaan ukko heltyi niin, että oli kyyneliin puhkeamaisillaan.»

Arhippa lienee kuollut jonkun aikaa senjälkeen kuin Castrén kävi


Latvajärvellä. Ukon ennustus, ettei pojista tulisi laulajia, ei käynyt
toteen. Eräästä pojasta, Miihkalista, tuli miltei isän veroinen.

Tsenanniemessä on ollut kaksi kuulua laulajaa, Petri ja Jyrki


Kettunen. Jyrki lauloi jo 1821 laukunkantajana kuljeskellessan
Uudessakaarlepyyssä Sakari Topeliukselle kuusi pitkää runoa, jotka
tämä kokoelmassaan julkaisi. Huhtikuussa 1834 tuli Lönnrot
Tsenaan ja sai aivan uusia runoja. Itse kertoo Lönnrot:
»Tsenanniemessä olin yötä ja panin kirjaan naapurinisännältä Jyrki
Kettuselta useita runoja, kirjoittaen myöhään yöhön. Seuraavana
aamuna jatkoin samaa työtä. En ollut edellisellä matkalla tavannut
häntä kotona, muuten olisin jo silloin toimittanut tämän työn. Tämä
Jyrki oli Uudessa Kaarlepyyssä tohtori Topelius vainajalle laulanut
kuten kertoi, kokonaista kolme päivää. Minua siis suuresti ihmetytti,
etten Topeliuksen kokoelmasta löytänyt niitäkin, jotka hän nyt lauloi.
Hän selitti minulle kuitenkin asian sanomalla: 'Kuuluupa ne jo teillä
olevan ennestään petsatoittuna, a miksi niitä uuelleen laulaisin'?»
Petri Kettusen runoilijamaine johtuu etupäässä hänen itse
sepittämistänsä runoista. Kanteleessa julkaisi Lönnrot erään niistä,
nimeltä »Kettusen toimituksista», jossa hän leikkisästi kertoo
elämäänsä ja kosintaansa.

Alammekin olla laulualueen pohjoisimmassa päässä kun


rajaseutua olemme seuranneet Vuonnisen ja Lonkan kyliin.
Vuonnisen kylällä, joka hajanaisina talonryhminä on ylä-Kuittijärven
lounaisimmalla kolkalla, on ollut suuri merkitys Kalevalan
syntymiseen nähden. Kaksi suurta tietäjää on perustanut kylän
maineen: Ontrei Malinen ja Vaassila Kieleväinen. Vuoden 1833
matkallaan tutustui Lönnrot heihin. Vaassila oli silloin kunnioitusta
herättävä vanhus, jonka runot jo miehen ulkomuodonkin vuoksi
muuttuivat kerääjän mielikuvituksissa yhdeksän yrön ikäisiksi. Ontrei
taas oli kuuluisa noita ja taisi viisikielistä kannelta helskytellä.
Tärkein oli Ontrein 368 säkeen mittainen Sampo-jakso, yhtenäinen
kertomus maailman luomisesta, Väinämöisen Pohjolan retkestä sekä
Sammon taonnasta ja ryöstöstä. Ensin Ontreita laulatettuaan meni
Lönnrot salmen toiselle puolelle asuvan Vaassilan pakeille ja sai
vieläkin syvällisempiä vaikutelmia. On omituista, että vanhus ponnisti
viimeiset sielun-voimansa, aivan kuin olisi aavistanut että nyt oli
Suomen heimon Sammon-ainekset ahjossa; mitä ei muisti enää
saattanut runomuotoon pukea, sen hän suorasanaisena jutteli.
Lönnrot siitä kertoo: »Hänen muistinsa oli viime vuosina niin
heikontunut, ettei hän enää osannut sitä, mitä ennen. Väinämöisestä
ja muutamista muista mytologisista henkilöistä hän kuitenkin kertoi
monta seikkaa, joita ennen en ollut tietänyt. Ja kun sattui niin, että
hän oli unohtanut jonkun seikan, jonka minä ennestään tunsin,
kyselin sitä häneltä tarkemmin. Silloin hän taas muisti sen ja niin sain
tietää kaikki Väinämöisen urotyöt yhdessä jaksossa, ja sen mukaan
olen sitte järjestänyt tunnetut Väinämöisen runot.»

Jonkunlaisella runoudellisella vapaudella Lönnrot tietysti liioitteli


Vaassilan ja Ontrein runojen täydellisyyttä, mutta todenmukaista on,
että noilla syyskuun hämärillä illoilla on ollut käänteentekevä
merkitys Kalevalan syntymiselle. Näiden kalevalaisten tietäjien
parissa haaveili Lönnrot Homeroksen kaltaisesta suomalaisesta
eepoksesta, jonka ajan hammas oli pureksinut sirpaleiksi, mutta,
josta nämä laulajat tiesivät koko joukon yhtenäistä.

Ontrei Malisen suku on Suomen puolelta muuttanut, tarinat


tietävät sen olleen Hailuodolta alkuisin. Ontrei kuoli 1856
viidenkahdeksatta ikäisenä.

Lonkan kyläntapainen on pohjoisin, josta on kalevalainen


runoniekka mainittava, nimittäin Martiska Karjalainen. Hän oli
sukuaan karjalainen, isä oli muuttanut Kuusamon Huhmarniemestä.
Martiska pystyi itsekin uusia runoja rustailemaan. Joku aika» ennen
kuin Lönnrot 1834 miestä laulatti, oli tämä joutunut »ouoille oville,
teille tietämättömille», josta ei »kuu keritä päivyt päästä», kuten itse
laulaa, mies nimittäin vietiin vankeuteen poronvarkaudesta.

Kerääjä kertoo muuten laulattamisestaan: »Jo ennenkin oli häntä


minulle mainittu oivaksi runolaulajaksi. Eikä mieheltä puuttunutkaan
sanoja, vahinko vaan, etteivät ne hänellä olleet paremmassa
järjestyksessä. Enimmästi hän siirtyi toisesta runosta toiseen, niin
että se, minkä häneltä panin muistiin, tosin kelpasi täydentämään
ennen keräämiäni, mutta ei tarjonnut mitään täydellisiä runoja.
Rommipulloni, jonka sisällystä hän ahkerasti maisteli, niinkuin sanoi,
vahvistaakseen muistiansa, yhä vaan sekoitti hänen ajatuksiaan.
Tästä huolimatta hän lauloi minulle loppupuolen tätä sekä kaksi
seuraavaa päivää. Etenkin viimeisenä päivänä laulaminen sujui
huononpuolisesti. Hänen näet oli vaikea muistaa uusia runoja.»

Käväisemme viimeiseksi tutustumassa Vienan läänin


suurimmassa kylässä, laulualueen koillisimmassa perukassa,
Uhtuan runolaulajiin. Tässä Keski-Kuittijärven rannalla olevassa
kylässä oli, Lönnrotin 1834 siellä ensi kertaa käydessä,
yhdeksättäkymmentä taloa. Vaikka jo aivan Lapin rajamailla on kylä
varakas. Ei sen varakkuus ole saatu maan antimista eikä veden
riistasta, vaan laukkua kantamalla. Lönnrot muistelee ensimäisestä
käynnistään täällä: »Tässä kylässä viivyin koko viikon enimmäkseen
uutterasti kirjoitellen muistiin runoja ja lauluja, joita kylän sekä miehet
että naiset lauloivat. Muuan leski, nimeltä Matro, kunnosti itseään
ennen muita. Sittenkuin hän puolentoista päivää oli laulanut,
sukankudin kädessään, astui hänen sijaansa toisia, jotka lauloivat
osaksi hänen laulamiensa runojen toisintoja, osaksi uusia.»

Seuraavan vuoden matkalta mainitsee Lönnrot toisen etevän


Uhtuan runolaulajan, jonka nimi lienee ollut Varahvomtta Sirkeini ja
joka asusti Jamalan talossa. Annan Lönnrotin kertomukselle
kokonaisuudessaan tässä sijan:

»Uhtuvassa tapasin ennen tuntemattoman Jamalan nimisen


miehen, joka esinnä lupasi 5:tä rupilasta kaiken päivän, aamusta
ruveten iltaan saakka laulaa, vaan sitte nähtyä, jotta kynä taisi
terävämmin käessäni pyörähellä, kun uskokana, yhtyy toiseen
kauppaan. Tätä myöten otti hän lauloakseen 20 pitempää runoa
sanotulla maksolla ja, mitä muistaisi päällisiksi. Niin kirjoitinki kaiken
päivää häneltä. Pieni poika istu lähellä ja veisti joka runolta pykälän
puuhun. Pimiän tullen tuli määrätty lukuki täyteen ja toisella päivällä
kirjoitin luvatuita pienempiä runoja murkina päiviin asti.»
Lonkan ja Uhtuan pohjoispuoli on jo seutua, jolla Kalevalan runot
alkavat vaieta. Tosin »laulavat Lapinki lapset», mutta jylhässä
perimmäisessä Pohjolassa ei ole kanteleita viritetty kertovaisten
runojen säestykseksi. Itään käsin Aunuksen ja Vienan läänin
rämeisille saloille mennen on niinikään laulun mahti langennut;
sielläkään ei ole kalevalainen laulu liittänyt kättä kätehen, sormia
sormien lomahan.

KALEVALAN RUNOJEN
ALKUPERÄSTÄ
Esittänyt Väinö Salminen

Mieltäkiinnittävää on tutkia missä ja milloin Kalevalan runot ovat


syntyneet, mikä on saanut suomalaiset ne luomaan ja mitä ovat
olleet alkuaan ne Kalevalan sankarit ja salaperäinen Sampo, joihin
kaikki mielikuvitukset ovat saattaneet niin keskittyä, että kansa niistä
on punonut pitkiä yhtäjaksoisia runoja.

Toisessa vihkosessa on selitetty, miten jokainen Kalevalassa


tavattava runo on kokoonpantu monen monituisista eri runoista ja
saman runon toisinnoista. Kun tahdomme päästä selvyyteen
Kalevalan runojen aiheiden alkuperästä, on kokonaan jätettävä
painettu Kalevala ja sen Lönnrotin kokoonpanemat runot ja otettava
tutkimuksen alaiseksi runot sellaisina kuin niitä kansa on laulanut.
Jokainen yksityisruno on ollut monen vaiheen alainen, sitä on
jatkellut ja muovaillut monien sukupolvien mielikuvitus, se on
muistitietona kulkeutunut seudusta toiseen, ennenkuin lopulta joutui
runonkerääjäin papereihin ja sitä tietä pysyväisesti Lönnrotin ja
sittemmin tutkijain käytettäväksi.

Mutta mitenkä saattaa tutkija selvitellä yksityisrunojen vaiheita


menneinä aikoina, silloin kuin ne vielä olivat vain kansan muistin
varassa; kirjalliset muistomerkithän eivät kauas taaksepäin ajassa
ylety?

Jo Lönnrot huomasi, että samaa runoa eri paikkakunnilla laulettiin


aivan eri tavalla. Kun myöhemmin on kerätty valtavat määrät
toisintoja, on tultu huomaamaan, että kansa samalla seudulla
yleensä laulaa jotakin runoa samalla lailla. Mitä kauempana
muistiinpanopaikat ovat toisistaan sitä erilaisempia ovat toisinnot.
Saattaa aivan asteittain seurata mitenkä runo piirre piirteeltä muuttuu
eri paikkakunnilla. Usein ei kahden toisistaan etäällä olevan seudun
runoja tuntisi samoiksi, ellei olisi selvillä kaikista välimuodoista. Kun
jonkun seudun runossa vielä tapaa vierasmurteisia sanoja, joita ei
monesti ole edes oikein ymmärretty sekä paikkakunnalle outojen
luonnonpaikkojen, eläinten ja kasvien nimiä, niin voidaan niistä
päättää mistä käsin runo on kuultu. Täytyy olettaa, että runot
niinmuodoin ovat levinneet paikkakunnalta toiseen ja kun tätä
runojen kulkua lähemmin tarkastaa, huomaakin, ettei ajan hammas
yleensä niin nopeasti vaikuta runojen muotoon kuin paikkakunnalta
toiseen kulkeutuminen. Mielikuvitukset ja laulut jäävät kautta
sukupolvien perintönä vanhemmilta lapsille, niinkuin puheenparsikin,
eivätkä nopeasti muutu. Mutta niinkuin murre tulee yhä
vieraammaksi, mitä kauemmas kotiseudultasi kuljet, niin sama
runokin vaihtelee. Vieras saattaa kuulemansa käsittää väärin tai
lisätä ennestään tuttuja samaan suuntaan käyviä säkeitä. Tuollaiset
pikkuseikat kuin paikkakunnalla muuten outojen käsitteiden, sanojen
ja itse juonen väärinymmärtäminen siis juuri ovat tärkeitä runon ikää
ja kotiperää tutkittaessa.

Mutta miten runot kulkevat paikkakunnalta toiseen?

Pidoissa ja juhlina, kun väkeä oli koolla, harrastettiin laulua, sillä


olihan laulajille edullista että kuulijoitakin oli. Sellaisissa
tilaisuuksissa saattoivat runoniekat jopa veikaten lyödä kädet
kätehen ja tyhjentää sanaisen arkkunsa koko sisällön. Pitopaikoissa
kun oli koolla naapurikylien väkiä, opittiin siis lähiseutujenkin virsiä.
Aviosiippa otettiin usein myös toisesta kylästä. Tämä tietysti lauloi
oman kylänsä virsiä »värttinätä väätessänsä», joten ne miniän
mukana kotiutuivat. Salokylän asukas saattoi myös kuulla
liikekeskuksissa matkustaessaan uusia tarinoita ja lauluja, joita sitte
koetti kotona uudestaan laulaa. Ellei niitä sana sanalta muistanut,
muutti hän ne tuttuun laulutapaansa, soinnutellen joukkoon muista
yhteyksistä muistamiansa säkeitä.

Kehittynein laulutapa ja suurin rakkaus Kalevalan aiheisiin


kertomarunoihin on ollut Vienan läänin asukkailla. Painetun
Kalevalan runot perustuvat suurimmaksi osaksi heiltä saatuihin
toisintoihin. Kalevalan kertovaisia runoja laulettiin kyllä viime
vuosisadalla vielä kautta koko Vironmaan sekä Inkerissä, missä vain
on suomalaista väestöä, Karjalan kannaksella, Laatokan länsi- ja
pohjoisrantamilla, Suomen Karjalassa, Pohjois-Aunuksessa ja
Vienan läänin läntisessä osassa. Mutta mitä etelämmäksi tuota
kertovaisten runojen varsinaista laulualuetta tulemme Vienan
läänistä, sen lyhyemmiksi ja yksinkertaisemmiksi runot muuttuvat.

Viron ja Inkerin runoissa on lyyrillinen aines rikkaimmin


edustettuna. Lyyrillisiin, tunnelmarunoihin, verrattuna on pitkiä
kertovaisia runoja siellä vähän. Tuohon niin sanoakseni lyyrilliseen
katsantokantaan eteläisellä runoalueella on tietysti omat luonnolliset
syynsä. Siellä viljelee eniten vain naisväki lauluja ja siksipä ne ovat
lyhyenläntiä leikki-, pila-, kosio- ja tunnelmarunoja ja balladeja.
Nämä alueet ovat olleet aateliston — saksalaisen, ruotsalaisen,
liettualaisen, puolalaisen ja venäläisen — temmellyskenttänä. Ei ollut
kuin Suomen Karjalassa ja Vienan läänissä partasuilla uroilla aikaa
miettiä salaperäisiä runoja kotiaskareissa ja metsästys- sekä
kalastusretkillä. Edessä oli jokaisella miehellä orjan työt. Joukolla
raadettaessa pehtorein ruoskan alaisina ei tehnyt mieli punoa
runomuotoon taruja, siihen ei ollut rauhaa ja tuskinpa työn
touhinassa olevista sellaiselle sai kuulijaakaan. Häihin ja juhliin
sopivat niinikään paremmin lyyrilliset sepitelmät. Virolaisen heimon
koillisin osa, Peipusjärven lounaisella rannalla oleva Setumaa, on
ollut rauhallisempi kolkka kuin muut osat eteläisestä laulualueesta.
Räikeät vieraat kulttuurivirtaukset ja olojen muutokset eivät siellä ole
tukahuttaneet hiljaista mietiskelyä ja siellä elääkin senvuoksi alueen
pienuuteen verraten rikas muinaisaikainen runolaulu. Mutta
valitettavasti se on jäänyt eristetyksi, vaikuttamatta Kalevalan
kehitykseen, sillä setukaiset ovat muilta oppineet runoaiheita, mutta
muut eivät ole heillä opissa olleet. Runojen näet on huomattu
kulkevan kultturin mukana, siten että syrjäisten seutujen asukkaat
oppivat lauluja muilta; mutta etäisiltä saloseuduilta eivät runot enää
muuanne leviä. Siksipä oletetaan useimpien runoaiheiden
kulkeutuneen sekä etelästä että Länsi-Suomesta Vienan läänin
saloja kohti ja noissa rauhallisissa erämaissa vasta saavuttaneen
korkeimman kehityksensä. Viron ja Inkerin paimenpoikain laulut,
naisten lyyrilliset tunnelmat, joissa »minä» on kaiken keskustana tai
Länsi-Suomesta käsin kuullut pyhimystarut ja loihtuaiheet liittyvät
Vienan Karjalan partasuun laulajan huulilla kaikki heidän
haaveksimiensa sankarien Väinämöisen, Ilmarisen, Joukahaisen,
Kullervon ja Lemminkäisen ja salaperäisen Sammon kuvauksiin.

Vaikkakin kertovaisia runoja on laulettu vain tuolla kapealla


kaistaleella Virosta Vienan läänin pohjois-osaan saakka, on silti
aiheita, joko suorasanaisia tai runomitallisia voitu saada myöskin
Suomesta, joten koko Suomen suomea puhuva kansa ja virolaiset
ovat olleet mukana Kalevalaa luomassa. Prof. Kaarle Krohn on
laajoissa tutkimuksissaan koettanut tehdä pesäjaon siitä missä käsin
eri runoaiheet ovat syntyneet. Hänen tutkimuksiensa mukaan on
Länsi-Suomi antanut lukuisimmat ainekset Kalevalan
kertomarunoihin — kokonaista 23 aihetta, niiden joukossa sellaiset
kuin Kilpalaulanta, Väinämöisen ammunta, Verentulva Polvenhaava-
runossa, Lemminkäisen Luotolanretki, Kaukamoisen runo, Sisaren
turmelus y.m. Virosta alkuisin on 20 eri aihetta, m.m. Luomisruno, Iso
tammi, Ansiotyöt, Iso härkä, Kultaneidon taonta ja Kanteleen synty.
Inkeriläisten osuus rajoittuu pariin kertomarunoon ja »pohjoisilla
karjalaisalueilla syntyneeksi jää tuskin ainoatakaan runon
alkuluonnosta».

Karjalaisten ansioista Kalevalan runoihin sanoo Krohn m.m.:


»Vaikka he eivät olisikaan mitään muuta tehneet kuin muistissa
säilyttäneet Länsi-Suomesta vähiin jälkiin kadonneita runoja, oltaisiin
heille siitä suuressa kiitollisuuden velassa. Mutta he ovat tehneet
paljoa enemmän. Jos vertaamme virolaisia runoja, vaikkapa vaan
lähempiin länsi-inkeriläisiin, niin havaitsemme helposti, että
karjalaisilla laulajilla on ollut erikoinen runollinen lahja, joka ilmenee
sekä runon piirteiden edelleen kehittämisessä että eri runojen
yhdistelemisessä. Kehittämiskyky saattaa siinä määrin lähetä uuden
aiheen luomista, että toisinaan on vaikea päättää, onko lisäoksa
samasta puusta kasvaen haarautunut vai onko se toisesta puusta
ymppäämällä istutettu. — — Taipumus runojen yhdistelemiseen,
jonka tekee mahdolliseksi kaikille yhteinen runomitta, kuuluu tosin
yleensä Suomalais-virolaisen kansanrunouden ominaisuuksiin.
Mutta sen lisäksi edellyttää runojen järjestäminen varsinaiseksi
jaksoksi toimivaa henkilöä, joka tapausten vaihdellessa pysyy
samana. Viron runoilla ei ole muuta yhteistä henkilöä kuin laulajan
oma minuus, joka tosin voi tunnelmansa pukea yksinkertaiseen
kertomukseen itsestänsä, mutta joka subjektiivisena ja lyyrillisenä ei
mitenkään kykene moniosaista eepillistä jaksoa kannattamaan.
Inkerissä sitä vastoin tapaamme, paitsi Neitsyt Maarian ja Luojan
virsien yhdistelyltä, yhtäjaksoisen sarjan Kalervon pojan seikkoja.
Pohjoisilla runoalueilla, varsinaisesti karjalaisilla, saa runojen kehitys
sekä niiden yhdistely vähitellen koko runoaineiston valtaansa.
Runoaineksissa tapahtuu seuloutuminen, sekaantuminen,
sulautuminen ja uudelleen kiteytyminen. Eteläisempien runoalueiden
eepillisistä aiheista ovat toiset jääneet tykkönään käyttämättä,
toisista on otettu ainoastaan erinäisiä kohtia. Enimmät kertovaisista
aiheista ovat liittyneet muutamiin harvoihin päähenkilöihin. Entisten
aiheiden yhteydessä saattaa tapahtua niin täydellinen sulautuminen,
että syntyy ihan uudenveroinen ja samalla kaikkia alkuluomia
rikkaampi juoni. Samoin eri kuvausten kohdistuessa samaan
henkilöön voi kehittyä yhtä eheä, vaan kaikkia alkukuvia
täydellisempi luonne.»

Selvitettyään mistä seuduilta runojen kotiperä on etsittävissä


asettuu tutkijan vastattavaksi kysymys, milloin ne ovat syntyneet.
Lönnrot itse oli sitä mieltä, että ne olivat alkuisin jo permalaisvallan
ajalta Vienan meren eteläpuolelta. M.A. Castrén piti niitä miltei
ikivanhana perintönä. Hänestä suomalaiset olivat tuoneet osan
runoaiheistaan mukanansa jo uraalialtailaisen suvun alkukodista
Pohjois-Aasiasta. Aug. Ahlqvist väitti Kalevalan runojen syntyneen n.
1000 vuotta sitte karjalaisten (bjarmien) keskuudessa Vienan meren
rannoilla, muuhun Suomeen oli niistä muka joutunut karjalaisten
mailta vain joku pirstale.

Julius Krohn oli runojen ikään nähden suunnilleen samaa mieltä


kuin Ahlqvist, mutta piti Venäjän Karjalan runoja kehityksen
viimeisenä asteena. Hän sekä A. Borenius (Lähteenkorva)
ensimäisinä huomasivat niiden etelästä käsin kulkeutuneen. Julius
Krohn oletti suuren osan runoista olevan luonnontarustoa sekä
lainoja skandinaveilta, liettualaisilta, ja venäläisiltä.

Kaarle Krohn on tutkimuksissaan siirtänyt runojen synnyn sangen


myöhäisiin aikoihin. Hän sanoo, että »alkuluonnokset läntisillä ja
eteläisillä runoalueilla ovat enimmäkseen syntyneet katolisella keski-
ajalla ja että niiden kehitys itäisillä ja pohjoisilla runoalueilla on
tapahtunut pääasiallisesti uudella ajalla». Siis Castrénin 6000—
10,000 vuotta supistaa nykyinen Krohnin edustama suunta
muutamaan vuosisataan. Pakanallis-aiheisia ovat hänen
tutkimustensa mukaan vain: Väinämöisen ammunta, Kilpalaulanta,
Vellamon neidon onginta, Ohran kylvö, Ison sian runo sekä
Sämpsän noudanta. »Mutta näidenkään alkuperää ei ole välttämättä
siirrettävä puhtaasti pakanalliseen aikaan.»

Historiallisen taustan todistaa Krohn olevan runoilla: Hiiden hirven


hiihdäntä, Ahti Saarelainen, Lemminkäisen Luotolanretki,
Kaukamoisen runo sekä Untamon ja Kalervon pojan runolla, koska
»näissä kuvastuvat kauppasuhteet Vironmaan eli Gottlannin kanssa,
ryöstöretket Itämerellä ja viholliset välit Varsinais-Suomen rannoilla
suomalaisten ja ruotsalaisten välillä». »Suurin vaikutus
länsisuomalaiseen runouteen on kaiketi ollut katolisilla legendoilla
(pyhimystaruilla), joihin Kalevalan kertomarunoista perustuvat:
Verentulva Polvenhaava-runossa, Onni pojan ajelu, Pötöisen pojan
Päivölän retki, Kirkon ainepuun etsintä, Tuonelassa käynti, Luojan
laivaretki, Päivän päästö.» Pakanalliset nimet siis näissä olisivat
»painautuneet kristillisen pohjakuvan päälle».

Kysynet minkälaisista alkukudelmista tutkimus (Krohn) selittää


kansamme luoneen nuo meille tutut ja rakkaaksi käyneet Kalevalan
sankarien hahmot.

Alotamme kertomarunojen suurimmasta sankarista


Väinämöisestä. Mikael Agricola sanoo häntä hämäläisten jumalaksi,
joka »virdhet tacoi», Väinämöistä koskevat runot edellyttävät
ensinnäkin sisältönsä puolesta, että hän on kansan mielikuvituksissa
elänyt veden toimivana jumalana. Väinämöisen kertosanana
käytetään Suvantolaista ja itse Väinä-sanan oletetaan merkitsevän
salmea.

Runossa Väinämöisen ja Joukahaisen kilpalaulannasta esiintyy


monta piirrettä, joiden on katsottu todistavan Väinämöisen olevan
vedenjumalan. Selvällä meren selällä tai järven jäällä kerrotaan
Inkerin runoissa hänen Joukahaisen kanssa ajaneen vastatuksin,
niin että vemmel puuttui vempelesen, rahe rakkehen takertui. Ja
samassa tilaisuudessa kehuu tuo laulaja ijän-ikuinen merenpohjan
muodostamista omaksi työkseen. Väinämöisen ammunta tapahtuu
Karjalan runoissa niinikään »ulapalla aukealla» ja on mainitun runon
kieliasussa huomattavissa seikkoja, jotka todistavat sen olevan
Länsi-Suomesta käsin peruisin, joten se siis olisi syntynyt Itämeren
vesien rannoilla. Jo täällä olisi samalla syntynyt käsitys
vedenjumalan soitannollisuudesta, soittoa rakastavaksihan
ruotsalaisetkin kuvittelevat Näkkiä. Karjalaan ennätettyään tuo
käsitys Väinämöisen laulun rakkaudesta saa yhä yltyä; jos hän
ammuttaisiin, niin ilo ilmoilta katoisi, laulu mailta lankeaisi. Tämä
soitannollinen veden jumala on sitte kansan mielikuvituksissa käynyt
yhä inhimillisemmäksi, hänestä on tullut sankari ja tietäjä.

Länsi-suomalaisissakin Tulensynty-loitsuissa Väinämöinen ja


Ilmarinen välähyttävät salamoita keskellä merta. Itä-Karjalassa
hänen nimensä jo liittyy sokeasta kanteleensoittajasta, Luojan
Laivaretkestä, Polvenhaavasta, Päivänpäästöstä ja Kilpakosinnasta
kertoviin runoihin. Vienan läänissä Väinämöinen vielä on Sammon
taonta- ja Tuonelassakäynti-runoon liittynyt.

Mutta selvitelkäämme mitenkä Väinämöisen personallisuuteen on


liittynyt kuvauksia kristillisestä aatepiiristä!

Oletetaan, että kun Karjalan kansa on kuullut hämäräperäisiä


katolisia kertomuksia suuritietoisesta jumalan pojasta, on se nuo
legendat helposti yhdistänyt Väinämöiseen, jota sanotaan joskus
runossa »pätöiseksi pojaksi» ja hänen loitsujansa pyhiksi sanoiksi.

Runoissa kerrotaan, mitenkä Väinämöinen veisteli vuorella venettä


ja kirves luiskahti polveen. Kun tahdottiin kuvata polvesta
pursuilevan veritulvan suuruutta juolahti laulajain mieleen
kuulemansa kertomukset »pyhän urohon», Vapahtajan veren
vuodatuksesta, jota hengelliset laulut kuvailivat niin valtavaksi, että
se tulvi yli koko maan. Ei tietysti ole tarvis olettaa, että koko runo
Väinämöisen veneen veistosta, polven haavasta ja tietäjän
etsinnästä veritulvan tukkijaksi on kristillistä alkuperää, mutta ei käy
kieltäminen, että esitys on saanut vauhtia ja lisäpiirteitä kristillisistä
taruista.

Väinämöisen matkan Tuonelan oraa etsimään arvellaan olevan


niinikään kristinopin vaikutuksesta syntynyt; runoniekat ovat siinä
sovittaneet Väinämöiseen Vapahtajan retken manalaan.

Kalevalan viimeisessä runossa kerrotaan, miten Väinämöisen on


väistyttävä kristinopin tieltä. Se on kokoonpantu kahdesta eri
katolisaiheisesta runosta Marketan ja Neitsyt Marian lauluista.
Karjalan kannaksen Marketan runoissa kerrotaan, miten rikas
Hannus viettelee Marketan. Akat alkavat kummeksua miksi tämä
alkaa pysytellä saunassa. Eräänä päivänä löydetään portailta äsken
syntynyt poikalapsi. Kaikki kieltävät olevansa viattomia ja Marketan
äiti Helena lausuu jo tuomion, että isätön ja äiditön heitettäköön
veteen, mutta silloin tapahtuu se ihme, että lapsi itse alkaa puhua ja
ilmoittaa vanhempiensa nimet: Marketan ja rikkaan Saaren
Hannuksen. Suomen Karjalassa haetaan tuon lapsen ristijäksi pappi,
mutta tämä kieltäytyy kastamasta lasta, jonka vanhemmista ei ole
tietoa, käskeepä muutamissa toisinnoissa hävittämään koko sikiön.
Silloin pienokainen itse mainitsee vanhempiensa nimet,
huomauttaapa vielä että itse ristijä ansaitsisi tulla roviolla
poltettavaksi tai veteen hukutettavaksi. Vienan-läänin runoissa taas
on Virokannas ristijänä, ja eräässä runossa itse Väinämöinen
tuomitsijana määrää lapsen suolle vietäväksi. Poika tokaisee, ettei
tuomaria itseänsäkään suolle viety, vaikka häpäisi oman äitinsä.
Silloin Väinämöinen laulaa itselleen vaskisen purren ja häpeissään
ohjaa sen meren pyörteeseen, kurimuksen kulkun alle. Karjalan
laulajat lisäävät — aivan samaten kuin kuvittelevat kaikki kansat
lempisankareistaan — että Väinämöinen suurine tietoineen vielä
kerran on palaava.
Kristillisistä myöhäisinä aikoina runoon liittyneistä koristeista
huolimatta on Väinämöisestä kertovissa runoissa paljonkin
alkuperäistä suomalaista mielikuvitusta.

Ilmarinen on ehkä vanhimpia suomen suvun jumaluuskäsitteitä.


Hänen kuviteltiin hallitsevan ylisissä ilmoissa, josta iski salamoita.
Myöskin votjakeilla on ollut käsitys Inmar-nimisestä ilman haltijasta.
Agricola mainitsee Ilmarisen hämäläisten jumalien luettelossaan
sanoilla: »Ilmarinen Rauhan ja ilman tei ja Matkamiehet edheswei.»
Samanlainen käsitys ilmaantuu eräässä merimiesten loitsussa, jossa
sanotaan: »pane poskes pussuksiin, puhalla iloinen ilma, minulle
myötäinen myry.» Helppo oli kansan mielikuvituksissaan yhdistää
tämä ilman jumala, joka samalla oli taivaan kannen kalkuttaja,
inhimillisempään seppään, etenkin suorittamaan sellaisia sepäntöitä,
jotka tuntuivat muille mahdottomilta. Inkerissä esiintyy Kultaneidon
taonnasta kertovassa runossa Ilmarinen Viron sepon sijalla.
Karjalassa Ilmarinen jo on Raudansynty-loitsuissa raudan keksijänä
ja liittynyt samalla tavallisena inhimillisenä seppona kilpakosijana
Sampo-retkelle. Vienan Karjalassa hän on ihmeellisen Sammon
takojana ja samaten kuin Väinämöinen Antero Vipusen vatsasta
tietojen etsijänä. Vasta pohjoisemmilla runo-alueilla kaikista
pikkupiirtosista on kehittynyt tuo toimellinen aito suomalainen tyynen
suomalaisen sepän kuvaus, siellä hänet laulajat jo esittävät
inhimillisenä personallisuutena.

Lemmikäisen kuva Kalevalassa on luotu kolmesta eri urhon


haamosta: nuo runojen sankarit ovat: Ahti, Kauko ja Lemminkäinen.
Näidenkin runojen alkujuonen arvellaan olevan Länsi-Suomesta
peruisin. Kaukamoinen lähtee piilemään nimettömään saareen,
tehtyänsä juomingeissa miesmurhan. Krohn arvelee Kaukamoisen
lähteneen ruotsalaisten kostoa pakoon ja että noissa kolmessa
runossa kuvastuisi ne kireät naapurien välit, jotka sukulaisuus-
suhteista huolimatta pysyivät suomalaisten ja ruotsalaisten kesken
Länsi-Suomen rannikoilla.

Lemminkäis-runot kertovat miehestä, joka menee miehelässä


olevan sisarensa vieraaksi. Sisar asettaa veljensä tielle käärmeistä
punotun aidan ja kahle-koirat. Taloon tullessa tarjotaan hänelle
juotavaksi sellaista olutta, jossa vilisee matoja ja käärmeitä.
Suuttuneena surmaa Lemminkäinen lankonsa ja sisarensa. Tähän
runoon liittyy tavallisesti kertomus, mitenkä Lemminkäinen »pätöinen
poika» matkalla saa surmansa. Tämän kuvauksen oletetaan
aiheeltansa olevan kristillistä alkuperää: Tarinan Pohjolan tai
Päivölän pidoista, joihin Lemminkäinen jätetään kutsumatta, on
arveltu kansan muodostelleen raamatun kertomuksesta kuninkaan,
jumalanpojan pidoista. Vielä on runon juonessa huomattu olevan
seuraavat yhtäläisyydet kristillisperäisiin kertomuksiin verrattuina: Äiti
varoittaa Lemminkäistä pitoihin lähtemästä; legendojen mukaan
tekee Neitsyt Maria samaten Kristukselle, kun tämä lähtee
Jerusalemiin pääsiäis-juhlille. Kun Lemminkäinen pidoissa
laulutaidossa voittaa kaikki, on siinäkin tahdottu nähdä kertomus
Jeesus-lapsesta, joka viisaudessa voitti kirjanoppineet. Kun
Lemminkäinen jättää Ulappalan umpisilmän pidoissa laululla
lumoamatta, niin tämä kostoksi ampuu hänet vesuputkella, jonka
varaussanoja äiti ei ollut muistanut pojallensa neuvoa.
Skandinavilaisissa runoissa kerrotaan Balderista, jonka mistelvesalla
surmasi sokea mies. Balderinkin äiti oli vannottanut kaikki
luontokappaleet, paitsi tuota pientä loiskasvia, mistelvesaa, etteivät
ne hänen poikaansa vahingoittaisi. Paha Loke antaa tuon kasvin
sokealle Hodrille, joka sillä ampuu tuon ylijumalan Odinin pojan.
Kristuksesta on olemassa niinikään legenda, että sokea sotamies
Longinus hänen kylkensä lävisti. Juutalaisessa kirjoituksessa
Toledoth Jeschu tarinoidaan Jeesuksen loitsineen kaikki puut,
etteivät ne ristinpuuna kestäisi. Vaan Juudas antaa ilmi
puutarhassaan kasvavan kaalinvarren, joka kestää, ja siihen Jeesus
hirtetään.

Sekä Skandinavian Eddan sankari Balder että Lemminkäisen


kuvaukset ovat siis olleet tuntuvan kristillisen vaikutuksen alaisina.

Voimakkaasti kuvattu Kalevalan sankari Kullervo esiintyy jo


kansanrunoissa jokseenkin eheänä. Eri toisinnot liittyvät
tunnelmansa ja juonensa puolesta hyvin toisiinsa, kansa on tyylitellyt
sen Suomen suvulle tutuista ja ominaisista aiheista, heimoriidoista.
Ei tarvitse vierailta kansoilta etsiä tätä kuvausta: Erakko saa
naapurin. Kumpikin tahtoisi olla yksin halmeiden, metsien ja järvien
omistajia. He ovat leppymättömät toisilleen, kunnes toinen
äkkiarvaamatta hyökkää väkineen naapurin kimppuun, jolloin koko
naapurin väki saa surmansa. Länsi-Suomesta arvellaan Kullervo-
runojen alkuperäisen aiheen olevan saadun. Runoissa näet
kerrotaan Kullervon asuneen Karjalassa ja Unnon, joka Kalervon
väen surmasi, Untolassa. Mynämäen kappelissa on Karjalan kylä ja
muutaman kymmenen virstan päässä Laitilassa on Untamolan kylä.

Runossahan kerrotaan miten Untamo koettaa turhaan saada


hengiltä Kalervon suvun ainoan henkiin jääneen pojan Kullervon,
mutta häneen ei tepsi tuli eikä hirsipuu, eikä hän ota veteen
hukkuaksensa. Kullervon surma-yrityksien on huomautettu
muistuttavan Marketan runoa, jossa kerrotaan miten Marketan poika
ehdotettiin samoin keinoin otettavaksi hengiltä. Inkerin toisintojen
lisäyksistä, että Untamo tahtoi tapattaa naapurinsa kaikki lapset, on
johduttu vertaamaan sitä raamatun kertomukseen Herodeksen
toimeenpanemasta lasten murhasta.

You might also like