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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Teil IV Semantik imperativer Sprachen 201

2 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap. 3) Maschinensemantik: basiert auf Übersetzung in Abstrakten Maschinencode denotational ( funktionale Sprache als Metasprache) axiomatisch: logische Schlussregeln für jedes Sprachkonstrukt hier: am Beispiel der einfachen imperativen Sprache IMP 202

3 2. Syntax von IMP IMP umfasst: Anweisungen, arithmetische und boolesche Ausdrücke es fehlen u.a.: Prozeduren, Funktionen, Rekursion, statische und dynamische Datenstrukturen, I/O Z ganze Zahlen; z, z, z 1, z 2,... IB := {true, false} boolesche Werte; β, β 1, β 2 Op := Aop Bop Relop = {+,,,...} {,, } {==, <=,...} Operationssymbole Var Variablen; x, y, x, y,

4 Syntax von IMP (2) Aexp arithm. Ausdrücke; e, e, e 1, e 2,... Bexp bool. Ausdrücke; b, b, b 1, b 2,... Com Anweisungen; c, c, c 1, c 2,... Mengen Z, IB, Op, Var vorgegeben Mengen Aexp, Bexp, Com gemäß folgender Backus-Naur-Form Aexp : e ::= z x e 1 e 2 Aop Bexp : b ::= true false e 1 e 2 b b 1 b 2 mit Relop, Bop { } Com : c ::= skip x := e c 1 ; c 2 if b then c 1 else c 2 while b do c 204

5 Abstrakte Syntax hier: abstrakte Syntax, Parsing vernachlässigt konkrete Syntax: (u.a.) Präzedenzregeln und Klammerung zur Klärung der syntaktischen Struktur, z.b.: (13 (22 + 4)) *

6 3. Reduktionssemantik von IMP imperative Programmiersprache: Loc Menge der Speicherplätze; α, α, α 1, α 2,... Zustand (Belegung der Speicherplätze) Ausdrücke werden in Zustand und Umgebung ausgewertet Anweisungen bewirken Zustandstransformation Σ := {σ σ : Loc Z} Menge der Zustände Env := {ρ ρ : Var Loc} Menge der Umgebungen Reduktionsrelation (Aexp Env Σ) Z (Bexp Env Σ) IB (Com Env Σ) Σ 206

7 Syntax-orientierte Definition von Semantik arithmetischer Ausdrücke 1) z, ρ, σ z (Axiom; infix) 2) x, ρ, σ σ(ρ(x)) 3) e 1, ρ, σ z 1 e 2, ρ, σ z 2 e 1 e 2, ρ, σ z wobei z := z 1 z 2, Aop } Prämisse }Konklusion Bemerkung: i.a. nicht-deterministisch, hier: deterministisch 207

8 Semantik boolescher Ausdrücke 4) true, ρ, σ true false, ρ, σ false 5) e 1, ρ, σ z 1 e 2, ρ, σ z 2 e 1 e 2, ρ, σ β wobei β := z 1 z 2, Relop 6) strikte Interpretation von Bop: b 1, ρ, σ β 1 b 2, ρ, σ β 2 b 1 b 2, ρ, σ β wobei β := β 1 β 2, Bop { } ( analog, jedoch nur ein Argument) 208

9 Nicht-strikte Interpretation boolscher Operationen Argumente werden nur ausgewertet, wenn nötig b z.b. sequentielles : 1, ρ, σ false b 1 b 2, ρ, σ false b 1, ρ, σ true b 2, ρ, σ β b 1 b 2, ρ, σ β analog: sequentielles 209

10 Semantik von Anweisungen Notation: σ[α/z] { : Loc Z def. durch z, falls α = α σ[α/z](α ) := 7) skip, ρ, σ σ 8) σ(α ), sonst e, ρ, σ z x := e, ρ, σ σ[ρ(x)/z] 9) c 1, ρ, σ σ 1 c 2, ρ, σ 1 σ 2 c 1 ; c 2, ρ, σ σ 2 10) b, ρ, σ true c 1, ρ, σ σ 1 if b then c 1 else c 2, ρ, σ σ 1 nicht strikt! b, ρ, σ false c 2, ρ, σ σ 2 if b then c 1 else c 2, ρ, σ σ 2 210

11 11) Semantik von Anweisungen (Fortsetzung) b, ρ, σ false while b do c, ρ, σ σ b, ρ, σ true c, ρ, σ σ 1 while b do c, ρ, σ 1 σ 2 while b do c, ρ, σ σ 2 Bemerkungen: 1) die operationelle Semantik definiert Äquivalenz auf arithm. und bool. Ausdücken sowie Anweisungen Programmtransformation, Optimierung 2) alternative Semantiken: schrittweise Auswertung von Ausdrücken und Anweisungen verschiedene Möglichkeiten zur Festlegung der Größe eines Schritts 3) aus der SOS-Semantik lässt sich leicht ein Interpreter gewinnen 211

12 Beispielauswertung eines Programms while x>0 do (y := x*y; x:= x-1) wobei: Lemma 1: Lemma 2: ρ 0 (x) = α 1 σ 0 (α 1 ) = 1 ρ 0 (y) = α 2 σ 0 (α 2 ) = 1 ρ 0 (z) =, falls z {x, y} σ 0 (α) =, falls α {α 1, α 2 } x, ρ 0, σ 0 1 y, ρ 0, σ 0 1 x y, ρ 0, σ 0 1 y := x y, ρ 0, σ 0 σ 0 [α 2 /1] }{{} =:σ 1 x, ρ 0, σ 1 1 1, ρ 0, σ 1 1 x 1, ρ 0, σ 1 0 x := x 1, ρ 0, σ 1 σ 1 [α 1 /0] }{{} =:σ 2 212

13 Lemma 3: Lemma 1 Lemma 2 y := x y; x := x 1, ρ 0, σ 0 σ 2 Lemma 4: x, ρ 0, σ 2 0 0, ρ 0, σ 2 0 x > 0, ρ 0, σ 2 false while x > 0 do (y := x y; x := x 1), ρ 0, σ 2 σ 2 Hauptrechnung: x, ρ 0, σ 0 1 0, ρ 0, σ 0 0 Lemma 3 Lemma 4 x > 0, ρ 0, σ 0 true while x > 0 do (y := x y; x := x 1), ρ 0, σ 0 σ 2 213

14 4.1 Abstrakter Maschinencode 4. Maschinen-Semantik von IMP abstrakte Stackmaschine mit Datenkeller und Hauptspeicher erweiterbar um Funktionskeller, Heap,... für rekursive Funktionen, dynamische Datenstrukturen,... Speicher: SM := BZ DK HS BZ := IN DK := Z (Menge der) Stackmaschinenzustände Befehlszähler Datenkeller HS := Z Loc (d.h. Loc Z) Hauptspeicher Zustand: s = (m, d, h) SM 214

15 Befehlsvorrat Instr 1) arithmetische, relationale und logische Befehle: ADD, SUB, MULT,...,EQ,LEQ,...,AND,OR,NOT (hier: 0-Adress-Befehle (Operanden auf Datenkeller), alternativ: 1-,2- oder 3-Adress-Befehle) 2) Transportbefehle: LOAD α, STO α, LIT z 3) Sprungbefehle: JMP m, JPF m (m BZ ) 215

16 C[[Γ]] : SM SM C[[SUB]] (m, d, h) := Befehlssemantik C[[LIT z]] (m, d, h) := (m + 1, z : d, h) Γ Instr }{{} if d = z 1 : z 2 : d then (m + 1, (z 2 z 1 ) : d, }{{} Metasprache ausgerechnet! analog: ADD, EQ, AND,... C[[LOAD α]] (m, d, h) := (m + 1, h(α) : d, h) C[[STO α]] (m, d, h) := if d = z : d then (m + 1, d, h[α/z]) C[[JMP m ]] (m, d, h) := (m, d, h) C[[JPF m ]] (m, d, h) := if d = 0 : d then (m, d, h) else if d = 1 : d then (m + 1, d, h) 216

17 Zwischencode (Z-Code) P Z Code : P = Γ 1 ;... ; Γ p Zwischencode-Semantik M : Z Code SM SM mit p IN +, Γ i Instr M[[ }{{} P ]] (m, d, h) := if 1 m p then M[[P]](C[[Γ m ]] (m, d, h)) Γ 1 ;...,Γ p else (m, d, h) 217

18 Symbolischer Zwischencode (SZ-Code) wegen induktiver Codegenerierung zunächst: symbolische Adressen Label := { l i i IN} (u.u.) mehrere Labels für einen Befehl P SZ Code : P = w 1 Γ 1 ;... ; w p Γ p ; w p+1 mit p 1, w i Labels Γ i (Instr {JMP m, JPF m m BZ }) {JMP l, JPF l l Label} Vor.: Labels aus w 1... w p+1 paarweise verschieden 218

19 4.2 Übersetzung in Abstrakten Maschinencode trans : Com Tab Z Code Symboltabelle: Tab := {st st : Var Loc} Übersetzung arithmetischer Ausdrücke exptrans : Aexp Tab SZ Code exptrans [[ z ]] st := LIT z; exptrans [[ x ]] st := LOAD st(x); exptrans [[ e 1 e 2 ]] st := exptrans [[ e 1 ]] st exptrans [[ e 2 ]] st OP; mit OP {ADD, SUB,...} 219

20 Übersetzung boolescher Ausdrücke bexptrans : Bexp Tab SZ Code bexptrans [[ true ]] st := LIT 1; bexptrans [[ false ]] st := LIT 0; bexptrans [[ e 1 e 2 ]] st := exptrans [[ e 1 ]] st exptrans [[ e 2 ]] st ROP; mit ROP {EQ, LEQ,...} 220

21 Übersetzung boolescher Ausdrücke (2) bexptrans [[ b 1 b 2 ]] st := bexptrans [[ b 1 ]] st bexptrans [[ b 2 ]] st BOP; mit BOP {AND, OR}, strikt! bexptrans [[ b ]] st := bexptrans [[ b ]] st NOT; alternative Übersetzung boolescher Ausdrücke über Kontrollfluss (nicht strikt!) 221

22 Übersetzung von Anweisungen cmdtrans : Com Tab SZ Code cmdtrans [[ skip ]] st := ε (leerer Code) cmdtrans [[ x := e ]] st := exptrans[[ e ]] st STO st(x); cmdtrans [[ c 1 ; c 2 ]] st := cmdtrans [[ c 1 ]] st cmdtrans [[ c 2 ]] st 222

23 Übersetzung von Anweisungen (2) cmdtrans [[ if b then c 1 else c 2 ]] st := bexptrans [[ b ]] st JPF l 1 ; cmdtrans [[ c 1 ]] st JMP l 2 ; l 1 : cmdtrans [[ c 2 ]] st l 2 : wobei: l 1, l 2 neue Labels 223

24 Übersetzung von Anweisungen (3) cmdtrans [[ while b do c ]] st := l 1 : bexptrans [[ b ]] st JPF l 2 ; cmdtrans [[ c ]] st JMP l 1 ; l 2 : wobei: l 1, l 2 neue Labels eigentlich noch notwendig: (hier zur Vereinfachung weggelassen) Ersetzung der symbolischen Labels durch Speicheradressen 224

25 Maschinen-Semantik eines IMP-Programms ˆM : Com Env Σ Σ ˆM [[ c ]] ρ σ := out(m [[ trans[[c]] ρ ]] (1, ε, σ)) wobei out(m, d, h) := h alternative Definition: ˆM : Z k Z k 225

26 Beispiel: Maschinensemantik ˆM [[ while x>0 do (y:=x*y; x:= x-1) ]] ρ 0 σ 0 =? zunächst: cmdtrans [[ while x>0 do (y:=x*y; x:= x-1) ]] l 1 : bexptrans [[ x > 0 ]] st 0 l 0 : JPF l 0 cmdtrans [[ y := x y; x := x 1 ]] st 0 JMP l 1 =ρ 0 {}}{ st 0 = = l 1 : exptrans [[ x ]] st 0 STO st 0 (y); exptrans [[ 0 ]] st 0 GTH; JPF l 0 ; exptrans [[ x y ]] st 0 l 0 : exptrans [[ x 1 ]] st 0 STO st 0 (x); JMP l 1 ; 226

27 Erzeugter Maschinencode im Beispiel P := trans [[ while x>0 do (y:=x*y; x:= x-1) ]] st 0 = LOAD 1; LIT 0; GTH; JPF 14; LOAD 1; LOAD 2; MULT; STO 2; LOAD 1; LIT 1; SUB; STO 1; JMP 1; 227

28 Maschinenberechnung im Beispiel M [[ P ]] (1, ε, =σ 0 {}}{ h 0 ) = M [[ P ]] (2, 1, h 0 ) = M [[ P ]] (3, 0 : 1, h 0 ) = M [[ P ]] (4, 1, h 0 ) = M [[ P ]] (5, ε, h 0 ) = M [[ P ]] (6, 1, h 0 ) = M [[ P ]] (7, 1 : 1, h 0 ) = M [[ P ]] (8, 1, h 0 ) = M [[ P ]] (9, ε, h 0 [2/1]) = }{{} =h 0 M [[ P ]] (10, 1, h 0 ) = M [[ P ]] (11, 1 : 1, h 0 ) = M [[ P ]] (12, 0, h 0 ) = M [[ P ]] (13, ε, h 0 [1/0]) = }{{} =:h 1 M [[ P ]] (1, ε, h 1 ) = M [[ P ]] (2, 0, h 1 ) = M [[ P ]] (3, 0 : 0, h 1 ) = M [[ P ]] (4, 0, h 1 ) = M [[ P ]] (14, ε, h 1 ) = (14, ε, h 1 ) out(14, ε, h 1 ) = h 1 228

Zwischencodeerzeugung Compiler II

Zwischencodeerzeugung Compiler II Zwishenodeerzeugung Compiler II Prof. Dr. Ursula Goltz 14.09.2012 Einleitung Front-End... Parser Sem. Analys Zwishenodegenerator Bak-End Codegenerator... Zwishendarstellung (Zwishenode) evtl. mashinennunabh.

Mehr

David Harel, Dexter Kozen, Jerzy Tiuryn. Dynamic Logic. The MIT Press, 2000.

David 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

Mehr

Semantik von Programmiersprachen

Semantik 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)

Mehr

Einführung Grundbegriffe

Einfü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

Mehr

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Lemma 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

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung: Syntaxbaum Ausgabeprogramm Starte mit Syntaxbaum: Darstellung des eingegebenen Programms Wähle Zielarchitektur Wähle abstrakte

Mehr

Imperative vs. Funktionale Programmierung

Imperative vs. Funktionale Programmierung Beispiel: Entwerfe eine Funktion, die testet, ob eine Zahl n eine Primzahl ist oder nicht. Beobachtung: (1) Wenn n Primzahl ist, ist die Menge der Teiler von n leer. (2) Die Menge der Teiler von n sind

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Statt (r s) schreiben wir in Zukunft meistens rs, gelegentlich auch (r; s).

Statt (r s) schreiben wir in Zukunft meistens rs, gelegentlich auch (r; s). 14 2 REGULÄRE AUSDRÜCKE 2 Reguläre Ausdrücke Wir wollen (i.a. unendliche) Sprachen mit endlichen Mitteln darstellen, z.b. durch Grammatiken, nach denen die Sätze der Sprache gebildet werden dürfen. Es

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

Mehr

Interpreter - Gliederung

Interpreter - 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

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 4.1

Algorithmen und Datenstrukturen 1 Kapitel 4.1 Algorithmen und Datenstrukturen 1 Kapitel 4.1 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 4: Maschinenmodelle [Dieses Kapitel hält sich eng an

Mehr

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

C.3 Funktionen und Prozeduren

C.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

Mehr

Teil IX. Eine kleine Programmiersprache

Teil IX. Eine kleine Programmiersprache Teil IX Eine kleine Programmiersprache 1 Teil IX.1 Syntaktische Beschreibungsmittel 2 Chomsky Grammatik Eine Chomsky Grammatik wird beschrieben mit einem Quadrupel G = (N, T, P, S). Dabei ist: N die Menge

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2010 I. Die

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Übung Simon Wacker Karlsruher Institut für Technologie Wintersemester 2015/2016 GBI Grundbegriffe der Informatik Karlsruher Institut für Technologie 1 / 13 Programmiersprachen

Mehr

4. Induktives Definieren - Themenübersicht

4. Induktives Definieren - Themenübersicht Induktives Definieren 4. Induktives Definieren - Themenübersicht Induktives Definieren Natürliche Zahlen Operationen auf natürlichen Zahlen Induktive Algorithmen Induktiv definierte Mengen Binärbäume Boolesche

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Johannes Köbler Institut für Informatik Humboldt-Universität zu Berlin WS 2011/12 Die Registermaschine (random access machine, RAM) 0 I 0 1 I 1 2 I 2 m I m Programm

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Kapitel L:II. II. Aussagenlogik

Kapitel L:II. II. Aussagenlogik Kapitel L:II II. Aussagenlogik Syntax der Aussagenlogik Semantik der Aussagenlogik Eigenschaften des Folgerungsbegriffs Äquivalenz Formeltransformation Normalformen Bedeutung der Folgerung Erfüllbarkeitsalgorithmen

Mehr

ALP I Einführung in Haskell

ALP I Einführung in Haskell ALP I Einführung in Haskell WS 2012/2013 Was ist Haskell? Haskell ist eine rein Funktionale Programmiersprache mit einer nach Bedarf Auswertung-Strategie oder "Lazy Evaluation". Was bedeutet rein funktional?

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 5 Formale Algorithmenmodelle A&P (WS 14/15): 05 Formale Algorithmenmodelle 1 Überblick Motivation Formale Algorithmenmodelle Registermaschine Abstrakte Maschinen

Mehr

Mathematik für Informatiker I

Mathematik für Informatiker I Mathematik für Informatiker I Mitschrift zur Vorlesung vom 19.10.2004 In diesem Kurs geht es um Mathematik und um Informatik. Es gibt sehr verschiedene Definitionen, aber für mich ist Mathematik die Wissenschaft

Mehr

Semantics of a Call-by-Need Lambda Calculus with McCarthy s amb for Program Equivalence

Semantics of a Call-by-Need Lambda Calculus with McCarthy s amb for Program Equivalence Semantics of a Call-by-Need Lambda Calculus with McCarthy s amb for Program Equivalence David Sabel Institut für Informatik Fachbereich Informatik und Mathematik Goethe-Universität Frankfurt Kolloquium

Mehr

Kapitel 4. Induktive Definitionen und Beweise

Kapitel 4. Induktive Definitionen und Beweise Kapitel 4 Induktive Definitionen und Beweise Bei der Definition der Semantik der Programmiersprache IMP haben wir an vielen verschiedenen Stellen induktive Definitionen benutzt: angefangen bei der Syntax

Mehr

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven

Mehr

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Compiler, Übersetzer. Allgemeine Erklärung / Definition Compiler, Übersetzer Allgemeine Erklärung / Definition Ein Übersetzer ist ein Programm, das ein S 1 -Wort den Quelltext in ein S 2 -Wort umwandelt den Zieltext wobei die Semantik erhalten bleibt. Frage:

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben. Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Daher ist y = x + 5.6; keine Gleichung, sondern die Anweisung den Wert

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

LOOP-Programme: Syntaktische Komponenten

LOOP-Programme: Syntaktische Komponenten LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=

Mehr

Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines

Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University,

Mehr

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S) Grammatiken Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V Startsymbol S V Produktionen P ( (V Σ) \ Σ ) (V Σ) Kurzschreibweise G = (V, Σ, P, S) Schreibweise für Produktion (α, β) P: α β 67 /

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Fachseminar. Semantische Analyse

Fachseminar. Semantische Analyse Fachseminar Vortragender: Arton Berisha Thema : Semantische Analyse Kursleiter: Prof. Dr. Helmut Weber Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist

Mehr

Informatik I Übung, Woche 40

Informatik 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

Mehr

KOP / FBS - Programmierung

KOP / FBS - Programmierung KOP / FBS - Programmierung Programmieren in Anweisungsliste Programmieren in strukturierten Text Programmieren in Kontaktplan Programmieren in Funktionsbausteinsprache KOP Programmierung (1) 2 1 Neues

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. 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

Mehr

Einführung in die Informatik Algorithms

Einführung in die Informatik Algorithms Einführung in die Informatik Algorithms Vom Problem zum Algorithmus und zum Programm Wolfram Burgard Cyrill Stachniss 1.1 Motivation und Einleitung In der Informatik sucht man im Normalfall nach Verfahren

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

Lambda-Kalkül. Philipp Meyer. 28. April 2009

Lambda-Kalkül. Philipp Meyer. 28. April 2009 Lambda-Kalkül Philipp Meyer 28. April 2009 1 Einleitung Der λ-kalkül ist eine von Alonzo Church und Stephen Kleene in den 1930er Jahren eingeführtes Modell zur Beschreibung berechenbarer Funktionen. Es

Mehr

26 Hierarchisch strukturierte Daten

26 Hierarchisch strukturierte Daten Algorithmik II Peter Wilke Sommersemester 2005 Teil III Funktionale Programmierung 26 Hierarchisch strukturierte Daten Peter Wilke Algorithmik II Sommersemester 2005 1 Peter Wilke Algorithmik II Sommersemester

Mehr

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) WS 2014/15 Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_14

Mehr

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung Funktionale Programmierung 1 Funktionale Programmierung: Vorlesungsüberblick 1. Funktionale Programmierung Prinzipien funktionaler Programmierung Funktionale Programmierung in prozeduralen Sprachen Rekursive

Mehr

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis

Mehr

Funktionale Programmierung

Funktionale Programmierung Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken

Mehr

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung Adressen Adressen, Termine Studienleistung Praktikum Funktionale Programmierung Organisation und Überblick Dr. David Sabel Büro und Email Raum 216, Robert-Mayer-Str. 11-15 sabel@ki.informatik.uni-frankfurt.de

Mehr

Anfragen an XML-Dokumente mit XPath

Anfragen an XML-Dokumente mit XPath Anfragen an XML-Dokumente mit XPath Heike Adel 21.06.2010 1 / 32 Motivation Gliederung Motivation Mit XPath kann man... Knoten aus XML-Dokumenten auswählen Werte aus XML-Dokumentdaten berechnen => ganz

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Algorithmen & Programmierung. Ausdrücke & Operatoren (1) Algorithmen & Programmierung Ausdrücke & Operatoren (1) Ausdrücke Was ist ein Ausdruck? Literal Variable Funktionsaufruf Ausdruck, der durch Anwendung eines einstelligen (unären) Operators auf einen Ausdruck

Mehr

Rekursive Funktionen Basisfunktionen

Rekursive Funktionen Basisfunktionen Rekursive Funktionen Basisfunktionen die nullstellige Funktion Z, die den konstanten Wert 0 liefert, die Funktion S : N N, bei der jeder natürlichen Zahl ihr Nachfolger zugeordnet wird, die Funktion P

Mehr

Theoretische Informatik. Alphabete, Worte, Sprachen

Theoretische Informatik. Alphabete, Worte, Sprachen Theoretische Informatik Alphabete, Worte, Sprachen Alphabete, Worte, Sprachen 1. Alphabete und Worte Definitionen, Beispiele Operationen mit Worten Induktionsbeweise 2. Sprachen Definition und Beispiele

Mehr

Informationsverarbeitung auf Bitebene

Informationsverarbeitung auf Bitebene Informationsverarbeitung auf Bitebene Dr. Christian Herta 5. November 2005 Einführung in die Informatik - Informationsverarbeitung auf Bitebene Dr. Christian Herta Grundlagen der Informationverarbeitung

Mehr

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Grundlagen der Programm- und Systementwicklung Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Technische Universität München Institut für Informatik Software &

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist

Mehr

2.4 Kontextsensitive und Typ 0-Sprachen

2.4 Kontextsensitive und Typ 0-Sprachen Definition 2.43 Eine Typ 1 Grammatik ist in Kuroda Normalform, falls alle Regeln eine der folgenden 4 Formen haben: Dabei: A, B, C, D V und a Σ. Satz 2.44 A a, A B, A BC, AB CD. Für jede Typ 1 Grammatik

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1)

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1) Motivation Funktionale Programmiersprachen Haskell Übersicht Einführung in die Funktionale Programmierung: Einleitung & Motivation Prof Dr. Manfred Schmidt-Schauß 1 Motivation Übersicht Programmierparadigmen

Mehr

Rechnerarchitektur Teil 2

Rechnerarchitektur Teil 2 Rechnerarchitektur Teil 2 Fähigkeiten der Registermaschine und Sprachübersetzung Dipl.-Inform. Meiko Lösch 2006-05-12 Inhalt 1 Rechenfähigkeit Zuweisungen Rechnen Relationen 2 Programmierfähigkeit Schleifen

Mehr

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren 1 und der Informatik I: Einführung in die Programmierung 5., bedingte Ausführung und Albert-Ludwigs-Universität Freiburg Bernhard Nebel 27. Oktober 2015 27. Oktober 2015 B. Nebel Info I 3 / 21 Der Vergleichsoperatoren

Mehr

Theoretische Informatik SS 03 Übung 3

Theoretische Informatik SS 03 Übung 3 Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige

Mehr

Vorsemesterkurs Informatik

Vorsemesterkurs Informatik Vorsemesterkurs Informatik Vorsemesterkurs Informatik Mario Holldack WS2015/16 30. September 2015 Vorsemesterkurs Informatik 1 Einleitung 2 Aussagenlogik 3 Mengen Vorsemesterkurs Informatik > Einleitung

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

Überblick und Wiederholung

Überblick und Wiederholung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-14-15/infoeinf WS14/15 Klausurinformationen 6 ECTS: Klausur 07.02.2015 10:15 12:15 Uhr (120

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:

Mehr

Programmieren in Haskell Programmiermethodik

Programmieren in Haskell Programmiermethodik Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

Mehr

Der λ-kalkül. Frank Huch. Sommersemester 2015

Der λ-kalkül. Frank Huch. Sommersemester 2015 Der λ-kalkül Frank Huch Sommersemester 2015 In diesem Skript werden die Grundlagen der Funktionalen Programmierung, insbesondere der λ-kalkül eingeführt. Der hier präsentierte Stoff stellt einen teil der

Mehr

Nachholklausur Mathematik IV für Bachelor WIF und IF. Teil I : Stochastik

Nachholklausur Mathematik IV für Bachelor WIF und IF. Teil I : Stochastik Otto-von-Guericke-Universität Magdeburg Montag, 02.02.09 Fakultät für Mathematik Prof. Dr. W. Kahle, Priv.-Doz. Dr. M. Kunik Wichtig: Nachholklausur Mathematik IV für Bachelor WIF und IF Teil I : Stochastik

Mehr

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit Die Programmiersprache LOOP (i) Syntaktische Komponenten: Variable: x 0, x 1, x 2,... Konstanten: 0, 1, 2,... Trennsymbole: ; := Operationszeichen: + Schlüsselwörter: LOOP DO END (ii) LOOP-Programme: Wertzuweisungen:

Mehr

Tag 6. Module, benannte Funktionen und Rekursion

Tag 6. Module, benannte Funktionen und Rekursion Tag 6 Module, benannte Funktionen und Rekursion Wir verlassen nun die abgeschlossene kleine Welt des interaktiven Interpreters und lernen, wie man richtige Haskell-Programme schreibt. Im Interpreter haben

Mehr

Einige Teilgebiete der Informatik

Einige Teilgebiete der Informatik Einige Teilgebiete der Informatik Theoretische Informatik Formale Sprachen, Automatentheorie, Komplexitätstheorie, Korrektheit und Berechenbarkeit, Algorithmik, Logik Praktische Informatik Betriebssysteme,

Mehr

Beispiel einer Übersetzung

Beispiel einer Übersetzung Beispiel einer Übersetzung Ausdruck in C aktuelle_zeit = Startzeit + vergangene_minuten*60 + vergangene_sekunden; Ausdruck im Instruktionssatz des R10000 LW r1,minuten LW r1,sekunden ADDI r2,r0,60 ADD

Mehr

13. Einführung in die Programmiersprache Strukturierter Text (ST)

13. Einführung in die Programmiersprache Strukturierter Text (ST) 13. Einführung in die Programmiersprache Strukturierter Text (ST) 13.1 Übersicht Strukturierter Text (ST, auch SCL) ist eine der sechs in IEC 61131-3 festgeschriebenen Programmiersprachen für Automatisierungstechnik.

Mehr

Einführung in die Funktionale Programmierung: Einleitung & Motivation

Einführung in die Funktionale Programmierung: Einleitung & Motivation Einführung in die Funktionale Programmierung: Einleitung & Motivation Prof Dr. Manfred Schmidt-Schauß WS 2011/12 Stand der Folien: 25. Oktober 2011 Motivation Funktionale Programmiersprachen Haskell Übersicht

Mehr

Syntax von LOOP-Programmen

Syntax von LOOP-Programmen LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:

Mehr

Phasen der Codegenerierung

Phasen der Codegenerierung Phasen der Codegenerierung 1. Vorverarbeitung Semantik basierte Optimierungen Basis: Zwischencode (abstrakter Syntaxbaum) 2. eigentliche (proper) Codegenerierung Erzeugung des Zielcodes (mit Optimierung)

Mehr

Escher funktionale und logische Programmierung

Escher funktionale und logische Programmierung Escher funktionale und logische Programmierung Seminar Programming Languages From Hell Lars Hupel 2010-06-07 Dieses Werk ist lizenziert unter den Bedingungen der Creative Commons Namensnennung 3.0 Deutschland.

Mehr

Lua Grundlagen Einführung in die Lua Programmiersprache

Lua Grundlagen Einführung in die Lua Programmiersprache Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell

Mehr

Induktive Definitionen

Induktive Definitionen Induktive Definitionen Induktive Definition: Konstruktive Methode zur Definition einer Menge M von Objekten aus Basisobjekten mittels (Erzeugungs-) Regeln Slide 1 Rekursion über den Aufbau: Konstruktive

Mehr

Inhalt Kapitel 5: Syntax

Inhalt Kapitel 5: Syntax Inhalt Kapitel 5: Syntax 1 Syntax und Semantik 2 Formale Sprachen 3 Backus-Naur Form 4 Chomsky Grammatik 5 Reguläre Ausdrücke 6 Endliche Automaten 180 Syntax und Semantik Syntax Syntax: Festlegung des

Mehr

Sprachen und Programmiersprachen

Sprachen und Programmiersprachen Sprachen und Programmiersprachen Natürliche Sprachen versus Programmiersprachen / Spezifikationssprachen Syntax legt die grammatikalische Korrektheit fest. Semantik legt die Bedeutung von syntaktisch korrekten

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen

Mehr

Resolutionsalgorithmus

Resolutionsalgorithmus 112 Resolutionskalkül Mit dem Begriff Kalkül bezeichnet man eine Menge von syntaktischen Umformungsregeln, mit denen man semantische Eigenschaften der Eingabeformel herleiten kann. Für den Resolutionskalkül:

Mehr

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

Grundlagen der C++ - Programmierung für das MiniBoard von qfix 1

Grundlagen der C++ - Programmierung für das MiniBoard von qfix 1 (16C++qfix.docx) Schich, Seminar Tübingen, 06.09.16 C++ für qfix Seite 1 von 5 Grundlagen der C++ - Programmierung für das MiniBoard von qfix 1 Vom Quelltext zum ausführbaren Programm Editor Die Programme

Mehr

Webbasierte Programmierung

Webbasierte Programmierung Webbasierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der HTML5-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 6: JavaScript Kontrollstrukturen Verzweigungen Einseitig, zweiseitig,

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 9 (Dynamische und Statische Semantik)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 9 (Dynamische und Statische Semantik) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 9 (Dynamische und Statische

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin Crashkurs Haskell Mentoring WiSe 2016/17 Anja Wolffgramm Freie Universität Berlin 02/11/2016 , Inhalt Kommandozeile Haskell installieren & starten Ein 1. Haskell-Programm Funktionsdefinition Primitive

Mehr