/
-
- 1 / 15
-
Cartes-fiches
Nennen Sie Beispiele für Programmierstile (-paradigmen) und erläutern Sie sie jeweils kurz.
prozedurale / imperative Sprachen
- Grundkonzepte: Variablen, Wertzuweisungen
- Programm = Folge von Anweisungen, die eine Zustandsänderung bewirken
funktionale Sprachen
- Grundkonzept: Funktion im Sinne der Mathematik
- Programm = Ausdruck, der einen Wert als Ergebnis liefert
- keine Variablen als benannte Speicherzellen
logische Programmierung
- Grundkonzept: formale, mathematische Logik
- besteht aus Fakten und Regeln
Vergleichen Sie prozedurorientiertes mit objektorientiertem Denken.
prozedurorientiert:
- Algorithmen, Prozeduren im Vordergrund, Daten sind "zweitrangig"
- für jede Figurart eigene Prozedur erforderlich
- Fallunterscheidungen nötig, wenn in Programm Figuren verschiedener Arten gleichzeitig vorkommen
objektorientiert:
- Daten im Mittelpunkt der Betrachtung
- Figurobjekt weiß selbst, wie eine Antwort zu ermitteln ist --> Fallunterscheidungen weitestgehend überflüssig
Welche Merkmale haben objektorientierte Programmiersprachen?
1.) Geheimnisprinzip
- Klienten sehen abstrakte Sicht des Objektes, innere Struktur bleibt verborgen
2.) Klassenprinzip
- Struktur und Verhalten gleichartiger Objekte durch Klassenzugehörigkeit definiert
3.) Vererbung
- Vererbung von Struktur und Verhalten an Unterklassen
4.) Polymorphie
- Objekte verschiedener Klassen können gleiche Nachricht verstehen
- Nachrichten erst zur Laufzeit an passende Methoden gebunden
Was sind Eigenschaften von Clojure?
- Lisp-Dialekt
- läuft auf der Java Virtual Machine
- ermöglicht verschiedene Programmierstile
- behandelt Funktionen als Werte erster Ordnung
- nur eine Auswertungsregel für die Anwendung von Funktionen
Was sind Entwurfsvorschriften?
- Handlungsanleitungen für die Entwicklung kleiner Programme
- Programmstrukturen folgen den Datenstrukturen
- Abstraktion von der Lösung von Einzelproblemen zur Lösung von Problemklassen
Aus welchen Phasen setzt sich die Entwurfsvorschrift 1 zusammen?
1.) Zweckbestimmung, Vertrag, Funktionskopf
- Beschreiben des Zwecks der Funktion
- Spezifizieren der Eingabedatenarten und des Ergebnisses
- Benennen der Funktion
- Aufschreiben ihres Kopfes
2.) Tests
- Positiv- und Negativ-Test
3.) Funktionsrumpf
4.) Testen
Welche Regel gilt für Hilfsfunktionen?
Definiere für jeden Zusammenhang zwischen Größen, die sich aus der Problembeschreibung ergeben, eine Funktion.
Welche Regel gilt für Variablendefinitionen?
Ersetze jede Konstante, deren Bedeutung sich nicht aus dem Kontext ergibt, durch einen sprechenden Variablennamen.
Wann heißt eine Funktion bedingt?
Wenn für die Ermittlung ihres Resultats eine Fallunterscheidung notwendig ist.
Wie werden in Clojure Fallunterscheidungen eingebaut?
(cond
Frage Antwort
Frage Antwort
...
:else Antwort)
Wobei jede Frage ein boolscher Ausdruck und Antwort ein beliebiger Clojure-Ausdruck ist.
Welche Phasen enthält Entwurfsvorschrift 2?
1.) Zweckbestimmung, Funktionskopf, Vertrag
2.) Datenanalyse
- Ermittlung der durch die Funktion zu unterscheidenden Fälle
3.) Tests
- Angabe eines Tests für jeden der in der Datenanalyse ermittelten Fälle
- für Intervalle sind auch die Grenzfälle zu berücksichtigen
4.) Funktionsschablone
- Aufschreiben des bedingten Ausdrucks
- Skelett des cond-Ausdruckes mit je einer Frage-Antwort-Klausel für jeden Fall
- Fragen schon entwickeln, Anworten noch nicht ausformulieren (nur Platzhalter)
5.) Funktionsrumpf
- Entwickeln der Antworten für alle Bedingungen
6.) Testen
Was lässt sich zu der Art von Atomen sagen?
Sie sind entweder numerisch, boolesch oder symbolisch.
Wie werden in Clojure Listen erzeugt?
'() = leere Liste
Hinzufügen eines neuen ersten Elementes mittels (cons elementNeu Liste )
Wie kann eine Liste von Elementen als Datenstruktur rekursiv definiert werden?
Eine Liste von Elementen ist entweder
1.) die leere Liste '() oder
2.) (cons e lve), wobei e ein Element und lve eine Liste von Elementen ist
Welche Phasen beinhaltet Entwurfsvorschrift 3?
1.) Zweckbestimmung, Funktionskopf, Vertrag
2.) Datenanalyse / Datendefinition
- Definition von problemangepassten Datenstrukturen
- für jede Objektmenge eine (rekursive) Datenstruktur
3.) Test
- Test für den Fall, dass rekursive Datenstruktur keine Elemente enthält
- Test für den Fall, dass rekursive Datenstruktur genau ein Element enthält
- Test für den Fall, dass rekursive Datenstruktur mehr als ein Element enthält
4.) Funktionsschablone
- Skelett eines cond-Ausdruckes mit je einer Frage-Antwort-Klausel für einen nicht-rekursiven und einen rekursiven Fall
- passende Selektionsausdrücke (first, rest) für rekursive Fälle, wobei auf rest die zu entwickelnde Funktion rekursiv anzuwenden ist
5.) Funktionsrumpf
6.) Testen