Professional Documents
Culture Documents
C++ How to Program 10th Edition Deitel Solutions Manual instant download all chapter
C++ How to Program 10th Edition Deitel Solutions Manual instant download all chapter
Solutions Manual
Go to download the full and correct content document:
https://testbankdeal.com/product/c-how-to-program-10th-edition-deitel-solutions-man
ual/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...
https://testbankdeal.com/product/c-how-to-program-10th-edition-
deitel-test-bank/
https://testbankdeal.com/product/c-how-to-program-7th-edition-
deitel-solutions-manual/
https://testbankdeal.com/product/visual-c-how-to-program-6th-
edition-deitel-solutions-manual/
https://testbankdeal.com/product/c-how-to-program-7th-edition-
deitel-test-bank/
Visual C 2012 How to Program 5th Edition Deitel
Solutions Manual
https://testbankdeal.com/product/visual-c-2012-how-to-
program-5th-edition-deitel-solutions-manual/
https://testbankdeal.com/product/visual-c-how-to-program-6th-
edition-deitel-test-bank/
https://testbankdeal.com/product/visual-c-how-to-program-6th-
edition-deitel-test-bank-2/
https://testbankdeal.com/product/c-how-to-program-early-objects-
version-9th-edition-deitel-solutions-manual/
https://testbankdeal.com/product/visual-c-2012-how-to-
program-5th-edition-deitel-test-bank/
cpphtp10_08.fm Page 1 Wednesday, August 3, 2016 4:28 PM
Pointers 8
Objectives
In this chapter you’ll:
■ Learn what pointers are.
■ Declare and initialize
pointers.
■ Use the address (&) and
indirection (*) pointer
operators.
■ Learn the similarities and
differences between pointers
and references.
■ Use pointers to pass
arguments to functions by
reference.
■ Use built-in arrays.
■ Use const with pointers.
■ Use operator sizeof to
determine the number of
bytes that store a value of a
particular type.
■ Understand pointer
expressions and pointer
arithmetic.
■ Understand the close
relationships between
pointers and built-in arrays.
■ Use pointer-based strings.
■ Use C++11 capabilities,
including nullptr and
Standard Library functions
begin and end.
cpphtp10_08.fm Page 2 Wednesday, August 3, 2016 4:28 PM
2 Chapter 8 Pointers
Self-Review Exercises
8.1 Answer each of the following:
a) A pointer is a variable that contains as its value the of another variable.
ANS: address.
b) A pointer should be initialized to or .
ANS: nullptr, an address.
c) The only integer that can be assigned directly to a pointer is .
ANS: 0.
8.2 State whether each of the following is true or false. If the answer is false, explain why.
a) The address operator & can be applied only to constants and to expressions.
ANS: False. The operand of the address operator must be an lvalue; the address operator
cannot be applied to literals or to expressions that result in temporary values.
b) A pointer that is declared to be of type void* can be dereferenced.
ANS: False. A pointer to void cannot be dereferenced. Such a pointer does not have a type
that enables the compiler to determine the type of the data and the number of bytes
of memory to which the pointer points.
c) A pointer of one type can’t be assigned to one of another type without a cast operation.
ANS: False. Pointers of any type can be assigned to void pointers. Pointers of type void can
be assigned to pointers of other types only with an explicit type cast.
8.3 For each of the following, write C++ statements that perform the specified task. Assume
that double-precision, floating-point numbers are stored in eight bytes and that the starting address
of the built-in array is at location 1002500 in memory. Each part of the exercise should use the re-
sults of previous parts where appropriate.
a) Declare a built-in array of type double called numbers with 10 elements, and initialize
the elements to the values 0.0, 1.1, 2.2, …, 9.9. Assume that the constant size has
been defined as 10.
ANS: double numbers[size]{0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9};
b) Declare a pointer nPtr that points to a variable of type double.
ANS: double* nPtr;
c) Use a for statement to display the elements of built-in array numbers using array sub-
script notation. Display each number with one digit to the right of the decimal point.
ANS: cout << fixed << showpoint << setprecision(1);
for (size_t i{0}; i < size; ++i) {
cout << numbers[i] << ' ';
}
d) Write two separate statements that each assign the starting address of built-in array num-
bers to the pointer variable nPtr.
ANS: nPtr = numbers;
nPtr = &numbers[0];
e) Use a for statement to display the elements of built-in array numbers using pointer/off-
set notation with pointer nPtr.
ANS: cout << fixed << showpoint << setprecision(1);
for (size_t j{0}; j < size; ++j) {
cout << *(nPtr + j) << ' ';
}
cpphtp10_08.fm Page 3 Wednesday, August 3, 2016 4:28 PM
Self-Review Exercises 3
f) Use a for statement to display the elements of built-in array numbers using pointer/off-
set notation with the built-in array’s name as the pointer.
ANS: cout << fixed << showpoint << setprecision(1);
for (size_t k{0}; k < size; ++k) {
cout << *(numbers + k) << ' ';
}
g) Use a for statement to display the elements of built-in array numbers using pointer/sub-
script notation with pointer nPtr.
ANS: cout << fixed << showpoint << setprecision(1);
for (size_t m{0}; m < size; ++m) {
cout << nPtr[m] << ' ';
}
h) Refer to the fourth element of built-in array numbers using array subscript notation,
pointer/offset notation with the built-in array’s name as the pointer, pointer subscript
notation with nPtr and pointer/offset notation with nPtr.
ANS: numbers[3]
*(numbers + 3)
nPtr[3]
*(nPtr + 3)
i) Assuming that nPtr points to the beginning of built-in array numbers, what address is
referenced by nPtr + 8? What value is stored at that location?
ANS: The address is 1002500 + 8 * 8 = 1002564. The value is 8.8.
j) Assuming that nPtr points to numbers[5], what address is referenced by nPtr after nPtr
-= 4 is executed? What’s the value stored at that location?
ANS: The address of numbers[5] is 1002500 + 5 * 8 = 1002540.
The address of nPtr -= 4 is 1002540 - 4 * 8 = 1002508.
The value at that location is 1.1.
8.4 For each of the following, write a statement that performs the specified task. Assume that dou-
ble variables number1 and number2 have been declared and that number1 has been initialized to 7.3.
a) Declare the variable doublePtr to be a pointer to an object of type double and initialize
the pointer to nullptr.
ANS: double* doublePtr{nullptr};
b) Assign the address of variable number1 to pointer variable doublePtr.
ANS: doublePtr = &number1;
c) Display the value of the object pointed to by doublePtr.
ANS: cout << "The value of *fPtr is " << *doublePtr << endl;
d) Assign the value of the object pointed to by doublePtr to variable number2.
ANS: number2 = *doublePtr;
e) Display the value of number2.
ANS: cout << "The value of number2 is " << number2 << endl;
f) Display the address of number1.
ANS: cout << "The address of number1 is " << &number1 << endl;
g) Display the address stored in doublePtr. Is the address the same as that of number1?
ANS: cout << "The address stored in fPtr is " << doublePtr << endl;
Yes, the value is the same.
8.5 Perform the task specified by each of the following statements:
a) Write the function header for a function called exchange that takes two pointers to dou-
ble-precision, floating-point numbers x and y as parameters and does not return a value.
ANS: void exchange(double* x, double* y)
cpphtp10_08.fm Page 4 Wednesday, August 3, 2016 4:28 PM
4 Chapter 8 Pointers
b) Write the function prototype without parameter names for the function in part (a).
ANS: void exchange(double*, double*);
c) Write two statements that each initialize the built-in array of chars named vowel with
the string of vowels, "AEIOU".
ANS: char vowel[]{"AEIOU"};
char vowel[]{'A', 'E', 'I', 'O', 'U', '\0'};
8.6 Find the error in each of the following program segments. Assume the following declara-
tions and statements:
int* zPtr; // zPtr will reference built-in array z
int number;
int z[5]{1, 2, 3, 4, 5};
a) ++zPtr;
ANS: Error: zPtr has not been initialized.
Correction: Initialize zPtr with zPtr = z; (Parts b–e depend on this correction.)
b) // use pointer to get first value of a built-in array
number = zPtr;
ANS: Error: The pointer is not dereferenced.
Correction: Change the statement to number = *zPtr;
c) // assign built-in array element 2 (the value 3) to number
number = *zPtr[2];
ANS: Error: zPtr[2] is not a pointer and should not be dereferenced.
Correction: Change *zPtr[2] to zPtr[2].
d) // display entire built-in array z
for (size_t i{0}; i <= 5; ++i) {
cout << zPtr[i] << endl;
}
ANS: Error: Referring to an out-of-bounds built-in array element with pointer subscript-
ing.
Correction: To prevent this, change the relational operator in the for statement to <
or change the 5 to a 4.
e) ++z;
ANS: Error: Trying to modify a built-in array’s name with pointer arithmetic.
Correction: Use a pointer variable instead of the built-in array’s name to accomplish
pointer arithmetic, or subscript the built-in array’s name to refer to a specific element.
Exercises
8.7 (True or False) State whether the following are true or false. If false, explain why.
a) Two pointers that point to different built-in arrays cannot be compared meaningfully.
ANS: True.
b) Because the name of a built-in array is implicitly convertible to a pointer to the first el-
ement of the built-in array, built-in array names can be manipulated in the same man-
ner as pointers.
ANS: False. An array name cannot be modified to point to a different location in memory
because an array name is a constant pointer to the first element of the array.
8.8 (Write C++ Statements) For each of the following, write C++ statements that perform the
specified task. Assume that unsigned integers are stored in four bytes and that the starting address
of the built-in array is at location 1002500 in memory.
cpphtp10_08.fm Page 5 Wednesday, August 3, 2016 4:28 PM
Exercises 5
a) Declare an unsigned int built-in array values with five elements initialized to the even
integers from 2 to 10. Assume that the constant size has been defined as 5.
ANS: unsigned int values[SIZE]{2, 4, 6, 8, 10};
b) Declare a pointer vPtr that points to an object of type unsigned int.
ANS: unsigned int* vPtr;
c) Use a for statement to display the elements of built-in array values using array sub-
script notation.
ANS: for (int i{0}; i < SIZE; ++i) {
cout << setw(4) << values[i];
}
d) Write two separate statements that assign the starting address of built-in array values
to pointer variable vPtr.
ANS: vPtr = values; and vPtr = &values[0];
e) Use a for statement to display the elements of built-in array values using pointer/offset
notation.
ANS: for (int i{0}; i < SIZE; ++i) {
cout << setw(4) << *(vPtr + i);
}
f) Use a for statement to display the elements of built-in array values using pointer/offset
notation with the built-in array’s name as the pointer.
ANS: for (int i{0}; i < SIZE; ++i) {
cout << setw(4) << *(values + i);
}
g) Use a for statement to display the elements of built-in array values by subscripting the
pointer to the built-in array.
ANS: for (int i{0}; i < SIZE; ++i) {
cout << setw(4) << vPtr[i];
}
h) Refer to the fifth element of values using array subscript notation, pointer/offset nota-
tion with the built-in array name’s as the pointer, pointer subscript notation and point-
er/offset notation.
ANS: values[4], *(values + 4), vPtr[4], *(vPtr + 4)
i) What address is referenced by vPtr + 3? What value is stored at that location?
ANS: The address of the location pertaining to values[3] (i.e., 1002506). 8.
j) Assuming that vPtr points to values[4], what address is referenced by vPtr -= 4? What
value is stored at that location?
ANS: The address of where values begins in memory (i.e., 1002500). 2.
8.9 (Write C++ Statements) For each of the following, write a single statement that performs
the specified task. Assume that long variables value1 and value2 have been declared and value1 has
been initialized to 200000.
a) Declare the variable longPtr to be a pointer to an object of type long.
ANS: long* longPtr;
b) Assign the address of variable value1 to pointer variable longPtr.
ANS: longPtr = &value1;
c) Display the value of the object pointed to by longPtr.
ANS: cout << *longPtr << '\n';
d) Assign the value of the object pointed to by longPtr to variable value2.
ANS: value2 = *longPtr;
e) Display the value of value2.
ANS: cout << value2 << '\n';
f) Display the address of value1.
ANS: cout << &value1 << '\n';
cpphtp10_08.fm Page 6 Wednesday, August 3, 2016 4:28 PM
6 Chapter 8 Pointers
g) Display the address stored in longPtr. Is the address displayed the same as value1’s?
ANS: cout << longPtr << '\n'; yes.
8.10 (Function Headers and Prototypes) Perform the task in each of the following:
a) Write the function header for function zero that takes a long integer built-in array
parameter bigIntegers and a second parameter representing the array’s size and does
not return a value.
ANS: void zero(long bigIntegers[], unsigned int size) or
void zero(long *bigIntegers, unsigned int size)
b) Write the function prototype for the function in part (a).
ANS: void zero(long bigIntegers[], unsigned int size); or
void zero(long *bigIntegers, unsigned int size);
c) Write the function header for function add1AndSum that takes an integer built-in array
parameter oneTooSmall and a second parameter representing the array’s size and returns
an integer.
ANS: int add1AndSum(int oneTooSmall[], unsigned int size) or
int add1AndSum(int *oneTooSmall, unsigned int size)
d) Write the function prototype for the function described in part (c).
ANS: int add1AndSum(int oneTooSmall[], unsigned int size); or
int add1AndSum(int *oneTooSmall, unsigned int size);
8.11 (Find the Code Errors) Find the error in each of the following segments. If the error can be
corrected, explain how.
a) int* number;
cout << number << endl;
ANS: Pointer number does not "point" to a valid address—assigning a valid address of an
int to number would correct this the problem. Also, number is not dereferenced in the
output statement.
b) double* realPtr;
long* integerPtr;
integerPtr = realPtr;
ANS: A pointer of type double cannot be directly assigned to a pointer of type long.
c) int* x, y;
x = y;
ANS: Variable y is not a pointer, and therefore cannot be assigned to x. Change the assign-
ment statement to x = &y; or declare y as a pointer.
d) char s[]{"this is a character array"};
for (; *s != '\0'; ++s) {
cout << *s << ' ';
}
ANS: s is not a modifiable value. Attempting to use operator ++ is a syntax error. Changing
to [] notation corrects the problem as in:
for (int t{0}; s[t] != '\0'; ++t)
cout << s[t] << ' ';
e) short* numPtr, result;
void* genericPtr{numPtr};
result = *genericPtr + 7;
ANS: A void * pointer cannot be dereferenced.
cpphtp10_08.fm Page 7 Wednesday, August 3, 2016 4:28 PM
Exercises 7
f) double x = 19.34;
double xPtr{&x};
cout << xPtr << endl;
ANS: xPtr is not a pointer and therefore cannot be assigned an address. Change xPtr’s type
to double* to correct the problem. The cout statement display’s the address to which
xPtr points (once the previous correction is made)—this is not an error, but normally
you’d output the value of what the pointer points to, not the address stored in the
pointer.
8.13 (What Does This Code Do?) What does this program do?
ANS:
8 Chapter 8 Pointers
8.14 (What Does This Code Do?) What does this program do?
ANS:
1. In Exercises 19.30–19.34, we’ll “peel open” a simple hypothetical compiler that will translate state-
ments in a simple high-level language to the machine language you use here. You’ll write programs
in that high-level language, compile them into machine language and run that machine language on
your computer simulator.
cpphtp10_08.fm Page 9 Wednesday, August 3, 2016 4:28 PM
information in the Simpletron is handled in terms of words. A word is a signed four-digit decimal
number, such as +3364, -1293, +0007, -0001, etc. The Simpletron is equipped with a 100-word
memory, and these words are referenced by their location numbers 00, 01, …, 99.
Before running an SML program, we must load, or place, the program into memory. The first
instruction (or statement) of every SML program is always placed in location 00. The simulator
will start executing at this location.
Each instruction written in SML occupies one word of the Simpletron’s memory; thus,
instructions are signed four-digit decimal numbers. Assume that the sign of an SML instruction is
always plus, but the sign of a data word may be either plus or minus. Each location in the Sim-
pletron’s memory may contain an instruction, a data value used by a program or an unused (and
hence undefined) area of memory. The first two digits of each SML instruction are the operation
code that specifies the operation to be performed. SML operation codes are shown in Fig. 8.3.
Input/output operations
const int read{10}; Read a word from the keyboard into a specific location in
memory.
const int write{11}; Write a word from a specific location in memory to the
screen.
Load and store operations
const int load{20}; Load a word from a specific location in memory into the
accumulator.
const int store{21}; Store a word from the accumulator into a specific location
in memory.
Arithmetic operations
const int add{30}; Add a word from a specific location in memory to the word
in the accumulator (leave result in accumulator).
const int subtract{31}; Subtract a word from a specific location in memory from
the word in the accumulator (leave result in accumulator).
const int divide{32}; Divide a word from a specific location in memory into the
word in the accumulator (leave result in accumulator).
const int multiply{33}; Multiply a word from a specific location in memory by the
word in the accumulator (leave result in accumulator).
Transfer-of-control operations
const int branch{40}; Branch to a specific location in memory.
const int branchneg{41}; Branch to a specific location in memory if the accumulator
is negative.
const int branchzero{42}; Branch to a specific location in memory if the accumulator
is zero.
const int halt{43}; Halt—the program has completed its task.
10 Chapter 8 Pointers
The last two digits of an SML instruction are the operand—the address of the memory loca-
tion containing the word to which the operation applies.
Now let’s consider two simple SML programs. The first (Fig. 8.4) reads two numbers from the
keyboard and computes and displays their sum. The instruction +1007 reads the first number from
the keyboard and places it into location 07 (which has been initialized to zero). Instruction +1008
reads the next number into location 08. The load instruction, +2007, places (copies) the first num-
ber into the accumulator, and the add instruction, +3008, adds the second number to the number
in the accumulator. All SML arithmetic instructions leave their results in the accumulator. The store
instruction, +2109, places (copies) the result back into memory location 09. Then the write instruc-
tion, +1109, takes the number and displays it (as a signed four-digit decimal number). The halt
instruction, +4300, terminates execution.
00 +1007 (Read A)
01 +1008 (Read B)
02 +2007 (Load A)
03 +3008 (Add B)
04 +2109 (Store C)
05 +1109 (Write C)
06 +4300 (Halt)
07 +0000 (Variable A)
08 +0000 (Variable B)
09 +0000 (Result C)
The SML program in Fig. 8.5 reads two numbers from the keyboard, then determines and
displays the larger value. Note the use of the instruction +4107 as a conditional transfer of control,
much the same as C++’s if statement.
00 +1009 (Read A)
01 +1010 (Read B)
02 +2009 (Load A)
03 +3110 (Subtract B)
04 +4107 (Branch negative to 07)
05 +1109 (Write A)
06 +4300 (Halt)
07 +1110 (Write B)
08 +4300 (Halt)
09 +0000 (Variable A)
10 +0000 (Variable B)
b) Use a counter-controlled loop to read seven numbers, some positive and some negative,
and compute and display their average.
ANS:
00 +2018 (Load Counter)
01 +3121 (Subtract Termination)
02 +4211 (Branch zero to 11)
03 +2018 (Load Counter)
04 +3019 (Add Increment)
05 +2118 (Store Counter)
06 +1017 (Read Value)
07 +2016 (Load Sum)
08 +3017 (Add Value)
09 +2116 (Store Sum)
10 +4000 (Branch 00)
11 +2016 (Load Sum)
12 +3218 (Divide Counter)
13 +2120 (Store Result)
14 +1120 (Write Result)
15 +4300 (Halt)
16 +0000 (Variable Sum)
17 +0000 (Variable Value)
18 +0000 (Variable Counter)
19 +0001 (Variable Increment)
20 +0000 (Variable Result)
21 +0007 (Variable Termination)
c) Read a series of numbers, and determine and display the largest number. The first num-
ber read indicates how many numbers should be processed.
ANS:
00 +1017 (Read Endvalue)
01 +2018 (Load Counter)
02 +3117 (Subtract Endvalue)
03 +4215 (Branch zero to 15)
04 +2018 (Load Counter)
05 +3021 (Add Increment)
06 +2118 (Store Counter)
07 +1019 (Read Value)
08 +2020 (Load Largest)
09 +3119 (Subtract Value)
10 +4112 (Branch negative to 12)
11 +4001 (Branch 01)
12 +2019 (Load Value)
13 +2120 (Store Largest)
14 +4001 (Branch 01)
cpphtp10_08.fm Page 12 Wednesday, August 3, 2016 4:28 PM
12 Chapter 8 Pointers
Meent gij, dat Homerus dit gedicht heeft, als ware de ziel een
harmonie en geaard zich door de indrukken van het lichaam te laten
leiden, en niet in de vaste gedachte dat zij geaard is deze te leiden
en erover te heerschen, en dat zij een veel goddelijker iets is dan
een harmonie of zoo?—Bij Zeus, o Sokrates, ik denk van-wel.—
Derhalve, o mijn beste, is het in geen enkel opzicht schoon voor ons,
van de ziel te zeggen dat zij een soort harmonie is. Want zóo
95 zouden wij, naar ’t schijnt, noch met Homeros den goddelijken
dichter overeenstemmen, noch met onszelven.—Zoo is het, zeide
hij.
—Goed dan, zeî Sokrates. Harmonia de Thebaansche is ons,
naar ’t schijnt, vrij-wel genadig geworden; maar hoe staat het met
Kadmos, o Kebes? Hoe en met welke redeneering zullen wij hem
verzoenen?—Gij, denk ik, zult dat wel uitvinden, zeide Kebes. Dat
betoog tenminste van zoo-even tegen Harmonia hebt gij wonderlijk
boven verwachting gesproken. Want toen Simmias zeide wat zijn
B bezwaar was, waren wij zeer benieuwd of iemand zijn rede zoû
kunnen te lijf komen. Dus kwam het mij zeer vreemd voor, dat zij al
dadelijk den eersten aanval van uwe rede niet afwachtte. Het zoû mij
dan ook niet verwonderen als Kadmos’ betoog hetzelfde ondervond.
—Mijn goede vriend, zeide Sokrates, spreek niet groot, opdat geen
booze invloed onze komende redeneering overhoop werpe. Maar dit
zal der godheid zorg zijn, doch laten wij, als Homerische helden
nadertredende, de proef nemen of gij iets standhoudends beweert.
De hoofdzaak dan van uw onderzoek bestaat hierin: gij verlangt dat
C van onze ziel bewezen worde dat zij onvergankelijk en onsterfelijk
is, indien een wijsgeer die op het punt van te sterven goedsmoeds is
en meent dat hij na zijn dood daarginds onderscheidenlijk beter zal
varen dan wanneer hij na een leven in een andere richting eindigde,
niet met een onverstandige en dwaze gerustheid gerust zal zijn.
Maar het bewijs, dat de ziel sterk is en godgelijkend en dat zij reeds
vroeger bestond vóor wij mensch geworden zijn,—niets verhindert,
zegt gij, dat dit alles niet aanduidt: onsterfelijkheid, doch alleen dat
D de ziel langdurig is en vroeger licht een onmetelijk langen tijd
bestond en vele dingen wist en deed. Toch was zij daarom niets
meer onsterfelijk, maar juist haar komst in een menschelijk lichaam
was voor haar het begin van den ondergang als eene ziekte. En
lijdende zoû zij dan dit leven doormaken en ten-laatste in den
zoogenaamden dood te-gronde-gaan. Het maakt dan, zegt gij, geen
verschil of zij éenmaal of meermalen in een lichaam komt, voor de
vraag of een ieder van ons zich bevreesd behoeft te maken. Want
zich bevreesd maken behoort, indien hij niet onverstandig is, ieder
E die niet weet en niet verantwoorden kan, dat de ziel onsterfelijk is.
Dat vrij-wel is, meen ik, o Kebes, wat gij beweert. En met opzet haal
ik het vele malen op, opdat geen enkel ding ons ontsnappe, en
opdat gij, indien gij wilt, er nog iets aan toe kunt voegen of ervan
afnemen.—Kebes zeide: Voorshands behoef ìk er niets van af te
nemen of eraan toe te voegen. Doch dit is werkelijk wat ik beweer.
Sokrates nu wachtte een geruimen tijd en overwoog iets bij zich-
zelven. Toen sprak hij: Geen geringe zaak, o Kebes, verlangt gij;
want door-en-door moeten wij omtrent wording en verderf de
96 oorzaak doorzoeken. Ik nu zal, als gij dat goed-vindt, mijne
eigene levenservaringen daaromtrent voor u doorloopen, dan kunt
gij als iets van wat ik zeg, u bruikbaar voorkomt, dat aanwenden tot
een grootere zekerheid betreffende de dingen waarvan gij spreekt.—
Voorwaar, zeide Kebes, dat wil ik graag.—Hoor dan toe; want ik
begin. Ik namelijk, o Kebes, verlangde, toen ik jong was, wonderlijk-
hoe-zeer naar die wijsheid die men natuurkunde noemt. Want zij
kwam mij voor overheerlijk te zijn, te weten de oorzaken van elk
ding, waarom elk ding ontstaat en waarom te-niet-gaat en waarom
B bestaat. En vele malen tobde ik mij af met zoodanige
beschouwingen: of, wanneer het warme en het koude een zekere
gisting aanneemt, dan, zooals sommigen beweren, de levende
wezens zich voeden, en of het het bloed is waarmeê wij denken, of
de lucht of het vuur of wel geen van deze, maar dat het de hersenen
zijn die de zinlijke waarnemingen verschaffen van hooren en zien en
ruiken, en dat uit deze ontstaat herinnering en meening, en uit
herinnering en meening, wanneer die tot rust gekomen zijn, op
dezelfde wijze weêr wetenschap. En een anderen keer onderzocht ik
C de oorzaken van vernietiging van deze dingen, en de
verschijnselen in den hemel en op de aarde, en ik kwam mij ten-
laatste voor tot dat onderzoek zoo van-nature ongeschikt te zijn als
geen ander ding ter wereld. Een toereikend bewijs zal ik u zeggen.
Immers, zelfs wat ik vroeger zeker wist, zooals het tenminste mij-zelf
en den anderen voorkwam, daarin werd ik door dat onderzoek zoo
zeer verblind, dat ik verleerde óok wat ik voordien meende te weten,
zoowel omtrent vele andere dingen als ook bij-voorbeeld waardoor
een mensch groeit. Want hiervan meende ik voordien dat het een
D ieder duidelijk was, dat dat komt door eten en drinken; want dat
wanneer uit de spijzen aan het vleesch, vleesch is toegevoegd, en
aan het been, been, en zoo op dezelfde wijze ook aan elk der
overige dingen wat daarbij behoort, dan daarna de omvang van klein
groot geworden is, en dat zoo een mensch van klein groot wordt.
Zoo meende ik toen. Vindt gij niet, vrij-wel terecht?—Ik wel, zeide
Kebes.—Ga dan ook nog eens het volgende na. Ik meende namelijk
tevreden te kunnen zijn met mijn inzicht, wanneer een groote
mensch naast een kleinen kwam te staan en hij mij door zijn hoofd
E grooter leek te zijn dan de andere, en een paard dan een ander
paard. En wat nog duidelijker is, tien kwam mij voor, meer te zijn dan
acht, doordat men er twee aan heeft toegevoegd, en wat twee el
lang is leek mij grooter te zijn dan iets van éen el, doordat het er half
boven uitstak.—Wat denkt gij daar nu van? vraagde Kebes.—Dat ik
heel ver, bij Zeus, van de meening ben omtrent éen van deze dingen
de oorzaak te weten, ik die bij mij-zelf niet uitmaken kan, dat,
wanneer men een ding bij een ander ding voegt, òf dat waarbij
97 gevoegd is, òf dat wat toegevoegd is, twee geworden is, òf dat zij
beide tezamen door de samenvoeging bij elkander twee geworden
zijn. Want ik vind het onbegrijpelijk, dat, toen elk van beide van
elkander afgezonderd was, elk van beide éen enkel ding was en zij
toen niet twee waren, maar dat, nadat zij tot elkander genaderd zijn,
dit, de vereeniging door het bij elkander gevoegd worden, oorzaak
voor hen wordt om twee te worden. En ook wanneer men een enkel
ding splitst, kan ik niet gelooven dat dit, de splitsing, oorzaak is
geweest van het twee-geworden-zijn. Want nu is de oorzaak van het
B twee-worden de tegengestelde van daar-straks. Want daar-straks
bestond die daarin dat zij bij elkander werden samengebracht en
aan elkander toegevoegd, maar nu dat zij van elkander worden
verwijderd en gescheiden. En ook kan ik mezelf niet meer overtuigen
dat ik weet waarom eenig ding éen wordt, of in-éen-woord van iets
anders waarom iets ontstaat of vergaat of bestaat, als ik deze
richting van methode volg, maar in een andere richting broddel ik
zelf op eigen gelegenheid, en die eerste methode laat ik volstrekt
niet tot mij toe.
C Maar toen ik eens iemand uit een boek, zooals hij zeide van
Anaxagoras, hoorde voorlezen en zeggen, dat het de geest is die
alles regelt en van alles oorzaak is, was ik blijde met die verklaring,
en het leek mij in zekere richting volkomen helder, dat de geest van
alle dingen oorzaak is, en ik meende dat als dit zoo is, de geest die
alles regelt, ook alles ordenen moet als bést is; en dat derhalve
wanneer iemand de oorzaak wil uitvinden omtrent ieder ding, hoe
het ontstaat of vergaat of bestaat, hij daaromtrent dìt moet uitvinden:
hoe het voor dat ding bést is òf te zijn òf wat-anders-ook te
D ondergaan of te doen; en dat op grond van deze verklaring, een
mensch niets anders behoort na te gaan zoowel betreffende dat
bizondere ding als betreffende andere dan het beste en
uitnemendste; en dat noodzakelijk diezelfde mensch ook het
slechtere weet; want dat de kennis omtrent beide éen-en-dezelfde is.
Deze dingen dan bedacht ik met vreugde, en meende van de
oorzaak betreffende het bestaande een onderwijzer gevonden te
hebben niet alleen naar den geest, maar naar mijn eigen hart:
Anaxagoras—en ik meende, dat hij mij eerst wijzen zoû of de aarde
E vlak is of bol, en nadat hij dit aangetoond had, achterna de
oorzaak en de noodwendigheid uiteenzetten, besprekend wat best
voor haar is en dat het best voor haar is zóo te zijn; en wanneer hij
zoû zeggen, dat zij in het midden is, dan dacht ik dat hij daarna zoû
uiteenzetten dat het beste was, dat zij in het midden is; en als hij mij
deze dingen zoû verklaren, was ik gereed geen andere soort van
98 oorzaak meer te begeeren. En ook omtrent zon en maan en de
overige hemellichamen was ik zoo bereid, om mij op dezelfde wijze
te laten onderrichten, omtrent hun onderlinge snelheid en hunne
wendingen en hun overige verschijnsel-gevallen, hoe beschouwd het
wel het beste is, dat zij een elk dat doen en ondergaan wat zij
ondergaan. Want ik meende dat hij, daar hij immers beweerde dat zij
door de géest geordend waren, hun nooit een andere oorzaak zoû
B kunnen toedragen, dan dat het beste is, dat zij zóo zijn als zij zijn.
Door nu aan elk ding afzonderlijk en daarna aan alle dingen
gezamenlijk hun oorzaak toe te kennen, zoû hij, meende ik, wat voor
elk ding het beste was, uiteenzetten, en daarna het voor alle dingen
gemeene goede. En voor geen geld zoû ik mijne verwachtingen
verkocht hebben, maar met grooten ijver nam ik zijn boeken ter hand
en las die zoo snel ik kon om zoo snel mogelijk het beste en het
slechtere te weten.
Van wonderlijk hooge verwachting dan, o mijn vriend, stortte ik
neêr, toen ik al voortlezende een man gewaar werd, die den geest
C volstrekt niet in toepassing bracht tot het regelen der dingen,
maar licht en aither en water en vele andere wonderlijke zaken als
oorzaken opgaf. En het leek mij dat hij even mal deed, als wanneer
iemand beweren zoû dat Sokrates alles wat hij doet, door den geest
doet, en dan zoû trachten de oorzaken aan te geven van al de
dingen die hij doet, en al dadelijk zeggen zoû dat ik nu hier zit,
dáarom omdat mijn lichaam is samengesteld uit beenderen en
pezen, en dat de beenderen vast zijn en door gewrichten van elkaêr
D zijn gescheiden, maar de pezen ingericht om zich te kunnen
spannen en ontspannen, terwijl zij samen met het vleesch en het vel
dat hen samenhoudt, de beenderen omgeven; en dat dus daar mijne
beenderen bewegelijk zijn in hunne gewrichten, mijn pezen door zich
te ontspannen en samen te trekken mij in-staat-stellen op het
oogenblik mijne leden te buigen, en dat ik om die oorzaak
samengebogen hier nederzit. Of ook wanneer iemand andere
dergelijke oorzaken zoû opgeven omtrent ons samenspreken, stem
en lucht en gehoor en andere ontelbare dergelijke als oorzaken
E noemende, zonder zich de moeite te geven de waarachtige
oorzaken te zeggen, dat, nu de Atheners beter hebben gevonden mij
te veroordeelen, daarom ook ik op mijn beurt het beter vond hier
neder te zitten, en rechtvaardiger te blijven en de straf te ondergaan,
die zij bevolen hebben. Want, bij den hond, al-lang, naar ik meen,
99 zouden deze pezen en beenderen in de buurt van Megara of
Boiotia zijn, door een andere opvatting van het beste daarheen
gedragen, indien ik het niet voor rechtvaardiger en schooner hield, in
plaats van te vluchten en op den loop te gaan, aan den staat de
boete te betalen, die hij oplegt. Maar dergelijke dingen oorzaken te
noemen is al te dwaas; doch als iemand zeide, dat buiten het bezit
van dergelijke, beenderen en pezen en al het andere wat ik heb, ik
niet in-staat zoû zijn te doen wat ik goed-vind, zoû hij de waarheid
zeggen; dat ik echter (en dat wel vooropgezet, dat ik handel door
B den geest) wat ik doe, doe op grond van deze dingen, en niet
door de keuze van het beste, zoû groote en ver-reikende
lichtzinnigheid van redeneeren zijn. Want dat men niet
onderscheiden kan dat de wezenlijke oorzaak iets anders is dan dat
zonder wat de oorzaak nooit de oorzaak zoû kunnen zijn! Dáarom
lijkt het mij dat de meesten, tastende als in duisternis, met een
verkeerden naam dit als oorzaak benoemen. Om die reden dan ook
omgeeft de éen de aarde met een maalstroom en stelt dat zij zoo
C onder den hemel blijft, en de ander onderstut haar evenals een
vlakke baktrog met de lucht als basis. Maar naar de macht waardoor
de dingen nu zoo geplaatst zijn als het voor hen het best mogelijk
was gesteld te worden, daarnaar doen zij noch onderzoek, noch
gelooven, dat die goddelijke kracht bezit, maar zij meenen eenmaal
nog een Atlas uit te zullen vinden krachtiger dan dit en onsterfelijker
en die meer alles samenhoudt, en zij meenen dat in-waarheid het
goede en noodwendige niets samenbindt en samenhoudt. Ik nu had
in een dergelijke oorzaaksleer, hoe die dan zij, zeer gaarne leerling
van-wien-dan-ook willen worden. Doch toen ik van deze verstoken
was en niet in-staat geweest was òf haar zelf te vinden òf van een
D ander te leeren,—hoe ik toen mijn tweede vaart naar de
ontdekking der oorzaak ondernomen heb, wilt gij dat ik u daarvan
het relaas zal doen, o Kebes?—Bovenmate, zeide hij, wil ik dat.
—Ik meende dan daarna, zeide hij, toen ik moede geworden was
van naar de wezenlijke dingen te schouwen, op mijn hoede te
moeten zijn, dat ik niet hetzelfde ondervond als menschen die een
zonsverduistering bijwonen en met het oog volgen. Want het komt
wel voor, dat enkelen hun oogen bederven, als zij niet in het water of
E iets dergelijks haar spiegelbeeld beschouwen. Voor iets van dien
aard maakte ook ik mij bezorgd en ik vreesde, dat ik geheel-en-al
verblind zoû worden van ziel door naar de dingen met mijn oogen te