Nächste Seite:
Einleitung
Prinzipien von Programmiersprachen
Vorlesung
Wintersemester 2007, 2008, 2009
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
Formale Sprachen: Chomsky-Hierarchie
Grammatiken
Wort-Ersetzungs-Systeme
Typ-3-Grammatiken
Sätze über Reguläre Sprachen
Reguläre Sprachen/Ausdrücke
Beispiele/Aufgaben zu regulären Ausdrücken
Übungen Reg. Ausdr.
Kontextfreie Sprachen
(erweiterte) Backus-Naur-Form
Ableitungsbäume für CF-Sprachen
Ableitungsbäume (II)
Eindeutigkeit
Assoziativität
Präzedenzen
Übungen
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.
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
Speicherverwaltung
Speicherplatz für Objekte
Zeiger- und Verweistypen
Zeiger- und Verweistypen
Zeiger (pointer) in C
Verweise (references) in C++
Zeiger/Verweise in Java?
Zeiger in C#
Probleme mit Zeigern
Aliasing
Automatische Freigabe
Verweiszähler
Markierende Kollektoren
Kopieren/Kompaktieren
Generationen usw.
Literatur GC
Übung GC (I)
Übung GC (II)
Ausdrücke
Einleitung
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
Definition
Programm-Ablauf-Steuerung
Blöcke
Verzweigungen (zweifach)
Mehrfach-Verzweigung
Switch/break
Kompilation
Wiederholungen
Schleifen steuern durch...
Zählschleifen
Termination
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)
Aufgaben zu Parameter-Modi (I)
Aufgaben zu Parameter-Modi (II)
Lokale Unterprogramme
Statische und dynamische Sichtbarkeit
Frames, Ketten
Unterprogramme als Argumente
Unterprogramme als Resultate
Unterprogramme/Zusammenfassung
Polymorphie und Objektorientierung
Polymorphie
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)
Abstraktion und Kapselung
Einleitung
Polymorphie
Klassen, Interfaces
Algebraische Spezifikation
Signaturen, Algebren
Axiome, Modelle
ADT in realen Programmiersprachen
Module, Komponenten
Build-Systeme
Sichtbarkeiten
Namen (Designfragen)
Zusammenfassung
Themen
Hierarchien (Bäume)
Statik/Dynamik
Abstraktionen
Über dieses Dokument ...
2010-02-04