SWP Funktionale Programme (2. Teil)
|
|
- Nadine Ziegler
- vor 5 Jahren
- Abrufe
Transkript
1 SWP Funktionale Programme (2. Teil) Bernhard Aichernig Institut für Softwaretechnologie Institute for Software Technology
2 Inhalt Einfache Ausdrücke (Sprachen A +, B bin +, C Mult, VA Var ) Datentypen (Integer, Real, String, BinStack), Sprachen (T, COND) Rekursive funktionale Sprache Interpreter für funktionale Sprache Halteproblem Semantik Institute for Software Technology 2
3 Bisher: Sprache EXP (Expressions) Terme Konditionale Funktionen vordefiniert (Built-in Functions) Aber keine Iterativen Konstrukte Unterprogramme Institute for Software Technology 3
4 Funktionsvariablen Zur Darstellung programmdefinierter Funktionen FVS Menge der Funktionsvariablen Funktionsvariable = Name der Funktion Arität von Funktionen r: FVS N 0 Wenn r(x)=n dann ist X eine n-stellige Funktion Institute for Software Technology 4
5 Beispiel (nicht aus EXP) function X (x: integer, y: real) :real; var i := integer; begin for i:=1 to x do y:=2*y; X := y; end; X.. Funktionsvariable r(x) = 2 Institute for Software Technology 5
6 Anmerkung 2 Arten von Funktionen: Funktionssymbole: Eingebaute Funktionen (+, -, ) Funktionsvariable: Benutzerdefinierte Funktionen Institute for Software Technology 6
7 Syntax von EXP 1. IVS EXP (Variablen) 2. Γ EXP (Konstantensymbole) 3. Ist f ein n-stelliges Funktionensymbol und sind t i EXP (für i=1..n), dann f(t 1,..,t n ) EXP. 4. Ist p ein n-stelliges Prädikatensymbol, sind u i EXP (für i=1..n) und ist t 1,t 2 EXP dann ist if p(u 1,.., u n ) then t 1 else t 2 EXP. 5. Ist F eine n-stellige Funktionsvariable und ist t i EXP (für i=1..n) dann ist F(t 1,..,t n ) EXP. Institute for Software Technology 7
8 Semantikdefinition? Syntax wurde erweitert! auch Semantik muss erweitert werden. Insbesondere benötigen wir eine Interpretation der benutzerdefinierten Ausdrücke F(t 1,..,t n ) Zugriff auf die Definition der Funktion notwendig. Institute for Software Technology 8
9 Funktionsumgebungen (I) function X (x: integer):integer; begin X := (((x*x) + 1) x) * x; end; Wie Variablenumgebungen führen wir Funktionsumgebungen ein FENV.. Menge der Funktionsumgebungen FVS.. Menge der Funktionsvariablen δ: FVS EXP (δ FENV) δx.. Body der Funktion X Institute for Software Technology 9
10 Funktionsumgebungen (II) Zugriff auf Funktionsdefinition über Funktion δ Weitere Annahme: Alle Variablen im Body sind formale Parameter der Funktion. Zum Beispiel ist die Variable x im letzten Beispiel ein formaler Parameter der Funktion X. Ist r(x)=n so gibt es maximal n Variablen in δx (Body von X). Institute for Software Technology 10
11 Funktionsumgebungen (III) Keine explizite Funktionsdeklaration Definition: FENV ist die Menge aller δ mit δ: FVS EXP, sodass δf keine anderen IVS als x 1,..,x n enthält, falls r(f)=n gilt. Institute for Software Technology 11
12 Semantik von EXP 1. I(δ,ω,v) = ω(v) für v IVS 2. I(δ,ω,c) = c 0 für c Γ und c 0 ist die Konstante zu c 3. I(δ,ω,f(t 1,..,t n )) = f 0 (I(δ,ω,t 1 ),..,I(δ,ω,t n )) (f 0 ist Funktion zu f) 4. Für Konditionale gilt: Ist p o (I(δ,ω,u 1 ),..,I(δ,ω,u n ))=T, dann I(δ,ω,if p(u 1,..,u n ) then t 1 else t 2 ) = I(δ,ω,t 1 ) Ist p o (I(δ,ω,u 1 ),..,I(δ,ω,u n ))=F, dann I(δ,ω,if p(u 1,..,u n ) then t 1 else t 2 ) = I(δ,ω,t 2 ) Institute for Software Technology 12
13 Semantik von EXP (cont.) 5. Interpretation von F(t 1,..,t n ) a. Aufruf durch Wert (call-by-value) Definiere neues ω als ω (xi)=i(δ,ω,t i ) für i=1..n wobei x1,..,xn die formalen Parameter in δf sind. I(δ,ω, F(t 1,..,t n )) = I(δ,ω, δf) b. Aufruf durch Name (call-by-name) I(δ,ω, F(t 1,..,t n )) = I(δ,ω, δf[x1 t 1,..,xn t n ]) (die Ausdrücke t i werden statt xi in den Body eingesetzt) Institute for Software Technology 13
14 Anmerkungen zur Semantik Bei call-by-value werden die Argumentausdrücke zuerst ausgewertet und bestimmen das Variablenenvironment während der Auswertung des Funktionenbodies. Bei call-by-name werden die Argumentausdrücke in den Body der Funktion eingesetzt und danach wird der modifizierte Body ausgewertet. Institute for Software Technology 14
15 Beispiel EXP-1 Datentyp S (Stacks) t = F(sub(x)) δf = if ist0?(x1) then sub(x1) else add1(x1) Werte t für ω(x)=100 aus, d.h., berechne I(δ,ω,t)=? Institute for Software Technology 15
16 Beispiel EXP-1: Call by Value I(δ,ω,F(sub(x))) = I(δ,ω, if ist0?(x1) then sub(x1) else add1(x1)) mit I(δ,ω,sub(x)) = = 00 =ω (x1) Bedingung des Konditionals ist0?(x1): I(δ,ω,ist0?(x1)) = ist0?(i(δ,ω,x1))= ist0?(ω (x1)) = ist0?(00) = T = I(δ,ω,sub(x1)) = = 0 Institute for Software Technology 16
17 Beispiel EXP-1: Call by Name I(δ,ω,F(sub(x))) = I(δ,ω, if ist0?(sub(x)) then sub(sub(x)) else add1(sub(x))) Bedingung des Konditionals ist0?(sub(x)): I(δ,ω,ist0?(sub(x))) = ist0?(i(δ,ω,sub(x)) = ist0?(sub(i(δ,ω,x))) = ist0?(sub(ω(x))) = ist0? (sub(100)) = ist0?(00)=t = I(δ,ω, sub(sub(x))) = = 0 Institute for Software Technology 17
18 Beispiel EXP-2 Datentyp der natürlichen Zahlen inkl. Null ℵ = (N 0,+,--,*,=0?,0,1) Programm: t = F(x) δf = if =0?(x1) then 1 else *(x1,f(--(x1,1))) ω(x) = 3 Institute for Software Technology 18
19 Datentyp der Listen Listen enthalten Atome und andere Listen Atome: Menge At, wir schreiben Atome immer in Großbuchstaben Beispiele: ABC, ATOM, NAME,... Induktive Definition der Menge der Listen L 1. At L 2. [ ] L (Leere Liste) 3. Ist l 1,..,l k in L, dann ist auch [ l 1... l k ] L Institute for Software Technology 19
20 Beispiele Listen: [ NAME [ NAME ] ] NAME [ ], [ [ ] ],... Keine Liste NAME NAME [ NAME Institute for Software Technology 20
21 Definierte Funktionen first: Liefert das erste Element einer Liste rest: Liefert alle Listen einer Liste mit Ausnahme des 1. Elements build: Baut eine Liste aus 2 gegebenen Listen auf Institute for Software Technology 21
22 first Formale Definition der Funktionen first(a) = [ ] für a At first([ ]) = [ ] first([ l 1... l k ]) = l 1 für l i L rest rest(a) = [ ] für a At rest([ ]) = [ ] rest([ l 1... l k ]) = [ l 2... l k ] für l i L, k >1 rest([ l 1... l k ]) = [ ] für l i L, k = 1 Institute for Software Technology 22
23 Definitionen (cont.) build(l,a) = a für a At und l L build(l,[ ]) = [ l ] für l L build(l, [ l 1... l k ] ) = [ l l 1... l k ] für l, l i L Institute for Software Technology 23
24 Prädikate auf Listen atom?: Liefert T, wenn das Argument ein Atom ist und F, sonst. atom?(x) = T, wenn x At atom?(x) = F, wenn x At eq?: Liefert T, wenn die beiden Argumente gleich sind. eq?(x,y) = T, wenn x=y eq?(x,y) = F, wenn x y Institute for Software Technology 24
25 Listen L - Zusammenfassung L = (L,first,rest,build,atom?,eq?,[ ],...) Alle Atome sind Konstanten Sprache EXP über L [... ] wird repräsentiert durch [... ] nil für [ ] Beispiel: reverse soll Liste umkehren Institute for Software Technology 25
26 Reverse Funktion δreverse = if atom?(x1) then x1 else reverse2(x1,nil) δreverse2 = if eq?(x1,nil) then x2 else reverse2(rest(x1),build(first(x1),x2)) Ohne Anwendung einer Interpretationsfunktion: reverse2([a B C D], []) reverse2([b C D], [A]) reverse2([c D], [B A]) reverse2([d], [C B A]) reverse2([], [D C B A]) à [D C B A] Institute for Software Technology 26
27 Bisheriger Inhalt Ein Rückblick Datentypen Sprachen über Datentypen Konditionale, Rekursionen Unterscheidung zwischen eingebauten und benutzerdefinierten Funktionen Semantikdefinition Institute for Software Technology 27
28 Erweiterung Sprache über mehrere Datentypen Beispiel: L + N (Listen + Zahlen) Liste L mittels N 0 erweitern Funktionen, die nicht auf Argumenten definiert sind, liefern konstanten Wert Prädikate, die nicht auf Argumenten definiert sind, liefern T oder F. Die erweiterte Menge des Datentyps ist nun L N 0. Die Operationen first, rest, build operieren auch auf Listen von Elementen aus N 0. Institute for Software Technology 28
29 Erweiterungen (cont.) Die Variablensymbole brauchen nicht typisiert zu werden, denn x bezeichnet eine Zahl, wenn I(x) N 0. Beispiel: Funktion NTH liefert n-tes Element einer Liste. δnth = if eq?(x1,nil) then ERROR else if =(x2,1) then first(x1) else NTH(rest(x1),--(x2,1)) Nur sinnvoll für x2>0 Institute for Software Technology 29
30 Repräsentation von Datentypen Im Grunde kann jeder Datentyp R mit abzählbarem Bereich in L repräsentiert werden. Für Datentyp R = (A, f 1,..,f n, p 1,..,p m, c 1,..,c k ) konstruiere Codierung π: A L Für Funktionen f i konstruiere π[f i ] über L Für Prädikate p i konstruiere π[p i ] über L Für Konstante c i konstruiere π[c i ] L Institute for Software Technology 30
31 Codierungseigenschaften Es muß gelten: 1. π[f i ] (π[a]) = π(f i (a)) für a A 2. π[p i ] (π[a]) p i (a) für a A A f i A A p i {T,F} π π π L π[f i ] L L π[p i ] {T,F} Institute for Software Technology 31
32 Beispiel Abbildung des Datentyps der natürlichen Zahlen inkl. Null auf Listen π[0]=[], π[x] = build(1,π[x-1]) π[+(x,y)] = union(π[x], π[y]) π[-(x,y)] = diff(π[x], π[y])... union und diff müssen definiert werden (z.b. als EXP Programm). Institute for Software Technology 32
33 Beispiel (cont.) Die Zahl 3 wird repräsentiert als [ ]. +(2,1) soll auf Funktion abgebildet werden, die [ ] zurückliefert. Institute for Software Technology 33
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
MehrSWP Funktionale Programme (3. Teil)
SWP Funktionale Programme (3. Teil) Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at Institute for Software Technology Inhalt! Einfache Ausdrücke (Sprachen A +, B bin +, C Mult,
MehrSWP Funktionale Programme
SWP Funktionale Programme Berhard Aichernig und Alexander Felfernig Institut für Softwaretechnologie {bernhard.aichernig,alexander.felfernig}@ist.tugraz.at Institute for Software Technology Inhalt Einfache
MehrZusammenfassung. Stephan Gspandl Institut für Softwaretechnologie Institute for Software Technology
Zusammenfassung Stephan Gspandl Institut für Softwaretechnologie sgspandl@ist.tugraz.at SYNTAX 2 Syntax Struktur einer Sprache Werkzeug zur Beschreibung aller möglichen Sätze: Grammatik Tupel (V N,V T,S,Φ)
MehrVU Software Paradigmen / SS 2015
VU Software Paradigmen 716.060 / SS 2015 Stephan Frühwirt Institute for Software Technology i S T Institute for Software Technology Stephan Frühwirt 1 Inhalt Beweise in EXP 1. Beweise in EXP 2. 3. Abgabe
MehrSyntax vs. Semantik. Behandlung von Variablen. Grammatik vs. Induktive Definition. M: T ω...
Syntax vs. Semantik Ein einfaches Beispiel: additive Terme Sei T = L(G) mit G = T }, (, ), +,0,...,9}, P, T mit P = T 0 9 ( T + T ) } M: T ω... Meaning, interpretiert T als additive Ausdrücke M(0) = 0,...,
MehrDie Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.
4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit
MehrSoftwareparadigmen Zusammenfassung
Softwareparadigmen Zusammenfassung Dieses Skriptum basiert auf der Softwareparadigmen Übung im Sommersemester 2012 und dem Vorlesungsskriptum 2007. Vorlesung von Alexander Felfernig Übungsskriptum verfasst
MehrOutline. 1 Einleitung. 2 Einführung in C. 3 Fortgeschrittenes in C. 4 Einführung in Emacs Lisp. 5 Einführung in Prolog. 6 Formale Semantik
Outline 1 Einleitung 2 Einführung in C 3 Fortgeschrittenes in C 4 Einführung in Emacs Lisp 5 Einführung in Prolog 6 Formale Semantik Lisp 1958 von John McCarthy erfunden Funktionales Programmierparadigma
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
MehrSWP Prüfungsvorbereitung
20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c
MehrEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 26. Oktober 2006 Haskell - Einführung Syntax Typen Auswertung Programmierung
MehrVU Software Paradigmen / SS 2014
VU Software Paradigmen 716.060 / SS 2014 Bernhard Aichernig und Alexander Felfernig Institut für Softwaretechnologie {aichernig, alexander.felfernig}@ist.tugraz.at Institute for Software Technology Inhalt
Mehr26 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
MehrVorkurs Mathematik für Informatiker. 1 Potenzen. Michael Bader, Thomas Huckle, Stefan Zimmer Oktober Kap.
1 Potenzen Michael Bader, Thomas Huckle, Stefan Zimmer 1. 9. Oktober 2008 Kap. 1: Potenzen 1 Potenzen Definition Für reelle Zahl x R (Basis) und eine natürliche Zahl n N (Exponent): x n := x x x... x }{{}
MehrPrüfungsvorbereitung SWP
Prüfungsvorbereitung SWP Bsp.: LL(1) Bsp.: EXP Bsp.: Datentypen Bsp.: Prädikatenlogische Ausdrücke Bsp.: LP 1 Bsp.1: LL(1) - Umwandlung Warum ist folgende Grammatik nicht LL(1)? Beweisen Sie diesen Umstand
MehrVU Software Paradigmen
VU Software Paradigmen Bernhard Aichernig und Alexander Felfernig Institut für Softwaretechnologie {aichernig, alexander.felfernig}@ist.tugraz.at Institute for Software Technology Inhalt Organisatorisches
MehrFallstudie: Nim Spiel
Fallstudie: Nim Spiel Angeblich chinesischen Ursprungs (Jianshizi) Interessant für Spieltheorie: vollständig analysierbar Frühzeitig computerisiert 1939 Nimatron (Weltausstellung New York) 1951 Nimrod
Mehr13 Abstrakte Datentypen
13 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen auf den Elementen (Konstruktoren, Selektoren, Typprädikate) Eigenschaften abgeleitet Jetzt: Abstrakte Datentypen (ADT)
MehrLOOP-Programme 1. Def (Meyer/Ritchie). LOOP-Programme werden induktiv aufgebaut aus den (Basis-) Anweisungen. Führe P X-mal aus ) LOOP-Programme 2
LOOP-Programme 1 LOOP-Programme verwenden (jeweils) endlich viele Variablen aus VAR := {X 0,X 1,X 2,...}, oft nur mit X,Y,Z,U,V,W bezeichnet, die als Register fungieren. Slide 1 Def (Meyer/Ritchie). LOOP-Programme
MehrMächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 23 Turingmaschine (TM) M = (Q, Σ, Γ, B, q 0, q, δ) Unendliches Band... 0 c
MehrVerarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:
Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen: take 1 0 ( f i l t e r ( fn x => x mod 2=0) nat ) ; val it =
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
MehrMächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen und rekursive Funktionen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 16. November 2010 Berthold Vöcking, Informatik 1 () Vorlesung
MehrInterpreter (Hilfsfunktionen)
Interpreter (Hilfsfunktionen) -- Berechnet die Liste der gebundenen Variablen boundlist :: Expr -> [String] boundlist (Var x) = [] boundlist (Lambda x e) = x : (boundlist e) boundlist (App e1 e2) = (boundlist
MehrTerme. Heute: Terme vergleichen. Struktur von Termen. Operatoren. Logik in der Praxis Logikprogrammierung (Prolog) p.1
Terme Heute: Terme vergleichen Struktur von Termen Operatoren Logik in der Praxis Logikprogrammierung (Prolog) p.1 Termgleichheit: ==?- a == a.?- a == b. no?- X == Y. no?- X == X.?- X == a. no Logik in
Mehr4.1 Motivation. Theorie der Informatik. Theorie der Informatik. 4.1 Motivation. 4.2 Syntax der Prädikatenlogik. 4.3 Semantik der Prädikatenlogik
Theorie der Informatik 3. März 2014 4. Prädikatenlogik I Theorie der Informatik 4. Prädikatenlogik I 4.1 Motivation Malte Helmert Gabriele Röger 4.2 Syntax der Prädikatenlogik Universität Basel 3. März
MehrSyntax der Prädikatenlogik: Variablen, Terme. Formeln. Freie und gebundene Variablen, Aussagen. Aufgabe
Syntax der Prädikatenlogik: Variablen, Terme Formeln Eine Variable hat die Form x i mit i = 1, 2, 3.... Ein Prädikatensymbol hat die Form Pi k und ein Funktionssymbol hat die Form fi k mit i = 1, 2, 3...
MehrProgrammierung und Modellierung
Programmierung und Modellierung Benutzerdefinierte Datentypen Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 1. Aufzählungstypen 2. Typen mit zusammengesetzten
MehrFormale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik
Formale Grundlagen der Informatik 1 Kapitel 19 & Frank Heitmann heitmann@informatik.uni-hamburg.de 23. Juni 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/25 Motivation Die ist eine Erweiterung
Mehrzu 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
Mehr1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python
1 def Anweisung Sommersemester 2007 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente def Anweisung Beispiel: TuNix def def funktionsname([])
MehrFunktionen in Python
October 19, 2006 1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente def Anweisung def def funktionsname([]) : [ Dokumentationsstring
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.
MehrParadigmen der Programmierung
SS 11 Prüfungsklausur 25.07.2011 Aufgabe 5 (6+9 = 15 Punkte) a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: ( 1, 2 :"3", 4 < 5) :: (Char, String, Bool) [(last, tail), (head, take 5)]
Mehr17 Interpretation. Scheme-Programme als Datenstruktur. Interpretation von Ausdrücken. Interpretation von Lambda. Lambda als Datenstruktur
17 Interpretation Scheme-Programme als Datenstruktur Interpretation von Ausdrücken Interpretation von Lambda Lambda als Datenstruktur Toplevel Definitionen set! 17.1 Programme als Datenstruktur 17.1.1
MehrLOOP-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: ; :=
MehrTeil 1: Ein motivierendes Beispiel
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 1: Ein motivierendes Beispiel Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax,
MehrLogik für Informatiker
Vorlesung Logik für Informatiker 9. Prädikatenlogik Syntax und Semantik der Prädikatenlogik Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Syntax der
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrFallstudie: Nim Spiel
Fallstudie: Nim Spiel Angeblich chinesischen Ursprungs (Jianshizi) Interessant für Spieltheorie: vollständig analysierbar Frühzeitig computerisiert 1939 Nimatron (Weltausstellung New York) 1951 Nimrod
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
Mehrzu 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
Mehr2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert.
2.5 Listen Listen werden mithilfe von [] und :: konstruiert. Kurzschreibweise: [42; 0; 16] # let mt = [];; val mt : a list = [] # let l1 = 1::mt;; val l1 : int list = [1] # let l = [1;2;3];; val l : int
MehrAbstrakte Syntax von Prolog (1)
3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die
MehrBisher. Programme. Ausdrücke und ihre Auswertung (Substitutionsmodell)
Bisher Programme Ausdrücke und ihre Auswertung (Substitutionsmodell) Konstruktionsanleitung für Prozeduren Kurzbeschreibung Sorten und Verträge Gerüst Testfälle Rumpf ausfüllen Testen 2.21 Erinnerung:
MehrProgrammieren als Grundkompetenz
Programmieren als Grundkompetenz Irrtümer, Chancen und Methodik der Programmierausbildung Michael Sperber sperber@informatik.uni-tuebingen.de Vorgeschichte... AP Computer Science (1987/1998) Informatik
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Maximilian Haslbeck Fabian Mitterwallner Georg Moser David Obwaller cbr.uibk.ac.at Zusammenfassung der letzten LVA Definition Eine Registermaschine (RM) R ist
MehrBisher. Programme, Sequenzen von Formen. Ausdrücke und ihre Auswertung (Substitutionsmodell)
Bisher Programme, Sequenzen von Formen Ausdrücke und ihre Auswertung (Substitutionsmodell) Konstruktionsanleitung für Prozeduren Kurzbeschreibung Sorten und Verträge Gerüst Testfälle Rumpf ausfüllen Testen
MehrLogik Vorlesung 7: Grundlagen Prädikatenlogik
Logik Vorlesung 7: Grundlagen Prädikatenlogik Andreas Maletti 5. Dezember 2014 Überblick Inhalt 1 Motivation und mathematische Grundlagen 2 Aussagenlogik Syntax und Semantik Äquivalenz und Normalformen
MehrBeispiele: Funktionsabstraktion (3) Funktionsdeklaration. Funktionsdeklaration (2) Funktionsdeklaration (3) 3. Abstraktion über Funktionsbezeichner:
Beispiele: Funktionsabstraktion (3) Funktionsdeklaration 3. Abstraktion über Funktionsbezeichner: Ausdruck: f (f x) Abstraktion: \ f x -> f (f x) Mit Bezeichnervereinbarung: twice = \ f x -> f (f x) erg
MehrVorsicht bei redundanten und unvollständigen Matches!
Vorsicht bei redundanten und unvollständigen Matches! # let n = 7;; val n : int = 7 # match n with 0 -> "null";; Warning: this pattern-matching is not exhaustive. Here is an example of a value that is
MehrStrukturierte Spezifikation: Anreicherung um nichtrekursive und rekursive Definitionen
Strukturierte Spezifikation: Anreicherung um nichtrekursive und rekursive Definitionen 13. Mai 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 128 / 290 Strukturierte Spezifikationen
MehrObjektorientierte Programmierung mit C++ (WS 2016/2017)
Institut für Numerische Mathematik Dr. Andreas F. Borchert und Dr. Michael C. Lehn 26. Januar 2017 Blatt 12 Objektorientierte Programmierung mit C++ (WS 2016/2017) Abgabe bis zum 2. Februar 2017, 16:00
MehrAnsätze zur Erfassung von Faktoren durch Prüfungsaufgaben. (Diskussionen in Dagstuhl sowie mit Prof. Nickolaus, Technikpädagogik, U Stuttgart)
Taxonomie + Schwierigkeit Ansätze zur Erfassung von Faktoren durch Prüfungsaufgaben. (Diskussionen in Dagstuhl sowie mit Prof. Nickolaus, Technikpädagogik, U Stuttgart) Beurteilen Synthese Konstruktion
MehrFunktionen in Python
Funktionen in Python Prof. Dr. Rüdiger Weis Beuth Hochschule für Technik Berlin 1 / 31 1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente
MehrAufgabe: Platz-effiziente Kompression von Textdaten
7.3 Huffman-Bäume Anwendung von Binärbäumen Aufgabe: Platz-effiziente Kompression von Textdaten Standardcodierungen von Textdaten ISO-8859-1: 8 Bit pro Zeichen UTF-16: 16 Bit pro Zeichen Codierungen mit
Mehr2 Syntax versus Semantik
2 Syntax versus Semantik There are 10 types of people: those that understand binary, and those that don t. Bisher haben wir lediglich die Syntax von Sprachen sowie verschiedene Methoden zu ihrer Spezifikation
MehrEinfü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.
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Zusammengesetzte Datentypen in Haskell WS 2012/2013 Zusammengesetzte Datentypen Tupel List String Zusammengesetzte Datentypen Tupel-Datentyp Ein Tupel ist eine Ansammlung
MehrÜbungsblatt 4 Musterlösung
Numerik gewöhnlicher Differentialgleichungen MA2304 - SS6 Übungsblatt 4 Musterlösung Aufgabe 7 (Nullstellen als Eigenwerte) Die Polynome {S n } n=0,,2,, S n P n, mit führem Koeffizienten eins, heißen Orthogonalpolynome
MehrTheorembeweiserpraktikum SS 2016
Institut für Programmstrukturen und Datenorganisation Lehrstuhl Programmierparadigmen Am Fasanengarten 5 76131 Karlsruhe http://pp.ipd.kit.edu/ Theorembeweiserpraktikum SS 2016 http://pp.ipd.kit.edu/lehre/ss2016/tba
MehrLogik für Informatiker
Vorlesung Logik für Informatiker 9. Prädikatenlogik Syntax und Semantik der Prädikatenlogik Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Syntax der
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;
MehrProgrammieren 1 C Überblick
Programmieren C Überblick. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen
Mehr1 Potenzen und Polynome
1 Potenzen und Polynome Für eine reelle Zahl x R und eine natürliche Zahl n N definieren wir x n := x x x... x }{{} n-mal Einschub über die bisher aufgetretenen mathematischen Symbole: Definition mittels
MehrSWP Logische Programme Teil 2
SWP Logische Programme Teil 2 Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at Institute for Software Technology Inhalt! Motivation! Logische Programme (LP)! Resolution! Unifikation!
MehrTerme. Programmierkurs Prolog p.1
Terme Programmierkurs Prolog p.1 Heute: Terme vergleichen Struktur von Termen Operatoren Programmierkurs Prolog p.2 Termgleichheit:?- a a.?- a no?- X no b. Y.?- X X.?- X no a. Programmierkurs Prolog p.3
MehrC++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
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
MehrVortrag. Vortrag im Rahmen der Master-Vorlesung Semantik von Programmiersprachen an der FH München, Fachbereich Informatik
Vortrag β- and η-conversion Vortrag im Rahmen der Master-Vorlesung Semantik von Programmiersprachen an der FH München, Fachbereich Informatik von Stefan Hertel (sh_ccbiker@gmx.de Thomas Wöllert (thomas@woellert.net
MehrTypisierung. Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung. 3.
Typisierung Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung 2 Untypisierte Sprachen erfordern Methodensuche zur Laufzeit bei Misserfolg
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
MehrDie primitiv rekursiven Funktionen
Priv.-Doz. Dr.rer.nat.habil. Karl-Heinz Niggl Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Theoretische Informatik Fachgebiet Komplexitätstheorie und Effiziente
MehrEinführung in das λ-kalkül
Einführung in das λ-kalkül Max Wagner IPD Snelting 1 3.11.2017 Max Wagner - Einführung in das λ-kalkül IPD KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Syntax Abstrakte Syntax:
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. 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 Sommersemester
MehrWiederholung Signatur, Terme
Was bisher geschah (algebraische) Strukturen zur zusammenhängenden Modellierung von Mengen von Individuen (evtl. verschiedener Typen) Funktionen auf Individuen dieser Mengen Relationen zwischen Individuen
MehrHASKELL KAPITEL 2.1. Notationen: Currying und das Lambda-Kalkül
HASKELL KAPITEL 2.1 Notationen: Currying und das Lambda-Kalkül Bisheriges (Ende VL-Teil 1) weite :: (Float,Float) ->Float weite (v0, phi) = (square(v0)/9.81) * sin(2 * phi) (10, 30 ) smaller ::(Integer,
MehrTHEORETISCHE INFORMATIK UND LOGIK
THEORETISCHE INFORMATIK UND LOGIK 13. Vorlesung: Prädikatenlogik: Syntax und Semantik Markus Krötzsch Lehrstuhl Wissensbasierte Systeme TU Dresden, 1. Juni 2018 Halbzeit: Zusammenfassung und Ausblick Markus
Mehr10 Abstrakte Datentypen
10 Abstrakte Datentypen abstrakte Datentypen generische Implementierung datengesteuerte Programmierung Operationstabelle 10.1 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen
MehrGeheimnisprinzip: (information hiding principle, Parnas 1972)
2. Abstrakte Datentypen 2.0 Begriffe Geheimnisprinzip: (information hiding principle, Parnas 1972) Zugriffe auf Teile einer Programmeinheit, die für die reguläre Benutzung nicht erforderlich sind, sollten
MehrBeschreibung von Werten: Beschreibung von Werten: (2) Begriffsklärung: (Ausdruck, expression) (2) Begriffsklärung: (Ausdruck, expression)
Beschreibung von Werten: Beschreibung von Werten: (2) mittels Konstanten oder Bezeichnern für Werte: 23 " Ich bin eine Zeichenreihe" True x durch direkte Anwendung von Funktionen: abs (-28382) "Urin" ++
Mehr8 Prozeduren als Daten
8 Prozeduren als Daten Prozeduren als Parameter Prozeduren als Ergebnisse Prozeduren höherer Ordnung (higher-order procedures) Programmierung höherer Ordnung Verwendung als Abstraktionsmittel 8.1 Prozeduren
Mehr5. Übung - Kanalkodierung/Programmierung
5. Übung - Kanalkodierung/Programmierung Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Kanalkodierung a Folgende Kodes stehen Ihnen zur Verfügung: Kode 1: 0000000 Kode
MehrGrundlagen 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
Mehr1.3 Primitiv rekursive und µ-rekursive Funktionen
Definition 1.11 Die Klasse der primitiv rekursiven Funktionen (a) Basisfunktionen: (1.) die konstanten Funktionen c (c N) (2.) die Projektionen Π m i (x 1,...,x m ) = x i (1 i m) (3.) die Nachfolgerfunktion
MehrLOOP-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: ; :=
MehrProgrammierung und Modellierung
Programmierung und Modellierung Zusammenfassung und Ausblick Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt 13. Zusammenfassung und Ausblick 1. Thema der Vorlesung 2. Beispiel rekursive
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?
MehrBoolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:
Boolean Wertemenge: Wahrheitswerte {,}, auch {,} Deklaration: VAR present,billig,laut,gefunden : BOOLEAN; Ein-/Ausgabe: keine! Operatoren: Negation, Verneinung NOT ~ Konjunktion, logisches UND AND & Disjunktion,
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrErwin Grüner 09.02.2006
FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife
MehrEWS, WS 2016/17 Pfahler I-1
Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler Funktionen EWS, WS 2016/17 Pfahler I-1 Funktionen Funktion: Rechenvorschrift mit einem Namen und ggf. formalen Parametern,
Mehr