Skip to main content

2024 | Buch

Trullo jagt die Python

Eine elementare Einführung in die Programmierung mit Python

verfasst von: Ernst-Erich Doberkat

Verlag: Springer Berlin Heidelberg

insite
SUCHEN

Über dieses Buch

Dieses Buch ist eine erste Einführung in die Programmierung mit der Sprache Python. Es beginnt ganz elementar, es sind keine Vorkenntnisse erforderlich, auch nicht der Mathematik. Die Installation von Python wird ausführlich beschrieben, auch für Smartphones.

Die Konstruktion von Programmen und Objekten wird im Einzelnen genau diskutiert, meist im konstruktiven Dialog zwischen zwei Gesprächspartnern, Charli und Trullo. Trullo ist zu Beginn ein blanker Anfänger, der im Laufe des Buches an Statur gewinnt. Seine Kenntnisse und auch seine Urteilsfähigkeit nehmen im Laufe der Diskussion zu. Zum Schluss wird gezeigt, wie Python bei der Lösung elementarer mathematischer Probleme helfen kann, also beim Lösen von Gleichungen, bei der Konstruktion von Dreiecken und der Verschlüsselung von Nachrichten.

Inhaltsverzeichnis

Frontmatter
Kapitel 1. Einführung
Zusammenfassung
Dieses Buch ist eine erste und breit zugängliche Einführung in die Programmierung mit der Programmiersprache Python. Die Form, die ich für diese Einführung gewählt habe, ist über weite Strecken ein Dialog zwischen Trullo und Charli. Im Laufe der Diskussion wird deutlich, dass Trullo souveräner im Stoff wird und auch gelegentlich kritische Fragen stellt. Gelegentlich mischt sich ein vorwitziger Geist ein und bietet Kommentare oder Ermutigungen an. An einigen Stellen ist der Dialog durch eine eher textbuchartige Darstellung unterbrochen.
Das Kapitel enthält auch eine Anleitung zur Installation von Python.
Ernst-Erich Doberkat
Kapitel 2. Der Anfang
Zusammenfassung
Irgendwie muss man ja anfangen, mit dem Computer zu sprechen. Wir fangen klein an, sehen uns arithmetische Operationen an, sehen uns an, wie man ihre Resultate speichert. Wir können dann schon ein einfaches Problem lösen. Hierzu führen wir eine für Python ziemlich wichtige Datenstruktur ein, nämlich das Lexikon. Wir erfahren auch gleich, wie man ein solches Lexikon durchläuft. Manche Sachverhalte lassen sich graphisch am besten darstellen. Wir führen dazu Schildkröten ein und lassen sie zeichnen. Um Verwechslungen mit real existierenden Schildkröten zu vermeiden, nennen wir unsere Spezies turtles. Damit kommt auch schon der Import als ganz wichtige Technik ins Spiel, und wir lernen, Methoden zu definieren und zu benutzen. Die Übergabe von Parametern wird hier erläutert, auch einige Feinheiten, die später bei der Lektüre der Dokumentation hilfreich sein können. Die vermittelten Konzepte und sprachlichen Möglichkeiten sind schon so aussagekräftig, dass einige interessante Probleme damit gelöst werden können. Hierzu gehören Wörter, die ihr eigenes Spiegelbild sind, Quersummen und Teilbarkeit sowie das Entfernen eines Elements aus einer Liste. Zwischendurch blicken wir ein wenig keck in die Mathematik und beschreiben eine einfach zu definierende Zahlenfolge, die eine bislang offene Frage stellt.
Ernst-Erich Doberkat
Kapitel 3. Klassen
Zusammenfassung
Klassen und Objekte gehören zu den zentralen Bausteinen von Python. Sie erlauben die objektorientierte Modellierung, insbesondere mit dem mächtigen Instrument der Vererbung.
In diesem Kapitel führen wir Klassen ein. Mit Klassen ist es möglich, Daten und die Methoden, die auf diesen Daten operieren, in einer gemeinsamen Struktur aufzubewahren und anzusprechen. Damit ist klar, dass man Daten und Operationen gemeinsam beschreiben sollte. Das ist nicht ungeschickt und ziemlich praktisch, denn beide sind schließlich eng miteinander verbunden. Eine Klasse wird gern mit einer Schablone verglichen, die selbst noch wenig bewirkt, die aber zum Leben erweckt werden kann. Eine Klasse erweckt man durch Instanziierung zum Leben. Die Exemplare der Klasse, die so entstehen, heißen Objekte. Das ist allerdings die Sicht der Laufzeit, wenn das Programm, das man gedankenreich entworfen hat, zum Leben erweckt wird.
Wir stellen in diesem Kapitel den Entwurf in den Vordergrund und zeigen, wie man schrittweise Klassen entwickelt. Das Verhältnis zwischen Klassen und Objekten lässt sich ganz gut mit einem Beispiel aus der Musik vergleichen. Der Entwurf ist wie eine Komposition, die zunächst auf dem Papier steht. Die Instrumente wissen, was und wie sie spielen sollen, aber man kann selbst mit der größten Mühe der Komposition keinen Ton entlocken. Das geschieht erst, wenn das Musikstück aufgeführt wird. Dann läuft die wohlvorbereitete Maschinerie ab, die Musik klingt, die Anweisungen für die Instrumente werden instanziiert. Hier zeigt sich dann auch, wenn etwas nicht stimmt. Das ist bei der Ausführung eines Programms auch so.
Ernst-Erich Doberkat
Kapitel 4. Datenstrukturen
Zusammenfassung
Bislang wurden Methoden, Klassen und Objekte betrachtet, dazu wurden die Anweisungen definiert, die den Lauf eines Programms bestimmen, die also die Kontrolle über seinen Ablauf innehaben. Es erweist sich als nützlich, sich auch über die Struktur von Daten Gedanken zu machen, also die Frage zu beantworten, wie man Daten am geschicktesten strukturiert.
Wir haben Listen bearbeitet und kurz Lexika benutzt. Dieses Kapitel ist hauptsächlich binären Bäumen gewidmet. Wir führen binäre Bäume als rekursive Datenstruktur ein. Das ist ziemlich naheliegend, denn Bäume zeichnen sich durch eine rekursive Struktur aus: entfernt man die Wurzel, bleiben zwei binäre Bäume zurück. Die Implementierung als Klasse ergibt sich dann fast von selbst. Die Klasse wird dann durch Methoden zur Einfügung in einen Baum und zum Besuch aller seiner Knoten ergänzt.
Binäre Suchbäume sind eine wichtige Unterklasse, die durch Vererbung von der allgemeinen Klasse der binären Bäume implementiert wird. Hier fügen wir eine neue Besuchsstrategie hinzu, die Inordnung.
Es stellt sich heraus, dass die Inordnung die Knoten eines Baums geordnet ausgibt. Das gibt uns Gelegenheit, zwei Sortieralgorithmen zu diskutieren, nämlich Sortieren durch Einfügen und Quicksort. Schließlich fragen wir bei Microsoft nach, wie denn Bing, das allgemeine zugängliche KI-Programm, Quicksort implementieren würde — eine Übung im Programmverstehen.
Ernst-Erich Doberkat
Kapitel 5. Symbolisches Rechnen
Zusammenfassung
Wir werden uns in diesem Kapitel mit dem symbolischen Rechnen in Python beschäftigen. Die Möglichkeit, symbolisch in einer Programmiersprache zu rechnen, ist für eine Sprache der Art von Python, die ja für allgemeine Berechnungen ausgelegt, also eine sogenannte general purpose language ist, recht ungewöhnlich. Es ist schon recht hilfreich, symbolische Rechnungen bruchlos durchführen zu können. Man muss dazu die Programmiersprache nicht verlassen. Wir befassen uns am Anfang mit einigen Vorbereitungen, denn es ist klar, dass symbolisches Arbeiten angegrenzt werden muss. Dann lösen wir Gleichungen, wie sie aus der Schule bekannt sind, wenn man zum Beispiel den Schnittpunkt zweier Geraden berechnen oder die Nullstelle einer Parabel kennenlernen möchte. Das können wir auch visualisieren. Dreiecke sind ebenfalls ein beliebtes Thema der Schulmathematik, auf das wir eingehen. Zum Zeichnen engagieren wir eine Schildkröte, was uns auch mit den vorangegangenen Kapiteln verknüpft. Zum Schluß lernen wir einige Verschlüsselungen kennen. Wer mag, kann in das Rechnen mit Divisionsresten einsteigen.
Ernst-Erich Doberkat
Kapitel 6. Aufgaben helfen verstehen
Zusammenfassung
Aufgaben helfen dabei, den Stoff zu verstehen. Meistens macht man am Anfang Fehler, wenn man eine Aufgabe lösen möchte. Lassen Sie den Kopf nicht hängen, man lernt viel dabei. Wenn’s nicht klappt, versuchen Sie es halt noch einmal. Ich habe die Aufgaben weder nach Schwierigkeitsgrad noch nach Abschnitten geordnet: Wenn Sie denken, Sie wüßten genug, um eine Aufgabe anzugehen, dann tun Sie’s halt. Wenn nicht, sehen Sie sich den Stoff weiter an und kommen dann noch einmal vorbei.
Ernst-Erich Doberkat
Backmatter
Metadaten
Titel
Trullo jagt die Python
verfasst von
Ernst-Erich Doberkat
Copyright-Jahr
2024
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-662-68843-4
Print ISBN
978-3-662-68842-7
DOI
https://doi.org/10.1007/978-3-662-68843-4