Think Like a Programmer

Typische Programmieraufgaben kreativ lösen am Beispiel von C++
 
 
MITP (Verlag)
  • 1. Auflage
  • |
  • erschienen am 23. April 2013
  • |
  • 304 Seiten
 
E-Book | PDF ohne DRM | Systemvoraussetzungen
978-3-8266-9603-9 (ISBN)
 
Typische Programmieraufgaben kreativ lösen am Beispiel von C++
  • Von der Aufgabe zur Lösung - so gehen Sie vor
  • Probleme analysieren und schrittweise bearbeiten
  • Systematisches Vorgehen lernen und anwenden

Aus dem Inhalt:
  • Strategien zur Problemlösung
  • Eingabeverarbeitung
  • Statusverfolgung
  • Arrays
  • Zeiger und dynamische Speicherverwaltung
  • Klassen
  • Rekursion
  • Wiederverwendung von Code
  • Rekursive und iterative Programmierung
  • Denken wie ein Programmierer

Die Herausforderung beim Programmieren besteht nicht im Erlernen der Syntax einer bestimmten Sprache, sondern in der Fähigkeit, auf kreative Art Probleme zu lösen. In diesem einzigartigen Buch widmet sich der Autor V. Anton Spraul genau jenen Fähigkeiten, die in normalen Lehrbüchern eher nicht behandelt werden: die Fähigkeit, wie ein Programmierer zu denken und Aufgaben zu lösen.
In den einzelnen Kapiteln behandelt er jeweils verschiedene Programmierkonzepte wie beispielsweise Klassen, Zeiger und Rekursion, und fordert den Leser mit erweiterbaren Übungen zur praktischen Anwendung des Gelernten auf.

Sie lernen unter anderem:
  • Probleme in diskrete Einzelteile zerlegen, die sich leichter lösen lassen
  • Funktionen, Klassen und Bibliotheken möglichst effizient nutzen und wiederholt verwenden
  • die perfekte Datenstruktur für eine Aufgabenstellung auswählen
  • anspruchsvollere Programmiertechniken wie Rekursion und dynamischen Speicher einsetzen
  • Ihre Gendanken ordnen und Strategien entwickeln, um bestimmte Problemkategorien in Angriff zu nehmen

Die Beispiele im Buch werden mit C++ gelöst, die dargestellten kreativen Problemlösungskonzepte gehen aber weit über die einzelnen Programmiersprachen und oft sogar über den Bereich der Informatik hinaus.
Denn wie die fähigsten Programmierer wissen, handelt es sich beim Schreiben herausragender Quelltexte um kreative Kunst und der erste Schritt auf dem Weg zum eigenen Meisterwerk besteht darin, wie ein Programmierer zu denken.

Über den Autor:
V. Anton Spraul hat über 15 Jahre lang Vorlesungen über die Grundlagen der Programmierung und Informatik gehalten. In diesem Buch fasst er die von ihm dabei perfektionierten Verfahren zusammen. Er ist auch Autor von »Computer Science Made Simple«.
2013
  • Deutsch
  • Frechen
  • |
  • Deutschland
mitp Verlags GmbH & Co.KG
  • Programmierer
  • 4,26 MB
978-3-8266-9603-9 (9783826696039)
weitere Ausgaben werden ermittelt
V. Anton Spraul gibt seit mehr als 15 Jahren Kurse zur Einführung in die Programmierung und Computerwissenschaften. In diesem Buch vereint er die Techniken, mit denen er in zahlreichen Einzelstunden Programmierschülern geholfen hat.
  • Cover
  • Titel
  • Impressum
  • Inhaltsverzeichnis
  • Danksagungen
  • Einführung
  • Über dieses Buch
  • Voraussetzungen
  • Ausgewählte Themen
  • Programmierstil
  • Übungen
  • Warum C++?
  • Strategien zur Problemlösung
  • 1.1 Klassische Rätsel
  • 1.1.1 Fuchs, Gans und Getreidesack
  • Aufgabe: Wie kann der Fluss überquert werden?
  • 1.1.2 Schiebepuzzles
  • Aufgabe: Verschieben der 8
  • Aufgabe: Verschieben der 5
  • 1.1.3 Sudoku
  • Aufgabe: Vervollständigen eines Sudoku-Quadrats
  • 1.1.4 Das Quarrasi-Schloss
  • Aufgabe: Öffnen des außerirdischen Schlosses
  • 1.2 Gängige Verfahren zur Problemlösung
  • 1.2.1 Niemals ohne Plan
  • 1.2.2 Umformulieren der Aufgabenstellung
  • 1.2.3 Zerlegung in Teilaufgaben
  • 1.2.4 Mit Bekanntem anfangen
  • 1.2.5 Reduktion der Problemstellung
  • 1.2.6 Analogien suchen
  • 1.2.7 Experimentieren
  • 1.2.8 Nicht entmutigen lassen
  • 1.3 Übungen
  • Wahre Rätsel
  • 2.1 Verwendete C++-Syntax
  • 2.2 Ausgabe von Mustern
  • Aufgabe: Halbiertes Quadrat
  • Aufgabe: Quadrat (Halbiertes Quadrat, Reduktion)
  • Aufgabe: Zeile (Halbiertes Quadrat, weitere Reduktion)
  • Aufgabe: Herunterzählen durch Hochzählen
  • Aufgabe: Hochkant stehendes Dreieck
  • 2.3 Eingabeverarbeitung
  • Aufgabe: Test einer Luhn-Prüfsumme
  • 2.3.1 Zerlegung der Aufgabenstellung
  • Aufgabe: Ziffer in Ganzzahl konvertieren
  • Aufgabe: Test einer Luhn-Prüfsumme fester Länge
  • Aufgabe: Test einer einfachen Prüfsumme fester Länge
  • Aufgabe: Positiv oder negativ
  • 2.3.2 Zusammenstellen der Teillösungen
  • 2.4 Statusverfolgung
  • Aufgabe: Entschlüsseln einer Botschaft
  • Aufgabe: Einlesen einer Zahl mit drei oder vier Ziffern
  • Aufgabe: Einlesen einer Zahl mit drei oder vier Ziffern, weiter vereinfacht
  • 2.5 Fazit
  • 2.6 Übungen
  • Arrays
  • 3.1 Array-Grundlagen
  • 3.1.1 Speichern
  • 3.1.2 Kopieren
  • 3.1.3 Zugriff und Suche
  • 3.1.4 Sortieren
  • 3.1.5 Statistische Werte
  • 3.2 Aufgabenstellungen mit Arrays
  • Aufgabe: Modalwert berechnen
  • 3.2.1 Refactoring
  • 3.3 Arrays mit fest vorgegebenen Daten
  • 3.4 Nicht-skalare Arrays
  • 3.5 Mehrdimensionale Arrays
  • 3.6 Wann werden Arrays verwendet?
  • 3.7 Übungen
  • Zeiger und dynamische Speicherverwaltung
  • 4.1 Zeiger-Grundlagen
  • 4.2 Vorteile von Zeigern
  • 4.2.1 Festlegung der Größe von Datenstrukturen zur Laufzeit
  • 4.2.2 Größenänderung von Datenstrukturen
  • 4.2.3 Gemeinsame Speichernutzung
  • 4.3 Wann werden Zeiger verwendet?
  • 4.4 Speicherverwaltung
  • 4.4.1 Stack und Heap
  • 4.4.2 Arbeitsspeicher
  • 4.4.3 Lebensdauer
  • 4.5 Aufgabenstellungen mit Zeigern
  • 4.5.1 Zeichenketten variabler Länge
  • Aufgabe: Bearbeitung von Zeichenketten variabler Länge
  • 4.5.2 Verkettete Listen
  • Aufgabe: Nachverfolgen einer unbekannten Zahl von Schülerdatensätzen
  • 4.6 Fazit und Ausblick
  • 4.7 Übungen
  • Klassen
  • 5.1 Klassen-Grundlagen
  • 5.2 Ziele bei der Verwendung von Klassen
  • 5.2.1 Verkapselung
  • 5.2.2 Wiederverwendung von Code
  • 5.2.3 Zerlegung in Teilaufgaben
  • 5.2.4 Information Hiding
  • 5.2.5 Verständlichkeit
  • 5.2.6 Ausdrucksfähigkeit
  • 5.3 Eine einfache Klasse
  • Aufgabe: Notenliste
  • 5.3.1 Grundgerüst einer Klasse
  • 5.3.2 Unterstützende Methoden
  • 5.4 Klassen mit dynamischen Daten
  • Aufgabe: Nachverfolgen einer unbekannten Zahl von Schülerdatensätzen
  • 5.4.1 Hinzufügen eines Knotens
  • 5.4.2 Umorganisieren einer Liste
  • 5.4.3 Destruktor
  • 5.4.4 Tiefe Kopien (Deep Copy)
  • 5.4.5 Klassen mit dynamischen Daten im Überblick
  • 5.5 Fehlervermeidung
  • 5.5.1 Fingierte Klassen
  • 5.5.2 Monotalente
  • 5.6 Übungen
  • Rekursion
  • 6.1 Grundlagen der Rekursion
  • 6.2 Start- und Endrekursion
  • Aufgabe: Wie viele Papageien?
  • 6.2.1 Lösungsweg 1
  • 6.2.2 Lösungsweg 2
  • Aufgabe: Wer ist unser bester Kunde?
  • 6.2.3 Lösungsweg 1
  • 6.2.4 Lösungsweg 2
  • 6.3 Das Hauptkonzept der Rekursion
  • Aufgabe: Berechnung der Summe eines Arrays von Ganzzahlen
  • 6.4 Häufige Fehler
  • 6.4.1 Zu viele Parameter
  • 6.4.2 Globale Variablen
  • 6.5 Rekursion bei dynamischen Datenstrukturen
  • 6.5.1 Rekursion und verkettete Listen
  • Aufgabe: Negative Zahlen in einer einfach verketteten Liste zählen
  • 6.5.2 Rekursion und Binärbäume
  • Aufgabe: Suche nach dem größten Wert in einem Binärbaum
  • 6.6 Wrapper-Funktionen
  • Aufgabe: Anzahl der Blätter eines Binärbaums
  • 6.7 Wann wird Rekursion verwendet?
  • 6.7.1 Rekursion: Gegenargumente
  • Aufgabe: Ausgabe einer verketteten Liste
  • Aufgabe: Ausgabe einer verketteten Liste in umgekehrter Reihenfolge
  • 6.8 Übungen
  • Wiederverwendung von Code
  • 7.1 Sinnvolle und nicht sinnvolle Wiederverwendung von Code
  • 7.2 Komponenten
  • 7.2.1 Code-Blöcke
  • 7.2.2 Algorithmen
  • 7.2.3 Entwurfsmuster
  • 7.2.4 Abstrakte Datentypen
  • 7.2.5 Bibliotheken
  • 7.3 Kenntnisse über Komponenten erweitern
  • 7.3.1 Forschendes Lernen
  • Aufgabe: Klassenvorsteher
  • 7.3.2 Lernen bei Bedarf
  • Aufgabe: Effizientes Durchlaufen einer Liste
  • 7.4 Auswahl eines Komponententyps
  • 7.4.1 Komponentenwahl in der Praxis
  • Aufgabe: Teilweise Sortierung
  • 7.4.2 Vergleich der Ergebnisse
  • 7.5 Übungen
  • Denken wie ein Programmierer
  • 8.1 Das Gesamtkonzept
  • 8.1.1 Stärken ausschöpfen, Schwächen lindern
  • 8.1.2 Aufbau des Gesamtkonzepts
  • 8.2 Beliebige Aufgabenstellungen in Angriff nehmen
  • Aufgabe: Schummeln beim Galgenmännchen
  • 8.2.1 Wie man schummelt
  • 8.2.2 Erforderliche Operationen zum Schummeln beim Galgenmännchen
  • 8.2.3 Der erste Entwurf
  • 8.2.4 Der erste Code
  • 8.2.5 Analyse der ersten Ergebnisse
  • 8.2.6 Die Kunst des Problemlösens
  • 8.3 Programmierkenntnisse weiterentwickeln
  • 8.3.1 Neue Programmiersprachen
  • 8.3.2 Kenntnisse in bekannten Programmiersprachen erweitern
  • 8.3.3 Zusätzliche Bibliotheken
  • 8.3.4 Besuchen Sie einen Kurs
  • 8.4 Fazit
  • 8.5 Übungen
  • Stichwortverzeichnis

Dateiformat: PDF
Kopierschutz: ohne DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie die kostenlose App Adobe Digital Editions oder eine andere Lese-App für E-Books, z.B. PocketBook (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nur bedingt: Kindle)

Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Ein Kopierschutz bzw. Digital Rights Management wird bei diesem E-Book nicht eingesetzt.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Als Download verfügbar

3,99 €
inkl. 7% MwSt.
E-Book Einzellizenz
PDF ohne DRM
siehe Systemvoraussetzungen
E-Book bestellen