Liste der bestätigten Fehler
Seite 14, Zeile 1:
"Wir verknüpfen Zahlen" statt "Wie verknüpfen Zahlen"
(Fehler gefunden von JH am 16.6.2003)
Seite 38 unten:
Fußnote 5: George Boole (1815-1864) lebte und wirkte im 19. Jhd. und nicht im 18. Jhd. ;-)
(Fehler gefunden von FF am 7.5.2002)
Seite 49, Tabelle 1.5:
Der Eintrag zu Python muss lauten:
Erweiterung der Sprache ABC um Ausnahmebehandlung und modulare Erweiterbarkeit
Seite 66, erste Zeile:
"Hallo Welt!\n" (Das Anführungszeichen steht falsch.)
Seite 67 unten:
In Übung 39 kleiner Tippfehler: "in zwei verschiedenen Versionen"
(Fehler gefunden von RZ am 11.4.2006)
Seite 68, letzter Abschnitt:
(Dies ist ein erstes Beispiel für korrekte Klammerung.) Diese Aussage ist zumindest fraglich und daher zu streichen.
Seite 71, Fußnote:
"Verboten sind ebenfalls Namen wir wie $zähler, in denen ...\".
(Fehler gefunden von M. Speckamp am 27.8.2005)
Seite 73 in der Mitte:
"Dies gilt als guter Stil, denn wenn das Programm später jemand liest,
so ist kann es sehr schwer für ihn sein, aus tief im Quelltext
versteckten Konstanten wie 1.609 auf deren Bedeutung zu schließen.
(Fehler gefunden von eric.bender@gmx.de am 12.10.2004)
Seite 76, Zeile 2:
Punktrechnung geht vor Strichrechnung.
(Fehler gefunden von ML am 22.11.2002)
Seite 110, Übung 89:
Die Deutsche Bundesbahn gibt es nicht mehr, nur noch die Deutsche Bahn. :-)
(Fehler gefunden von ML am 22.11.2002)
Seite 137 oben:
Übung 136: ... von n Elementen
(Fehler gefunden von JZ daselbst am 24.8.2008)
Seite 142, Fußnote 1:
Ein besseres Beispiel als Postleitzahlen sind Bankleitzahlen (immer 8-stellig), zu denen der Name der Bank assoziiert werden soll. Oder die Zuordnung Kreditkartennummern (mindestens 12 Stellen) zu den Namen der Besitzer.
Seite 148, Programm foreach.pl, Zeile 1:
(2,3,5,7,11,13). (9 ist keine Primzahl. Peinlich, peinlich...)
(Fehler gefunden von EB)
Seite 153, letzter Abschnitt:
Das zweite Array enthält... das erste Array enthält... (Vertausche erste und zweite.)
(Fehler gefunden von Miles)
Seite 166 in der Mitte:
Übung 162 (Goldbach'sche Vermutung): Das Wort ganze ist zu streichen. (Jede gerade Zahl ist ganz.)
(Fehler gefunden von Franz Fritsche am 14.6.2008)
Seite 171, Tabelle 3.1:
Offenbar haben sich in der neuesten Perl-Version die Kürzel einiger Debugger-Kommandos geändert. Genauere Auskunft erhält man durch man perldebug.
Seite 175 in der Mitte:
Programm Meilenwandler.pl: Die Fehlermeldung, die in Zeile 2 des
Programms als Argument von print steht, ist falsch. Statt "Zu
wenig Argumente!" wäre z. B. "Falsche Anzahl von
Argumenten!" korrekt. In der Beschreibung des Programms
(unter dem abgedruckten Programmtext) heißt es dann auch: "Falls
das Programm nicht mit genau zwei Argumenten aufgerufen wird, gibt es
einen Hinweis auf seinen korrekten Gebrauch aus und ...".
(Fehler gefunden von Franz Fritsche am 21.6.2008)
Seite 203 unten:
Typo (im Absatz Effizienz von Mergesort, letzte Zeile). Es muss heißen "auf Seite 136" statt "auf Seite 135".
(Fehler gefunden von Franz Fritsche am 19.6.2008)
Seite 230 in der Mitte:
In dem abgedruckten Programm BinaereAusgabe.pl ist $zahl in Zeile 18
immer 0 ($zahl wird ja in der while-Schleife sukzessive durch 2
geteilt). Das führt zu einer unsinnigen Ausgabe.
Mögliche Korrektur:
Einschub der Zeile $zahl_orig = $zahl;
zwischen die Zeilen 2 und 4
(als neue Zeile 4) und Änderung der letzten Zeile auf
print "$zahl_orig dezimal ist $bin binaer.\n";
(Fehler gefunden von Franz Fritsche am 7.6.2008)
Seite 242 oben:
Der Kommentar in Zeile 15 des Programms RegulaereAusdruecke2.pl ist nicht korrekt; gematcht wird bcd an Position 14.
(Fehler gefunden von Franz Fritsche am 9.6.2008)
Seite 244 in der Mitte:
Übung 206 c).
Statt "...kein "o" vor einem "u" und..."
muss es heißen "...kein "u" vor einem "o"
und...". Hier war es offenbar in der Tat "für den
Autor einfacher, den regulären Ausdruck hinzuschreiben, als die ihm
entsprechende Formulierung in Prosa zu finden." ;-)
(Fehler gefunden von Franz Fritsche am 10.6.2008)
Seite 249 oben:
Übung 212: "... welche Zahl wie oft gewürfelt wird": Gemeint ist die
Summe der Augenzahlen
(Fehler gefunden von JZiegler am 12.1.2004)
Seite 255 oben:
Im Programm TurmBedrohtFigur.pl (Programm 100) sind die Kommentare in
den Zeilen 23 und 32 fehlerhaft. Statt unten muss es
oben heißen und vice versa. (Vgl. mit der Lösung zu
Übung 219 auf Seite 365 oben.)
(Fehler gefunden von Franz Fritsche am 14.6.2008)
Seite 261, 262
Das Programm Klammercheck.pl auf Seite arbeitet nicht korrekt, weild Perl
den String "0" als false
interpretiert, statt als String, der lediglich aus dem Zeichen '0'
besteht. Anders als (auf Seite 261) behauptet, überliest das Programm
daher "andere Zeichen" - d. h. insbesondere die 0 - nicht einfach:
tatsächlich wird die Auswertung von z. B. {0} nach dem Lesen der 0
abgebrochen, so dass das Programm hier fälschlicherweise "Inkorrekte
Klammerstruktur" ausgibt. (Während das Programm z. B. bei der Eingabe von
{1} korrekterweise "Korrekte Klammerstruktur" ausgibt.)
Mögliche Lösung: In der Funktion HoleNaechstesZeichen wird die Zeile
if ($sc==length($input)) { return undef; }
geändert auf
if ($sc==length($input)) { return ""; }.
(D. h. sobald der ganze String gelesen ist, wird ein Leerstring als
Rückgabewert zurückgeliefert.)
Und in der Funktion Klammercheck wird
while($sym=HoleNaechstesZeichen())
geändert auf
while (($sym=HoleNaechstesZeichen()) ne "").
(D. h. die Schleife wird durchlaufen, bis ein Leerstring zurückgeliefert
wird.)
(Fehler gefunden von Franz Fritsche am 15.6.2008)
Seite 265 ganz oben:
Plural-s fehlt: "...so heißen u und v Geschwister (siblings)", und nicht bloß "sibling".
(Fehler gefunden von Franz Fritsche am 19.6.2008)
Seite 280 ganz oben:
In der Zeile 14 des Programms ZeilenWrap.pl wird $Praefix1
fälschlicherweise ein String mit 5 (statt
4) Leerzeichen zugewiesen. Überall im Text
(und auch im Kommentar zu Zeile 14) wird aber von 4 Leerzeichen
gesprochen; dementsprechend stimmt auch die abgedruckte Ausgabe des
Programms nicht mit der Beschreibung überein: es stehen 5 statt 4
Leerzeichen am Anfang der ersten Zeile.
(Fehler gefunden von Franz Fritsche am 16.6.2008)
Seite 286 oben:
... mit t von von 2 bis x-1 (t startet nicht bei 1.)
Seite 287, Lösung zu Übung 25:
=-2.147.483.648 (Es fehlt das Minus.)
Seite 294, Lösung zu Übung 57, Zeile 5:
Die Zeile sollte mit einem ; abgeschlossen werden. Das Program ist wie angegeben trotzdem syntaktisch korrekt, weil print eine Liste als Argument erwartet, und hinter dem Komma die leere Liste steht, und die letzte Anweisung eines Blocks kein abschließendes Semikolon benötigt.
Seite 334, Lösung zu Übung 140, Zeile 28 und 30
Es ist $passwort durch $pass zu ersetzen.
In Zeile 28 wird die Variable $passwort eingeführt und in
Zeile 30 ausgewertet, in Zeile 33 aber wird $pass abgefragt.
Wenn man sich als "nicht root" einloggen will, braucht man
daher immer 3 Versuche (und muss beim letzten das richtige Passwort
eingeben). Der Gebrauch von use strict hätte diesen Fehler verhindert.
(Fehler gefunden von ckx@gmx.li am 1.1.2003)
Seite 337, Lösung zu Übung 146:
Gefragt war eine for-Schleife, keine while-Schleife:
for ($i = 0; $i <= $#array; $i++) {
Block*;
}
wobei $i der (beliebige) Name einer Variablen ist, die in Block nicht
vorkommt, und Block* sich aus Block dadurch ergibt, dass überall (wo sie
vorkommt) $laufvariable durch $array[$i] ersetzt wird.
(Fehler gefunden von ML am 13.12.2002)
(Fehlerkorrektur verbessert von Franz Fritsche am 8.7.2008)
Seite 339, Lösung zu Übung 148, Zeile 20:
Die Zeile sollte mit einem ; abgeschlossen werden. Das Program ist wie angegeben trotzdem syntaktisch korrekt, weil print eine Liste als Argument erwartet, und hinter dem Komma die leere Liste steht, und die letzte Anweisung eines Blocks kein abschließendes Semikolon benötigt.
(Fehler gefunden von ML am 13.12.2002)
Seite 350 oben:
Druckfehler. Sie ist hier wie in Zeile 105 zu benutzen.
muss es heißen Sie ist hier wie in Zeile 116 zu benutzen.
(Es ist hier von der split-Funktion die Rede.)
(Fehler gefunden von Franz Fritsche am 9.6.2008)
Seite 351 oben:
Druckfehler. Statt "Do you want so save changes (y/n)?" muss es heißen
"Do you want to save changes (y/n)?"
(Fehler gefunden von Franz Fritsche am 9.6.2008)
Seite 357 oben:
In Zeile 28 von Rucksackproblem.pl muss es heißen
.. && gewicht <= $c
denn das Gewicht $c ist ja ebenfalls zulässig.
(Fehler gefunden von J. Ziegler am 9.2.2004)
Seite 357 unten:
Die Lösung zu Übung 198 h) ist fehlerhaft: statt abb
muss es in der Lösung aab heißen.
(Fehler gefunden von Franz Fritsche am 8.6.2008) /
Seite 360 oben:
Die Lösung zu Übung 203 f) ist fehlerhaft: statt a*
muss es in der Lösung a+ heißen. (Gesucht ist ja der Perl-Ausdruck zur Sprache {aba, aabaa, aaabaaa, ...}.)
(Fehler gefunden von Franz Fritsche am 9.6.2008)
Seite 361 ganz oben:
11 print "Das sind ".(100 * $zaehlerE/$zaehler)." %";
(Fehler gefunden von Kursleiter bei eXirius am 1.2.2006)
Seite 362 oben:
Bei der Lösung zur Übung 207 wird/wurde übersehen, dass in der Datei
boersenkurse.txt auch in der Spalte mit dem jeweils aktuellen Kurs in
zwei Fällen statt einer Zahl lediglich ein
"-" steht. Man kann davon ausgehen, dass das sogar für den
Vortagskurs der Fall sein könnte. Daher sind in der Lösung in
der "Nachbearbeitung" diese Fälle noch zu
berücksichtigen:
if ($KursVortag eq "-") {
$KursVortag = 0;
}
if ($KursAktuell eq "-") {
$KursAktuell = 0;
}
Zumindest aber trifft das für den aktuellen Kurs ($KursAktuell) zu.
In der Aufgabenstellung zu Übung 207 ist denn auch in der Tat nur
davon die Rede, "dass manche Aktien an manchen Tagen nicht
gehandelt werden (in der letzten Spalte steht dann ein
"-")." - Es betrifft aber eben (nicht immer) nur die
letzte Spalte.
(Fehler gefunden von Franz Fritsche am 10.6.2008)
Seite 365 ganz unten:
Im Satz "Bei dieser Vorgehensweise werden insgesamt 8^8 = 2^(3*8) = 2^24 = 4*2^20 Stellungen betrachtet, das sind etwa mehr als 4 Millionen." sind mehrere Fehler enthalten:
2^24 = 2^(4+20) = 2^4 * 2^20 = 16*220, und nicht 4*220, wie behauptet.
Das sind dann etwas mehr als 16 Millionen.
(Fehler gefunden von Franz Fritsche am 14.6.2008)
Seite 365 ganz unten:
Im Satz "In der innersten Schleife kann dann durch Scannen der
Zeilen, Spalten und Diagonalen getestet werden, ob sich zwei Damen
gegenseitig bedrohen." ist Spalten zu
streichen. Denn aufgrund des Aufbaus dieser Lösung (mit 8 ineinander
geschachtelten for-Schleifen) ist sichergestellt, dass jeweils nur
eine Dame pro Spalte auf dem Brett erzeugt wird; daher braucht man
diesen Fall nicht mehr eigens zu testen.
(Fehler gefunden von Franz Fritsche am 7.8.2008)
Seite 369, 1. Abschnitt von A.1:
"Selbstkompilieren" statt "Selbstoompilieren"
(Fehler gefunden von JH am 16.6.2003)
Seite 373 unten:
In Tabelle B.1 befindet muss es "Reguläre Ausdrücke" heißen.
(Fehler gefunden von Franz Fritsche am 15.6.2008)
Seite 387 Index Mitte:
Der Indexeintrag Bit - Löschen und Bit - Setzen muss auf Seite 21 verweisen .
Der Indexeintrag Byte 19, 29 muss lauten
Byte 21, 29 .
(Fehler gefunden von Franz Fritsche am 13.6.2008)
Seite 393 Index unten:
Der Indexeintrag "modulo" verweist auf Seite 49, dort findet sich aber kein Stichwort. Es sollte auf Seite 114 verwiesen werden.
(Fehler gefunden von Doris Böhm am 4.4.2005)
|