Deklarative Programmierung In diesem Kapitel Funktionale Programmierung mit Python Funktionale Programmierung mit Elm Logische Programmierung q Startseite 8. Deklarative Programmierung 1. Funktionale Programmierung mit Python + 1. Warum funktional programmieren? + 1. Einstieg - Spaghetticode + 2. Exkurs - Von der maschinennahen zur strukturierten Programmierung + 3. Einstieg - Seiteneffekte + 4. Exkurs - Von der strukturierten zur funktionalen Programmierung + 2. Funktionen als Programmierbausteine + 1. Station - Datenverarbeitung mit Funktionen + 2. Station - Funktionskomposition + 3. Station - Fallunterscheidungen + 4. Station - Rekursion + 5. Praktikum - Programmieren mit (rekursiven) Funktionen + 3. Funktionen als Datenobjekte + 1. Station - Funktionen höherer Ordnung + 2. Station - Der map-Operator + 3. Station - Der filter-Operator + 4. Deklarative Programmierung + 1. Station - Beschreiben statt Befehlen + 2. + 3. Miniprojekt - Geometrische Abbildungen 2. Funktionale Programmierung mit Elm + 1. Vorwort + 1. Warum funktional programmieren? + 2. Benötigte Software + 3. REPL + 2. Programmierung mit Elm + 1. Daten und ihre Darstellung + 1. Beispiel - Randsteine Ein Berechnungsproblem Berechnungen in der REPL Das Kostenberechnungsproblem + 2. Experimente - Int und Float Zwei Sorten von Zahlen Rechenoperationen Typumwandlungen Vordefinierte Funktionen + 3. Beispiel - Verschlüsselung Zwei einfache Verschlüsselungsverfahren Experimente in der REPL zum Caesar-Verfahren Experimente in der REPL zum Umkehrverfahren Rückblick und Ausblick + 4. Experimente - Char und String Zeichen und Zeichenketten Vordefinierte Funktionen zur Verarbeitung von Zeichen Vordefinierte Funktionen zur Verarbeitung von Zeichenketten + 5. Beispiel - Schaltjahre Ein Berechnungsproblem Experimente in der REPL + 6. Experimente - Bool Wahrheitswerte Logische Operatoren Vordefinierte boolsche Funktionen + 7. Vertiefung - Operatorrangfolge + 8. Übungen + 9. Fachkonzept - Datentyp + 10. Fachkonzept - Vordefinierte Funktion + 11. Fachkonzept - Ausdruck + 2. Funktionen als Programmierbausteine + 1. Beispiel - Pyramidenbau Ein Berechnungsproblem Modellierung einer Funktion Implementierung einer Funktion Eine weiteres Problem Lösung des weiteren Problems Exkurs - Module + 2. Weitere Beispiele Orientierung Beispiel - Randsteine Beispiel - Verschlüsselung Beispiel - Schaltjahre + 3. Übungen + 4. Fachkonzept - Funktion + 5. Fachkonzept - Konstante + 3. Gestaltung von Funktionsausdrücken + 1. Beispiel - Verschlüsselung Ein neues Verfahren Entwicklung einer Funktionsdefinition Analyse der Funktionsdefinition Verwendung lokaler Konstanten Verwendung des Pipe-Operators + 2. Übungen + 3. Fachkonzept - Hintereinanderschalten von Funktionen + 4. Fachkonzept - Lokale Definitionen + 4. Verwendung von Hilfsfunktionen + 1. Beispiel - Swimming Pool Das Problem Problemzerlegung Teilproblem 1 Teilproblem 2 Teilproblem 3 Gesamtproblem Lösung des Problems + 2. Übungen + 3. Fachkonzept - Verwendung von Hilfsfunktionen + 4. Fachkonzept - Problemzerlegung + 5. Verwendung von Modulen + 1. Beispiel - Zugriff auf Zeichenketten Problemsituation Funktionsmodellierung Implementierung Dokumentation Exkurs - Kommentare Modularisierung Anwendung + 2. Übungen + 3. Fachkonzept - Module + 6. Ausdrücke mit Fallunterscheidungen + 1. Beispiel - Eintrittspreise Problemsituation Eine Fallunterscheidung Geschachtelte Fallunterscheidungen Mehrfachauswahl mit einem Musterabgleich + 2. Beispiel - Datumsangaben Problemsituation Eine Fallunterscheidung Geschachtelte Fallunterscheidungen Mehrfachauswahl mit einem Musterabgleich + 3. Übungen + 4. Fachkonzept - Fallunterscheidung + 5. Fachkonzept - Musterabgleich + 7. Rekursive Funktionsdefinitionen + 1. Beispiel - Begrüßungen Problemsituation Beispielrechnungen Verallgemeinerung Aufwandsbetrachtung Endrekursion + 2. Beispiel - Wege im Gitternetz Problemsituation Problempräzisierung Problemreduktion Rekursive Funktion Aufwandsbetrachtung Alternative Berechnungen + 3. Beispiel - Verschlüsselung Problemsituation Problempräzisierung Teilproblem Problemreduktion Rekursive Funktion + 4. Übungen - Verarbeitung von Zahlen + 5. Übungen - Verarbeitung von Zeichenketten + 6. Fachkonzept - Rekursion + 7. Fachkonzept - Endrekursion + 8. Verarbeitung von Datensätzen + 1. Beispiel - Mailadressen Problemsituation Verwaltung als Record Verwendung von Aliasnamen Zugriff auf die Attribute Verarbeitung von Datensätzen mit Attributzugriffen Verarbeitung von Datensätzen über Mustererkennung Aktualisierung von Datensätzen + 2. Beispiel - Metadaten Problemsituation Verwaltung als Tupel Verarbeitung von Tupel + 3. Übungen + 4. Fachkonzept - Datensatz als Record + 5. Fachkonzept - Datensatz als Tupel + 9. Datenverwaltung mit Listen + 1. Beispiel - Notenliste Problemsituation Verwaltung der Daten Daten hinzufügen Verarbeitung mit vordefinierten Funktionen Rekursive Verarbeitung + 2. Beispiel - Teilnehmerliste Problemsituation Verwaltung der Daten Verarbeitung mit vordefinierten Funktionen Rekursive Verarbeitung + 3. Übungen + 4. Fachkonzept - Liste + 10. Listenverarbeitung mit Operatoren + 1. Beispiel - Polygone Problemsituation Der map-Operator Der filter-Operator fold-Operatoren + 2. Übungen + 3. Fachkonzept - Listenoperatoren + 11. Funktionen als Daten + 1. Beispiel - Monoalphabetische Verschlüsselung Problemsituation Verschlüsselung mit einer Zuordnung Verschlüsselung mit einer Verschiebung Verallgemeinerung der Verschlüsselungsfunktionen + 2. Beispiel - Listenoperatoren Problemsituation Der map-Operator Der filter-Operator Der foldl-Operator + 3. Übungen + 4. Fachkonzept - Funktion höherer Ordnung + 12. Erzeugung von Funktionen + 1. Definition von Funktionen Zur Orientierung Funktionen mit Namen Anonyme Funktionen Verwendungssituationen Fachkonzept - anonyme Funktion + 2. Partiell angewandte Funktionen Zur Orientierung Partielle Funktionsanwendung Iterierte Funktionsanwendung Beispiele und Anwendungen Fachkonzept - Currying + 3. Komposition von Funktionen Zur Orientierung Der Pipe-Operator Der Kompositionsoperator Anwendung - Caesar-Verfahren Fachkonzept - Funktionskomposition + 4. Übungen + 13. Erzeugung von Datentypen + 1. Beispiel - Interpreter Problemsituation Verwaltung der Daten Definition eines neuen Datentyps Ausführung von Befehlen Automatisierung der Befehlsausführung Ein wiederhole-Befehl Erweiterungen + 2. Übungen + 3. Fachkonzept - Typdefinition + 14. Fehlerbehandlung + 1. Beispiel - Benutzereingaben Problemsituation Zahlumwandlung Der Datentyp Maybe Eine Umwandlungsfunktion Befehlsumwandlung + 2. Übungen + 3. Fachkonzept - Fehlerbehandlung + 3. Dynamische Webseiten mit Elm + 1. Elm-Projekt + 2. Elm-Projekt + 4. Nachwort 3. Logische Programmierung + 1. Modellierung von Wissen + 1. Die Wissensbasis + 2. Modellierung mit Fakten + 3. Fachkonzept Fakten + 4. Programmieren mit Prolog + 5. Anfragen an die Wissensbasis + 6. Fachkonzept Anfragen + 7. Übungen zu Anfragen + 8. Modellierung mit Regeln + 9. Fachkonzept Regeln + 10. Rekursive Regeln + 11. Übungen zu Regeln + 12. Zusammenfassung - Programmierkonzept + 13. Zusammenfassende Übungen + 2. Auswertung von Anfragen + 1. Die Schlussregel modus ponens + 2. Suche nach logischen Herleitungen + 3. Automatisierung des logischen Schließens + 4. Experimente mit Prolog + 3. Verwaltung von Daten + 1. Terme + 1. Stadt-Land-Fluss + 2. Konstanten + 3. Zusammengesetzte Terme + 4. Beispiele und Übungen + 2. Listen und ihre Verarbeitung + 1. Stadt-Land-Fluss + 2. Kopf-Rest-Methode + 3. Rekursive Verarbeitung von Listen + 4. Akkumulatormethode + 5. Beispiele und Übungen + 6. Das Bootstourproblem + 3. Zahlen und ihre Verarbeitung + 1. Stadt-Land-Fluss + 2. Vergleiche + 3. Berechnungen + 4. Beispiele und Übungen + 4. Ausgabe von Daten + 4. Deklarative Programmierung + 1. Ein Graphenproblem + 2. Problemlösestrategien + 3. Lösung des Graphenproblems + 1. Lösung eines vereinfachten Problems + 2. Exkurs - Tiefensuche in Graphen + 3. Aufsammeln von Wegknoten + 4. Aufsammeln von Wegknoten in einer Akkumulatorliste + 5. Lösung des Problems + 4. Anwendungen zum Graphenproblem + 1. Das Tratsch-Problem der Chatoren + 2. Ein Umfüllproblem