LISTEN. Programmierkurs Prolog p.1
|
|
|
- Meta Acker
- vor 9 Jahren
- Abrufe
Transkript
1 LISTEN Programmierkurs Prolog p.1
2 Liste Listen sind rekursive Datenstrukturen, die dazu dienen geordnete Mengen von Elementen zu beschreiben. Man kann sich Listen in Prolog als Behälter vorstellen, die Elementen verschiedener Typen behalten können. Die Reihenfolge, in der Behälter gefüllt werden, ist wichtig Programmierkurs Prolog p.2
3 c i g(a) a b c b ca a b c Programmierkurs Prolog p.3 Beispiele
4 Numeral Die folgende rekursive Definition definiert eine natürliche Zahl: 1. 0 ist eine natürliche Zahl 2. succ(x) ist eine natürliche Zahl wenn X eine natürliche Zahl ist Programmierkurs Prolog p.4
5 Definition von Liste Die folgende rekursive Definition definiert eine Liste in Prolog: 1. [] ist eine Liste 2..(T,L) ist eine liste wenn L eine Liste ist und T ein belibiger Term T heisst head der Liste, L heisst tail. Programmierkurs Prolog p.5
6 Listen in Prolog / Das Predikat liste implementiert die folgende rekursive Definition von Liste: 1. ist eine Liste 2..(T,L) iste eine Liste wenn L eine Liste ist / % Basisklausel liste([]). % Recursive Klausel liste(.(t,l)) :- liste(l). Programmierkurs Prolog p.6
7 Beispiele a,b,c.(a,.(b,.(c, []))) a b,c.(a,.(.(b,.(c,[])),[])) [].([],[]) c, i,g(a).(c,.(.(i,[]),.(g(a),[]))) Programmierkurs Prolog p.7
8 Listen als Bäume a a b c b c [] Programmierkurs Prolog p.8
9 Länge einer Liste / Das Predikat count length implementiert die folgende rekursive Definition von Länge ( ) einer Liste: 1. = 0 2..(T,L) = 1 + L / % Basisklausel count length([],0). % Recursive Klausel count length(.(t,l), succ(x)) :- count length(l,x). Programmierkurs Prolog p.9
10 Studenten = martin, anna, hans Programmierkurs Prolog p.10
11 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). Programmierkurs Prolog p.11
12 Studenten = martin, anna, hans In Prolog: Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). Programmierkurs Prolog p.12
13 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). Programmierkurs Prolog p.13
14 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) Programmierkurs Prolog p.14
15 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). Programmierkurs Prolog p.15
16 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) Programmierkurs Prolog p.16
17 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). Programmierkurs Prolog p.17
18 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). 6. I2 = 1 + I3 = succ(i3) Programmierkurs Prolog p.18
19 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). 6. I2 = 1 + I3 = succ(i3) 7. count length([], I3) Programmierkurs Prolog p.19
20 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). 6. I2 = 1 + I3 = succ(i3) 7. count length([], I3) 8. count length([], 0). Programmierkurs Prolog p.20
21 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). 6. I2 = 1 + I3 = succ(i3) 7. count length([], I3) 8. count length([], 0). 9. I3 = 0 Programmierkurs Prolog p.21
22 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). 6. I2 = 1 + I3 = succ(i3) 7. count length([], I3) 8. count length([], 0). 9. I3 = I2 = 1 Programmierkurs Prolog p.22
23 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). 6. I2 = 1 + I3 = succ(i3) 7. count length([], I3) 8. count length([], 0). 9. I3 = I2 = I1 = 2 Programmierkurs Prolog p.23
24 Studenten = In Prolog: martin, anna, hans Studenten =.(martin,.(anna,.(hans, [])))). 0. count length(studenten,n). 1. count length(.(martin,.(anna,.(hans, []))), N). 2. N = 1 + I1 =succ(i1) 3. count length(.(anna,.(hans, [])), I1). 4. I1 = 1 + I2 = succ(i2) 5. count length(.(hans, []), I2). 6. I2 = 1 + I3 = succ(i3) 7. count length([], I3) 8. count length([], 0). 9. I3 = I2 = I1 = N = 3 Programmierkurs Prolog p.24
25 Aufgaben 1. Definiere ein Predikat länger then/2, das als Argumente zwei Listen nimmt und entscheidet ob die erste länger als die zweite ist. (Tipp: ähnlich wie greater then) 2. Definiere ein Predikat append/3, das drei Listen als Argumente nimmt und die Konkatenation der ersten zwei Listen in dem dritten Argument speichert. Zum Beispiel bei der Anfrage?- append(.(a,.(b,[])),.(1,.(2,[])),x) soll Prolog soll X =.(a,.(b,.(1,.(2,[])))) antworten. (Tipp: ähnlich wie add) 3. Definiere ein Predikat member/2, das als Argumente ein Term und eine Liste nimmt und testet ob der Term in der Liste enthalten ist. Programmierkurs Prolog p.25
26 Alternative Darstellung für Listen?-.(a,.(b,[])) = X. X = [a,b] Listen können in Prolog ähnlich wie Mengen geschrieben werden: [a,b,c,[1]] Programmierkurs Prolog p.26
27 Prolog stellt eine benutzerfreundlichere Darstellung für Listen zur Verfügung, die wie folgt definiert ist: 1. [] ist eine Liste 2. [H T] ist eine Liste wenn T eine Liste ist. Programmierkurs Prolog p.27
28 Zugriff auf Listen [a,b,c]= [X T] X = a T = [b,c] [g(a)] = [X Y] X = g(a) Y = [] [a,b,c] = [X,Y T] X = a Y = b T = [c] no = [X T] Programmierkurs Prolog p.28
29 Die anonyme Variable _ Jedes vorkommen dieser Variable ist unhabängig von den anderen Vorkommen, d.h jedes mal das diese Variable vorkommt wird sie neu instanziiert. Die Bindungen dieser Variable sind unsicthbar, d.h. sie werden nicht gespeichert und werden auch nicht von Prolog ausgegeben.?- f(a,b,c)=f(x,b,x) no?- f(a,b,c)=f(,b, ) yes?- [a,b,c,d] = [H T] H = a T = [b,c,d]?- [a,b,c,d] = [H ] H = a Programmierkurs Prolog p.29
30 Member / Das Predikat member/2 testet ob ein Objekt sich in einer Liste befindet / % Basisklausel member(x,[x ]). % Recursive Klausel member(x, [Y T] :- member(x,t). Programmierkurs Prolog p.30
31 Append / Das Predikat append/3 konkateniert zwei Listen / % Basisklausel append([],x,x). % Recursive Klausel append([x T],Y,[X C]) :- append(t,y,c). Programmierkurs Prolog p.31
32 Zusammenfassung Listen sind rekursive Datenstrukturen mit denen geordnete Mengen von Objekten dargestellt werden können Anonyme variable Nächste Woche: Arithmetik und mehr zu Listen. Übungsaufgaben: Das Übungsblatt ist auf der Web-Seite. Programmierkurs Prolog p.32
Rekursion. rekursive Prädikate. deklarative vs. prozedurale Bedeutung von Prädikaten. Programmierkurs Prolog p.1
Rekursion rekursive Prädikate deklarative vs. prozedurale Bedeutung von Prädikaten Programmierkurs Prolog p.1 is digesting/2 is digesting(x,y) :- just ate(x,y). is digesting(x,y) :- just ate(x,z), is digesting(z,y).
Terme. 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
Prolog 4. Kapitel: Listen
Prolog 4. Kapitel: Listen Dozentin: Wiebke Petersen Kursgrundlage: Learn Prolog Now (Blackburn, Bos, Striegnitz) Petersen Prolog: Kapitel 4 1 Zusammenfassung Kapitel 3 Wir haben gelernt, dass die Rekursion
Einführung in PROLOG IV Listen
Einführung in PROLOG IV Listen Beispiele für Listen in PROLOG: 1. [mia, vincent, jules, yolanda] 2. [mia, robber(honey_bunny), X, 2, mia] 3. [] 4. [mia, [vincent, jules], [butch, girlfriend(butch)]] 5.
Rekursive Listenverarbeitung
Rekursive Listenverarbeitung Übersicht Rekursion ist die wichtigste Programmiertechnik in Prolog! Rekursive Datenstrukturen Einfache und rekursiv gebildete Strukturen Rekursive Datenstrukturen und rekursive
Teil 4: Rekursion und Listen
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 4: Rekursion und Listen Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln,
Künstliche Intelligenz Einführung in Prolog
Künstliche Intelligenz Einführung in Prolog Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik versität zu Köln Backtracking Backtracking uninformiertes, universelles
Listen. bersicht. Zweck. Listen allgemein Listen in Prolog. Programmiertechniken mit Listen. Erstellen von Prolog-Programmen mit Listen
Listen bersicht Listen allgemein Listen in Prolog Schreibweise Listen als rekursive Datenstruktur Unifikation Programmiertechniken mit Listen Zweck rekursive Suche Abbilden Erstellen von Prolog-Programmen
Prolog: Listen und Cut. Mark Ugarov
Prolog: Listen und Cut Mark Ugarov Übersicht Wiederholung und Anwendung Wie nutzt man? Listen Cut Anwendungsbeispiele immer parallel Wiederholung: Aufruf von Prolog-Programmen Notwendige Software: SWI
Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren?
Attribut-Werte-Paare Eine Eigenschaft kann beschrieben werden durch ein Paar [a,w]. Dabei bezeichnet a das Attribut und w den konkreten Wert aus dem Wertebereich W a des Attributs. Die Eigenschaften eines
Expertensysteme Sprachverarbeitung Symbolische Informationsverarbeitung Graphentheoretische Probleme Planungsprobleme Rapid Prototyping...
Logische Programmierung Programm Menge von Formeln (Klauseln) Berechnung Beweis einer Formel (eines Ziels/Goals) mit Hilfe des Programms 17 Anwendungen Expertensysteme Sprachverarbeitung Symbolische Informationsverarbeitung
Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume)
Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen,
Übung 4: Aufgaben in Prolog: Aufgaben trenne(+eingabeliste, -ZahlenListe, -NichtzahlenListe)
Intelligente Agenten SS 2007 Prof. Dr. Heiner Klocke Übung 4: Aufgaben in Prolog: Aufgaben 7-10 05.07.2007 Aufgabe 7 ( trenne ) Schreiben Sie ein Programm trenne(+eingabeliste, -ZahlenListe, -NichtzahlenListe)
Abstrakte 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
Logisches und funktionales Programmieren
Prof. Dr. Christoph Beierle, Dr. Harald Ganzinger, Prof. Dr. Michael Hanus Kurs 01816 Logisches und funktionales Programmieren LESEPROBE Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten
Cut und Negation. Heute: if-then-else. Negation. Programmierkurs Prolog p.1
Cut und Negation Heute: der Cut if-then-else Negation Programmierkurs Prolog p.1 Zur Erinnerung: Suchbäume p(x) :- a(x). p(x) :- b(x),c(x),d(x). p(x) :- f(x). a(1). p(i1) b(1). c(1). a(i1) b(i1), c(i1),
Prolog 3. Kapitel: Rekursion
Zusammenfassung: Kapitel 2 Prolog 3. Kapitel: Rekursion Wir haben gelernt wie komplexe Strukturen durch Matching in Prolog aufgebaut werden können und wie die Beweisführung in Prolog funktioniert. Dozentin:
Prolog 3. Kapitel: Rekursion
Prolog 3. Kapitel: Rekursion Dozentin: Wiebke Petersen Kursgrundlage: Learn Prolog Now (Blackburn, Bos, Striegnitz) Petersen Prolog: Kapitel 3 1 Zusammenfassung: Kapitel 2 Wir haben gelernt wie komplexe
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
Beispiele: 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
Binäre Suchbäume (binary search trees, kurz: bst)
Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.
Übungen zu Kognitive Systeme I
Übungen zu Kognitive Systeme I Stephan Weller ([email protected]) Kognitive Systeme / WIAI / Uni Bamberg 19. Oktober 2005 Inhalt Intro Was ist Prolog? Wie funktioniert Prolog? Rekursion
4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als
Kapitel 4 Bäume 4.1 Bäume, Datenstrukturen und Algorithmen Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als eine Menge von Knoten und eine Menge von zugehörigen
Logische und funktionale Programmierung
Logische und funktionale Programmierung Vorlesung 8: Arithmetik, Listenprädikate, weitere Prolog Prädikate Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca [email protected] 1/67 ARITHMETIK
Gliederung. Funktionale Programmierung. Pattern matching in Haskell. Pattern matching in ERLANG. Materialien zur Vorlesung
Gliederung Funktionale Programmierung Materialien zur Vorlesung D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 7.
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
1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
Rekursive Programmiertechniken. Einfachste Rekursion mit Babuschka. Hyponymie: Unterbegriffshierarchie. Linksrekursion mit Babuschka
Rekursive Programmiertechniken Einfachste Rekursion mit Babuschka Übersicht Linksrekursion Transitive Relationen berechnen Hierarchische Beziehungen: Hyponymie Dekomposition eines (von mehreren) Arguments
Theoretische Informatik II
Theoretische Informatik II Dr. Eva Richter / Holger Arnold Universität Potsdam, Theoretische Informatik, Sommersemester 2008 Übungsblatt 3 (Version 4) Abgabetermin: 13.5.2008, 12.00 Uhr Der λ-kalkül Da
Objektorientierte Programmierung II
Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem
Dateien und Module. Heute: Ein- und Ausgabe. Module. Programmierkurs Prolog p.1
Dateien und Module Heute: Ein- und Ausgabe Module Programmierkurs Prolog p.1 Ausgabe auf den Bildschirm?- X= Hagrid, write( Hallo ), write(x). Hallo Hagrid X = Hagrid?- write(ron),nl,write(hermione). ron
ADT: Verkettete Listen
ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch int zaehler, nenner; public Bruch(int zaehler, int nenner) this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren
2 Logikprogrammierung am Beispiel Prolog
2 Logikprogrammierung am Beispiel Prolog 2.1 Logikprogrammierung mit einfachen Daten 2.2 Variablenumbenennung 2.3 Syntax 2.4 Komplexe Daten 2.5 Der Cut 2.6 Negation als Fehlschlag 2.7 Literaturhinweise
Die 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
Einführung in das Programmieren Prolog Sommersemester 2006. Teil 2: Arithmetik. Version 1.0
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 2: Arithmetik Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln, Unifikation,
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
Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich
Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich Inhalt Vom deklarativen Wissen zum prozeduralen Programm Vom Programm zur Berechnung Elemente eines Prolog-Programms Zugverbindungen
Tutoraufgabe 1 (Programmieren in Prolog):
Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Tutoraufgabe 1 (Programmieren in Prolog): In dieser Aufgabe sollen einige Abhängigkeiten im Übungsbetrieb Programmierung in Prolog modelliert
DCG II. Heute: DCGs mit extra Argumenten. DCGs mit Agreementmerkmalen. Parsebäume. Extra Tests. Programmierkurs Prolog p.1
DCG II Heute: DCGs mit extra Argumenten DCGs mit Agreementmerkmalen Parsebäume Extra Tests Programmierkurs Prolog p.1 Extra Argumente Beispiele: x - - y. s - - np, vp. x(foo, ba) - - y. s(f) - - np, vp.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /
Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An
Definition 4 (Operationen auf Sprachen) Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A 0 = {ɛ}, A n+1 = AA n A = n 0 An A + = n 1 An Beispiel 5 {ab, b}{a, bb} = {aba, abbb,
Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare
Beispiele: (Funktionen auf Listen) (3) Bemerkungen: 5. Zusammenhängen der Elemente einer Liste von Listen: concat :: [[a]] -> [a] concat xl = if null xl then [] else append (head xl) ( concat (tail xl))
Tutorium Prolog für Linguisten 8
Endliche Automaten Tutorium Prolog für Linguisten 8 Sebastian Golly 18. Dezember 2012 Sebastian Golly Tutorium Prolog für Linguisten 8 1 / 13 Endliche Automaten Plan für heute? Sebastian Golly Tutorium
Funktionale Programmierung. ALP I Lambda-Kalkül. Teil III SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I Lambda-Kalkül Teil III SS 2011 Parser Hilfsfunktionen: Die break-funktion ist eine Funktion Höherer Ordnung, die eine Liste beim ersten Vorkommen einer Bedingung in zwei Listen spaltet. break ::
12 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,
Verarbeitung 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 =
PROLOG. Lernende Systeme WS 10/11 Crashkurs. Martin Sticht Stephan Weller
PROLOG Lernende Systeme WS 10/11 Crashkurs Martin Sticht Stephan Weller SWI Prolog http://www.swi-prolog.org Grundlegendes Grundkonstrukte Fakten Regeln Anfragen Fakten und Regeln kommen in die Programm-Datei
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
Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)
Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11) Hinweis: Dieses Übungsblatt enthält
Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume
Algorithmen und Datenstrukturen 22. März 2018 B3. Verkettete Listen und Bäume Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume B3.1 Einführung Marcel Lüthi and Gabriele Röger B3.2 Verkettete
(Logik und) Logikprogrammierung
Übungsaufgaben zur Lehrveranstaltung (Logik und) Logikprogrammierung im Studiengang Informatik Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Fachgebiet Künstliche Intelligenz
Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008. Jun.-Prof. Dr. B. Beckert. 21.
Name, Vorname: Matrikel-Nr.: Studiengang: Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008 Jun.-Prof. Dr. B. Beckert 21. Februar 2008 Informatik (Diplom) Computervisualistik
ADT: Verkettete Listen
ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren
PROLOG Syntax. Einführung in PROLOG II. Atome. Variablen. Es gibt vier Arten von Termen: Atome. Zahlen. Variablen. Komplexe Terme
PROLOG Syntax Es gibt vier Arten von Termen: Atome Variablen Atome Zahlen Variablen Komplexe Terme 1. uni, uni_hannover 2. KI Kurs, $ % 45 3. @=, ====> 1. X, Y 2. Variable, Output 3. _tag, _head 4. X_256
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume Marcel Lüthi and Gabriele Röger Universität Basel 22. März 2018 Einführung Abstrakter Datentyp / Datenstruktur Abstrakter Datentyp Eine Menge
Gliederung. Algorithmen und Datenstrukturen I. Listen in Haskell: Listen in Haskell: Listen in Haskell. Datentyp Liste Strings Listenkomprehension
Gliederung Algorithmen und Datenstrukturen I D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Winter 2009/10, 16. Oktober 2009, c
Grundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
Einfü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
Algorithmik und Programmieren
Institut für Informatik Forschungsgruppe Datenbanken und Informationssysteme (DBIS) Universität Innsbruck Algorithmik und Programmieren Martin Pichl Datenbanken und Informationssysteme (DBIS) dbis.uibk.ac.at
Haskell, 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
Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen
Gliederung Programmierparadigmen Programmieren in Prolog D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 26. April
Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit
Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList
Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen
2 Ziele Bäume Standardimplementierungen für Bäume kennen lernen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 02/0 4 Bäume (abstrakt) Implementierung von Knoten Bäume
Programmiersprache Prolog
Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.2 Logikprogrammierung Prolog 240 Programmiersprache Prolog Prolog-Programm ist Liste von Fakten (einelementige Hornklausel) und Regeln (mehrelementige
Kapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
Einführung in die Programmierung für NF MI. Übung 04
Einführung in die Programmierung für NF MI Übung 04 Inhalt Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 04 2 Arrays Arrays repräsentieren Reihungen von Objekten, z.b. Variablen
Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte)
Matrikelnummer: 1 Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte) Kreuzen Sie an, ob die folgenden Aussagen richtig oder falsch sind. Bewertung: keine Antwort: 0 Punkte richtige Antwort: +0.5 Punkte falsche
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
Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.
Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung
Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1
Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
