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. Lokale Installation + 3. Online-Alternativen + 4. REPL + 5. Mögliche Wege durch das Kapitel + 2. Programmierung mit Elm + 1. Daten und ihre Verarbeitung + 1. Beispiel - Wandtattoo 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 - Wandtattoo Modellierung einer Funktion Implementierung einer Funktion Eine weitere Funktion Typangaben + 2. Vertiefung - Module und Elm-Projekte + 3. Übungen + 4. Fachkonzept - Funktion + 5. Fachkonzept - Konstante + 6. Fachkonzept - REPL und Projekte + 3. Listen und Zeichenketten + 1. Beispiel - Notenliste Problemsituation Verwaltung der Daten Daten hinzufügen Verarbeitung mit vordefinierten Funktionen Listen von Listen Funktionen höherer Ordnung Partielle Funktionsanwendung + 2. Beispiel - Caesar Problemsituation Zeichenketten als Listen Funktionen höherer Ordnung Partielle Funktionsanwendung + 3. Übungen + 4. Fachkonzept - Liste + 5. Fachkonzept - Funktion höherer Ordnung + 4. 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 - let-Ausdrücke + 4. Fachkonzept - Pipe-Operator + 5. Fallunterscheidungen + 1. Beispiel - Eintrittspreise Problemsituation Eine Fallunterscheidung Geschachtelte Fallunterscheidungen Mehrfachauswahl mit einem Musterabgleich + 2. Übungen + 3. Fachkonzept - Fallunterscheidung + 4. Fachkonzept - Musterabgleich + 6. Erzeugung von Funktionen + 1. Anonyme Funktionen Funktionen mit Namen Funktionen ohne Namen + 2. Partiell angewandte Funktionen Partielle Funktionsanwendung Iterierte Funktionsanwendung + 3. Komposition von Funktionen Der Pipe-Operator Der Kompositionsoperator + 4. Übungen + 5. Fachkonzept - anonyme Funktion + 6. Fachkonzept - Currying + 7. Fachkonzept - Funktionskomposition + 7. Verarbeitung von Datensätzen + 1. Beispiel - Mailadressen Problemsituation Verwaltung als Record Verwendung von Aliasnamen Zugriff auf die Attribute Automatisch erzeugte Funktionen Verarbeitung von Datensätzen mit Attributzugriffen Verarbeitung von Datensätzen über Mustererkennung Aktualisierung von Datensätzen Geschachtelte Datensätze + 2. Beispiel - Metadaten Problemsituation Verwaltung als Tupel Verarbeitung von Tupeln + 3. Übungen + 4. Fachkonzept - Datensatz als Record + 5. Fachkonzept - Datensatz als Tupel + 8. Erzeugung von Datentypen + 1. Beispiel - Begrüßung Problemsituation Definition eines neuen Datentyps Implementierung Experimente in der REPL + 2. Beispiel - Interpreter Problemsituation Verwaltung der Daten Definition eines neuen Datentyps Ausführung von Befehlen Automatisierung der Befehlsausführung Ein wiederhole-Befehl Erweiterungen + 3. Übungen + 4. Fachkonzept - Typdefinition + 9. Fehlerbehandlung + 1. Beispiel - Benutzereingaben Problemsituation Implementierungsvorschlag Umwandlung von Zahlen Der Datentyp Maybe Ausgabefunktion + 2. Übungen + 3. Fachkonzept - Fehlerbehandlung + 10. Rekursion + 1. Beispiel - Türme von Hanoi Problemsituation Lösung für kleine Türme Allgemeine Strategie Implementierung in Elm Zusammenfassung + 2. Beispiel - Begrüßungen Problemsituation Beispielrechnungen Verallgemeinerung Aufwandsbetrachtung Endrekursion + 3. Beispiel - Eigene map-Funktion Problemsituation Problempräzisierung Mustererkennung Implementierung von map Verschlüsselung + 4. Beispiel - Wege im Gitternetz Problemsituation Problempräzisierung Problemreduktion Rekursive Funktion Aufwandsbetrachtung Alternative Berechnungen + 5. Übungen - Verarbeitung von Zahlen + 6. Übungen - Verarbeitung von Zeichenketten + 7. Fachkonzept - Rekursion + 8. Fachkonzept - Endrekursion + 3. Dynamische Webseiten mit Elm + 1. Hallo Elm + 1. HTML-Grundlagen + 2. Hallo Elm - online ellie-app.com Analyse Tipps + 3. Hallo Elm - lokal elm init elm make Hot reloading + 4. Übungen + 2. Caesar I Ziele und Voraussetzungen Elementknoten Listen von Knoten Mehrere Elementknoten Geheimtext berechnen view-Funktion Datentypen Verarbeitung von Listen Übungen + 3. Notenauswertung Ziele und Voraussetzungen Einzelnote Gesamtliste Auswertung Übungen + 4. Sport-Ergebnisse Ziele und Voraussetzungen Datenstruktur Grundstruktur Tabellendarstellung Auswertung Übungen + 5. Caesar II Ziele und Voraussetzungen Fertiges Programm Elm - Architektur TEA - Implementierung Texteingabe Erweiterungen + 6. Nim-Spiel + 1. Fertiges Programm + 7. Umgang mit Fehlern + 8. Zufall + 9. Subscriptions + 10. Flags + 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