Nächste Seite:
Einleitung
Prinzipien von Programmiersprachen
Vorlesung
Wintersemester 2007, 08, 09, 10
Johannes Waldmann, HTWK Leipzig
Einleitung
Inhalt
Organisation
Literatur
Übungen
Ausführungsarten
Struktur eines Übersetzers
Übung: Beispiele für Übersetzer
Syntax von Programmiersprachen
Daten-Repräsentation im Compiler
Token-Typen
Formale Sprachen
Spezifikation formaler Sprachen
Sprach-Operationen
Reguläre Sprachen/Ausdrücke
Beispiele/Aufgaben zu regulären Ausdrücken
Zusatz: Sternhöhe
Übungen Reg. Ausdr.
Wort-Ersetzungs-Systeme
Grammatiken
Formale Sprachen: Chomsky-Hierarchie
Kontextfreie Sprachen
(erweiterte) Backus-Naur-Form
Ableitungsbäume für CF-Sprachen
Ableitungsbäume (II)
Klammer-Sprachen
Eindeutigkeit
Assoziativität
Assoziativität (II)
Präzedenzen
Zusammenfassung Operator/Grammatik
Übung Operator/Grammatik
Konkrete und abstrakte Syntax
Semantik von Programmiersprachen
Statische und dynamische Semantik
Attributgrammatiken (I)
Attributgrammatiken (II)
Arten von Attributen
Attributgrammatiken-Beispiele
Konkrete und abstrakte Syntax
Regeln zur Typprüfung
Ausdrücke
→
Kellermaschine
Übungen (Stackmaschine)
Dynamische Semantik
Bsp: Operationale Semantik
Denotationale Semantik
Beispiel Denotationale Semantik
Beispiel: Semantik von Unterprogr.
Beispiel Denotationale Semantik
Axiomatische Semantik
Eiffel
Hoare-Kalkül
Axiom für Schleifen
Übungen (Invarianten)
Typen
Warum Typen?
Historische Entwicklung
Überblick
Aufzählungstypen
Keine Aufzählungstypen
Aufzählungstypen in C
Aufzählungstypen in Java
Teilbereichstypen in Ada
Abgeleitete Typen in Ada
Zusammengesetzte Typen
Produkttypen (Records)
Summen-Typen
Potenz-Typen
Maßeinheiten in F#
Bezeichner, Bindungen, Bereiche
Variablen
Namen
Typen für Variablen
Dynamisch getypte Sprachen
Statisch getypte Sprachen
Typinferenz in C#
Typdeklarationen
Konstanten
Lebensort und -Dauer von Variablen
Sichtbarkeit von Namen
Überdeckungen
Sichtbarkeit und Lebensdauer
Ausdrücke
Einleitung
Einleitung (II)
Designfragen für Ausdrücke
Syntax von Ausdrücken
Syntax von Konstanten
Der Plus-Operator in Java
Überladene Operatornamen
Automatische Typanpassungen
Implizite/Explizite Typumwandlungen
Explizite Typumwandlungen
Der Verzweigungs-Operator
Verzweigungs-Operator(II)
Relationale Operatoren
Logische (Boolesche) Ausdrücke
Noch mehr Quizfragen
Der Zuweisungs-Operator
Weitere Formen der Zuweisung
Ausdrücke mit Nebenwirkungen
Auswertungsreihenfolgen
Auswertungsreihenfolge in C
Anweisungen(I)
Definition
Programm-Ablauf-Steuerung
Blöcke
Verzweigungen (zweifach)
Mehrfach-Verzweigung
Switch/break
Kompilation
Pattern Matching
Anweisungen(II)
Wiederholungen
Schleifen steuern durch...
Zählschleifen
Termination
Datengesteuerte Schleifen
Zustandsgesteuerte Schleifen
Implizite Iteratoren in C#
Schleifen mit Bedingungen
Abarbeitung von Schleifen
vorzeitiges Verlassen
Geschachtelte Schleifen
Sprünge
Sprünge und Schleifen
Sprünge und Schleifen (Beweis)
Schleifen und Unterprogramme
Denotationale Semantik (I)
Denotationale Semantik (II)
Unterprogramme
Grundsätzliches
Argumente/Parameter
Positionelle/benannte Argumente
Default-Werte
Variable Argumentanzahl (C)
Variable Argumentanzahl (Java)
Parameter-Übergabe (Semantik)
Parameter-Übergabe (Implementierungen)
Parameterübergabe
Call-by-name
Call-by-name (Macros)
Call-by-name in Scala
Aufgaben zu Parameter-Modi (I)
Aufgaben zu Parameter-Modi (II)
Lokale Unterprogramme
Statische und dynamische Sichtbarkeit
Frames, Ketten
Lokale Unterprogramme: Beispiel
Flache Unterprogramme (C)
Flache Unterprogramme (C#, Java)?
Unterprogramme als Argumente
Unterprogramme als Resultate
Lokale Klassen
Unterprogramme/Zusammenfassung
Polymorphie und Objektorientierung
Definitionen
Objekte, Methoden
Klassen
this
Vererbung
Dynamische Polymorphie (OO)
Equals richtig implementieren
Equals richtig implementieren (II)
Überladen
Überschreiben und Überladen
Vererbung bricht Kapselung
Statische Attribute und Methoden
Lokale Klassen
Generische Polymorphie
Bsp: Generische Klasse in Java
Bsp: Generische Methode in Java
Schranken für Typparameter (I)
Schranken für Typparameter (II)
Anonyme Typen (Wildcards)
Wildcards und Bounds
Typinformation zur Laufzeit
Generics und Subtypen
Generics und Arrays
Generics und Arrays (II)
Über dieses Dokument ...
Johannes Waldmann 2011-01-18