Semantik von Programmiersprachen Theorie und Anwendungen (Informatik III, Wintersemester 03/04)
|
|
- Sylvia Krause
- vor 7 Jahren
- Abrufe
Transkript
1 Eidgenossische Technische Hochschule Zurich Ecole polytechnique federale de Zurich Politecnico federale di Zurigo Swiss Federal Institute of Technology Zurich Semantik von Programmiersprachen Theorie und Anwendungen (Informatik III, Wintersemester 03/04) Robert F. Stärk Institut für Theoretische Informatik ETH Zürich staerk Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 1
2 Inhalt Teil 1: Natürliche Semantik von Programmen Teil 2: ASM Semantik von Programmen Teil 3: Compilation auf virtuelle Maschine Teil 4: Denotationelle Semantik Teil 5: Hoare-Logik Teil 6: Dynamische Logik Teil 7: Bytecode Verification Teil 8: Proof-Carrying Code Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 2
3 Übersicht Denotationelle Semantik Aequvialenz Natürliche Semantik (big step) Hoare Logik Dynamische Logik Korrektheit der Axiome Aequivalenz ASM Semantik (small step) Compilation Virtuelle Maschine Proof carrying Code Bytecode Verification Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 3
4 Zusammenfassung Am Beispiel einer imperativen Programmiersprache mit einfachen Datentypen und rekursiven Prozeduren werden die elementaren Konzepte der Semantik von Programmiersprachen erklärt. Es wird gezeigt, inwiefern die operationelle mit der denotationellen Semantik übereinstimmt. Die denotationelle Semantik bildet die Grundlage für korrekte Axiome und Beweisregeln (sogenannte axiomatische Semantik oder Hoare Logik). Die operationelle Semantik wird benutzt für die beweisbar korrekte Compilation auf eine einfache virtuelle Maschine. Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 4
5 Folien mit Stern Folien, die rechts oben mit einem Stern markiert sind, enthalten Beweise von Sätzen und weiterführendes Material. Beim ersten Durcharbeiten können Stern-Folien übergangen werden. Der Inhalt der Stern-Folien ist nicht Prüfungsstoff. Beachte: Auch wenn die Beweise nicht als Prüfungsstoff gelten, sind sie trotzdem wichtig. Für das Verständnis der Semantik von Programmiersprachen sind sie genauso wichtig wie die Beispiele. Beweise sind eine Form der Kommunikation von abstrakten Konzepten und mathematischen Ideen unter Menschen. Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 5
6 Literatur Hanne Riis Nielson, Flemming Nielson Semantics with Applications: A Formal Introduction Wiley, Betrand Meyer Introduction to the Theory of Programming Lanuages Prentice Hall, 1990 Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 6
7 Weiterführende Literatur Glynn Winskel The Formal Semantics of Programming Languages: an Introduction The MIT Press, 1993 Carl A. Gunter Semantics of Programming Languages The MIT Press, 1992 John C. Mitchell Foundations of Programming Languages The MIT Press, 1996 Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 7
8 Weiterführende Literatur Krzysztof R. Apt, Ernst-Rüdiger Olderog Verification of Sequential and Concurrent Programs Springer-Verlag, 2nd ed., 1997 David Harel, Dexter Kozen, Jerzy Tiuryn Dynamic Logic The MIT Press, 2000 Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 8
9 Semantik von Programmiersprachen Was ist die Bedeutung eines Programms? Syntax Programmiersprache Statische Semantik Dynamische Semantik Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 9
10 Syntax Die Syntax wird durch eine Grammatik angegeben. Folge von Zeichen (Source File) lexikalische Analyse Folge von Tokens Parser abstrakter Syntaxbaum Die Grammatik definiert eine Relation zwischen Zeichenfolgen und abstrakten Syntaxbäumen. [Siehe Vorlesung Compilerbau.] Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 10
11 Semantik (statisch vs. dynamisch) Statische Semantik (Was muss zur Compilezeit überprüft werden?) Typregeln, Typüberprüfung statische Analyse (z.b. Definite Assignment) Auflösung von Namen Auflösung von Methoden (für überladene Methoden) Resultat: annotierter abstrakter Syntaxbaum Dynamische Semantik (Was geschieht zur Laufzeit?) Ausführung des Programms (program execution) Was definiert den Zustand eines Programms? Was ist der Effekt eines Programms auf den Zustand? Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 11
12 Dynamische Semantik Denotationelle Semantik (Programme = mathematische Objekte) Ein Programm wird betrachtet als (partielle) Funktion in einem mathematischen Raum. Gut für deklarative Sprachen (funktionale Programmierung). Zu kompliziert für objekt-orientierte Sprachen mit Vererbung, Exception Handling, Threads. Operationelle Semantik Varianten: Natürliche Semantik (Big-Step Semantics) SOS (Structural Operational Semantics) ASMs (Gurevich Abstract State Machines) Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 12
13 Anwendungen der Semantik Warum eine formale Spezifikation der Semantik einer Programmiersprache? nützlich für Implementation (korrekte Compilation, Platform-Unabhängigkeit) Grundlage für formale Methoden (erweiterte statische Analyse, Verifikation, Korrektheit von Axiomen und Beweisregeln) Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 13
14 Eine einfache imperative Programmiersprache While-Programme Nur zwei Typen: boolean, integer Boolesche Ausdrücke Arithmetische Ausdrücke Alle Variablen werden initialisiert Rekursive Prozeduren Werte- und Variablenparameter Keine Funktionen Keine Ausdrücke mit Seiteneffekten Reihenfolge der Auswertung der Argumente beliebig Keine globalen Variablen Kein zufälliges Verhalten wegen uninitialisierten Variablen Vermeidung von Alias-Problemen Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 14
15 Mitteilungszeichen (Metavariablen) Mitteilungszeichen: x, y, z für Variablen (Var) e, e 1, e für arithmetische Ausdrücke (Aexp) b, b 1, b für Boolesche Ausdrücke (Bexp) s, s, s 1, s für Anweisungen (Stm) p für Namen von Prozeduren Vektornotation: x = x 1, x 2,..., x m e = e 1, e 2,..., e n Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 15
16 Bedeutung der Anweisungen (informale Semantik) skip x := e Mache nichts (leere Anweisung). Weise x den Wert von e zu. s 1 ; s 2 Führe zuerst s 1 aus, danach s 2. if b then s 1 else s 2 end Falls b wahr ist, führe s 1 aus, sonst s 2. while b do s end var x := e in s end p( e; z) Solange b wahr ist, führe s aus. Erzeuge eine neue lokale Variable x mit dem Wert von e und führe s aus. Rufe die Prozedur p mit den Werten von e und den Variablen z auf. Bedingung: Die Variablen in z müssen paarweise verschieden sein. Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 16
17 Bedeutung der Ausdrücke (informale Semantik) Arithmetische Ausdrücke: x i Zugriff auf Variable Konstante (Literal) e 1 op e 2 Arithmetische Operation, op {+, -, *, /} Boolesche Ausdrücke: e 1 op e 2 Relation, op {=, #, <, <=, >, >=} not b Negation (nicht) b 1 and b 2 Konjunktion (und) b 1 or b 2 Disjunktion (oder) Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 17
18 Prozedurdeklaration: Formale Parameter: Prozedurdeklarationen procedure p( x; y) begin s end Die Variablen x sind Werteparameter (call-by-value) Die Variablen y sind Variablenparameter (call-by-name) Syntaktische Bedingungen: Die Variablen in x und y müssen paarweise verschieden sein. Jede freie Variable von s muss in x oder y vorkommen (keine globalen Variablen). Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 18
19 Grammatik der Programmiersprache EBNF (extended Backus-Naur Formalism) Terminalsymbol Nichtterminalsymbol Alternative Alternative {Wiederholung} [Optional] Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 19
20 Grammatik (Zeichen und Tokens) Zeichen: Letter = A.. Z a.. z. Digit = Tokens: Ident = Letter {Letter Digit}. Integer = Digit {Digit}. Var = Ident. Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 20
21 Grammatik (Anweisungen) Stm = skip Var := Aexp if Bexp then StmSeq else StmSeq end while Bexp do StmSeq end var Var := Aexp in StmSeq end Ident ( [AexpList] [ ; VarList] ). StmSeq = Stm { ; Stm}. AexpList = Aexp {, Aexp}. VarList = Var {, Var}. Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 21
22 Grammatik (Arithmetische Ausdrücke) Aexp = Term {AddOp Term}. Term = Factor {MulOp Factor}. Factor = Var Integer ( Aexp ). AddOp = + -. MulOp = * / div mod. Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 22
23 Grammatik (Boolesche Ausdrücke) Bexp = OrExp { or OrExp}. OrExp = PrimExp { and PrimExp}. PrimExp = not PrimExp ( Bexp ) Aexp RelOp Aexp. RelOp = = # < <= > >=. Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 23
24 Grammatik (Programme) Program = {Procedure}. Procedure = Head begin StmSeq end. Head = procedure Ident ( [VarList] [ ; VarList] ). Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 24
25 Bereiche der Variablen var x := e in }{{} Bereich von x end procedure p( x; y) begin }{{} Bereich von x und y end Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 25
26 Arithmetische Ausdrücke: Freie Variablen in Ausdrücken FV(x) = {x} FV(i) = FV(e 1 op e 2 ) = FV(e 1 ) FV(e 2 ) (i ein Integer) (op AddOp MulOp) Boolesche Ausdrücke: FV(e 1 op e 2 ) = FV(e 1 ) FV(e 2 ) (op RelOp) FV(not b) = FV(b) FV(b 1 and b 2 ) = FV(b 1 or b 2 ) = FV(b 1 ) FV(b 2 ) Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 26
27 Freie Variablen in Anweisungen FV(skip) = FV(x := e) = {x} FV(e) FV(s 1 ; s 2 ) = FV(s 1 ) FV(s 2 ) FV(if b then s 1 else s 1 end) = FV(b) FV(s 1 ) FV(s 2 ) FV(while b do s end) = FV(b) FV(s) FV(var x := e in s end) = FV(e) (FV(s) \ {x}) FV(p( e; z)) = FV( e) { z} Vektoren: Für e = e 1,..., e n ist FV( e) = FV(e 1 )... FV(e n ) Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 27
28 Syntaktische Abkürzungen if b then s end repeat s until b if b then s else skip end s; while not b do s end for x := e 1 to e 2 do s end x := e 1 ; var y := e 2 in while x <= y do s; x := x + 1 end end if b 1 then s 1 elsif b 2 then s 2 else s 3 end if b 1 then s 1 else if b 2 then s 2 else s 3 end end Bedingung für For-Schleife: x / FV(e 2 ), y / FV(s). Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 28
29 Liste der Folien Inhalt Übersicht Zusammenfassung Folien mit Stern Literatur Weiterführende Literatur Weiterführende Literatur Semantik von Programmiersprachen Syntax Semantik (statisch vs. dynamisch) Dynamische Semantik Anwendungen der Semantik Eine einfache imperative Programmiersprache Mitteilungszeichen (Metavariablen) Bedeutung der Anweisungen (informale Semantik) Bedeutung der Ausdrücke (informale Semantik) Prozedurdeklarationen Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 29
30 Grammatik der Programmiersprache Grammatik (Zeichen und Tokens) Grammatik (Anweisungen) Grammatik (Arithmetische Ausdrücke) Grammatik (Boolesche Ausdrücke) Grammatik (Programme) Bereiche der Variablen Freie Variablen in Ausdrücken Freie Variablen in Anweisungen Syntaktische Abkürzungen Copyright c 2004 Robert F. Stärk, Computer Science Department, ETH Zürich, Switzerland. 30
Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen
Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.
MehrSemantik von Programmiersprachen
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 14. Juli 2017 Semantik von Programmiersprachen Übersicht Art der Veranstaltung: Vorlesung mit
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
MehrÜbersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,
Vorlesung Höhere Programmiersprachen, WS 2003/04 Teil 2: Formale Semantik Axiomatische Semantik Inhaltsübersicht - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative Programmiersprachen
Mehr1 Funktionale vs. Imperative Programmierung
1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE3-Syntaxdiagramme (Stand 05.11.2010) Aufgabe 1: Entwickeln Sie Regeln zur Übersetzung von EBNF in Syntaxdiagramme. Aufgabe 2: Eine Zahl ist entweder
MehrSyntax der Sprache PASCAL
Syntax der Sprache PASCAL Buchstaben A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ziffern 0 1 2 3 4 5 6 7 8 9 Sonderzeichen und Wortsymbole +
Mehr3 Syntax von Programmiersprachen
3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme
MehrSemantik von Programmiersprachen SS 2017
Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich denis.lohner@kit.edu sebastian.ullrich@kit.edu Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen
Mehr{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel
Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales
MehrEinführung in die Programmiertechnik
Einführung in die Programmiertechnik Formale Beschreibung von Programmiersprachen Lexikalische Regeln Definition von Wörtern (Lexem, Token) Gruppierung von Zeichen Lexikalische Kategorien: Klassen ähnlicher
MehrC.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme
MehrInhalt Kapitel 11: Formale Syntax und Semantik
Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte
MehrProgrammierung Paradigmen und Konzepte
Programmierung Paradigmen und Konzepte Mit 79 Bildern, 85 Beispielen, 130 Aufgaben und Kontrollfragen und 19 Referatsthemen Fachbuchverlag Leipzig im Carl Hanser Verlag 1 Einführung und Überblick 11 1.1
MehrDank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung
Dank Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Diese Vorlesungsmaterialien basieren zum Teil auf den Folien zu den Vorlesungen von Katrin Erk (gehalten an der Universität
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Woche 4 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Modus Ponens A B B A MP Axiome für
MehrGrundlagen der Programmierung 2. Operationale Semantik
Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung
MehrVon der Chomsky-Hierarchie
Von der Chomsky-Hierarchie zur Backus-Naur-Form Ein Beitrag der Theoretischen Informatik zum Siegeszug des Computers Referat von Helmut Schnitzspan Im Rahmen des Seminars Von der EDV zu Facebook Alexander
MehrParsing regulärer Ausdrücke. Karin Haenelt
Karin Haenelt 25.4.2009 1 Inhalt kontextfreie Grammatik für reguläre Ausdrücke Grundlagen Parsebaum: konkrete Syntax Syntaxbaum: abstrakte Syntax Algorithmus: rkennung Konstruktion des Syntaxbaumes 2 Grammatik
Mehr4.4 Imperative Algorithmen Prozeduren
4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):
MehrMethoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.
Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition
MehrDieÜbersetzung funktionaler Programmiersprachen
DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;
MehrEinführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
MehrSPARK95. Ingmar Wirths. 12. Juli 2007
SPARK95 Ingmar Wirths 12. Juli 2007 Motivation Ada wurde zur Programmierung von Mikroprozessoren entwickelt. Motivation Ada wurde zur Programmierung von Mikroprozessoren entwickelt. Ein Systemversagen
MehrAlgorithmen und Programmieren II Programmverifikation {V} P {N}
Algorithmen und Programmieren II Programmverifikation {V} P {N} SS 2012 Prof. Dr. Margarita Esponda ALP II: Margarita Esponda, 11. Vorlesung, 22.5.2012 1 Assertions oder Zusicherungen Das Konzept der Zusicherungen
MehrDatentypen: integer, char, string, boolean
Agenda für heute, 13. April, 2006 Der Datentyp integer Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen Zusammengesetzte if-then-else-anweisungen Var i: integer; Teilbereich der ganzen Zahlen,
Mehr1 Syntax von Programmiersprachen
1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 2. Oktober, 2014 Plan für heute 1. Fragen & Nachbesprechung Übung 2 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 3 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung
MehrDavid Harel, Dexter Kozen, Jerzy Tiuryn. Dynamic Logic. The MIT Press, 2000.
Kapitel 6 Programme In diesem Kapitel beschäftigen wir uns mit der Semantik von Programmen. Dazu betrachten wir eine kleine, idealisierte Programmiersprache IMP, die als Teilsprache von C aufgefasst werden
Mehr7. Syntax: Grammatiken, EBNF
7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik
MehrBinäre Suchbäume (binary search trees, kurz: bst)
Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.
MehrPraktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster
16:02:16 2017-01-17 1 [30] Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom 10.01.2017: Monaden als Berechnungsmuster Christoph Lüth Universität Bremen Wintersemester 2016/17 Frohes
Mehr4.Grundsätzliche Programmentwicklungsmethoden
4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden
MehrFormale Programmverifikation. Referentin: Kirsten Hradek
Formale Programmverifikation Referentin: Kirsten Hradek Formale Programmverifikation 2 Formale Programmverifikation Einführung/Motivation 2 Formale Programmverifikation Einführung/Motivation Softwareverifikation
MehrWarum Programme Verträge schließen sollten
1 Warum Programme Verträge schließen sollten RALF HINZE Institut für Informatik, Lehrstuhl Softwaretechnik, Universität Freiburg Georges-Köhler-Allee, Gebäude 079, 79110 Freiburg i. Br. Email: ralf@informatik.uni-bonn.de
Mehr9.4 Grundlagen des Compilerbaus
Kap09.fm Seite 717 Dienstag, 7. September 2010 2:06 14 9.4 Grundlagen des Compilerbaus 717 so dass die Benutzung dieser Regeln zum Aufbau eines + -Knotens bzw. eines Negations- Knotens im abstrakten Syntaxbaum
MehrKapitel L:V. V. Erweiterungen und Anwendungen zur Logik
Kapitel L:V V. Erweiterungen und Anwendungen zur Logik Produktionsregelsysteme Inferenz für Produktionsregelsysteme Produktionsregelsysteme mit Negation Nicht-monotones Schließen Logik und abstrakte Algebren
MehrEinführung Grundbegriffe
Einführung Grundbegriffe 1.1 Der Modellbegriff Broy: Informatik 1, Springer 1998 (2) Die Modellbildung der Informatik zielt auf die Darstellung der unter dem Gesichtspunkt einer gegebenen Aufgabenstellung
MehrObjektorientierte Programmierung. Kapitel 3: Syntaxdiagramme
Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/
Mehr(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)
Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden
MehrKapitel 5: Syntaxdiagramme und Grammatikregeln
5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrC. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007
C. A. R. Hoare An Axiomatic Basis for Computer Programming Nicolas Schelp Proseminar Assertions SS 2007 Inhalt Motivation Kurze Biographie Der Hoare-Kalkül Axiome und Inferenzregeln des Hoare-Kalküls Die
MehrSemantik von Programmiersprachen SS 2017
Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich denis.lohner@kit.edu sebastian.ullrich@kit.edu Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen
MehrOptimierungen in einer formalen Semantik Konstantenfaltung und Konstantenpropagation
Optimierungen in einer formalen Semantik Konstantenfaltung und Konstantenpropagation http://pp.info.uni-karlsruhe.de/lehre/ss2011/tba/ LEHRSTUHL PROGRAMMIERPARADIGMEN 0 KIT SS Universität 2011 desdenis
MehrSemantik von Programmiersprachen
Semantik von Programmiersprachen Prof. Dr. Manfred Schmidt-Schauß SS 2013 Stand der Folien: 15. April 2013 Semantik von Programmen verschiedene Semantiken: operationale Semantik (Spezifikation eines Interpreters)
Mehr1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language)
4. Zur Struktur der PS PASCAL 4.1. Einleitende Bemerkungen 1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language) Anfang 60er (USA) COBOL (Commercial Business
MehrSyntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang WS 07/08
MehrAbschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
MehrVerifizierende Testverfahren
Spezifikation Um einen Algorithmus zu schreiben, muss das zu lösende Problem genau beschrieben sein. Eine Spezifikation ist Verifizierende Testverfahren vollständig, wenn alle Anforderungen/alle relevanten
MehrVorsemesterkurs Informatik
Vorsemesterkurs Informatik Vorsemesterkurs Informatik Mario Holldack WS2015/16 30. September 2015 Vorsemesterkurs Informatik 1 Einleitung 2 Aussagenlogik 3 Mengen Vorsemesterkurs Informatik > Einleitung
MehrKapitel L:V. V. Erweiterungen und Anwendungen zur Logik
Kapitel L:V V. Erweiterungen und Anwendungen zur Logik Produktionsregelsysteme Inferenz für Produktionsregelsysteme Produktionsregelsysteme mit Negation Regeln mit Konfidenzen Nicht-monotones Schließen
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
Mehr1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.
1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. Beschreiben Sie ferner je einen frei gewählten Datentyp aus der Gruppe der skalaren und einen aus der Gruppe der strukturierten
MehrIntensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
MehrGTI. Hannes Diener. 18. Juni. ENC B-0123,
GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.
MehrINFORMATIK FÜR BIOLOGEN
Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie
Mehr6. Funktionen, Parameterübergabe
6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrMultiparadigmen- Programmiersprachen
Multiparadigmen- Programmiersprachen Martin Grabmüller magr@cs.tu-berlin.de Fachgebiet Übersetzerbau und Programmiersprachen Fakultät IV Elektrotechnik und Informatik Technische Universität Berlin Multiparadigmen-Programmiersprachen
Mehr1. Typen 1.1 Typsicherheit 1.2 Typprüfung
1. Typen 1.1 Typsicherheit 1.2 Typprüfung Ein Typsystem ist ein praktikables, syntaktisches Verfahren, mit dem man die Abwesenheit gewisser Laufzeit-Eigenschaften eines Programms beweisen kann, indem man
MehrKorrekte Software: Grundlagen und Methoden Vorlesung 11 vom : Funktionen und Prozeduren
18:10:49 2016-07-07 1 [14] Korrekte Software: Grundlagen und Methoden Vorlesung 11 vom 06.06.16: Funktionen und Prozeduren Serge Autexier, Christoph Lüth Universität Bremen Sommersemester 2016 Korrekte
MehrEinführung in die Theoretische Informatik. Woche 1. Harald Zankl. Institut für UIBK Wintersemester 2014/2015.
Einführung in die Woche 1 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Einleitung Einleitung HZ (IFI) ETI - Woche 1 8/210 Die beschäftigt sich mit der Abstraktion, Modellbildung
MehrSemantik von Programmiersprachen
Semantik von Programmiersprachen Sommersemester 2010 Lehrstuhl für Programmierparadigmen Andreas Lochbihler andreas.lochbihler@kit.edu Inhaltsverzeichnis 1 Einführung 5 1.1 Was ist eine Semantik?....................................
MehrProgrammierkurs Java
Programmierkurs Java Kontrollstrukturen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Kontrollstrukturen Wichtig: bedingte Ausführung
MehrEinführung in die Informatik I (autip)
Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis
MehrLexikalische Programmanalyse der Scanner
Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung
MehrDie Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp
Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert
MehrZusammenfassung der letzten LVA. Einführung in die Theoretische Informatik. Syntax der Aussagenlogik. Inhalte der Lehrveranstaltung
Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Wenn das Kind schreit, hat es Hunger Das Kind schreit Also, hat das Kind Hunger Christina Kohl Alexander Maringele
MehrEinstieg in die Informatik mit Java
Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere
MehrZusammenfassung. Definition. 1 (x i ) 1 i n Sequenz von Registern x i, die natürliche Zahlen beinhalten. 2 P ein Programm. Befehle: 1 x i := x i + 1
Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Christina Kohl Alexander Maringele Georg Moser Michael Schaper Manuel Schneckenreither Eine Registermaschine (RM)
MehrZusammenfassung der letzten LVA. Einführung in die Theoretische Informatik. Syntax der Aussagenlogik. Inhalte der Lehrveranstaltung
Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Christina Kohl Alexander Maringele Georg Moser Michael Schaper Manuel Schneckenreither Institut für Informatik
MehrDatentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache
Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert
MehrInterpreter - Gliederung
Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache
MehrPraktische Informatik 3
Praktische Informatik 3 Christian Maeder WS 03/04 Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen 3 Inhalt Wo ist das Problem?
Mehrn 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information
MehrABITURPRÜFUNG 2003 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)
ABITURPRÜFUNG 2003 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Arbeitszeit: 270 Minuten Hilfsmittel: Formeln und Tabellen für die Sekundarstufen I und II. Berlin: Paetec, Ges. für Bildung und Technik mbh; PC
MehrSemantik von Programmiersprachen
Semantik von Programmiersprachen Sommersemester 2012 Lehrstuhl für Programmierparadigmen Andreas Lochbihler andreas.lochbihler@kit.edu Inhaltsverzeichnis 1 Einführung 5 1.1 Was ist eine Semantik?....................................
MehrInformatik I Übung, Woche 41
Giuseppe Accaputo 9. Oktober, 2014 Plan für heute 1. Fragen & Nachbesprechung Übung 3 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 4 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung
MehrInformatik I Übung, Woche 41
Giuseppe Accaputo 8. Oktober, 2015 Plan für heute 1. Fragen & Nachbesprechung Übung 3 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 4 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung
Mehr3.4 Struktur von Programmen
3.4 Struktur von Programmen Programme sind hierarchisch aus Komponenten aufgebaut. Für jede Komponente geben wir Regeln an, wie sie aus anderen Komponenten zusammengesetzt sein können. program ::= decl*
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Woche 1 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Einleitung Einleitung HZ (IFI) ETI - Woche 1 8/210 Theoretische Informatik Theoretische
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrGrundlagen der Programmiersprachen
GPS-0-1 Grundlagen der Programmiersprachen Prof. Dr. Uwe Kastens Sommersemester 2016 Vorlesung Grundlagen der Programmiersprachen SS 2016 / Folie 001 Anfang Begrüßung Ziele GPS-0-2 Die Vorlesung soll Studierende
MehrGliederung der Folien
1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung
MehrVerifikation von Programmen
http://scam-trap.com/i/stophacking1.gif Verifikation von Programmen OOPM, Ralf Lämmel 380 Was tun? (Mit den Spezifikationen) Dokumentation Überprüfen der Bedingungen zur Laufzeit Verifizieren der Bedingungen
MehrKonzepte von Programmiersprachen
Konzepte von Programmiersprachen Kapitel 3: Ausdrücke Phillip Heidegger Universität Freiburg, Deutschland SS 2009 Phillip Heidegger (Univ. Freiburg) Konzepte von Programmiersprachen KvP 1 / 17 Inhalt Let
MehrFunktionale Programmierung Einführung
Einführung Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 13.09.2017 15:29 Inhaltsverzeichnis Was ist imperative Programmierung.......................
MehrSprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren
Hanspeter Mössenböck Sprechen Sie Java? Eine Einführung in das systematische Programmieren 3., überarbeitete und erweiterte Auflage Tm\ dpunkt.verlag 1 Grundlagen 1 1.1 Daten und Befehle 2 1.2 Algorithmen
Mehr1 Inhalt der Vorlesung B-PS1
1 Inhalt der Vorlesung B-PS1 1.1 Tag 1 1.1.1 Vormittag Geschichte der Programmiersprachen Wie viele Programmiersprachen gibt es? https://en.wikipedia.org/wiki/list_of_programming_languages Esoterische
Mehr3. Klausur Einführung in die Theoretische Informatik Seite 1 von Welches der folgenden klassischen Probleme der Informatik ist entscheidbar?
3. Klausur Einführung in die Theoretische Informatik Seite 1 von 14 1. Welches der folgenden klassischen Probleme der Informatik ist entscheidbar? A. Gegeben eine kontextfreie Grammatik G. Gibt es ein
MehrInformatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -
Informatik I - Programmierung Globalübung 11.11.2003 Hoare-Kalkül Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Ariane 5 Die Ariane 5 ist das jüngste Modell der Trägerrakete
Mehr4 Spezifikation und Verifikation
4 Spezifikation und Verifikation Program testing can at best show the presence of errors, but never their absence. Dijkstra, http://www.cs.utexas.edu/users/ewd Beware of bugs in the above code; I have
MehrAlphabet, formale Sprache
n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l
MehrLemma Für jede monotone Grammatik G gibt es eine kontextsensitive
Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive Grammatik G mit L(G) = L(G ). Beweis im Beispiel (2.): G = (V,Σ, P, S) : P = {S asbc, S abc, CB BC, ab ab, bb bb, bc bc, cc cc}. (i) G
MehrWas ist ein Compiler?
Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?
Mehr