VU Software Paradigmen / SS 2014

Ähnliche Dokumente
VU Software Paradigmen

VU Software Paradigmen / SS 2008

VU Software Paradigmen / SS 2010

VU Software Paradigmen / SS 2012

SWP Funktionale Programme

SWP Funktionale Programme (3. Teil)

I.1. Organisatorisches - 1 -

Vorlesung Programmierung

Vorlesung Programmierung

SWP Funktionale Programme (2. Teil)

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Vorlesung Programmierung

Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen

Multiparadigmen- Programmiersprachen

Die Programmiersprache C Eine Einführung

Semantik von Programmiersprachen SS 2017

Grundlagen der Programmierung 2

Grundlagen der Programmierung 2

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Berechenbarkeit und Komplexität Vorlesung 11

Vorlesung Programmierung

Vorlesung Programmierung

Grundlagen der Programmiersprachen

Lösungshinweise/-vorschläge zum Übungsblatt 2: Grundlagen der Programmierung (WS 2018/19)

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Personen. Grundlagen der Programmierung 2. Webseite und . Vorlesung

Logik für Informatiker

Algorithmen und Datenstrukturen

Grundlagen Software Engineering

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK 0. ORGANISATORISCHES UND ÜBERBLICK

Zusammenfassung. Stephan Gspandl Institut für Softwaretechnologie Institute for Software Technology

2.2 Syntax, Semantik und Simulation

Programmieren in C Einführung in das Programmieren für Elektrotechniker

Konzepte von Programmiersprachen

III.1 Prinzipien der funktionalen Programmierung - 1 -

Syntax vs. Semantik. Behandlung von Variablen. Grammatik vs. Induktive Definition. M: T ω...

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK 0. ORGANISATORISCHES UND ÜBERBLICK

Syntax von Programmiersprachen

Logik für Informatiker

Vorsemesterkurs Informatik

Turing-Maschinen: Ein abstrakes Maschinenmodell

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

SS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4. R. C. Ladiges, D. Fast 10. Juni 2010

Programmierung Paradigmen und Konzepte

1 Funktionale vs. Imperative Programmierung

Abschnitt 11: Korrektheit von imperativen Programmen

2. Imperative Programmierung und Berechenbarkeit - Registermaschinen -

Mathematik: Ausbildung im ersten Semester

Interpreter - Gliederung

Bru ckenkurs Programmieren

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

VU Software Paradigmen / SS 2015

Propädeutikum Programmiersprache C und Mathematik 2014

4.4 Imperative Algorithmen Prozeduren

3. Klausur Einführung in die Theoretische Informatik Seite 1 von Welches der folgenden klassischen Probleme der Informatik ist entscheidbar?

Grundlagen der Programmierung (Vorlesung 24)

Funktionale Programmierung ALP I. Kombinatorische Logik (CL) SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung

Prolog. Dozentin: Wiebke Petersen. Organisatorisches. Petersen Prolog: Organisatorisches 1

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

Java I Vorlesung Imperatives Programmieren

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

JAVA-Datentypen und deren Wertebereich

Theoretische Grundlagen der Objektorientierung

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -

Logik. Logik. Vorkurs Informatik Theoretischer Teil WS 2013/ September Vorkurs Informatik - Theorie - WS2013/14

VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Logikprogrammierung. Berechnung durch Resolution Die Programmiersprache Prolog

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Logik für Informatiker

Programmieren in Java

Javakurs für Anfänger

Grundlagen der Theoretischen Informatik

An Overview of the Signal Clock Calculus

Programmierung und Modellierung

Grundlagen der Theoretischen Informatik: Übung 10

Inhalte des Moduls Programmieren 1

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Intensivübung zu Algorithmen und Datenstrukturen

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Softwareparadigmen SS 2016, Übungsblatt P

Mächtigkeit von WHILE-Programmen

Transkript:

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