VU Software Paradigmen 716.060 / SS 2014 Bernhard Aichernig und Alexander Felfernig Institut für Softwaretechnologie {aichernig, alexander.felfernig}@ist.tugraz.at Institute for Software Technology
Inhalt Organisatorisches Aufbau der LV Benotung Ziele und Inhalt Institute for Software Technology 2
Organisatorisches VU (3 SWS) Vorlesungsteil (2 SWS) Jeweils Dienstag, 9:30-11:00 (s.t.), HS I12 Prüfungstermin: 30. Juni 2014, 16-18h, i1, i11, i13 Nachklausur: Anfang Oktober 2014 Übungsteil (1 SWS) Jeweils Mittwoch, 18:00-20:00 (s.t.), HS I1 (Verbundhörsaal) LV mit immanentem Prüfungscharakter Ab Abgabe 1. ÜB wird Leistung benotet! Institute for Software Technology 3
Termine (VO Softwareparadigmen) Datum Inhalte Abhaltung Ausgabe Übungsblatt * 4.3.2014 Einleitung Felfernig Abgabe Übungsblatt* 11.3.2014 Syntax (bis inkl. Rec. Desc. Parser) Felfernig 18.3.2014 Syntax (tabellenbasierte LL(1) Parsing) Felfernig Übungsblatt 1 25.3.2014 Funktionale Programme 1 (excl. Sprachen über Datentypen) 1.4.2014 Funktionale Programme 1 (Sprachen über Datentypen) Felfernig Felfernig 8.4.2014 Funktionale Programme 2 Aichernig Übungsblatt 2 Übungsblatt 1 15.4, 22.4, 29.4 2014 Osterferien 6.5.2014 Reservetermin 13.5.2014 Funktionale Programme 3 Aichernig Übungsblatt 3 Übungsblatt 2 20.5.2014 Prädikatenausdrücke, Assignmentsprachen Aichernig 27.5.2014 Logische Programme 1 Aichernig Übungsblatt 4 3.6.2014 Logische Programme 2 Aichernig Übungsblatt 3 10.6.2014 DI nach Pfingsten 17.6.2014 Abschluss Aichernig Übungsblatt 4 30.6.2014 Klausur Institute for Software Technology * jeweils am MI!
Übung Organisatorisches wird in der 1en Übungseinheit besprochen: MO, 3.3., 16.15 (s.t.) 18.00, HS I1 (Verbundhörsaal) Kontakt: stefan.reiterer@ist.tugraz.at Institute for Software Technology 5
Benotung Ermittlung der Note: Punkte für gelöste Aufgaben aus 4 Übungsblättern (1/3 = 100P) (jedes Übungsblatt >= 20% v. 25P). Punkte aus schriftlicher Prüfung (Vorlesung) (2/3 = 200P) (>= 50% v. 200P) Positive Note bei gesamt >= 50% v. 300P Institute for Software Technology 6
Bei Fragen Vor der VU Sprechstunde nach Vereinbarung [ E-Mail (Tel):] aichernig@ist.tugraz.at (5717) alexander.felfernig@ist.tugraz.at (5710) Institute for Software Technology 7
Unterlagen Lehrveranstaltungsverlauf unter http://www.ist.tugraz.at/swp14.html Folien Skriptum Übungsangaben SWP Newsgroup @ TUG tu-graz.lv.swp Buchempfehlungen Institute for Software Technology 8
Ziele der LV Sprachdefinition Syntax Semantik von Programmiersprachen Konzepte von Programmiersprachen Auswertung von Programmen Struktur von Programmen Entscheidungsprobleme Institute for Software Technology 9
Grober Ablauf (I) Syntax BNF Sprachhierarchie Prinzipien Institute for Software Technology 10
Grober Ablauf (II) Semantik Funktionale Sprachen Imperative Sprachen Logikorientierte Sprachen OO Sprachen Institute for Software Technology 11
Grober Ablauf (III) Entscheidungsprobleme Halteproblem Äquivalenzproblem Institute for Software Technology 12
Grober Ablauf (IV) Prog.sprachenkonzepte Modules Libraries Components Aspects,... Institute for Software Technology 13
Institute for Software Technology Überblick
Klassifikation von Sprachen Syntaktische Eigenschaften Wie wird ein Programm strukturiert? Ist die Sprache einfach zu lernen? Unterstützt eine Sprache die Programmierung großer SW-Systeme?... Semantische Eigenschaften Wie wird ein Program ausgewertet? Institute for Software Technology 15
Semantik? Bedeutung (der Konstrukte) einer Sprache Die Bank von Peter. Sitzbank Geldinstitut a = b + c Zuweisung, Bedingung, Gleichung. Institute for Software Technology 16
Bedeutung von Programmen fun test (x,y) = if x=0 then 0 else y + test(x-1,y); Was berechnet das obige SML- Programm? Institute for Software Technology 17
Vergleich mit math. Definition x* y y (( x 0 if 1)* ( x y) 0) otherwise (Induktive) Definition der Multiplikation test implementiert die Multiplikation! Institute for Software Technology 18
Logik-orientierte Programme Prädikate vater(x,y)... X ist der Vater von Y Regeln can_fly(x) :- bird(x). Anfragen can_fly(papagei). Institute for Software Technology 19
Prolog-Programmbeispiel Formalisieren Sie mit Hilfe von vater das Prädikat grossvater(x,y), das wahr ist, wenn X der Großvater von Y ist. Institute for Software Technology 20
Prolog-Programmbeispiel Formalisieren Sie mit Hilfe von vater das Prädikat grossvater(x,y), das wahr ist, wenn X der Großvater von Y ist. X ist der Großvater von Y wenn X der Vater von Z ist und Z der Vater von Y. Institute for Software Technology 21
Prolog-Programmbeispiel X ist der Großvater von Y wenn X der Vater von Z ist und Z der Vater von Y. Korrekt? grossvater(x,y) :- vater(x,z), vater(z,y). Institute for Software Technology 22
Anfragen vater(franz,karl). vater(karl,otto). grossvater(franz,otto)? grossvater(x,y)? Anfrage grossvater(franz,otto) muß Ja (True/Yes) liefern. Institute for Software Technology 23
Semantik von Imperativen Sprachen? void change(int x,y) { } int z = x; x = y; y = z; Definition über die Interpretation der einzelnen Statements. Die Statements führen dabei zu Zustandsänderung des Programms. Institute for Software Technology 24
Semantik von Imperativen Sprachen? void change(int x,y) { } int z = x; x = y; y = z; Was passiert hier bei Auswertung der einzelnen Statements? Institute for Software Technology 25
Semantikfunktion Interpretation eines Statements s [[s]]: env env Environment: env: VAR D env(x) D wobei x eine Variable ist und D der Wertebereich (Domain) von x ist. Institute for Software Technology 26
Beispiel [[x = e]] ( ) = mit (y) = (y) für alle y x (x) = [[e]] ( ) [[x]] ( ) = (x) für x VAR { (x)=1, (y)=2} z = x; { (x)=1, (y)=2, (z)=1} x = y; { (x)=2, (y)=2, (z)=1} y = z; { (x)=2, (y)=1, (z)=1} Institute for Software Technology 27
Entscheidungsprobleme Gegeben: Frage Antwort: Ja oder Nein Halteproblem: Gibt es ein Programm, daß für beliebige Programme entscheiden kann, ob diese für alle Eingaben halten? Äquivalenzproblem: Gibt es ein Programm, daß die Äquivalenz zweier beliebiger Programme feststellen kann? Institute for Software Technology 28
Erstellung großer Software Problemstellung für Einzelne zu groß Teamarbeit Aufteilung in Teile, die getrennt gelöst werden können Zusammenführen der Einzellösungen zur Lösung des Gesamtproblems Unterstützung in der Programmiersprache? Institute for Software Technology 29
Funktionale Sichtweise Beispiel: Interpreter für eine Sprache Programm = Sequenz von Befehlen Maschine hat Speicher und führt ein Programm aus. Befehle verändern den Inhalt des Speichers. Institute for Software Technology 30
Funktionale Sichtweise ExecuteProg IN: Programm, Speicher OUT: Speicher ExecuteStmnt IN: Statement, Speicher OUT: Speicher GetMem IN: Adresse,Speicher OUT: Value SetMem IN: Value,Adresse,Speicher OUT: Speicher Institute for Software Technology 31
Danke! Institute for Software Technology 32