Inhaltsverzeichnis. Danksagungen... 11



Ähnliche Dokumente
1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

2. Programmierung in C

Kapiteltests zum Leitprogramm Binäre Suchbäume

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Algorithmen & Datenstrukturen 1. Klausur

1 Vom Problem zum Programm

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Programmierkurs Java

Kapitel 6: Graphalgorithmen Gliederung

Klausur zur Einführung in die objektorientierte Programmierung mit Java

E-BILLING: ESD ENHANCED SEARCH & DOWNLOAD INDIVIDUELLES CSV-FORMAT ERSTELLEN

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Stichwortverzeichnis. E Effizienz 112 Eingabeverarbeitung 54 Element eines Arrays 86 Endrekursion 192 Entschlüsselungsmodus 66

Datenstrukturen & Algorithmen

Konzepte der Informatik

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Neue 3D Machine Vision Software im Metro-Stil von Windows 8 lässt in die Zukunft blicken

Task: Nmap Skripte ausführen

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Informatikgrundlagen (WS 2015/2016)

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

Werkschau Web-Präsentationen

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Wofür braucht man eine Tabellenkalkulation? Das Programm Microsoft Excel gehört in Softwarekategorie der Tabellenkalkulationen.

368 4 Algorithmen und Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Minima 3.0 Inmotion_Wave help configurator

Innerhalb der Entwicklungsebene werden Makros in einem sog. zu einer Arbeitsmappe gehörenden Modul gespeichert.

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Binäre Bäume Darstellung und Traversierung

Die Programmiersprache C99: Zusammenfassung

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Kurzeinführung Moodle

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Microsoft Excel Schulungen

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Das Handbuch zu KSystemLog. Nicolas Ternisien

Family Safety (Kinderschutz) einrichten unter Windows 7

Lineare Gleichungssysteme

Übung - Arbeiten mit Android

Professionelle Seminare im Bereich MS-Office

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Anmerkungen zur Übergangsprüfung

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

Übung - Verwendung der Systemwiederherstellung in Windows XP

Datenbanken Microsoft Access 2010

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Anleitung zur Einbindung des dynamischen Stundenplanes in Mobilgeräte und MS Outlook. 2. Voraussetzungen für die Einbindung des Stundenplanes

Lernprogramm "Veröffentlichen von WMS- Services"

Informatik Grundlagen, WS04, Seminar 13

Zugang zum Exchange-Server mit "Entourage" (MAC OS-X)

Stichprobenauslegung. für stetige und binäre Datentypen

Erste Schritte mit Sharepoint 2013

IBM SPSS Statistics Version 22. Konfigurieren von Technologie für behindertengerechte Bedienung

BIA-Wissensreihe Teil 4. Mind Mapping Methode. Bildungsakademie Sigmaringen

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Vergleich: Positionen der Word 2003-Befehle in Word

Tel.: Fax: Ein Text oder Programm in einem Editor schreiben und zu ClassPad übertragen.

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Klausur in Programmieren

Datenstrukturen und Algorithmen

12. Dokumente Speichern und Drucken

Die neue Datenraum-Center-Administration in. Brainloop Secure Dataroom Service Version 8.30

Übung - Datensicherung und Wiederherstellung in Windows 7

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Erklärung zum Internet-Bestellschein

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann,

Whitepaper. Produkt: combit Relationship Manager / address manager. Dateiabgleich im Netzwerk über Offlinedateien

Hyperlink-Erstellung in InDesign für

1 Einleitung. Lernziele. Dokumente vergleichen. Änderungen mit Überarbeitungsfenster bearbeiten Lerndauer. 4 Minuten.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Einführung in PHP. (mit Aufgaben)

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

DIE ZUKUNFT BEGINNT JETZT: ELEKTRONISCHE UNTERSCHRIFT

Erstellen einer in OWA (Outlook Web App)

Aufgabe 1: Der Weidezaun

Wenn Sie das T-Online WebBanking das erste Mal nutzen, müssen Sie sich zunächst für den Dienst Mobiles Banking frei schalten lassen.

16 Architekturentwurf Einführung und Überblick

Internet Kapitel 4 Lektion 3 Organisation

SJ OFFICE - Update 3.0

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

1. Allgemeines. Mit der Vertragsverwaltung können u.a.

Kara-Programmierung AUFGABENSTELLUNG LERNPARCOURS. Abb. 1: Programmfenster. Welt neu erstellen; öffnen; erneut öffnen; speichern; speichern unter

Tipps und Tricks zu Netop Vision und Vision Pro

Grundlagen von Python

MS Excel 2010 Kompakt

Handbuch - Mail-Sheriff Verwaltung

Onlinesuche nach Rechnungen

Programmieren I. Überblick. Institut für Angewandte Informatik

Hochschule München, FK 03 FA SS Ingenieurinformatik

Programmieren I. Kapitel 7. Sortieren und Suchen

Schulung Marketing Engine Thema : CRM Übersicht Funktionen

Dateiname Name(n) und Matrikelnr. des/der Bearbeiter Tel.-Nr. und -Adresse für den Fall, dass die Diskette nicht lesbar ist.

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Kurzanweisung für Google Analytics

Transkript:

Danksagungen............................................ 11 Einführung............................................... 13 Über dieses Buch.......................................... 15 Voraussetzungen................................... 16 Ausgewählte Themen................................ 16 Programmierstil.................................... 16 Übungen.......................................... 17 Warum C++?....................................... 17 1 Strategien zur Problemlösung............................... 19 1.1 Klassische Rätsel.......................................... 20 1.1.1 Fuchs, Gans und Getreidesack........................ 21 Aufgabe: Wie kann der Fluss überquert werden?......... 21 1.1.2 Schiebepuzzles..................................... 25 Aufgabe: Verschieben der 8........................... 26 Aufgabe: Verschieben der 5........................... 27 1.1.3 Sudoku........................................... 30 Aufgabe: Vervollständigen eines Sudoku-Quadrats........ 31 1.1.4 Das Quarrasi-Schloss................................ 33 Aufgabe: Öffnen des außerirdischen Schlosses........... 33 1.2 Gängige Verfahren zur Problemlösung........................ 36 1.2.1 Niemals ohne Plan.................................. 37 1.2.2 Umformulieren der Aufgabenstellung.................. 38 1.2.3 Zerlegung in Teilaufgaben........................... 39 1.2.4 Mit Bekanntem anfangen............................ 40 1.2.5 Reduktion der Problemstellung....................... 41 1.2.6 Analogien suchen................................... 42 1.2.7 Experimentieren.................................... 43 1.2.8 Nicht entmutigen lassen............................. 44 1.3 Übungen................................................ 45 2 Wahre Rätsel............................................. 47 2.1 Verwendete C++-Syntax.................................... 47 5

2.2 Ausgabe von Mustern...................................... 48 Aufgabe: Halbiertes Quadrat.......................... 48 Aufgabe: Quadrat (Halbiertes Quadrat, Reduktion)....... 48 Aufgabe: Zeile (Halbiertes Quadrat, weitere Reduktion).... 49 Aufgabe: Herunterzählen durch Hochzählen............ 50 Aufgabe: Hochkant stehendes Dreieck.................. 51 2.3 Eingabeverarbeitung....................................... 54 Aufgabe: Test einer Luhn-Prüfsumme.................. 54 2.3.1 Zerlegung der Aufgabenstellung....................... 56 Aufgabe: Ziffer in Ganzzahl konvertieren............... 58 Aufgabe: Test einer Luhn-Prüfsumme fester Länge....... 60 Aufgabe: Test einer einfachen Prüfsumme fester Länge... 60 Aufgabe: Positiv oder negativ.......................... 63 2.3.2 Zusammenstellen der Teillösungen.................... 64 2.4 Statusverfolgung.......................................... 66 Aufgabe: Entschlüsseln einer Botschaft................. 66 Aufgabe: Einlesen einer Zahl mit drei oder vier Ziffern.... 71 Aufgabe: Einlesen einer Zahl mit drei oder vier Ziffern, weiter vereinfacht................................... 72 2.5 Fazit.................................................... 81 2.6 Übungen................................................. 81 3 Arrays................................................... 85 3.1 Array-Grundlagen......................................... 86 3.1.1 Speichern.......................................... 86 3.1.2 Kopieren.......................................... 87 3.1.3 Zugriff und Suche.................................. 88 3.1.4 Sortieren.......................................... 89 3.1.5 Statistische Werte................................... 92 3.2 Aufgabenstellungen mit Arrays.............................. 93 Aufgabe: Modalwert berechnen........................ 93 3.2.1 Refactoring........................................ 97 3.3 Arrays mit fest vorgegebenen Daten.......................... 100 3.4 Nicht-skalare Arrays........................................ 102 3.5 Mehrdimensionale Arrays................................... 104 3.6 Wann werden Arrays verwendet?............................. 108 3.7 Übungen................................................. 113 4 Zeiger und dynamische Speicherverwaltung.................... 115 4.1 Zeiger-Grundlagen........................................ 115 6

4.2 Vorteile von Zeigern....................................... 117 4.2.1 Festlegung der Größe von Datenstrukturen zur Laufzeit... 117 4.2.2 Größenänderung von Datenstrukturen................. 117 4.2.3 Gemeinsame Speichernutzung........................ 118 4.3 Wann werden Zeiger verwendet?............................. 119 4.4 Speicherverwaltung........................................ 120 4.4.1 Stack und Heap.................................... 120 4.4.2 Arbeitsspeicher..................................... 124 4.4.3 Lebensdauer....................................... 125 4.5 Aufgabenstellungen mit Zeigern............................. 126 4.5.1 Zeichenketten variabler Länge........................ 127 Aufgabe: Bearbeitung von Zeichenketten variabler Länge............................................. 127 4.5.2 Verkettete Listen.................................... 139 Aufgabe: Nachverfolgen einer unbekannten Zahl von Schülerdatensätzen................................. 139 4.6 Fazit und Ausblick......................................... 148 4.7 Übungen................................................ 149 5 Klassen.................................................. 151 5.1 Klassen-Grundlagen....................................... 151 5.2 Ziele bei der Verwendung von Klassen........................ 153 5.2.1 Verkapselung...................................... 154 5.2.2 Wiederverwendung von Code......................... 155 5.2.3 Zerlegung in Teilaufgaben........................... 155 5.2.4 Information Hiding................................. 156 5.2.5 Verständlichkeit.................................... 158 5.2.6 Ausdrucksfähigkeit.................................. 159 5.3 Eine einfache Klasse....................................... 159 Aufgabe: Notenliste................................. 160 5.3.1 Grundgerüst einer Klasse............................ 160 5.3.2 Unterstützende Methoden............................ 165 5.4 Klassen mit dynamischen Daten............................. 169 Aufgabe: Nachverfolgen einer unbekannten Zahl von Schülerdatensätzen................................. 169 5.4.1 Hinzufügen eines Knotens........................... 172 5.4.2 Umorganisieren einer Liste........................... 175 5.4.3 Destruktor......................................... 179 5.4.4 Tiefe Kopien (Deep Copy)............................ 180 5.4.5 Klassen mit dynamischen Daten im Überblick........... 185 7

5.5 Fehlervermeidung......................................... 186 5.5.1 Fingierte Klassen................................... 187 5.5.2 Monotalente....................................... 188 5.6 Übungen................................................. 188 6 Rekursion................................................ 191 6.1 Grundlagen der Rekursion.................................. 191 6.2 Start- und Endrekursion.................................... 192 Aufgabe: Wie viele Papageien?........................ 192 6.2.1 Lösungsweg 1...................................... 193 6.2.2 Lösungsweg 2...................................... 194 Aufgabe: Wer ist unser bester Kunde?.................. 196 6.2.3 Lösungsweg 1...................................... 198 6.2.4 Lösungsweg 2...................................... 199 6.3 Das Hauptkonzept der Rekursion............................ 201 Aufgabe: Berechnung der Summe eines Arrays von Ganzzahlen........................................ 202 6.4 Häufige Fehler............................................ 204 6.4.1 Zu viele Parameter.................................. 205 6.4.2 Globale Variablen................................... 206 6.5 Rekursion bei dynamischen Datenstrukturen................... 208 6.5.1 Rekursion und verkettete Listen....................... 208 Aufgabe: Negative Zahlen in einer einfach verketteten Liste zählen........................................ 210 6.5.2 Rekursion und Binärbäume........................... 211 Aufgabe: Suche nach dem größten Wert in einem Binärbaum......................................... 213 6.6 Wrapper-Funktionen....................................... 214 Aufgabe: Anzahl der Blätter eines Binärbaums........... 214 6.7 Wann wird Rekursion verwendet?............................ 217 6.7.1 Rekursion: Gegenargumente.......................... 218 Aufgabe: Ausgabe einer verketteten Liste................ 220 Aufgabe: Ausgabe einer verketteten Liste in umgekehrter Reihenfolge........................................ 220 6.8 Übungen................................................. 222 7 Wiederverwendung von Code................................ 225 7.1 Sinnvolle und nicht sinnvolle Wiederverwendung von Code....... 225 7.2 Komponenten............................................. 227 7.2.1 Code-Blöcke........................................ 227 8

7.2.2 Algorithmen....................................... 227 7.2.3 Entwurfsmuster.................................... 228 7.2.4 Abstrakte Datentypen................................ 229 7.2.5 Bibliotheken....................................... 230 7.3 Kenntnisse über Komponenten erweitern...................... 230 7.3.1 Forschendes Lernen................................. 231 Aufgabe: Klassenvorsteher............................ 232 7.3.2 Lernen bei Bedarf................................... 235 Aufgabe: Effizientes Durchlaufen einer Liste............ 236 7.4 Auswahl eines Komponententyps............................ 244 7.4.1 Komponentenwahl in der Praxis....................... 246 Aufgabe: Teilweise Sortierung........................ 246 7.4.2 Vergleich der Ergebnisse............................. 251 7.5 Übungen................................................ 251 8 Denken wie ein Programmierer.............................. 253 8.1 Das Gesamtkonzept........................................ 253 8.1.1 Stärken ausschöpfen, Schwächen lindern............... 254 8.1.2 Aufbau des Gesamtkonzepts.......................... 261 8.2 Beliebige Aufgabenstellungen in Angriff nehmen............... 262 Aufgabe: Schummeln beim Galgenmännchen........... 264 8.2.1 Wie man schummelt................................ 265 8.2.2 Erforderliche Operationen zum Schummeln beim Galgenmännchen................................... 267 8.2.3 Der erste Entwurf................................... 269 8.2.4 Der erste Code..................................... 270 8.2.5 Analyse der ersten Ergebnisse......................... 281 8.2.6 Die Kunst des Problemlösens......................... 282 8.3 Programmierkenntnisse weiterentwickeln..................... 283 8.3.1 Neue Programmiersprachen.......................... 284 8.3.2 Kenntnisse in bekannten Programmiersprachen erweitern.......................................... 287 8.3.3 Zusätzliche Bibliotheken............................. 288 8.3.4 Besuchen Sie einen Kurs............................. 289 8.4 Fazit.................................................... 289 8.5 Übungen................................................ 291 Stichwortverzeichnis....................................... 293 9