Einführung in PROLOG VI
|
|
- Monika Geiger
- vor 6 Jahren
- Abrufe
Transkript
1 Terme vergleichen Einführung in PROLOG VI PROLOG kennt ein wichtiges Prädikat zum Vergleichen von Termen, dass wir auch schon kennengelernt haben: == Zur Erinnerung sei ch einmal gesagt, dass es nicht dem = entspricht, dem Prädikat für Unifikation. Beispiele:?- a==a.?- a==b.?- a== a.?- X==Y.?- X=Y. X = Y Y = Y?- a=x, a==x. X=a Es gibt auch ein Prädikat \==, welches so definiert ist, dass es genau dann erfüllt ist, wenn zwei Terme nicht identisch sind.?- a\==a.?-a\==b?-x\==a. X=X Die letzte Query wollen wir uns genauer anschauen. Aus unseren Überlegungen oben, wie == mit uninstantiierten Variablen verfährt ist klar, dass X==a ein ergeben würde, daher ergibt die untere Query ein und weißt weiter darauf hin, dass X weiterhin instantiiiert werden muss.
2 Termtypen Wir erinnern uns, dass wir am Anfang erklärten, welche Arten von Termen es bei PROLOG gibt: Variablen (variables), Atome (atoms), Zahlen (numbers) und Komplexe Terme (complex terms). Außerdem kann man Zahlen und Atome unter dem Begriff Konstanten (constants) zusammenfassen, und Konstanten und Variablen bilden die einfachen Terme (simple terms). Das folgende Bild fasst es ch einmal zusammen: PROLOG kennt einige eingebaute Prädikate. mit denen wir testen können, ob ein Term von einem gewissen Typ ist, was manchmal ganz nützlich sein kann: atom/1 integer/1 float/1 number/1 atomic/1 var/1 nvar/1 Testet, ob das Argument ein Atom ist Testet, ob das Argument eine ganze Zahl ist Testet, ob das Argument ein Fließkommazahl ist Testet, ob das Argument eine Zahl ist, also Integer oder Fließkomma Testet, ob das Argument eine Konstante ist Testet, ob das Argument uninstantiiert ist Testet, ob das Argument instantiiert ist Beispiele:?- atom(a).?-atom(lieben(student, vorlesung)).?- atom(x).?- X=a, atom(x).?-atom(x), X=a.
3 Die Struktur von Termen Wenn uns ein komplexer Term vorliegt, was würde uns vor Allem interessieren, wenn wir nicht wissen, wie er aussieht? Wahrscheinlich wie der Prädikatsname (functor) lautet und welche Anzahl von Argumenten (arity) er hat. PROLOG bietet uns dafür das eingebaute Prädikat functor/3 an.?- functor(f(a,b), F, A). F=f A=2?- functor(a, F, A). F=a A=0?- functor(a=b, F, A). F= = A=2?- functor([a,b,c], X, Y). X=. Y= 2 Die letzten beiden Queries müssen wir uns ch etwas genauer anschauen. Wir erinnern uns, dass wir beim Verwenden des = PROLOG-intern eigentlich das Prädikat =(a,b) verwenden, daher also die Aussage: Functor ist =, Arität ist 2. Was wir aber bisher ch nicht wußten, ist dass PROLOG-intern Listen folgendermaßen abgespeichert werden:.(kopf, Rumpfliste), das heißt die Query:?-.(a, [b, c] ) == [a, b,c]. ergibt ein. Wir können functor aber auch benutzen, um Terme zu konstruieren:?- functor(t, f, 7). ergibt zum Beispiel: T = f(_1469, _1470, _1471, _1472, _1473, _1474, _1475) wobei _1469 in PROLOG für ch nicht instantiierte Variablen ohne Namen steht. Damit können wir aber auch ein Prädikat konstruieren, das testet, ob etwas ein komplexer Term ist, was uns oben ch gefehlt hat: complexterm(x):- nvar(x), functor(x, _, A), A>0.
4 Passend dazu gibt es ch ein eingebautes Prädikat arg/3, welches uns Angaben über die Argumente von komplexen Termen macht. arg(n, T, X). benötigt eine Zahl N und einen komplexen Term T und instantiiert dann X mit dem Nten Argument von T Beispiel:?- arg(2, donaldsneffen(tick, trick, track), X). X = trick Ein drittes nützliches Prädikat zur Analyse von Termstrukturen ist =.. /2 Es benötigt einen komplexen Term und gibt dann eine Liste aus, die den Functor als erstes Element enthält und dann alle Argumente.Die Query =.. (liebt(romeo, julia), X) ergibt also X=[ liebt, romeo, julia]. Dieses Prädikat nennt man auch univ und es kann auch in der inneren Schreibweise verwendet werden:?- vater(draco, lucius) =.. X. X = [vater, draco, lucius]?- X =... [a, b( c ), d]. X = a (b( c ), d)?- erbe( Y, slytherin) =.. X. Y = Y X = [erbe, Y, slytherin] Univ (=..) ist immer nützlich, wenn irgendetwas mit allen Argumenten eines komplexen Terms gemacht werden muss. Da es die Argumente in Listenform ausgibt, können unsere rmalen Prädikate zur Listenbearbeitung angewandt werden. Definieren wir zum Beispiel ein Prädikat copy_term, welches eine Kopie eines Terms erstellt und dabei alle Variablen, die im Term auftauchen, durch neue ersetzt. Die Kopie von onkel(donald) sollte also onkel(donald) sein, die Kopie von eifersuechtig(donald,x) sollte eifersuechtig(donald, _G425) sein, d.h X wurde durch eine neue Variable ersetzt. Falls der input also eine Konstante ist, wird derselbe Term ausgegeben: copyterm(x,x) :- atomic(x). Falls der Input-Term eine Variable ist, soll die Kopie eine neue Varaiable sein: copyterm(x, _):- var(x). Wie geht es weiter mit komplexen Termen? Nun, copyterm sollte einen Term mit demselben Functor und derselben Arität ausgeben, und alle Argumente sollten Kopien der entsprechenden Argumente des Input-Terms sein. Das heißt, wir schauen uns alle Argumente des Input-Terms an und kopieren sie mit rekursiven Aufrufen von copyterm. In PROLOG sieht das so aus:
5 copyterm(x,y):- functor(x,f,a), functor(y,f,a), A>0, X =.. [F ArgsX], Y =.. [F ArgsY], copy_terms_inlist(argsx,argsy). copy_terms_inlist([],[]). copy_terms_inlist([kin Rin],[Kout Rout]):- copyterm(kin,kout), copy_terms_inlist(rin,rout). Gehen Sie den Code Schritt für Schritt durch und verstehen Sie, was an welcher Stelle passiert. Wir wiesen vorhin darauf hin, dass univ auch in der inneren Schreibweise geschrieben werden kann. Korrekt hieße es, dass univ auch als infix Operator verwendet werden kann. Es gibt auch prefix Operatoren, die vor den Argumenten geschrieben werden und postfix Operatoren nach den Argumenten. Wir wollen uns damit im nächsten Kapitel näher beschäftigen: Operatoren PROLOG weiß, dass die Query 2+3*3 für 2+(3*3) steht und nicht für (2+3)*3, also das Punktrechnung vor Strichrechnung geht. Aber warum? PROLOG ordnet jedem Operator eine gewisse Priorität (precedence) zu. Die Priorität von + ist größer als die von * und damit wird + zum Hauptfunctor des Ausdrucks, denn PROLOGs interne Schreibweise +(2, *(3, 3)) ist eindeutig. Die Priorität von is ist ch höher, daher wird 11 is 2+3*3 als is(11, +(2, *(3, 3))) interpretiert und nicht als +(is (11, 2), *(3, 3))). Priorität wird durch Zahlen angegeben, je höher die Zahl, desto höher die Priorität. Außerdem hat jeder Operator ch eine Assoziativität. + ist Links-Assoziativ, was bedeutet, dass der Ausdruck auf der rechten Seite von + eine niedrigere Priorität haben muss, als + selbst. Die Operatoren ==, =:= und is hingegen sind Nicht-Assoziativ Operatoren selbst definieren PROLOG lässt uns Operatoren selbst definieren. Man könnte zum Beispiel einen postfix Operator macht_dick definieren und PROLOG würde einem erlauben cola macht_dick zu schreiben, anstelle von macht_dick(cola). Definitionen von Operatoren sehen in PROLOG folgendermaßen aus: :- op(priorität, Typ, Name) Die Priorität ist eine Zahl zwischen 1 und Die Priorität von = ist beispielsweise 700, die von und die von * 400. Typ spezifiziert den Typ und die Assoziativität. Im Falle von + ist das yfx, das steht für einen infix Operator, denn x,y repräsentieren die Argumente und f den Operator, der hier dazwischen steht. Zusätzlich bedeutet x ein Argument mit einer Priorität kleiner als die des Operators, und y ein Argument mit kleiner oder gleicher Priorität. Folgende Möglichkeiten gibt es also für Typ:
6 infix prefix postfix xfx, xfy, yfx fx, fy xf, yf Unser Operator könnte also folgendermaßen definiert sein: :- op (500, xf, macht_dick) Die Operatorendefinition spezifiert allerdings nicht die Bedeutung des Operators, sondern nur, wie man ihn syntaktisch einsetzen kann. Nachtrag zur Assoziativität Der Sinn von Priorität und Assoziativität besteht darin, die Interpretation eines Ausdruckes eindeutig zu machen, wenn er mehr als einen Operator enthält. Der Operator mit der höchsten Priorität wird Hauptoperator, wie im Beispiel a + b * c, welches intern zuerst zu +(a, *(b,c)) umgewandelt wird. Die Priorität eines Atoms ist immer 0. Die Priorität eines Sub-Ausdrucks ist die seines Hauptoperators. Die einzige Methode die Priorität eines Ausdrucks zu ändern, ist ihn einzuklammern, denn jeder eingeklammerte Ausdruck hat Priorität 0. Erst wenn die Priorität der Operatoren eines Ausdrucks gleich ist, kommt die Assoziativität ins Spiel! Wir erinnern uns: f für den Operator, x für einen Operator mit immer kleinerer Priorität, y für einen mit kleinerer oder gleicher Priorität. Schauen wir uns dazu ein paar Beispiele für Infix-Operatoren an: Ein rechtsassoziativer Operator ++ :- op(100, xfy, ++). Damit wird der Ausdruck: a ++ b ++ c folgendermaßen abgearbeitet: a ++ (b ++ c) Ein linksassozitiver Operator -- :- op(100, yfx, --). Damit wird der Ausdruck: a -- b -- c so abgearbeitet: (a -- b) -- c Ein nichtassoziativer Operator ** :- op(100, xfx, **). Damit ist der Ausdruck a ** b ** c illegal und benötigt Klammern.
7 Prefix und Postfix operatoren. :- op(100, fy, t). Damit wird der Ausdruck: t t P folgendermaßen abgearbeitet t(t P) Würden wir t mit dem dem Typ 'fx' deklarieren, wäre nur die untere Schreibweise legal. Beispiele für eingebaute Operatoren in PROLOG:
8 Übungen Übung 6.1 Schreiben Sie ein zweistelliges Prädikat termtype(+term,?type), welches für einen Term die möglichen Typen des Terms anzeigt (atom, zahl, konstante, variable usw.). Die Typen sollten in der aufsteigender Reihenfolge angegeben werden, z.b.?-termtype(vincent,variable).?-termtype(mia,x). X = atom ; X = constant ; X = simple_term ; X = term ;?-termtype(dead(zed),x). X = complex_term ; X = term ; Übung 6.2 Nehmen wir an, wir hätten folgende Operatordefinitionen: :-op(300, xfx, [are, is_a]). :-op(300, fx, likes). :-op(200, xfy, and). :-op(100, fy, famous). Welche der folgenden Terme sind wohlgeformt??-x is_a witch.?-harry and ron and hermione are friends.?-harry is_a wizard and likes quidditch.?-dumbledore is_a famous famous wizard.?-harry likes likes quiditch?-dumbledore is_a harry is_a famous wizard Übung 6.3 Schreiben Sie ein Programm, das das Prädikat groundterm(+term) definiert, um zu testen, ob ein Term ein Groundterm ist, also ein Term der keine Variablen enthält.?-groundterm(x).?-groundterm(neffe(dagobert, donald)).?-groundterm(neffe(donald,x)).
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,
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.
Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer:
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.
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
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
Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
3 Die Grundrechenarten
3 Die Grundrechenarten In diesem Kapitel wollen wir uns unter anderem mit folgenden Themen beschäftigen: Operatoren für die Addition, Subtraktion, Multiplikation und Division Modulooperator, auch Restoperator
Java Einführung Operatoren Kapitel 2 und 3
Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig
Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH
Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich
Theoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 9: Prädikatenlogik schulz@eprover.org Rückblick 2 Rückblick: Vor- und Nachteile von Aussagenlogik Aussagenlogik ist deklarativ: Syntaxelemente entsprechen
PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54
PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten
Formale Sprachen, reguläre und kontextfreie Grammatiken
Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache
1 Aussagenlogik und Mengenlehre
1 Aussagenlogik und engenlehre 1.1 engenlehre Definition (Georg Cantor): nter einer enge verstehen wir jede Zusammenfassung von bestimmten wohl unterschiedenen Objekten (m) unserer Anschauung oder unseres
Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!
Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Grundstrukturen: Sub [name]([übergabe]) End Sub [Übergabe] ist
Klassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44
Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,
y(p F x) gebunden und in den Formeln F xy
Wirkungsbereich (Skopus) eines Quantors i bzw. i nennen wir die unmittelbar auf i bzw. i folgende Formel. Wir sagen, eine IV i kommt in einer Formel A gebunden vor, wenn sie unmittelbar auf oder folgt
2 Einfache Rechnungen
2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,
Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
7. Formale Sprachen und Grammatiken
7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)
Wissensbasierte Systeme/ Expertensysteme. Teil 2
Wissensbasierte Systeme/ Expertensysteme Teil 2 BiTS, Sommersemester 2004 Dr. Stefan Kooths KOOTHS BiTS: Wissensbasierte Systeme/Expertensysteme Teil 2 1 Gliederung 1. Einführung und Einordnung 2. Entscheidungsunterstützung(ssysteme)
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))
Datenstrukturen DCG Grammatiken. Tutorial I Operationen auf Datenstrukturen II Bäume DCGs und Semantik II
Datenstrukturen DCG Grammatiken Tutorial I Operationen auf Datenstrukturen II Bäume DCGs und Semantik II Bäume Repräsentation von Mengen durch binäre Bäume: Eine häufige Anwendung von Listen ist es Mengen
Auswahl von Klauseln und Atomen in Prolog
5.6 Prolog... ist die bekannteste Implementierung einer LP-Sprache; wurde Anfang der 1970er von Alain Colmerauer (Marseille) und Robert Kowalski (Edinburgh) entwickelt. konkretisiert den vorgestellten
5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
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.
JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de
JSP JSTL JEE Vorlesung Teil 6 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Wiederholung / Vertiefung JSTL Grundlagen JSTL Basisbefehle Templates über JSTL
Objektorientiertes Programmieren für Ingenieure
Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen
SWE1 / Übung 2 (19.10.2011)
SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn
Übungsblatt 3: Algorithmen in Java & Grammatiken
Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015
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
2. Vorlesung. Slide 40
2. Vorlesung Slide 40 Knobelaufgabe Was tut dieses Programm? Informell Formal Wie stellt man dies sicher? knobel(a,b) { Wenn a = 0 dann return b sonst { solange b 0 wenn a > b dann { a := a - b sonst b
9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83
9.. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 Die Grundfrage bei der Anwendung des Satzes über implizite Funktionen betrifft immer die folgende Situation: Wir haben eine Funktion f : V W und eine Stelle x
Visual Basic / EXCEL / Makroprogrammierung Unterrichtsreihe von Herrn Selbach
Visual Basic / EXCEL / Makroprogrammierung Unterrichtsreihe von Herrn Selbach Übungsaufgaben zum Kapitel 1 1. Aufgabe In einer EXCEL Tabelle stehen folgende Zahlen: Definiere einen CommandButton, der diese
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
Wahlfach Mathematik: Funktionen
Wahlfach Mathematik: Funktionen In der Mathematik ist eine Funktion oder Abbildung eine Beziehung zwischen zwei Mengen, die jedem Element der einen Menge (Funktionsargument, unabhängige Variable, x-wert)
Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
Tag 9: Datenstrukturen
Tag 9: Datenstrukturen A) Datenstrukturen B) Cell Arrays C) Anwendungsbeispiel: Stimulation in einem psychophysikalischen Experiment A) Datenstrukturen Wenn man komplizierte Datenmengen verwalten möchte,
Binäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
Programmierung und Modellierung
Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:
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
Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.
R. Brinkmann http://brinkmann-du.de Seite 1 13.0.010 Lineare Gleichungen Werden zwei Terme durch ein Gleichheitszeichen miteinander verbunden, so entsteht eine Gleichung. Enthält die Gleichung die Variable
M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung
M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales
Numerische Datentypen. Simon Weidmann
Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die
Logische Programmierung
Logische Programmierung B-82 Deklaratives Programmieren in Prädikatenlogik: Problem beschreiben statt Algorithmus implementieren (idealisiert). Grundlagen: Relationen bzw. Prädikate (statt Funktionen);
Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff
Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet
Dr. Jürgen Roth. Fachbereich 6: Abteilung Didaktik der Mathematik. Elemente der Algebra. Dr. Jürgen Roth 3.1
.1 Dr. Jürgen Roth Fachbereich 6: Abteilung Didaktik der Mathematik Elemente der Algebra . Inhaltsverzeichnis Elemente der Algebra & Argumentationsgrundlagen, Gleichungen und Gleichungssysteme Quadratische
Grundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 8: kontextfreie Grammatiken Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/37 Überblick Kontextfreie Grammatiken
Einführung in Python Übung 1
Einführung in Python Übung 1 Rebecca Breu, Bastian Tweddell Oktober 2007 Login: XXXloginXXX Passwort: XXXpasswortXXX Bitte das Passwort ändern (passwd)! Datentypen I Aufgabe 1 (Erste Schritte, Zahlen)
Constraint Logical Programming
Constraint Logical Programming Betreuer: Thomas Ströder Proseminar: Fortgeschrittene Programmierkonzepte in Java, Haskell und Prolog Rene Niewianda, Martin Breuer 15. Juni 2015 1 Einleitung: Das Ziel dieses
Datumsangaben, enthält mindestens Jahr, Monat, Tag
Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice
Theoretische Informatik I
Theoretische Informatik I Einheit 2.4 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibungsformen für Sprachen Mathematische Mengennotation Prädikate beschreiben Eigenschaften
Einführung in PROLOG. Christian Stocker
Einführung in PROLOG Christian Stocker Inhalt Was ist PROLOG? Der PROLOG- Interpreter Welcher Interpreter? SWI-Prolog Syntax Einführung Fakten, Regeln, Anfragen Operatoren Rekursion Listen Cut Funktionsweise
Objektorientierte Programmierung mit C++ Vector und List
Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu
Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe
Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,
Warum Üben großer Mist ist
Warum Üben großer Mist ist Kennst Du das? Dein Kind kommt aus der Schule. Der Ranzen fliegt in irgendeine Ecke. Das Gesicht drückt Frust aus. Schule ist doof! Und dann sitzt ihr beim Mittagessen. Und die
L6. Operatoren und Ausdrücke
L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.
Elemente der Analysis II
Elemente der Analysis II Kapitel 3: Lineare Abbildungen und Gleichungssysteme Informationen zur Vorlesung: http://www.mathematik.uni-trier.de/ wengenroth/ J. Wengenroth () 15. Mai 2009 1 / 35 3.1 Beispiel
Modellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben
Theorie der Informatik
Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax
Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler
Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale
Unterprogramme, Pointer und die Übergabe von Arrays
Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18
Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.
Übungen zu C++ Kapitel 1
Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme
Prinzipien der Softwareentwicklung S. Strahringer
Gliederung 1 Einführung Was ist ein Programm? Vorteile (und Nachteile) von PHP Erste PHP-Programme Ausführung von PHP-Programmen 2 Grundbegriffe der Programmierung Anweisungen, Variablen, Datentypen und
Kontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
Proseminar C-Programmierung. Strukturen. Von Marcel Lebek
Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11
Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen
Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Überblick Teil 1: Lexen und Parsen Die Sprache LFP +C Professur
Funktionale Programmierung
Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein
Inhalt. SWP Logische Programme. Motivation. Formalisierung. Wissensbasis. Bsp (Bibel)Verwandtschaften. Motivation Sprache LP
Inhalt SWP Logische Programme Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Motivation Sprache LP Resolution Unifikation Datenbanken und logische Programme Semantik 2 Motivation Bsp
Behandeln Sie»undefined«als»nicht vorhanden«thema 54
Behandeln Sie»undefined«als»nicht vorhanden«151 heitliche Schreibweisen erlauben es den Benutzern, zu erraten, welche Eigenschaften und Methoden zur Verfügung stehen, ohne dass sie sie nachschlagen müssen,
Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.
Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren. Niemand bedauert diese Fehler mehr als der Autor selbst.
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7
Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
Web und Mobile Apps Programmieren mit Dart
Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013. ZIEL attraktiv aktuell Programmierunterricht wenig Hürden Inhalt Weshalb Web und Mobile im Unterricht? aktuelle
Institut fu r Informatik
Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013 Aufgabenblatt 3 18. November
Logische und funktionale Programmierung
Logische und funktionale Programmierung Vorlesung 1: Einführung in Prolog Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 1. Oktober 2015 1/54 ORGANISATORISCHES
IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken
IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform
Kapitel 15: Differentialgleichungen
FernUNI Hagen WS 00/03 Kapitel 15: Differentialgleichungen Differentialgleichungen = Gleichungen die Beziehungen zwischen einer Funktion und mindestens einer ihrer Ableitungen herstellen. Kommen bei vielen
Grundlagen der Informationverarbeitung
Grundlagen der Informationverarbeitung Information wird im Computer binär repräsentiert. Die binär dargestellten Daten sollen im Computer verarbeitet werden, d.h. es müssen Rechnerschaltungen existieren,
Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 8
Prof. Dr. Wilhelm Schäfer Paderborn, 8. Dezember 2014 Christian Brenner Tristan Wittgen Besprechung der Aufgaben: 15. - 18. Dezember 2014 Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung
Kurs 1575, Musterlösung zur Winter Klausur 2003/04
Kurs 1575, Musterlösung zur Klausur im Wintersemester 2003/04 1 Kurs 1575, Musterlösung zur Winter Klausur 2003/04 Aufgabe 1: Römische Zahlen Wer kennt das Problem nicht: Sie stehen vor einer Inschrift,
Wenn Du Deinen Rechner zum ersten Mal einschaltest, verlangt er von Dir einige Angaben. Wähle als Sprache Deutsch.
INHALT 1 Dein TI nspire CX CAS kann fast alles... 1 2 Erste Schritte... 1 2.1 Systemeinstellungen vornehmen... 1 2.2 Der Startbildschirm... 2 2.3 Berechnungen... 2 3 Menü b... 3 4 Symbolisches Rechnen...
Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11
Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe
Sructred Query Language
Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen
ARDUINO Übung. Inhalt:
ARDUINO Übung Diese Übung ermöglicht einen kurzen Einblick in die Welt der Mikrokontrollerprogrammierung. Es sollen im Folgenden die Anleitungen befolgt werden und die entsprechenden elektrotechnischen
Aufgabensammlung IT 4131. Shellprogrammierung Teil I
Aufgabensammlung IT 4131 Shellprogrammierung Teil I Fragen: I.1 Was ist eine Shell? Skript 1.1.2, S. 4 a) aus der Sicht des Betriebssystems b) aus der Sicht des Anwenders I.2 Was ist ein Shell-Skript?
Extremwertverteilungen
Seminar Statistik Institut für Stochastik 12. Februar 2009 Gliederung 1 Grenzwertwahrscheinlichkeiten 2 3 MDA Fréchet MDA Weibull MDA Gumbel 4 5 6 Darstellung von multivariaten, max-stabilen Verteilungsfunktionen
C++ - Operatoren. Eigene Klassen mit neuen Funktionen
C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,
Wissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren)
Was bisher geschah Wissensrepräsentation und -verarbeitung in Logiken klassische Aussagenlogik klassische Prädikatenlogik: Wiederholung Syntax, Semantik Normalformen: bereinigt Pränex Skolem ( -Eliminierung)
I.1 Die Parrot Assemblersprache
I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen
MySql und PHP. Apache2: Konfigurieren für php4. ...\apache2\conf\httpd.conf aufrufen. Folgende Zeilen einfügen:
MySql und PHP Apache2: Konfigurieren für php4...\apache2\conf\httpd.conf aufrufen Folgende Zeilen einfügen: LoadModule php4_module "c:/php/php4apache2.dll" AddType application/x-httpd-php.php Wichtig!!
Kurzeinführung in C++
Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber
Grundlagen. Kapitel 1
Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die
Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme
Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes