Dynamische Logik. A. Salwicki 1970 ( algorithmische Logik ), V.R. Pratt 1976, D. Harel 1977

Größe: px
Ab Seite anzeigen:

Download "Dynamische Logik. A. Salwicki 1970 ( algorithmische Logik ), V.R. Pratt 1976, D. Harel 1977"

Transkript

1 Dynamische Logik A. Salwicki 1970 ( algorithmische Logik ), V.R. Pratt 1976, D. Harel 1977 Idee: Erfinde nicht einfach einen komplett neuen Kalkül für neue Objekte (hier: Hoare-Tripel) sondern bilde Programmformeln und erweitere Kalkül um diese neuen Formeln. 191

2 Dynamische Logik: Syntax Die Menge DLFor(Σ,X) der DL-Formeln über der Signatur Σ und der Variablenmenge X enthält Alle prädikatenlogischen Formeln von For(Σ,X) Für α DLProg(Σ,X) und ψ DLFor(Σ,X) auch [α]ϕ ( box alpha phi ) Informelle Bedeutung: Wenn α terminiert, gilt nachher ϕ α ϕ ( diamond alpha phi ) Informelle Bedeutung: α hält, und nachher gilt ϕ Klassifikation: Dynamische Logik ist eine (Multi-)Modallogik. Modallogik mit Formeln ϕ (und ϕ) stammen aus der Philosophie: ich weiss ϕ ich glaube ϕ, ϕ ist möglich Temporallogik: irgendwann wird ϕ wahr sein 192

3 Bemerkungen zur Syntax Boxen und Diamonds binden stärker als Aussagenlogik: [α]ψ χ bedeutet ([α]ψ) χ Schachtelung möglich: α β ψ bedeutet α ( β ψ ) Auch gemischte Schachtelung ist erlaubt: [α] x. ϕ β ψ Auch in DL betrachtet man Sequenzen, z.b. α ψ,γ. Wenn x in α vorkommt, x 0 aber nicht, so besagt α x = x 0 : Am Ende von α hat x den Wert, den x 0 jetzt hat α x = x 0 β x = x 0 bedeutet: Wann immer α in x einen Wert x 0 ausrechnet so tut das auch β Man kann in DL also über Programmähnlichkeit reden Es gilt: [α]ψ α ψ Man könnte also Box mit Hilfe von Diamond definieren 193

4 Semantik der Dynamischen Logik Die Semantik von Formeln der Prädikatenlogik wird erweitert durch A,v = [α]ψ : für alle w : (v,w) [[α]] A,w = ψ. A,v = α ψ : es gibt w : (v,w) [[α]] und A,w = ψ. Damit gilt A,v = ϕ{α}ψ A,v = ϕ [α]ψ A,v = ϕ α ψ A,v = ϕ α ψ, Hoare-Tripel sind also spezielle Formeln der Dynamischen Logik. 194

5 Dynamische Logik: Beispiele = [x := 1] x = 1 = x = x0 [x := x + 1] x = x0 + 1 = x = x0 x := x + 1 x = x0 + 1 Unterschied Box/Diamond: = x = 5 [abort] x = 5 = x = 5 abort x = 5 Sequenzen mit Programmen, Programme auch im Antezedent: = x = x0 [x := x + 1] x = x0 + 1 = x > 0 while x > 1 do x := x -1 x = 1 = if x > 0 then y := 1 else abort y = y0 y0 = 1 x > 0 = [if x > 0 then y := 1 else abort] y = y0 y0 = 1 x > 0 x = 0 195

6 Kalkül für Dynamische Logik Grundidee: Symbolische Ausführung von Programmen Betrachte Ausführung des Programms α 1 ;α 2 ;...;α n (α i ohne ; (compound) auf top-level) Annahme: Initialer Zustand erfüllt Vorbedingung ϕ 0 Berechne ϕ 1, die stärkste Formel, die nach α 1 gilt Berechne ϕ 2, die stärkste Formel, die nach α 1 ;α 2 gilt... solange bis das Programm verschwunden ist Zum Schluss: Teste ob ϕ n die Nachbedingung impliziert (nur noch PL) Gegenüber Hoare-Kalkül: kein Raten von Zwischenformeln bei seq. Ausführung, Zuweisung vorwärts ausführen! Symb. Ausführung geht sowohl im Antezedent als auch im Sukzedent! 196

7 DL-Kalkül: Normalisierung normalize right normalize left Γ α β ψ, Γ α;β ψ, Γ [α][β]ψ, Γ [α;β]ψ, α β ψ,γ α;β ψ,γ [α][β]ψ,γ [α;β]ψ,γ In KIV: Nie explizit angewandt, die erste Anweisung wird bei jeder Regelanwendung (in allen Programmformeln) immer automatisch abgespalten. KIV rotiert immer die Programmformeln nach vorne. 197

8 DL-Kalkül: Zuweisungen (1) assign right (Hoare-Regel in DL) assign right (Dynamische Logik) Γ ψ τ x, Γ [x := τ]ψ, Γ,x = τ [α x x ]ψ x x, Γ [x := τ][α]ψ, wobei x eine neue Variable ist (bezeichnet den neuen Wert von x) Beachte: Programmvariablen werden umbenannt! 198

9 DL-Kalkül: Zuweisungen (2) In KIV: assign right kombiniert beide Regeln: Original-Hoare-Regel, falls nach der Zuweisung ψ kein Programm mehr enthält Sonst die DL Regel Die Regel gilt genau gleich auch für Diamonds statt Boxen Die Regel für Zuweisung auf der linken Seite sieht genauso aus: assign left wobei x eine neue Variable ist x = τ,[α x x ]ψ x x,γ [x := τ][α]ψ,γ 199

10 DL-Kalkül: if Der Kalkül der dynamischen Logik besteht u. a. aus den Regeln des Hoare-Kalküls, wie z. B. if right if positive right Γ,ε [α]ψ, Γ, ε [β]ψ, Γ [if ε then α else β]ψ, Γ,ε [α]ψ, Γ ε, Γ [if ε then α else β]ψ, Analog: if negative right, if left etc.. KIV versucht immer die Tests zu entscheiden (per Simplifier), damit nur eine Prämisse entsteht. 200

11 DL-Kalkül: while invariant right invariant right Γ INV, INV,ε [α]inv INV, ε ψ Γ [while ε do α]ψ, Γ INV, INV,ε,v = t α (INV t v) INV, ε ψ Γ while ε do α ψ, KIV: Die Schleifeninvariante INV und im zweiten Fall auch die Schranke t muss von Hand eingegeben werden (v ist neue Variable) 201

12 DL-Kalkül: abort abort right abort left Γ Γ abort ψ, Γ [abort]ψ, abort ψ,γ Γ [abort]ψ,γ 202

13 DL-Kalkül: skip skip right skip left Γ ψ, Γ skip ψ, Γ ψ, Γ [skip]ψ, ψ,γ skip ψ,γ ψ,γ [skip]ψ,γ 203

14 DL-Kalkül: lokale Variablen vardecls right x = τ,γ α x x ϕ Γ let x = τ in α ϕ vardecls left α x x ϕ,x = τ,γ let x = τ in α ϕ,γ x sind neue Variablen (bezeichnen die lokalen Variablen). Dieselbe Regel auch für Boxen. 204

15 Beispiel zur Korrekheit Liste nat. Zahlen x: m := x.first, x0 := x.rest; while x0 [] do { if x0.first > m then m := x0.first ; x0 := x0.rest } 205

16 Beispiel zur Korrekheit Maximum einer nichtleeren Liste nat. Zahlen x: x [] m := x.first, x0 := x.rest; while x0 [] do { if x0.first > m then m := x0.first ; x0 := x0.rest } m = maxl(x) wobei maxl([]) = 0, maxl(n + x) = max(n,maxl(x)) 205

17 Zur nächsten Aufgabe Invarianten vorher überlegen!!! 206

18 Prozeduren und Heuristiken für Programme 207

19 Prozeduren: Syntax Neues Programmkonstrukt : Prozeduraufruf p#(t;y) p# ist Prozedurname (das # ist übliche KIV-Konvention) Terme t der Sorten s sind Eingabe-Parameter Paarweise verschiedene Variablen y der Sorten s sind Ein-Ausgabe-Parameter s : s heisst auch der (Aufrufs-)Modus der Prozedur Prozeduren p# P s:s Spezifikation sind neuer Bestandteil der Signatur einer KIV: Deklaration zwischen predicates und variables per: procedures p# s1... sn : s 1... s m; 208

20 Prozeduren: Semantik Semantik: Prozeduren sind eine Relation über den Trägern der Parametersorten: [[p#]] A s A s A s (a,b,c) [[p]] bedeutet: Die Prozedur p#, aufgerufen mit Eingaben a für die Eingabe-Variablen Eingaben b für die Ein/Ausgabe-Variablen terminiert mit Ausgabe c in den Ein/Ausgabe-Variablen Damit das stimmt: Kein Zugriff auf globalen Variablen! Ersatz: Zusätzliche Ein/Ausgabe-Parameter Normalfall in KIV: Funktionale Prozeduren: Ein/Ausgabe-Variablen dienen nur zur Ausgabe: c (und Terminierung) hängen nicht von b ab. Wenn nicht, Schlüsselwort nonfunctional am Ende der Prozedurdefinition 209

21 Prozedurdeklarationen Möglich: Axiome für Prozeduren (Vor- und Nachbedingung) Normalerweise (hinter den axioms) Prozedurdeklarationen declarations f#(x; y) { if x = 0 then y := 1 else { f#(x -1;y); y := y * x } } Erlaubt: (gegenseitige) Rekursion Semantik: Prozeduraufruf erhält die übliche Semantik. Formal: Vereinigung aller tiefenbeschränkten Rekursionen (analog zu: Vereinigung über beschränkte Zahl von Schl.durchläufen) 210

22 Regeln für Prozeduraufrufe Falls Prozedurdeklaration p#(y; z).α gegeben: y = σ,γ αz x ϕ, y = σ, α x Γ p#(σ;x) ϕ, call right z ϕ,γ p#(σ;x) ϕ,γ call left Dabei: y sind die lokalen Variablen auf denen p# rechnet. Sie dürfen in der Sequenz nicht frei vorkommen (evtl. umbenennen) Die Regel gilt auch für Boxen statt Diamonds. 211

23 Ein Beispiel procedures MAXL# MAX# natlist : nat; nat, nat : nat; declaration MAX#(m,n; n0) { if m < n then n0 := n else n0 := m }; MAXL#(x; n) { if x = [] then n := 0 else { MAXL#(x.rest; n); MAX#(n,x.first;n) } } 212

24 Programme als Voraussetzungen: execute call Nützlich bei Induktion, um den Call aus der Induktionsvoraussetzung gegen den gerade aktuellen zu kürzen. execute call Γ σ = τ, p#(σ;x) (x = y), ϕ y x,γ ψ y z, p#(σ;x) ϕ,γ p#(τ;z) ψ, Gilt (so) nur für funktionale (und damit auch deterministische) Prozeduren (y neu): contract call Γ σ = τ p#(σ;z) (z = x ),ϕ x x,ψ x y,γ p#(σ;x) ϕ, p#(τ;y) ψ,γ 213

25 Zwischenzustände einführen: split left Die folgende Regeln wird meist für α = Prozeduraufruf angewandt (x = modifizierte Variablen von α, x neu): split left α x = x,ϕ x x,γ α ϕ,γ Führt einen Zustand x am Ende von α ein, über den man reden kann. Dieser wird bei der Anwendung von Lemmata der Form α x = x0 ϕ als Instanz für x0 gebraucht 214

26 Einfache Heuristiken für Programme symbolic execution: Wendet alle Regeln für Programme an, die keine Fallunterscheidung ergeben: assign, if positive/negative, skip, abort, let split left: Wendet die Regel split left an contract and execute: Wendet execute call, contract call an Im Heuristik-Satz DL heuristics enthalten (zusammen mit simplifier, quantifier closing, module specific). Kann immer verwendet werden. 215

27 Fallunterscheidungs-Heuristiken conditional right split: wendet if right an conditional left split: wendet if left an dl case distinction: Fallunterscheidung (conjunction right etc.), aber nur für Programmformeln Im Heuristik-Satz DL Heuristics + Case Splitting enthalten. Sollte man verwenden, wenn Beweisstruktur der Kontrollstruktur der Programme folgt (meist der Fall). Heuristik-Satz DL heuristics + Induction enthält zusätzlich Heuristiken für (noethersche) Induktion (induction, apply ind once). 216

28 Heuristiken für Prozeduraufrufe calls nonrecursive: Führt alle nichtrekursiven Aufrufe aus calls concrete: Führt alle Aufrufe aus, die konkrete Parameter haben, i. e. Terme die höchstens Parametervariablen enthalten weak unfold: Führt rekursive Prozeduren einmal aus, wenn sie in der Induktionshypothese vorkommen. Höher in der Aufrufshierarchie liegende Aufrufe bevorzugt. Weitere Aufrufe werden ausgeführt, wenn festgestellt wird, dass deren Tests so ausgehen, dass kein weiterer rekursiver Aufruf auftritt. unfold: Führt zusätzlich rekursive Prozeduren (einmal) aus, bei denen der rekursive Aufruf schon in der Sequenz vorkommt DL Heuristics enthält weak unfold, DL Heuristics + Induction enthält zusätzlich unfold. 217

29 Nichtdeterministische Programme 218

30 Nichtdet. Programme: Syntax KIV kennt noch zwei Programmkonstrukte für nichtdeterministische Programme: α or β: Wählt nichtdeterministisch eines der beiden Programme choose x with ϕ in α ifnone β Bindet lokale Variablen x (wie let) an irgendwelche Werte, die ϕ erfüllen ϕ darf von anderen Programmvariablen als nur x abhängen Führt mit den lokalen Variablen α aus. Falls überhaupt keine passenden Werte fur x existieren, die ϕ erfüllen, wird β (ohne lokale Variablen) ausgeführt. ifnone abort kann weggelassen werden (default). 219

31 Beispiele für choose Beispiele: choose n with true in α: Rät beliebige natürliche Zahl choose n with n < m in α ifnone β: Wählt natürliche Zahl n, die kleiner m ist, und führt α aus. Wenn m = 0 gilt, wird stattdessen β ausgeführt. choose boolvar with true in if boolvar then α else β Ist äquivalent zu α or β 220

32 Nichtdet. Programme: Semantik Semantik von or: [[α or β]] = [[α]] [[β]] Semantik von choose: [[choose x with ϕ in α ifnone β]] = {(v,wx v(x) ) es gibt a mit A,vx a = ϕ und (vx,w) a [[α]]} {(v,w) (v,w) [[β]] und es gibt kein a mit A,vx a = ϕ} 221

33 Ein Zusatzproblem für die Semantik Was ist die Semantik von skip? Was ist die Semantik von skip or abort? 222

34 Ein Zusatzproblem für die Semantik Was ist die Semantik von skip? Was ist die Semantik von skip or abort? Antwort: Beide sind gleich: Identität auf allen Zuständen Verhalten sich die Programme unterschiedlich? 222

35 Ein Zusatzproblem für die Semantik Was ist die Semantik von skip? Was ist die Semantik von skip or abort? Antwort: Beide sind gleich: Identität auf allen Zuständen Verhalten sich die Programme unterschiedlich? Antwort: Ja, skip terminiert garantiert, skip or abort nicht. Also: Die relationale Semantik kann nicht ausdrücken, dass ein nichtdeterministisches Programm garantiert terminiert. Damit kann es auch die dynamische Logik nicht: skip or abort true besagt, dass es einen terminierenden Ablauf gibt. 222

36 Garantierte Terminierung Definieren eine zusätzliche zweite Semantik für Programme: α ST gibt die Menge der Zustände (ST = Menge der Variablenbelegungen), für die α garantiert terminiert. Einige Fälle (while und Rekursion sind schwierig) sind: abort = skip = ST x := e = ST (α β) = α β (α;β) = {v v α und für alle w mit (v,w) [[α]] gilt: w β } choose x with ϕ in α ifnone β = {v es gibt a mit A,v a x = ϕ und für jedes solche a ist v a x α } { v es gibt kein a mit A,v a x = ϕ und v β } Beachte: Die Definition der garantierten Terminierung von compounds benutzt die relationale Semantik. 223

37 Neuer Operator: strong diamond Wir addieren einen neuen Operator ( strong diamond ) zur Logik. α ϕ besagt: α terminiert garantiert, und in allen Endzuständen gilt ϕ Formal: A,v = α ψ : v α und für alle w : (v,w) [[α]] gilt: A,w = ψ. Bemerkung: Der Operator wurde von E.W. Dijkstra 1976 erfunden, und schreibt sich in der Literatur meist wp(α,ϕ) (von weakest precondition ). Der Kalkül heisst deshalb auch wp-kalkül. Bemerkung: Die strong diamond-klammern bekommt man mit F12 (KIV-Symbol) und dann { bzw. }. 224

38 Kalkülregeln für or Das Gute an strong diamonds: Für deterministische Programme sind die Regeln für strong diamonds genau dieselben wie für diamonds. or right Γ α ψ, β ψ, Γ α β ψ, Γ [α] ψ, Γ [β] ψ, Γ [α β] ψ, Γ α ψ, Γ β ψ, Γ α β ψ, 225

39 Kalkülregeln für choose choose right Γ y.ϕ y x α y x ψ,( x. ϕ) β ψ, Γ choose x with ϕ in α ifnone β ψ, ϕ y x,γ [α y x] ψ, x. ϕ,γ [β] ψ, Γ [choose x with ϕ in α ifnone β] ψ, ϕx,γ y α x y ψ, x. ϕ,γ β ψ, Γ choose x with ϕ in α ifnone β ψ, Die Variablen y sind neue Variablen (für die lokalen Versionen von x). 226

40 Zuweisungen für heaps Im folgenden Refinement-Versuch (Theorie in der nächsten Vorlesung) werden wir Programme schreiben, die auf der Heap-Spezifikation aus Versuch 2 aufbauen. Der Inhalt von Speicherzellen hat jetzt die Form a r (ersetzt das abstrakte ce; Selektoren sind.val und.nxt). Zum Programmieren gibt es zunächst neue Zuweisungen: H[r] := a r0 überschreibt H an der Stelle r mit a r0. Der entstehende Heap ist also H[r,a r0]. Die Zuweisungen H[r].val := a und H[r].nxt := r0 sind analog. Sie überschreiben nur ein value bzw. einen.nxt-pointer. Die Ergebnis-Heaps sind H[r, a H[r].nxt] und H[r, H[r].val r0]. 227

41 Nichtdeterminismus für Speicherallokation In den Programmen wird es nötig sein, eine neue Referenz zu allokieren. Das geht am einfachsten so: choose r with r H r null in H[r] :=... Beachte: Die Auswahl der neuen Referenz allokiert die Zelle im Speicher noch nicht. Erst die Zuweisung H[r] :=... allokiert. Das Programm ist nichtdeterministisch, deshalb werden strong diamonds bei der Verifikation benötigt. 228

Semantik von Formeln und Sequenzen

Semantik von Formeln und Sequenzen Semantik von Formeln und Sequenzen 33 Grundidee der Verwendung von Logik im Software Entwurf Syntax: Menge von Formeln = Axiome Ax K ist beweisbar Formel ϕ beschreiben Korrektkeit Vollständigkeit beschreibt

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

Weitere Beweistechniken und aussagenlogische Modellierung

Weitere Beweistechniken und aussagenlogische Modellierung Weitere Beweistechniken und aussagenlogische Modellierung Vorlesung Logik in der Informatik, HU Berlin 2. Übungsstunde Aussagenlogische Modellierung Die Mensa versucht ständig, ihr Angebot an die Wünsche

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

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

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

Logic in a Nutshell. Christian Liguda

Logic in a Nutshell. Christian Liguda Logic in a Nutshell Christian Liguda Quelle: Kastens, Uwe und Büning, Hans K., Modellierung: Grundlagen und formale Methoden, 2009, Carl Hanser Verlag Übersicht Logik - Allgemein Aussagenlogik Modellierung

Mehr

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie 1 Einführung 2 Typ-0- und Typ-1-Sprachen 3 Berechnungsmodelle 4 Unentscheidbarkeit 5 Unentscheidbare Probleme 6 Komplexitätstheorie 15 Ziele vgl. AFS: Berechnungsmodelle für Typ-0- und Typ-1-Sprachen (Nicht-)Abschlußeigenschaften

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

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

Formale Methoden im Software Engineering

Formale Methoden im Software Engineering Formale Methoden im Software Engineering Eine praktische Einführung Dominik Haneberg, Florian Nafz, Bogdan Tofan 1 Organisatorisches Vorlesung: Mittwoch 12:15 Uhr - 13:45 Uhr (1058 N) Versuche: (Raum 3017

Mehr

Automaten, Spiele, und Logik

Automaten, Spiele, und Logik Automaten, Spiele, und Logik Woche 13 7. Juli 2014 Inhalt der heutigen Vorlesung Terminationsanalyse Rekursive Funktionnen fact(n)= if n==0 then 1 else n*fact(n-1) fibo(n)= if n

Mehr

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln, Theorie der Informatik 8. März 25 8. Reguläre Sprachen I Theorie der Informatik 8. Reguläre Sprachen I 8. Reguläre Grammatiken Malte Helmert Gabriele Röger 8.2 DFAs Universität Basel 8. März 25 8.3 NFAs

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

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

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013 Übung zu Grundbegriffe der Informatik Simon Wacker 15. November 2013 Vollständige Induktion über die Wortlänge Es sei B ein Alphabet. Dann ist B = n N 0 B n. Für jedes Wort w B sei A w eine Aussage, die

Mehr

Aussagenlogik zu wenig ausdrucksstark für die meisten Anwendungen. notwendig: Existenz- und Allaussagen

Aussagenlogik zu wenig ausdrucksstark für die meisten Anwendungen. notwendig: Existenz- und Allaussagen Prädikatenlogik 1. Stufe (kurz: PL1) Aussagenlogik zu wenig ausdrucksstark für die meisten Anwendungen notwendig: Existenz- und Allaussagen Beispiel: 54 Syntax der Prädikatenlogik erster Stufe (in der

Mehr

Klausur Formale Systeme Fakultät für Informatik 2. Klausur zum WS 2010/2011

Klausur Formale Systeme Fakultät für Informatik 2. Klausur zum WS 2010/2011 Fakultät für Informatik 2. Klausur zum WS 2010/2011 Prof. Dr. Bernhard Beckert 08. April 2011 Vorname: Matrikel-Nr.: Platz: Klausur-ID: **Platz** **Id** Die Bearbeitungszeit beträgt 60 Minuten. A1 (17)

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Formale Methoden 1. Gerhard Jäger 16. Januar Uni Bielefeld, WS 2007/2008 1/19

Formale Methoden 1. Gerhard Jäger 16. Januar Uni Bielefeld, WS 2007/2008 1/19 1/19 Formale Methoden 1 Gerhard Jäger Gerhard.Jaeger@uni-bielefeld.de Uni Bielefeld, WS 2007/2008 16. Januar 2008 2/19 Reguläre Ausdrücke vierte Art (neben Typ-3-Grammatiken, deterministischen und nicht-deterministischen

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

Rekursiv aufzählbare Sprachen

Rekursiv aufzählbare Sprachen Kapitel 4 Rekursiv aufzählbare Sprachen 4.1 Grammatiken und die Chomsky-Hierarchie Durch Zulassung komplexer Ableitungsregeln können mit Grammatiken größere Klassen als die kontextfreien Sprachen beschrieben

Mehr

Jeweils am Montag um 18:30 treffen sich Studenten in Seminarraum 3 zum gemeinsamen Lernen.

Jeweils am Montag um 18:30 treffen sich Studenten in Seminarraum 3 zum gemeinsamen Lernen. Jeweils am Montag um 18:30 treffen sich Studenten in Seminarraum 3 zum gemeinsamen Lernen. Betrachtungen zu Sprache, Logik und Beweisen Sprache Wir gehen von unserem Alphabet einigen Zusatzsymbolen aus.

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

Rhetorik und Argumentationstheorie.

Rhetorik und Argumentationstheorie. Rhetorik und Argumentationstheorie 2 [frederik.gierlinger@univie.ac.at] Teil 2 Was ist ein Beweis? 2 Wichtige Grundlagen Tautologie nennt man eine zusammengesetzte Aussage, die wahr ist, unabhängig vom

Mehr

Formale Sprachen. Spezialgebiet für Komplexe Systeme. Yimin Ge. 5ahdvn. 1 Grundlagen 1. 2 Formale Grammatiken 4. 3 Endliche Automaten 5.

Formale Sprachen. Spezialgebiet für Komplexe Systeme. Yimin Ge. 5ahdvn. 1 Grundlagen 1. 2 Formale Grammatiken 4. 3 Endliche Automaten 5. Formale Sprachen Spezialgebiet für Komplexe Systeme Yimin Ge 5ahdvn Inhaltsverzeichnis 1 Grundlagen 1 2 Formale Grammatien 4 Endliche Automaten 5 4 Reguläre Sprachen 9 5 Anwendungen bei Abzählproblemen

Mehr

Syntaxanalyse Ausgangspunkt und Ziel

Syntaxanalyse Ausgangspunkt und Ziel Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung

Mehr

5.4 Die Prädikatenlogik 1.Stufe als Semantikformalismus

5.4 Die Prädikatenlogik 1.Stufe als Semantikformalismus 5.4 Die Prädikatenlogik 1.Stufe als Semantikformalismus 5.4.1 Einführung Einführung Verwendet wird die Sprache der Prädikatenlogik erster Stufe mit Identität (ohne Funktionskonstanten) mit dem folgenden

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 7. September 2015 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

11.1 Kontextsensitive und allgemeine Grammatiken

11.1 Kontextsensitive und allgemeine Grammatiken Theorie der Informatik 7. April 2014 11. Kontextsensitive und Typ-0-Sprachen Theorie der Informatik 11. Kontextsensitive und Typ-0-Sprachen 11.1 Kontextsensitive und allgemeine Grammatiken Malte Helmert

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ. Reguläre Ausdrücke Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (i) ist ein regulärer Ausdruck über Σ. (ii) ε ist ein regulärer Ausdruck über Σ. (iii) Für jedes a Σ ist a ein regulärer

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

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

5 Logische Programmierung

5 Logische Programmierung 5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen

Mehr

Thomas Behr. 17. November 2011

Thomas Behr. 17. November 2011 in in Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 17. November 2011 c 2011 FernUniversität in Hagen Outline in 1 2 3 4 5 6 - Was ist das? in über

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

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

Automaten, Spiele und Logik

Automaten, Spiele und Logik Automaten, Spiele und Logik Woche 13 11. Juli 2014 Inhalt der heutigen Vorlesung Linearzeit Temporale Logik (LTL) Alternierende Büchi Automaten Nicht-Determinisierung (Miyano-Ayashi) Beschriftete Transitionssysteme

Mehr

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre Vorlesung Einführung in die mathematische Sprache und naive Mengenlehre Allgemeines RUD26 Erwin-Schrödinger-Zentrum (ESZ) RUD25 Johann-von-Neumann-Haus Fachschaft Menge aller Studenten eines Institutes

Mehr

Erzeugende Funktionen

Erzeugende Funktionen Hallo! Erzeugende Funktionen sind ein Mittel um lineare Rekursionen schneller ausrechnen zu können. Es soll die Funktion nicht mehr als Rekursion angeschrieben werden, sondern so, dass man nur n einsetzen

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Programmieren für Wirtschaftswissenschaftler SS 2015

Programmieren für Wirtschaftswissenschaftler SS 2015 DEPARTMENT WIRTSCHAFTSINFORMATIK FACHBEREICH WIRTSCHAFTSWISSENSCHAFT Programmieren für Wirtschaftswissenschaftler SS 2015 Lucian Ionescu Blockveranstaltung 16.03 27.3.2015 3. Verzweigungen und Schleifen

Mehr

Berechenbarkeit und Komplexität

Berechenbarkeit und Komplexität Berechenbarkeit und Komplexität Prof. Dr. Dietrich Kuske FG Theoretische Informatik, TU Ilmenau Wintersemester 2010/11 1 Organisatorisches zur Vorlesung Informationen, aktuelle Version der Folien und Übungsblätter

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

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

Motivation. Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik. Motivation - Beispiel. Motivation - Beispiel

Motivation. Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik. Motivation - Beispiel. Motivation - Beispiel Motivation Formale Grundlagen der Informatik 1 Kapitel 19 & Die ist eine Erweiterung der Aussagenlogik. Sie hat eine größere Ausdrucksstärke und erlaub eine feinere Differenzierung. Ferner sind Beziehungen/Relationen

Mehr

Klausur Formale Systeme Fakultät für Informatik WS 2009/2010. Prof. Dr. Bernhard Beckert. 18. Februar 2010

Klausur Formale Systeme Fakultät für Informatik WS 2009/2010. Prof. Dr. Bernhard Beckert. 18. Februar 2010 Klausur Formale Systeme Fakultät für Informatik Name: Mustermann Vorname: Peter Matrikel-Nr.: 0000000 Klausur-ID: 0000 WS 2009/2010 Prof. Dr. Bernhard Beckert 18. Februar 2010 A1 (15) A2 (10) A3 (10) A4

Mehr

Informatik II Musterlösung

Informatik II Musterlösung Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 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

Amortisierte Analysen

Amortisierte Analysen Amortisierte Analysen 26. Mai 2016 1 Einleitung Es gibt viele Datenstrukturen, bei deren Komplexitätsanalyse das Problem auftaucht, dass die Ausführung mancher Operationen Einfluss auf die Komplexität

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Logik für Informatiker

Logik für Informatiker Vorlesung Logik für Informatiker 7. Aussagenlogik Analytische Tableaus Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Der aussagenlogische Tableaukalkül

Mehr

4.Grundsätzliche Programmentwicklungsmethoden

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

Mehr

Prüfungsprotokoll Kurs 1825 Logik für Informatiker. Studiengang: MSc. Informatik Prüfer: Prof. Dr. Heinemann Termin: Januar 2015

Prüfungsprotokoll Kurs 1825 Logik für Informatiker. Studiengang: MSc. Informatik Prüfer: Prof. Dr. Heinemann Termin: Januar 2015 Prüfungsprotokoll Kurs 1825 Logik für Informatiker Studiengang: MSc. Informatik Prüfer: Prof. Dr. Heinemann Termin: Januar 2015 1. Aussagenlogik Alphabet und AS gegeben, wie sind die Aussagenlogischen

Mehr

Induktive Beweise und rekursive Definitionen

Induktive Beweise und rekursive Definitionen Induktive Beweise und rekursive Definitionen Vorlesung Logik in der Informatik, HU Berlin 1. Übungsstunde Beweis durch vollständige Induktion über N Aufgabe 1 Zeige, dass für alle n N gilt: n 2 i = 2 n+1

Mehr

Übungen zu Programmierung I - Blatt 8

Übungen zu Programmierung I - Blatt 8 Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail

Mehr

Theoretische Informatik. Reguläre Sprachen und Automaten

Theoretische Informatik. Reguläre Sprachen und Automaten Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Vorlesung. Funktionen/Abbildungen

Vorlesung. Funktionen/Abbildungen Vorlesung Funktionen/Abbildungen 1 Grundlagen Hinweis: In dieser Vorlesung werden Funktionen und Abbildungen synonym verwendet. In der Schule wird eine Funktion häufig als eindeutige Zuordnung definiert.

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

(Man sagt dafür auch, dass die Teilmenge U bezüglich der Gruppenoperationen abgeschlossen sein muss.)

(Man sagt dafür auch, dass die Teilmenge U bezüglich der Gruppenoperationen abgeschlossen sein muss.) 3. Untergruppen 19 3. Untergruppen Nachdem wir nun einige grundlegende Gruppen kennengelernt haben, wollen wir in diesem Kapitel eine einfache Möglichkeit untersuchen, mit der man aus bereits bekannten

Mehr

Suche nach einem solchen Kreis. Endlichkeitstest. Vereinigung und Durchschnitt. Abschlusseigenschaften

Suche nach einem solchen Kreis. Endlichkeitstest. Vereinigung und Durchschnitt. Abschlusseigenschaften Endlichkeitstest Eingabe: DFA/NFA M. Frage: Ist die von M akzeptierte Sprache endlich? Nahe liegende Beobachtung: In einem DFA/NFA, der eine unendliche Sprache akzeptiert, muss es einen Kreis geben, der

Mehr

Hilbert-Kalkül (Einführung)

Hilbert-Kalkül (Einführung) Hilbert-Kalkül (Einführung) Es gibt viele verschiedene Kalküle, mit denen sich durch syntaktische Umformungen zeigen läßt, ob eine Formel gültig bzw. unerfüllbar ist. Zwei Gruppen von Kalkülen: Kalküle

Mehr

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13) Berlin, 21. Februar 2013 Name:... Matr.-Nr.:... Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13) 1 2 3 4 5 6 7 8 9 Σ Bearbeitungszeit: 90 min. max. Punktezahl:

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

2 Mengen und Abbildungen

2 Mengen und Abbildungen 2.1 Mengen Unter einer Menge verstehen wir eine Zusammenfassung von Objekten zu einem Ganzen. Die Objekte heiÿen Elemente. Ist M eine Menge und x ein Element von M so schreiben wir x M. Wir sagen auch:

Mehr

Teil V. Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie

Teil V. Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie Teil V Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie Zwei Sorten von Grammatiken Kontextsensitive Grammatik (CSG) (Σ, V, P, S), Regeln der Form αaβ αγβ α, β (Σ V ),

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

8. Turingmaschinen und kontextsensitive Sprachen

8. Turingmaschinen und kontextsensitive Sprachen 8. Turingmaschinen und kontextsensitive Sprachen Turingmaschinen (TM) von A. Turing vorgeschlagen, um den Begriff der Berechenbarkeit formal zu präzisieren. Intuitiv: statt des Stacks bei Kellerautomaten

Mehr

Formale Methoden II. Gerhard Jäger. SS 2008 Universität Bielefeld. Teil 8, 11. Juni 2008. Formale Methoden II p.1/30

Formale Methoden II. Gerhard Jäger. SS 2008 Universität Bielefeld. Teil 8, 11. Juni 2008. Formale Methoden II p.1/30 Formale Methoden II SS 2008 Universität Bielefeld Teil 8, 11. Juni 2008 Gerhard Jäger Formale Methoden II p.1/30 Beispiele Anmerkung: wenn der Wahrheitswert einer Formel in einem Modell nicht von der Belegungsfunktion

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Eine Beschreibung des Programms und der dahinter stehenden Philosophie.

Eine Beschreibung des Programms und der dahinter stehenden Philosophie. 1 Geschichte Larry Wall schrieb ein Konfigurationsmanagementsystem und benötigte dazu ein Berichtwerkzeug, das mehrere Dateien gleichzeitig öffnen konnte. Awk konnte es damals nicht, daher schrieb er eine

Mehr

Kapitel 5: Applikative Programmierung

Kapitel 5: Applikative Programmierung Kapitel 5: Applikative Programmierung In der applikativen Programmierung wird ein Programm als eine mathematische Funktion von Eingabe-in Ausgabewerte betrachtet. Das Ausführen eines Programms besteht

Mehr

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO).

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO). 1 Grammatiken Autor: Tilman Blumenbach Letzte Änderung: 28. Juni 2012 18:15 Ziel von Grammatiken Wollen die Struktur von Sprachen modellieren und charakterisieren. Beispiel Ein Satz der deutschen Sprache

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

ÜBUNG ZUM GRUNDKURS LOGIK SS 2016 GÜNTHER EDER

ÜBUNG ZUM GRUNDKURS LOGIK SS 2016 GÜNTHER EDER ÜBUNG ZUM GRUNDKURS LOGIK SS 2016 GÜNTHER EDER FORMALE SPRACHEN Bevor wir anfangen, uns mit formaler Logik zu beschäftigen, müssen wir uns mit formalen Sprachen beschäftigen Wie jede natürliche Sprache,

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

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Seminarvortrag aus Reiner Mathematik Existenz von Primitivwurzeln

Seminarvortrag aus Reiner Mathematik Existenz von Primitivwurzeln Seminarvortrag aus Reiner Mathematik Existenz von Primitivwurzeln Michael Kniely November 2009 1 Vorbemerkungen Definition. Sei n N +, ϕ(n) := {d [0, n 1] ggt (d, n) = 1}. Die Abbildung ϕ : N + N + heißt

Mehr

Großübung zu Einführung in die Programmierung

Großübung zu Einführung in die Programmierung Großübung zu Einführung in die Programmierung Daniel Bimschas, M.Sc. Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/bimschas Inhalt 1. Besprechung Übung 4 Iteration

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Diskrete Strukturen und Logik WiSe 2007/08 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Diskrete Strukturen und Logik Gesamtübersicht Organisatorisches Einführung Logik & Mengenlehre

Mehr

Logik: aussagenlogische Formeln und Wahrheitstafeln

Logik: aussagenlogische Formeln und Wahrheitstafeln FH Gießen-Friedberg, Sommersemester 2010 Lösungen zu Übungsblatt 1 Diskrete Mathematik (Informatik) 7./9. April 2010 Prof. Dr. Hans-Rudolf Metz Logik: aussagenlogische Formeln und Wahrheitstafeln Aufgabe

Mehr

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Flussdiagramm / Programmablaufplan (PAP)

Flussdiagramm / Programmablaufplan (PAP) Flussdiagramm / Programmablaufplan (PAP) Basissysmbole Grenzstelle (Anfang, Zwischenhalt oder Ende des Programms/Algorithmus) Verbindung Zur Verdeutlichung der Ablaufrichtung werden Linien mit einer Pfeilspitze

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr