Rechnerstrukturen und Programmierparadigmen

Größe: px
Ab Seite anzeigen:

Download "Rechnerstrukturen und Programmierparadigmen"

Transkript

1 Informatik A: Rechnerstrukturen und Programmierparadigmen Prof. Dr. Norbert Fuhr SS 2003 Universität Duisburg-Essen, Abteilung Duisburg Fakultät 5

2 Autor des Skriptes: Prof. Dr. Wolfram Luther. Zuletzt editiert von: André Schaefer

3 Inhaltsverzeichnis 1 Einführung in die Grundlagen der Informatik Ziele der Informatik Teilgebiete der Informatik Rechnerentwicklung Problemorientierte Programmiersprachen Grundlagen der Logik Geschichtlicher Überblick Aussagenlogik Prädikatenlogik Literatur Schaltfunktionen Zahldarstellung Komplementdarstellungen Darstellung von Gleitpunktzahlen nach IEEE 754/ Boolesche Algebra Schaltfunktionen Schaltnetze Ringsummennormalform Schaltnetze und ihre Optimierung Beispiele für Schaltnetze Vereinfachung von Schaltnetzen Das Verfahren von Karnaugh Das Verfahren von Quine und McCluskey Fehlerdiagnose von Schaltnetzen Hazards in Schaltnetzen Schaltwerke Flip Flops Sequentielle Schaltungen Lineare Schaltkreise

4 5 Programmierbare Logische Arrays (PLA) Aufbau und Arbeitsweise eines PLA Programmierung eines PLA, universelles PLA Anwendungen von PLA s Bemerkungen zum Entwurf von VLSI Schaltungen Komplexität von VLSI Schaltungen Layout von VLSI Schaltungen H Bäume Grundlegende Additions und Multiplikationsalgorithmen und Schaltungen Addition Von Neumann Addierwerk Carry Look ahead Addition Multiplikation Organisationsplan eines von Neumann Rechners Struktur eines Rechners Arbeitsweise einer CPU Der Speicher eines von Neumann Rechners Busse I/O Einheit und Steuerung durch Interrupts Erweiterungen des von Neumann Konzepts Eine kleine Programmiersprache Syntaktische Beschreibungsmittel Die Syntax von Mini Pascal Semantik von Mini Pascal Übersetzung des Mini Pascalprogramms in Maschinencode Von Mini Pascal zu Pascal Datentypen von Pascal Kontrollstrukturen, Prozeduren und Funktionen Unit Konzepte und objektorientierte Programmierung Allgemeiner Programmaufbau Objektorientierte Programmierung Implementierung C versus Pascal Logiksprachen und Prolog Was ist logische Programmierung? Von Logik zu Prolog Syntax und Semantik von Prolog Programmen Rekursive Regeln Listen Fail und Cut Operatoren

5 11.7 Standard Prädikate (Built in Predicates) Literatur Funktionale Programmierung Einführung in funktionale Programmiersprachen Operatoren, Bezeichner, Typen Funktionen Mustererkennung Einfache rekursive Funktionen Listen Einfache Listenfunktionen Rekursion Curryfunktionen und Funktionen höherer Ordnung Literatur

6 1 Einführung in die Grundlagen der Informatik 1.1 Ziele der Informatik Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen. Sie befasst sich mit dem Beschaffen, Erfassen, Strukturieren, Bearbeiten, Verteilen und Speichern von Daten. Dazu entwickelt sie konstruktiv-formale und operationale Kalküle auf der Basis von künstlichen Sprachen. ist Grundlage zur Konzeption, Erstellung, Verifikation, Bewertung und Anwendung großer Informations und Kommunikationssysteme, ihrer Hardware und Software. schlägt eine Brücke zwischen technisch-naturwissenschaftlichem und geisteswissenschaftlichem Bereich und spielt in Wirtschafts, Rechts und Gesellschaftswissenschaften wie auch in Kunst, moderner Philosophie und Linguistik eine herausragende Rolle. Damit sind informatische Grundlagen für Schüler und Studenten fast aller Fachrichtungen unerlässlich. Informatikkompetenz erzeugt Eignung für neue kreative Arbeitsplätze in einem Hochtechnologieland. Im Mittelpunkt des Informatikunterrichts steht eine Vermittlung von Sach, Handlungs und Beurteilungskompetenz im Umgang mit Informatiksystemen auf wissenschaftlicher Grundlage, Modellierung von Problemen, Prozessen und Abläufen, ihre angemessene sprachliche Beschreibung, Abstraktion und Strukturierung, ihre algorithmische Durchdringung und eine Lösung und Steuerung mit adäquatem Werkzeug. Eine Anwendung von Informations und Kommunikationssystemen allein ist jedoch nicht hinreichend, um Basis für den Bildungswert der Informatik zu sein. Nun wollen wir zunächst einige der verwendeten Begriffe erklären: Bei der Kommunikation von Rechnern werden Daten oder Nachrichten ausgetauscht. Diese erhalten nach einer Interpretation den Charakter einer Information. Daten haben eine Form und einen Träger. Als Träger kommen magnetisierte Schichten, Bildschirme, elektromagnetische Felder, Schallfelder, Drähte etc. in Frage; die Form der Daten wird in der Regel in einer Sprache definiert. Sprachen bestehen aus Sätzen, diese aus Wörtern und letztere aus Zeichen aus einem Alphabet. Typische Beispiele sind die Umgangssprache, Ausdrücke aus 6

7 Operatoren und ganzen Dezimalzahlen oder Programmiersprachen, wie man sie aus der Schule her kennt. Wir werden uns im Laufe der Vorlesung mit verschiedenen Sprachklassen auseinandersetzen. Sprachen genügen einer genau festgelegten textitsyntax. Nach deren Regeln kann entschieden werden, ob ein Satz zur Sprache gehört oder nicht. Die Interpretation der Wörter und Sätze einer Sprache ist im Allgemeinen durch Regeln ausdrückbar, die man Semantik der Sprache nennt. Den Übergang von einer Sprache zu einer anderen bei gleichbleibender Interpretation nennt man Übersetzung. Ein Code ist die Zuordnung zwischen Zeichen und Zeichengruppen von zwei verschiedenen oder auch gleichen Alphabeten. Geschieht diese Zuordnung zeichenweise, so spricht man auch von Chiffrierung. Zum Problemlösen werden oft Algorithmen entwickelt und eingesetzt. Das Wort Algorithmus kommt vom Namen des persischen Mathematikers Mohammed Ibn Musa Abu Djafar Al Khowarizmi (ca ), der ein weit verbreitetes Lehrbuch für die Berechnung durch Vergleich und Reduktion, das bereits Lösungen von Gleichungen mit mehreren Unbekannten behandelt, geschrieben hat. In der lateinischen Übersetzung dieses Buchs, das durch die Kreuzfahrer nach Europa kam, begannen die Abschnitte jeweils mit Dixit algorismi, woraus sich die Bezeichnung Algorismus für eine Rechenvorschrift ableitete. Ein Algorithmus ist eine endliche Anweisungsfolge in einer Befehlssprache, die bei Interpretation eine Klasse von Verarbeitungsprozessen genau und vollständig beschreibt. Er enthält Operationen auf Variablen aus wohldefinierten Wertebereichen (Datentypen). Gewisse Operationen sind standardisiert und haben eine Standardinterpretation, wie zum Beispiel die Addition von Zahlen. Man kann für die Beschreibung von Algorithmen verschiedene Abstraktionsebenen wählen, eine umgangssprachliche, eine eher formale im Wortschatz eingeschränkte Sprache (Pseudocode), die typische Befehlselemente wie Zuweisungen, wiederholte oder bedingte Anweisungen enthält oder eine formale Programmiersprache, deren Syntax in Regeln genau beschrieben und die von einem Interpreter am Rechner ausgeführt werden kann. Diese Sprachen und ihre Paradigmen werden wir im Laufe der Vorlesung noch genauer betrachten. Beispiele werden jedoch schon jetzt aufgeführt. Vor der Entwicklung eines Algorithmus ist zunächst das Problem durch eine funktionale Spezifikation zu beschreiben. Dabei geht es um die Angabe der gültigen Eingabe und möglichen Ausgabegrößen sowie den funktionalen Zusammenhang zwischen beiden. Es werden die problemspezifischen Objekte beschrieben, Konstanten, Datentypen, Funktionen, und dabei insbesondere Prädikate, das sind Funktionen, deren Ausgabewerte wahr und falsch sind. Die Eingaben genügen gewissen Vorbedingungen; bei der Ausgabe werden gewisse Leistungen des Algorithmus zugesichert. Im Allgemeinen ist der Ablauf des Algorithmus in jedem Punkt fest vorgeschrieben (Determiniertheit), jeder Schritt ist ausführbar (Effektivität) und das Verfahren endet nach endlich vielen Schritten (Terminiertheit). Es gibt allerdings Probleme, die nicht algorithmisierbar sind. Selbst wenn ein Problem algorithmisierbar ist, dann kann doch die Ausführung des Algorithmus so viele Schritte enthalten, dass die Berechnung praktisch nicht ausführbar ist (Nichteffizienz). Wichtig ist auch, dass der Algorithmus auf einer (abstrakten) Maschine ausgeführt werden kann. Diese nimmt 7

8 alle oben genannten Schritte vor. Maschinen sind in verschiedenen Ausformungen in Automatenmodellen definiert worden. Die einfachste ist der endliche Automat, der bei der Abarbeitung einer Folge von Eingabezeichen eines Wortes aus einem Startzustand über Zwischenzustände in einen Endzustand übergeht. Wörter aus mächtigeren Sprachen können mit der Turingmaschine abgearbeitet werden, deren Schreiblesekopf über einem unendlichenarbeitsband frei beweglich ist. Diese Maschine ist auch Grundlage für moderne Computer, und man kann auf ihr alle bekannten zahlentheoretischen Algorithmen, wie den euklidischen, den GGT oder einen Faktorisierungsalgorithmus ausführen. Bis aber der Algorithmus eine Form hat, in der er auf dieser Maschine ausgeführt werden kann, sind viele Transformationen in Form von Zerlegungen und Übersetzungen erforderlich. Aus diesen Vorbetrachtungen ergeben sich die für das Grundstudium der Informatik wichtigen Inhalte: Programmieren, besonders im Sinne kreativen, explorativen Problemlösens und Gestaltens, sollte als wichtige Basiserfahrung aktiv vermittelt werden. Dabei sind grundlegende Prinzipien des Programmierens (Spezifizieren, Parametrisieren, Modularisieren, Kontrollieren) darzustellen und am konkreten Beispiel zu unterrichten. Der Computer als Werkzeug zur Informationserzeugung, verwaltung, ihrer Verarbeitung, Darstellung, Übermittlung und Speicherung sollte einen gebührenden Platz einnehmen. Das Kennenlernen der theoretischen Grundlagen der klassischen Anwendungen (Programmiersysteme, Textverarbeitung, Graphikprogramm, Tabellenkalkulation, Datenbanken, Computeralgebrasysteme, Kommunikationsprogramme) und ihr Einsatz im jeweiligen Kontext geistiger Tätigkeiten ist wichtig. Grundlagen des Rechneraufbaus und der Konzeption von Rechner und Kommunikationsnetzen, ihrer Hard und Software sind zu vermitteln. Grundlegende Prinzipien der Programmierung und den Aufbau eines Rechners wollen wir in dieser Vorlesung vertieft behandeln. 1.2 Teilgebiete der Informatik Die Informatik teilt sich in die folgenden vier Teilgebiete auf: Theoretische Informatik Mathematische Grundlagen der Informatik (Logik, Algebra, Graphentheorie, Kombinatorik) Automatentheorie Künstliche Sprachen Theorie der Berechenbarkeit Maschinelles Beweisen Praktische Informatik Compilerbau Programmiersprachen Datenbanktheorie Softwareengineering Geometrische Datenverarbeitung Künstliche Intelligenz Verteilte Systeme 8

9 Abbildung 1.1: Pascalsche Addiermaschine Technische Informatik Betriebssysteme Rechnerarchitektur Hardware verteilter Systeme Mikroprozessoren Kommunikationssysteme Rechnernetze Angewandte Informatik Bildverarbeitung Neuroinformatik Bioinformatik Wirtschaftsinformatik Computerlinguistik CAD, CAE, etc. 1.3 Rechnerentwicklung Im Folgenden geben wir einen kurzen Überblick über die Entwicklung der Rechner: Zwischen 1623 und 1818 entstanden die ersten mechanischen Rechenmaschinen, z.b. die Schickardsche Rechenuhr, die Additionsmaschine von Blaise Pascal und eine Staffelwalzenmaschine von Leibniz, die das Zweiersystem benutzt. Daher kann man mit Fug und Recht behaupten, dass die Entwicklung von Rechnern zunächst dadurch motiviert war, die Ausführung von Rechnungen in den vier Grundrechenarten +, -, *, / zu unterstützen. Aber mit der Entwicklung eines automatischen Webstuhls von Jacquard um 1800, der mittels Lochkarten gesteuert wurde, kam bereits ein anderer Aspekt neben dem Rechnen hinzu, nämlich der des Automaten, bei dem eine gewisse Abfolge von Zuständen gesteuert durchlaufen wird plante Babbage den ersten programmgesteuerten Rechner, der eine Ein und Ausgabeeinheit, eine arithmetisch logische Einheit (ALU) zur Ausführung von Rechnungen und logischen Operationen, wie Vergleich von Zahlen, und eine Befehlseinheit zur Steuerung der Maschine vorsieht. Die zur Rechnung und Steuerung nötigen Daten werden von einem Datenträger in einen Speicher eingelesen und im Takt bearbeitet. Das Ergebnis 9

10 Abbildung 1.2: Babaggerechner wird sodann an einer Ausgabeeinheit angezeigt. Moderne Eingabegeräte sind Tastatur, Maus, Graphiktablett, Scanner, Ausgabegeräte dagegen Monitor, Drucker oder eine Datei. Gebaut wurden die ersten programmgesteuerten Rechner von Zuse (1934/41) als lochstreifengesteuerte Maschine mit 2000 Relais und 64 Speichern, von Aiken 1944 in Zusammenarbeit mit IBM als Großrechenanlage MARK II mit 15 m Front und 2.5 m Höhe, bestehend aus 80 km Leitungsdraht, Einzelteilen mit 3.5 t Gewicht. Hier kommt bereits ein anderer Aspekt ins Spiel, nämlich der Einsatz eines Rechners zu anderen Aufgaben außerhalb des Rechnens, beispielsweise zur Übernahme von Büroarbeiten und Lösung von Anwendungsproblemen, wie es schon Hollerith 1886 mit einer Lochkartenmaschine zum Einsatz bei einer Volkszählung vorgegeben hatte. In der Folgezeit setzt eine stürmische Entwicklung über die Einführung von Elektronenröhren in der ENIAC, Transistoren, Mikroschaltelementen, hoch und höchstintegrierten Schaltkreisen ein, die in der Einführung von Mikrochips gipfelt. Während der Zuserechner die Multiplikation zweier 10stelligen Zahlen in ca. 3 sec ausführt, ist die ENIAC schon tausendmal schneller. Ein moderner Prozessor ist mit über 100 MHz getaktet, also mit über 100 Millionen Zyklen pro Sekunde. Viele Befehle werden in einem Zyklus ausgeführt. Eine Addition benötigt 3 Takte, eine Multiplikation zweier 32 Bit Zahlen 5, eine Division 18 bis 38 Takte und das Wurzelziehen 29 bis 69 Takte. Beim INTEL P6 sind auf einer Fläche von wenigen Hundert Quadratmillimetern 20 Millionen und mehr Transistoren auf vier Ebenen platziert, die zwischen 5 und 20 Watt Leistung aufnehmen, in fünf Pipelines Befehle parallel abarbeiten können und in der 10

11 Abbildung 1.3: Prozessor P6 Herstellung unter 500 DM kosten. Diese Chips kommen neben Spezialchips zur Organisation des Datentransfers oder von Ein und Ausgabe insbesondere auf graphischen Terminals in modernen Personalcomputern zum Einsatz. Parallel zur technologischen Entwicklung verläuft eine Entwicklung der Software, deren Bedeutung immer mehr zunimmt. Die nachfolgend genannten Generationen verlaufen nicht aufbauend aufeinander, sondern überlappen sich. 1. Generation: Programmierung in Maschinencode 2. Generation: Assemblersprachen und Programmiersprachen wie Fortran, Algol, Cobol 3. Generation: Strukturierte Programmierung mit Pascal, C, Ada, Modula 4. Generation: Verteilte Systeme, Programmierumgebungen, Objektorientierung 5. Generation: Logiksprachen, funktionale Programmiersprachen, Expertensysteme, Datenbanksysteme, Graphiksprachen 6. Generation: Netzsprachen, Generatoren, graphische Entwicklungssysteme Diese summarische Darstellung wollen wir etwas weiter vertiefen: Jeder Prozessor besitzt eine durch seine Bauart festgelegte Programmiersprache, die er lesen und unmittelbar in Steuersignale umsetzen kann. Man bezeichnet sie als Maschinensprache. Programme in Maschinensprache werden meist in einer leichter lesbaren mnemotechnischen Notation 11

12 beschrieben, der Assemblersprache. Befehle, wie das Sprachkürzel LD heißen laden, ADD addieren, ST speichern. Leider ist, obwohl schnell ausführbare Programme entstehen, die Programmierung in Assembler aufwändig, unübersichtlich und extrem maschinenabhängig. Assemblerprogramme werden daher heute nur noch für spezielle systemspezifische Programme eingesetzt, oder wenn es auf höchste Effizienz ankommt. Für alle anderen Anwendungen wird das Programmieren durch den Einsatz problemorientierter Sprachen wesentlich erleichtert Problemorientierte Programmiersprachen Gegenüber den Assemblersprachen sind die problemorientierten Programmiersprachen nicht an einen bestimmten Rechnertyp gebunden. Problemorientierte Sprachen verwenden in weitem Maße gebräuchliche mathematische oder sonstige anwendungsorientierte Schreibweisen und erlauben eine leicht verständliche, dem Problem angepasste Formulierung von Algorithmen. Sie lassen sich deshalb besonders leicht erlernen. Programme in einer problemorientierten Sprache können ohne Rücksicht auf einen speziellen Rechnertyp formuliert werden, sie lassen sich (zumindest im Prinzip) leicht auf andere Rechner übertragen. Zur Programmierung mathematischer, naturwissenschaftlicher und technischer Probleme haben u.ä. folgende problemorientierte Sprachen zumindest zeitweise eine gewisse Verbreitung gefunden: Ada Ada wurde im Rahmen eines Wettbewerbs des amerikanischen Verteidigungsministeriums in den Jahren entwickelt. Es soll durch seine universelle Einsetzbarkeit sowohl im kommerziellen als auch im technisch wissenschaftlichen Bereich dazu dienen, Wartungskosten für Software möglichst gering zu halten. Dadurch wurde Ada extrem umfangreich: neben den Konzepten von Pascal umfasst es u.ä. die Definition von Modulen, Paketen (zusammenhängende Daten und Operationen), generischen Unterprogrammen (mit unterschiedlichen Typen) und Prozessen (für die Parallelverarbeitung). ALGOL 60 (ALGOrithmic Language) Die Sprache wurde in Europa gemeinsam von vielen wissenschaftlichen Institutionen aus sechs Ländern entwickelt und 1960 publiziert. Sie hat heute keine praktische Bedeutung mehr. Viele Konzepte der strukturierten Programmierung wurden aber von Algol in moderne Programmiersprachen übernommen. BASIC (Beginners All purpose Symbolic Instruction Code) Ein vereinfachtes, FORTRAN ähnliches Programmiersystem, besonders auf Kleinrechnern verbreitet. Die Entwicklung ging 1960 von J. Kemmeny und Th. Kurtz mit einem interpretierenden System aus, bei dem Linie für Linie des Programmes ausgeführt wurde, und hat heute zu Pascal ähnlichen Programmiersystemen geführt, bei dem ein ausführbares Maschinenprogramm mittels eines Compilers erstellt wird. COBOL (COmmon Business Orientated Language) Die Sprache wurde Ende der 50er Jahre entwickelt und ist in der kaufmännischen Datenverarbeitung bis heute weit verbreitet. 12

13 C, C++ C wurde Ende der 70er Jahre gemeinsam mit dem Betriebssystem UNIX für Minicomputer entwickelt und hat sich seither auf Workstations, Personal Computer und Großrechner ausgebreitet. Es stellt in mancher Hinsicht einen Kompromiss zwischen strukturierter Hochsprache und effizienter Maschinensprache dar. C Programme neigen daher oft dazu, schwer lesbar zu sein. Da C inzwischen sehr weit verbreitet und standardisiert ist, eignet es sich gut zur Übertragung von Programmen auf unterschiedliche Rechner. Als objektorientierte Erweiterung von C setzt sich C++ seit 1986 immer weiter durch. FORTRAN (FORmula TRANslation) Fortran wurde 1954 als erste problemorientierte Programmiersprache von J. W. Backus entworfen, bei IBM implementiert und von internationalen Gremien in mehreren Versionen weiterentwickelt. Der aktuelle Sprachstandard Fortran 90 hat viele strukturierte Konzepte von Pascal übernommen. Java Java ist der Sprache C++ ähnlich und objektorientiert. Es wurde Anfang der neunziger Jahre von Sun entwickelt und beschreitet einen Mittelweg zwischen interpretierenden und compilierenden Sprachen. Ein Java Compiler übersetzt ein in Java geschriebenes Programm in Code für eine virtuelle Java Maschine, die wiederum auf allen Rechnerplattformen emuliert werden kann. Zusätzlich unterstützt es Sicherheitskonzepte für das Internet, kann in Internet Seiten einbezogen werden und ist somit Netzwerk geeignet. Pascal Pascal wurde von Kathleen Jensen und Niklaus Wirth (ETH Zürich) Anfang der 70er Jahre auf der Basis von Algol und ähnlichen Sprachen (z.b. Simula) entwickelt. Es umfasst ein erweitertes Typ, Ausdrucks und Anweisungskonzept, wurde aber ansonsten bewusst einfach gehalten. Pascal ist international standardisiert. Später werden die Dialekte Pascal XSC (portabel, Erweiterungen für das wissenschaftliche Rechnen) und Turbo Pascal (Erweiterungen u.ä. für Grafik, systemnahe Programmierung, objektorientierte Konzepte) besprochen. Die Sprache ist nach dem französischen Mathematiker, Philosoph und Theologen Blaise Pascal benannt ( ), der u.ä.\,eine der ersten mechanischen Rechenmaschinen konstruierte. Er leistete Beiträge zu zahlreichen mathematischen Gebieten (Geometrie der Kegelschnitte, Wahrscheinlichkeitsrechnung, Kombinatorik, Binomialkoeffizienten /Pascal sches Dreieck, Prinzip der vollständigen Induktion, Ansätze zur Infinitesimalrechnung). Modula-2 Modula-2 wurde 1978 als Weiterentwicklung der Sprache Pascal von Niklaus Wirth entworfen. Einige Sprachelemente von Pascal wurden überarbeitet und dabei zum Teil systematischer, zum Teil komplizierter. Ein Modulkonzept erlaubt die Entwicklung großer Programmpakete. Standardmodule ermöglichen z.b. systemnahe Programme und die Programmierung von Prozessen. Oberon Oberon wurde von N. Wirth und M. Reiser seit 1985 als Weiterentwicklung von Pascal und Modula 2 entworfen. Es stellt ein kleines Betriebssystem für PC und Workstation dar 13

14 mit integrierter pascalartiger objektorientierter Programmiersprache und ist sehr sparsam im Umgang von Rechnerressourcen. Wie man an den Jahreszahlen erkennen kann, dauert es oft Jahre oder Jahrzehnte, bis sich eine neue Programmiersprache etabliert hat. Bestehende Sprachen werden immer wieder überarbeitet und aktualisiert. In der Ausbildung ist Pascal nach wie vor hervorragend geeignet, da es die Entwicklung leistungsfähiger Programme erlaubt, also genügend universell ist, zum strukturierten Programmentwurf erzieht (im Gegensatz zu BASIC, C und Fortran) und trotzdem nicht allzu komplex ist (im Gegensatz etwa zu Fortran 90 oder Ada). Neben den genannten gibt es eine Vielzahl weiterer Programmiersprachen, z.b. die bei Expertensystemen weitverbreitete Sprachen PROLOG und LISP, zur Prozesssteuerung die Sprache PERL. In einer prädikativen Programmiersprache wird Programmieren als Beweisen in einem System von Tatsachen und Schlussfolgerungen aufgefasst. Der Anwender gibt eine Menge von gültigen Prädikaten und Regeln zum Gewinnen neuer Fakten vor, und die Aufgabe des Rechners ist es, eine gestellte Frage mit Richtig oder Falsch zu beantworten. Funktionale Programmiersprachen verstehen Programme als Funktionen, die Mengen von Eingabewerten in Mengen von Ausgabewerten abbilden. Dabei ist eine Grundmenge von wichtigen einfachen Funktionen vorgegeben. Im zweiten Teil dieser Veranstaltung werden wir uns mit der imperativen Programmiersprache Pascal, der prädikativen Sprache PROLOG und der funktionalen Sprache Miranda beschäftigen. Eine Sprache muss durchaus nicht immer zum Erstellen von Programmen dienen, sondern kann wie dbase auch zur Verwaltung einer Datenbank, TEX zur Gestaltung eines Textes, VHDL zum Beschreiben und Produzieren von elektronischen Schaltungen auf Chips oder HTML zur Gestaltung von WWW Dokumenten dienen. 1.4 Grundlagen der Logik Geschichtlicher Überblick Der Wunsch, logisches Schließen zu automatisieren oder Apparate zu konstruieren, die so ähnlich wie der Mensch denken können, geht auf R. Descartes und G.W. Leibniz im siebzehnten Jahrhundert zurück. Descartes Entdeckung, dass die klassische Euklidische Geometrie allein mit algebraischen Methoden entwickelt werden kann, war für die Entwicklung von Deduktionssystemen bedeutsam. Leibniz Idee war die Entwicklung einer universellen formalen Sprache, die lingua characteristica, in der jegliche Wahrheit formuliert werden könne, und dazu eines Kalküls, dem sogenannten calculus rationator, für diese Sprache. Damit wollte er natürlichsprachige Beschreibungen auch über Sachverhalte, die nicht aus der Zahlentheorie kommen, in eine formale Sprache und einen dazugehörigen Kalkül übersetzbar machen. Seiner Vorstellung nach müsse ein solcher Kalkül mechanisierbar sein und auf diese Weise dem menschlichen Denken alle langweilige Arbeit ersparbar sein. 14

15 Moderne Logik entstand 1879 unter Gottlob Frege, insbesondere mit der Schaffung seiner Begriffsschrift. Diese enthält die erste vollständige Entwicklung desjenigen Anteils der mathematischen Logik, der heute als Prädikatenlogik erster Stufe bezeichnet wird. Durch den Gebrauch Boolescher Operatoren und die Verwendung von Quantoren, Relationen und Funktionen wurde der ganze Aufbau der Logik das erste Mal beschrieben. Als Herleitungsregel verwendete er den Modus Ponens. Zudem wurden Syntax und Semantik einer formalen Sprache das erste Mal entwickelt. Skolem beschrieb in Arbeiten von 1920 und 1928 eine systematische Vorgehensweise, wie man die Erfüllbarkeit einer beliebigen Formelmenge nachweisen kann. Ebenfalls im Jahre 1928 erschien das Buch Grundzüge der theoretischen Logik von D. Hilbert und W. Ackermann. Hier wird auch das Entscheidbarkeitsproblem eingeführt, bei dem es um die Frage geht, ob es einen Algorithmus gibt, mit dem entschieden werden kann, ob eine beliebige vorgegebene prädikatenlogische Aussage wahr oder falsch ist. Herbrand bewies in seiner Doktorarbeit 1930 den Satz, dass für einen korrekten mathematischen Satz dies mit endlich vielen Schritten nachgewiesen werden kann. Gelingt dies nicht, so gibt es zwei Möglichkeiten, entweder kann die Inkorrektheit nach endlich vielen Schritten bewiesen werden, oder das Programm terminiert nicht, und man weiß es nicht. Später zeigten Alan Turing und Alonzo Church, dass es keine allgemeine Entscheidungsprozedur dafür gibt, ob eine Aussage der Prädikatenlogik wahr ist oder nicht. Turing gelang 1936 der Beweis durch Rückführung auf das Halteproblem. Um 1950 wurde die Entwicklung des Computers vorangetrieben, und es entstand das erste Programm zur Überprüfung von Aussagen. Um 1954 veröffentlichte Robinson Ergebnisse zur Prüfung von Theoremen in Klauselform mit dem Resolutionsprinzip. In den folgenden Jahren entwickelte er diese Ideen weiter und veröffentlichte 1965 die Arbeit A machine oriented logic based on the resolution principle. Kowalski stellte dann schließlich mit seinem SLD System einen Weg dar, der mittels Hornklauseln Wissen speichert und deklarativ wie prozedural Verwendung findet. Schließlich entwickelte Alan Colmerauer 1972 ein Logik Programmiersystem PROLOG, das Grundlage für die Programmierung in Logik ist Aussagenlogik Logik ist die Lehre von der Folgerichtigkeit des Denkens und Schließens. Mathematische Logik ist ein formales System, in dem gewissen Aussagen und Theoremen Wahrheitswerte zugeordnet werden können. Die einfachste Form der mathematischen Logik ist die Aussagenlogik. Unter einer Aussage oder atomaren Formel, abgekürzt mit einem Großbuchstaben (A, B,...) versteht man einen Satz, der entweder wahr oder falsch ist, z.b. Heute ist Dienstag. Man wird ihm mittels einer Interpretation einen Wahrheitswert zuordnen, wahr (w) oder falsch (f). Dieser Wert kann in einem Bit mit 1 bzw. 0 gespeichert werden. Die Menge der Wahrheitswerte wird mit B abgekürzt. Aussagen können miteinander verknüpft werden, und das Ergebnis dieser Operation ist wieder eine Aussage mit einem wohldefinierten Wahrheitswert. Als Negation erklärt man eine einstellige Operation ( ), die jeder Aussage das Negat mit dem entgegengesetzten Wahrheitswert zuordnet. 15

16 Atomare Formeln (Aussagenvariablen) oder deren Negate heißen Literale L {A, A}. Nunmehr erklären wir wichtige zweistellige Operationen. Die Konjunktion mit dem Konjungator (und, and) ordnet zwei Aussagen ihr Konjugat zu. Dabei hängt die Bedeutung der Junktoren nicht von den beteiligten Aussagen, sondern nur von ihren Wahrheitswerten ab. Es ergibt sich die folgende Tabelle: w f w w f f f f z.b. erhält man w w = w, was man am mittleren Kästchen ablesen kann. Die Disjunktion mit dem Disjungator (oder, or) ordnet zwei Aussagen ihr Disjungat zu. Dabei ergibt sich die erste der folgenden Tabellen: w f w w w f w f w f w w f f w w w f w w f f f w w f w f w f w f z.b. erhält man f f = f, was man am rechten unteren Kästchen der ersten Tabelle prüfen kann. Neue Formeln F können über einen induktiven Prozess aus (atomaren) Formeln mit Hilfe der Operatoren,, gebildet werden. Die Subjunktion mit dem Subjungator (wenn dann) ordnet zwei Aussagen ihr Subjungat zu. Auch hier haben wir die Tabelle notiert, aus der wir entnehmen, dass f w bzw. f f eine wahre Aussage ist, da aus einer falschen Aussage der Wahrheitswert der zweiten Aussage nicht geprüft werden kann. Die Bijunktion mit dem Bijungator (genau dann wenn) ordnet zwei Aussagen ihr Bijungat, die Antivalenz mit dem Junktor bzw. (entweder oder, xor) ordnet zwei Aussagen die Summe ihrer Wahrheitswerte modulo zwei zu. Für die Junktoren gilt die folgenden Bindungshierarchie: bindet stärker als, dieses stärker als, stärker als, stärker als. Wir wollen nun einige im Laufe der Vorlesung vorkommende Begriffe kurz einführen: Eine Klausel ist eine Disjunktion von Literalen. Eine Hornklausel enthält höchstens ein positives Literal, eine Hornformel besteht nur aus Hornklauseln, die durch Konjunktion miteinander verknüpft werden, wie zum Beispiel (A B C) C A ( A C). Eine aussagenlogische Form liegt in konjunktiver Form (KF) vor, wenn sie die Konjunktion von mehreren Klauseln ist: n n i F =. i=1 j=1 L i,j 16

17 Sie liegt in disjunktiver Form (DF) vor, wenn sie die Disjunktion mehrerer durch Konjungatoren verknüpften Literale ist: n n i F =. Beispiel i=1 j=1 L i,j F 1 = (A B C) ( B C) KF F 2 = (A B C) ( B C) DF. Aussagenvariablen werden mit den Werten aus der Menge der Wahrheitswerte belegt. Sie sind Platzhalter für Aussagen. Aus den Wahrheitswerten, den Aussagen, Aussagenvariablen und den Verknüpfungsoperatoren kann man zulässige aussagenlogische Ausdrücke bilden. Auch auf diese können wieder Operationen angewandt werden. Jeder Formel kann für eine Belegung ein Wahrheitswert zugeordnet werden. Eine Interpretation, unter der die Formel wahr ist, heißt Modell. Eine Formel heißt erfüllbar, wenn es mindestens ein Modell gibt, ansonsten unerfüllbar. Eine Formel F heißt Tautologie, wenn sie für alle Belegungen wahr ist. Wir schreiben dann F. (Es ist allgemein wahr, wie z.b. A A). Die Allgemeingültigkeit kann mit Hilfe einer Wahrheitstafel, durch Anwendung von syntaktischen Umformungen bis zum Wahrheitswert w oder durch Zurückführung auf eine konjunktive Form bewiesen werden, in der in jeder Klausel mit mindestens einer Aussagenvariablen auch deren Negat vorkommt. Beispiel Zu zeigen ist ((P Q) P ) Q. a) P Q P Q (P Q) P ((P Q) P ) Q f f w f w f w w f w w f f f w w w w w w b) Äquivalent sind die folgenden Formeln ((P Q) P ) Q (( P Q) P ) Q ((P Q) P ) Q ((P P ) ( Q P )) Q (w ( P Q)) Q ( P Q) Q P w w 17

18 c) Überführung in konjunktive Form ((P Q) P ) Q (( P Q) P ) Q ((P Q) P ) Q ((P P ) ( Q P )) Q ((P P Q) ( Q Q P )) Bei der Herleitung benutzen wir folgende Definitionen und Ergebnisse: Zwei Formeln F und G heißen äquivalent, wenn sie für alle passenden Belegungen den gleichen Wahrheitswert haben: G F. Für jede Formel F gibt es eine äquivalente Formel in KF oder DF. Es gelten folgende Äquivalenzen: Tabelle (F F ) F, (F F ) F Idempotenz (F G) (G F ), (F G) (G F ) Kommutativität ((F G) H) (F (G H)), ((F G) H) (F (G H)) Assoziativität (F (F G)) F, (F (F G)) F Absorption (F (G H)) ((F G) (F H)), (F (G H)) ((F G) (F H)) Distributivität F F Doppelnegation (F G) ( F G), (F G) ( F G) demorganscheregeln F G F G bedingteeliminierung F G F, F G G, falls F unerfüllbar F G G, F G F, falls F Tautologie Ist S eine Menge von Formeln oder Prämissen {F 1,..., F k } und F eine Formel, so ist F eine logische Konsequenz von S, in Zeichen S F, wenn jede Belegung von S, die ein Modell von S ist, auch ein Modell von F ist. Dies kann auch in der Form k F j F j=1 geschrieben werden. Eine Belegung mit Wahrheitswerten von S heißt konsistent, wenn alle Formeln unter dieser Belegung wahr sind. Es gelten die folgenden Regeln für logische Konsequenz: 18

19 Tabelle F F G F G F F G F F G G F (F G) (G H) F H Transitivität G (G F ) F Modus Ponens (Schlussregel) F (G F ) G Modus Tollens Eine Theorie definiert zunächst eine Menge von wahren logischen Aussagen und Fakten, die Axiome. Dabei spielen die Begriffe Korrektheit, Vollständigkeit und Entscheidbarkeit eine Rolle. Sie besteht aus einer Sprache, mit deren Hilfe gewisse Sätze ausgedrückt werden können. Axiome stellen dabei die Grundsätze der Theorie dar. Aus der Menge der Axiome können neue, kompliziertere Sätze als logische Konsequenz abgeleitet werden. Dies geschieht über die oben angegebenen Inferenzregeln, wie den Modus Ponens und den Modus Tollens oder auch die Transitivitätsregel. Beispiel (Transitivität) A B B 1 B 2 A A B 1 B 1 B 2 B 2 B B r =( a ist eine gerade Zahl und b ist eine gerade Zahl) (a + b ist eine gerade Zahl) (a = 2n und b = 2m, n, m ganze Zahlen) (a + b = 2k, k ganze Zahl) a und b sind gerade Zahlen Dann gibt es Zahlen n, m mit a = 2n und b = 2m Aus a = 2n und b = 2m folgt a + b = 2(n + m) = 2k Aus a + b = 2k folgt a + b ist eine gerade Zahl Mit der Transitivität gilt B Für eine Theorie sollte ein korrektes (semantisch widerspruchsfreies) und vollständiges Axiomensystem zur Verfügung stehen. Ein Axiomensystem AS ist korrekt, wenn jede Formel F, die aus einer Theorie T mittels der Ableitungsregeln abgeleitet wird (T AS F ), eine logische Konsequenz aus T ist (T F ). Ein Axiomensystem AS ist vollständig, wenn für jede Theorie T jede Formel, die aus der Theorie logisch folgt, auch ableitbar ist (das ist die Umkehrung). Ist ein derartiges Axiomensystem vorhanden, so heißt es Basis der Theorie. Ein Axiomensystem darf auch nicht inkonsistent sein, d.h. es darf nicht gleichzeitig F und F herleitbar sein. Ferner sollten die Axiome voneinander unabhängig sein, also nicht eines aus den anderen folgen. Eine Theorie heißt unentscheidbar, wenn es eine Formel F gibt, für die gilt, dass weder die Formel selbst noch ihre Negation aus der Theorie ableitbar ist. Der Begriff der Entscheidbarkeit kann auf Axiomensysteme als Basis einer Theorie übertragen werden. Ein Axiomensystem ist entscheidbar, wenn sich immer prüfen lässt, 19

20 ob eine Theorie in AS konsistent ist oder nicht, wenn sich also von jedem Satz herleiten lässt, ob er allgemeingültig ist oder nicht. Aussagenlogik ist entscheidbar und besitzt widerspruchsfreie, vollständige und unabhängige Axiomensysteme. Ein Axiomensystem AS ist halbentscheidbar, wenn es immer möglich ist, die Inkonsistenz zu prüfen. Aus den logischen Axiomen der Aussagenlogik (Hilbert) AS1: A A A, AS2: A (A B), AS3: (A B) (B A), AS4: (A B) ((C A) (C B)), der Definition A B A B, der Schlussregel (Modus Ponens) und der Ersetzungsregel Ergibt sich ein Ausdruck B aus einem abgeleiteten Ausdruck oder Axiom A, indem man in A eine Variable an jeder Stelle ihres Auftretens durch einen Ausdruck ersetzt, so kann man von A zu B übergehen können die Äquivalenzregeln aus Tabelle hergeleitet werden. Beispiel Wir leiten(f F ) F bzw. F F F mit Hilfe der oben angegebenen Mittel her. Dies ist äquivalent zu ((F F F ) (F F F )) mit A B := ( A B). Wir zeigen somit die Allgemeingültigkeit von(f F F ) und von (F F F ): (F F ) F AS1. F (F G) AS2, F (F F ) Ersetzungsregel (Variable G durch Formel F ). Bemerkung: Im vorigen Beispiel haben wir die Junktoren und mit Hilfe der Junktoren und definiert. Die Grundresolution ist eine eingeschränkte Form der Methode von Robinson, mit deren Hilfe eine vorgegebene endliche Menge von Klauseln auf ihre Unerfüllbarkeit hin getestet werden kann. Durch geeignete Operationen zum Vereinfachen von veroderten Formeln lassen sich die Darstellungen verkürzen: Kommt in einer Klausel eine Variable P und in einer anderen 20

21 die Negation P vor, so lassen sich diese Klauseln unter Weglassung dieser Variablen zu einer Klausel zusammenfassen: P A 1 A 2... A n P B 1 B 2... B m A 1 A 2... A n B 1 B 2... B m Resolution Dann lässt sich das Verfahren folgendermaßen beschreiben: Es sei die Aussage A zu beweisen. Setze das negierte Theorem A zu den Formeln der Theorie, wandele sie in Klauselform um (KF) und versuche, durch Resolution die leere Klausel herzuleiten. In diesem Fall ist das Theorem A zur Theorie gehörig. Beispiel T = {A B, A B, A}. Leite B her. Wir formen in KF um: oder in der Schreibweise als Klauselmenge und untersuchen die Klauselmenge T = {A B, A B, A}, T = {(A, B), ( A, B), A}, {(A, B), ( A, B), A, B} auf Unerfüllbarkeit: B ist ein Resolvent von (A, B) und A. Der Resolvent von B und B ist aber die leere Menge, und damit enthält die Klauselmenge die leere Menge und ist unerfüllbar. Somit ist B bewiesen Prädikatenlogik Die gebräuchlichste Form der mathematischen Logik ist die Prädikatenlogik als Erweiterung der Aussagenlogik. Sie dient zur Formulierung von Axiomen, zum Beweis von Eigenschaften von Sätzen und Programmen. Sie bedient sich einer Menge von Objekten, Relationen und Funktionen. Wie in der Aussagenlogik werden Formeln (Symbolisierung einer sprachlichen Aussage, syntaktisches Gebilde aus Symbolen) mit Hilfe von logischen Verbindungen aus Atomen (elementaren logischen Aussagen) und anderen Formeln gebildet. Sie sind nach präzisen Regeln einer Grammatik aufgebaut. Als Atome (logisch unzerlegbarer Ausdruck, Zeichenfolgen aus Prädikaten und Operatoren, gebildet aus dem Alphabet als Menge der zugelassenen Symbole, Konstanten a, b, c, Variablen x, y, z, Prädikate P, Q, R, Funktions und Hilfszeichen f, g, h,,...) sind jedoch nicht nur Literale (Aussagenvariablen und deren Negation) sondern auch Prädikate (Eigenschaften von Objekten, P (a 1,..., a n )) mit Argumenttermen erlaubt. Terme sind Konstanten, 21

22 Variablen oder Funktionssymbole. Prädikatenlogik erlaubt damit viel reichere Aussagen als die Aussagenlogik. Im Allgemeinen erklären Prädikate Teilmengen von bekannten Obermengen, wie zum Beispiel die Prädikate Primzahl oder gerade Zahl in der Menge der natürlichen Zahlen. Die Mengenoperationen,,, Komplement korrespondieren mit den Verknüpfungen des Aussagenkalküls,,,. Die Aussage Wenn x die Eigenschaft P besitzt, so besitzt y die Eigenschaft Q. wird formalisiert zu P x Qy. Wichtig sind auch die Quantoren: der Existenzquantor (, ), der Allquantor (, ). Der Existenzquantor erlaubt, die Existenz eines Objektes mit gewissen Eigenschaften anzunehmen, ohne es selbst zu definieren. Der Allquantor erstreckt eine Eigenschaft auf alle Objekte. Variablen werden im gemeinsamen Auftreten von Quantoren gebunden, können aber auch frei in Formeln auftreten. Die Semantik der Prädikatenlogik gibt den nach den syntaktischen Regeln geschaffenen Formeln einen Wahrheitsgehalt in einer Domäne als geschaffener Welt. Durch Interpretation wird eine Beziehung zwischen dem Alphabet der Sprache und der Domäne hergestellt. Konstanten entsprechen Objekten, Prädikaten Relationen und Funktionssymbolen Funktionen. Variablen müssen Werte zugeordnet werden. Beispiel Gegeben sei die Formel F : xp (f(x, a), x). Die betrachtete Domäne sei die der natürlichen Zahlen N := {1, 2, 3,...}. Der Konstanten a ordnen wir die Zahl 1 zu. Unter der Funktion f(x, a) verstehen wir die Multiplikation x a. Das zweistellige Prädikat P sei als die Eigenschaft Gleichheit definiert. Damit lautet die Interpretation der Formel: Für alle natürlichen Zahlen x N gilt x 1 = x. Ist eine Formel in einer Interpretation wahr, so ist diese Interpretation ein Modell der Formel. Eine Formel ist erfüllbar, wenn es für sie ein Modell gibt, allgemeingültig, wenn alle Interpretationen wahr sind. Auch hier wenden wir die Definition der logischen Konsequenz einer Formel F aus einer Formelmenge S an: Wenn jede Interpretation und Belegung, die ein Modell von S ist, auch ein solches von F ist, so gilt S F. Zu unseren bekannten Schlussregeln der Aussagenlogik gesellen sich weitere Schlussregeln: Tabelle xf xf für eine nichtleere Domäne xf xg x(f G) x(f G) xf xg 22

23 Wir erhalten auch weitere logische Äquivalenzen: Tabelle xf x F xf x F x yf y xf x yf y xf x(f G) xf xg x(f G) xf xg Auch in der Prädikatenlogik können der Zeichenvorrat und syntaktische Regeln zur Ableitung von prädikatenlogischen Ausdrücken definiert werden. Auf Hilbert geht ein Axiomensystem mit sechs Axiomen zurück. Sodann sind die Ableitungsregeln zu definieren. Leider stellt es sich heraus, dass das Erfüllbarkeits und das Allgemeingültigkeitsproblem für prädikatenlogische Formeln unentscheidbar ist. Die Wahrheitstafelmethode kann nicht übertragen werden. Immerhin können die Formeln in eine Normalform überführt werden, die sogenannte Skolemform, und ein Algorithmus angegeben werden, der bei unerfüllbaren Formeln nach endlicher Zeit mit der Ausgabe unerfüllbar stoppt. Wir wollen nun die Peano Axiome zur Begründung der natürlichen Zahlen und ihrer Arithmetik kennenlernen. Axiome (Peano Axiome) 1. 1 ist eine natürliche Zahl: P 1 Hier benötigen wir das einstellige Prädikat P x: x ist eine natürliche Zahl. 2. Zu jeder natürlichen Zahl gibt es eine natürliche Zahl als deren Nachfolger: x (P x y (P y Qxy)). Dazu definieren wir das zweistellige Prädikat Qxy: Die natürliche Zahl x hat die natürliche Zahl y zum Nachfolger. 3. Die Zahl 1 ist Nachfolger keiner natürlichen Zahl: x (P x Qx1). 4. Verschiedene natürliche Zahlen haben auch verschiedene Nachfolger: x 1 x 2 y 1 y 2 (P x 1 P x 2 Qx 1 y 1 Qx 2 y 2 (x 1 = x 2 ) (y 1 = y 2 )). 5. Jede Teilmenge M aus den natürlichen Zahlen, die die 1 und mit jedem Element auch deren Nachfolger enthält, ist mit der Menge N der natürlichen Zahlen identisch (vollständige Induktion): M (M1 x y (P x P y Mx Qxy My) (M = N)). 23

24 Dazu führt man die Prädikatenvariable M ein sowie das Prädikat Mx: x ist Element von M. Ferner findet die Konstante N Verwendung. Hier ist zu bemerken, dass über die Prädikatenvariable quantisiert wurde. Damit sprechen wir von der Prädikatenlogik höherer Stufe. In der ersten Stufe sind nur Quantifizierungen über Objektvariablen erlaubt. Die Prädikatenlogik ist auch Basis einer Programmiersprache, nämlich Prolog. Dabei spielen die Hornklauseln eine wesentliche Rolle. Sie werden in der Form notiert. Dies steht für P : Q 1, Q 2,..., Q n (Prozedurklausel) Q 1 Q 2... Q n P bzw. äquivalent Q 1 Q 2... Q n P. Dabei steht das Komma für die Konjunktion. Hornklauseln enthalten nur eine Atomformel als Konklusion im Kopf auf der linken Seite und mehrere durch verknüpfte Atomformeln als Prämissen im Rumpf auf der rechten Seite. Sie stellen in Prolog die Regeln dar und können als Prozeduren abgearbeitet werden. Hornklauseln ohne Rumpf (Prämissen) stellen Fakten dar. Diese beiden Typen von Klauseln machen ein Prolog Programm aus und heißen daher Programmklauseln. Hornklauseln ohne Kopf (Konklusion) sind die Anfragen, die zu beweisenden Aussagen; leere Hornklauseln sind immer falsch und entsprechen in Prolog dem Fail. Es gelingt, Formeln der Prädikatenlogik dahingehend zu vereinfachen, dass die Quantoren verschwinden und nur noch Klauseln in konjunktiver Form auftreten. Wir führen ein Beispiel für ein Prolog Programm auf: Beispiel Fakten: mag(heinrich, tiere). mag(heinrich, sport). mag(heinrich, biologie). mag(fritz, sport). mag(fritz, biologie). Regel: interessiert(x, biologie):- mag (X, biologie), mag(x, tiere). Anfrage:?- interessiert(x, biologie). Antwort: X=heinrich. Das Resolutionsverfahren erlaubt ähnlich wie in der Aussagenlogik das mechanische Beweisen von Aussagen der Prädikatenlogik, die in Klauselform vorliegen. Ein Programm besteht aus einer endlichen Menge von Klauseln. Das angewandte Schema gliedert sich in die folgenden Schritte: 24

25 Ordne Klauseln so an, dass die nicht negierten Literale links, die negierten rechts stehen. Taucht in zwei Klauseln dasselbe Literal auf entgegengesetzten Seiten auf, kann daraus eine neue Klausel gebildet werden, indem man die beiden Klauseln unter Fortlassung der entgegengesetzten Literale zu einer neuen addiert. Treffen zwei je einelementige Klauseln so aufeinander, so entsteht die leere Klausel, die Widerspruchsklausel, und das Verfahren terminiert. Somit lässt sich zwar keine Klausel ableiten, jedoch ein Widerspruchsbeweis führen, indem man das Gegenteil der Annahme als Klausel hinzufügt. SLD Resolution ist nur für Hornklauseln definiert und spielt eine entscheidende Rolle bei der Logikprogrammierung und insbesondere bei Prolog Programmen. Sei F = {K 1, K 2,..., K n, N 1,..., N m }, wobei K i die Programmklauseln und N i die negativen Klauseln sind. Eine SLD Resolution ist eine Herleitung der leeren Klausel: Ausgehend von j {1, 2,..., m} sowie der Zielklausel N j wird dann mittels einer Folge {i 1,..., i l } mit K i1 bis K il zunächst N j mit K i1 resolviert. Dabei entsteht ein Zwischenresultat, das nur negative Klauseln enthält, und dann in jedem Schritt ν mit K iv, v = 1,..., l, weiter resolviert wird, wiederum nur mit negativen Klauseln als Zwischenergebnis, bis der letzte Schritt dann auf die leere Klausel, die Halteklausel führt. Diese Form der Resolution ist vollständig für die Klasse der Hornformeln, d.h. für jede unerfüllbare Klauselmenge F gibt es eine Klausel K F, so dass die leere Klausel durch diese lineare SLD Resolution aus F basierend auf K hergeleitet werden kann Literatur Gert Böhme: Einstieg in die Mathematische Logik. Hanser, München V. Claus und A. Schwill: Schülerduden Informatik. Dudenverlag, Mannheim, Herbert Klaeren: Vom Problem zum Programm. Teubner, Stuttgart Uwe Schöning: Logik für Informatiker. 4. Auflage. Spektrum Verlag, Mannheim Ramin Yasdi: Logik und Programmieren in Logik. Prentice Hall, München

26 2 Schaltfunktionen 2.1 Zahldarstellung Bei den in der Theoretischen Informatik behandelten Maschinenmodellen, wie z.b. endlicher Automat oder Turingmaschine, wird stets von zu verarbeitenden Worten über einem Alphabet E ausgegangen, die eine variable Länge haben, die auch nicht durch eine Maximallänge beschränkt sind. Bei realen Rechnern ist dies nicht sinnvoll, da hier mit einer festen Wortlänge gearbeitet wird. Wir haben somit im Folgenden stets die generelle Voraussetzung, dass zum Alphabet E noch eine feste Konstante n hinzukommt, die die Wortlänge angibt. Wichtige Zahlensysteme und Alphabete sind die b adischen Zahlensysteme, die für eine natürliche Zahl b auf dem Alphabet E b = {0, 1,..., b 1} basieren. Beispiel Wichtige b adische Zahlensysteme sind die folgenden: a) Dezimalsystem mit E 10 = {0, 1, 2,..., 9}, in dem wir im Allgemeinen rechnen. Eine feste Wortlänge erreichen wir hierbei, indem wir ggf. durch führende Nullen auffüllen. So ist z.b. 123 bei einer Wortlänge n = 4 als 0123 darzustellen. b) Dual oder Binärsystem mit E 2 = {0, 1}, welches im Computer zum Einsatz kommt. Oktalsystem mit E 8 = {0, 1,..., 7}. Hexadezimalsystem mit E 16 = {0, 1,..., 9, A, B, C, D, E, F }. Hierbei ist E 16 eigentlich das Alphabet {0, 1,..., 9, 10,..., 15}, anstelle von Ziffern 10, 11,... werden aber generell bei Alphabeten mit b > 9 neue, einstellige Symbole eingeführt. Gerade diese Zweierpotenzbasen haben in der Informatik eine besondere Bedeutung. Satz (b adische Darstellung von Fixpunktzahlen) Sei b N mit b > 1. Dann ist jede Fixpunktzahl z (mit n Vorkomma und k Nachkommastellen) mit 0 z b k b n+k 1 (und n N, k N 0 ) eindeutig als Wort der Länge n + k über E b darstellbar durch z = n 1 i= k z i b i, z i {0, 1,... b 1}. 26

27 Abkürzend wird z geschrieben als z = (z n 1 z n 2... z 0.z 1 z 2... z k ) b. Eine Einheit der letzten Stelle, also des Faktors von b k, wird als 1 ulp (unit last place) bezeichnet, und gibt eine Genauigkeitsschranke des Fixpunktsystems an. Für k = 0 gilt obige Darstellung insbesondere für die natürlichen Zahlen {0, 1,..., b n 1}. Aufgrund von physikalischen Gegebenheiten (Spannung = 0V, oder Spannung > 0V bzw. Schwellwert) ist im Rechner das System für b = 2 sinnvoll. Häufig werden jedoch auch hier zur Darstellung Systeme mit b = 8 oder b = 16 verwendet, da hiermit kürzere und lesbarere Darstellungen erzielt werden. Auch arbeiten moderne Prozessoren in der Regel nicht auf Bitebene, sondern auf Wortebene, wobei hier Wortlängen von b = 16, 32 oder 64 anzutreffen sind. Für natürliche Zahlen ist auch eine we9itere Zahldarstellung möglich, die polyadische Darstellung. Satz (Polyadische Darstellung natürlicher Zahlen) Es sei (b n ) n N eine Folge natürlicher Zahlen mit für alle b n > 1 n N. Dann gibt es für jede natürliche Zahl z genau eine Darstellung der Form z = (z N... z 0 ) P D = N i=0 z i 1 i j=0 b j = z 0 + z 1 b 0 + z 2 b 1 b z N b N 1... b 0 mit 0 z i < b i für i = 0,..., N Komplementdarstellungen Eine weitere wichtige Zahldarstellung beim Rechnereinsatz ist die Zweierkomplementdarstellung von Fixpunktzahlen, über die eine Darstellung negativer Zahlen möglich ist. Das Zweierkomplement und andere Komplementdarstellungen sind wie folgt definiert: Definition (Komplementdarstellungen für n+k Fixpunktzahlen) Sei x = (x n 1... x 0.x 1... x k ) 2 einen + k Dualzahl in Fixpunktdarstellung. a) Das Einerkomplement K 1 (x) ist definiert als wobei x i = 0 x i = 1, und x i = x i. K 1 (x) = (x n 1 x n 2... x 0.x 1... x k ) 2 b) Das Zweierkomplement K 2 (x) ist definiert als. K 2 (x) = (x n 1 x n 2... x 0.x 1... x k ) ulp = K 1 (x) + 1 ulp (modulo 2 n ) 27

Informatik A. Prof. Dr. Norbert Fuhr auf Basis des Skripts von Prof. Dr. Wolfram Luther und der Folien von Peter Fankhauser

Informatik A. Prof. Dr. Norbert Fuhr auf Basis des Skripts von Prof. Dr. Wolfram Luther und der Folien von Peter Fankhauser Informatik A Prof. Dr. Norbert Fuhr fuhr@uni-duisburg.de auf Basis des Skripts von Prof. Dr. Wolfram Luther und der Folien von Peter Fankhauser 1 Teil I Logik 2 Geschichte R. Descartes (17. Jhdt): klassische

Mehr

Prolog basiert auf Prädikatenlogik

Prolog basiert auf Prädikatenlogik Software-Technologie Software-Systeme sind sehr komplex. Im Idealfall erfolgt die Programmierung problemorientiert, während die notwendige Übertragung in ausführbare Programme automatisch erfolgt. Prolog-Philosophie:

Mehr

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur Signatur Formeln Am Beispiel der Aussagenlogik erklären wir schrittweise wichtige Elemente eines logischen Systems. Zunächst benötigt ein logisches System ein Vokabular, d.h. eine Menge von Namen, die

Mehr

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Hauptseminar: Nichtrelationale Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Mai 2006 Was ist eine Datenbank? Erweiterung relationaler um eine Deduktionskomponente Diese

Mehr

Binäre Suchbäume (binary search trees, kurz: bst)

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.

Mehr

Logik für Informatiker

Logik für Informatiker Logik für Informatiker 2. Aussagenlogik Teil 3 30.04.2012 Viorica Sofronie-Stokkermans Universität Koblenz-Landau e-mail: sofronie@uni-koblenz.de 1 Letztes Mal Aussagenlogik Syntax: welche Formeln? Semantik:

Mehr

Grundlagen der Informationverarbeitung

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,

Mehr

9. Übung Formale Grundlagen der Informatik

9. Übung Formale Grundlagen der Informatik Institut für Informatik Sommersemester 2001 Universität Zürich 9. Übung Formale Grundlagen der Informatik Norbert E. Fuchs (fuchs@ifi.unizh.ch) Reinhard Riedl (riedl@ifi.unizh.ch) Nadine Korolnik (korolnik@ifi.unizh.ch)

Mehr

Logische Folgerung. Definition 2.11

Logische Folgerung. Definition 2.11 Logische Folgerung Definition 2.11 Sei 2A eine aussagenlogische Formel und F eine endliche Menge aussagenlogischer Formeln aus A. heißt logische Folgerung von F genau dann, wenn I ( ) =1für jedes Modell

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie und, oder, nicht, wenn... dann zwischen atomaren und komplexen Sätzen. I. Aussagenlogik 2.1 Syntax Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen. Sätze selbst sind entweder wahr oder falsch. Ansonsten

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 27. Aussagenlogik: Logisches Schliessen und Resolution Malte Helmert Universität Basel 28. April 2014 Aussagenlogik: Überblick Kapitelüberblick Aussagenlogik: 26.

Mehr

Program = Logic + Control

Program = Logic + Control Program = Logic + Control Prozedurale/imperative Sprachen: Abläufe formulieren Computer führt aus von-neumann-maschine Idee von deklarativen/logischen/funktionalen Programmiersprachen: Zusammenhänge formulieren

Mehr

Fragen für die Klausuren

Fragen für die Klausuren Fragen für die Klausuren Vom Quellcode zum ausführbaren Programm Was ist ein Quellcode? Ist der Quellcode von einem Programm auf unterschiedlichen Rechner gleich? Nennen Sie drei Programmiersprachen. Was

Mehr

Semantik von Formeln und Sequenzen

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

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

2. Vorlesung. Slide 40

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

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 3: Alphabete (und Relationen, Funktionen, Aussagenlogik) Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Oktober 2008 1/18 Überblick Alphabete ASCII Unicode

Mehr

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

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

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Eine Logikschaltung zur Addition zweier Zahlen

Eine Logikschaltung zur Addition zweier Zahlen Eine Logikschaltung zur Addition zweier Zahlen Grundlegender Ansatz für die Umsetzung arithmetischer Operationen als elektronische Schaltung ist die Darstellung von Zahlen im Binärsystem. Eine Logikschaltung

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

Satz. Für jede Herbrand-Struktur A für F und alle t D(F ) gilt offensichtlich

Satz. Für jede Herbrand-Struktur A für F und alle t D(F ) gilt offensichtlich Herbrand-Strukturen und Herbrand-Modelle Sei F eine Aussage in Skolemform. Dann heißt jede zu F passende Struktur A =(U A, I A )eineherbrand-struktur für F, falls folgendes gilt: 1 U A = D(F ), 2 für jedes

Mehr

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 6 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Satz 1 Seien F, G Boolesche Ausdrücke

Mehr

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Programmieren Formulierung eines Algorithmus in einer Programmiersprache Zum Titel der Vorlesung: Programmieren Formulierung eines in einer Programmiersprache Beschreibung einer Vorgehensweise, wie man zu jedem aus einer Klasse gleichartiger Probleme eine Lösung findet Beispiel:

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Mag. Christian Gürtler Programmierung Grundlagen der Informatik 2011 Inhaltsverzeichnis I. Allgemeines 3 1. Zahlensysteme 4 1.1. ganze Zahlen...................................... 4 1.1.1. Umrechnungen.................................

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen

Mehr

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik Grundlagen der Informatik II Teil I: Formale Modelle der Informatik 1 Einführung GdInfoII 1-2 Ziele/Fragestellungen der Theoretischen Informatik 1. Einführung abstrakter Modelle für informationsverarbeitende

Mehr

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung. Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Erfüllbarkeit und Allgemeingültigkeit

Erfüllbarkeit und Allgemeingültigkeit Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 3.3 Aussagenlogik Erfüllbarkeit 44 Erfüllbarkeit und Allgemeingültigkeit Def.: eine Formel ϕ heißt erfüllbar, wennesein I gibt, so dass I = ϕ

Mehr

Daten verarbeiten. Binärzahlen

Daten verarbeiten. Binärzahlen Daten verarbeiten Binärzahlen In Digitalrechnern werden (fast) ausschließlich nur Binärzahlen eingesetzt. Das Binärzahlensystem ist das Stellenwertsystem mit der geringsten Anzahl von Ziffern. Es kennt

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes) Prädikatenlogik Man kann den natürlichsprachlichen Satz Die Sonne scheint. in der Prädikatenlogik beispielsweise als logisches Atom scheint(sonne) darstellen. In der Sprache der Prädikatenlogik werden

Mehr

Daten, Informationen, Kodierung. Binärkodierung

Daten, Informationen, Kodierung. Binärkodierung Binärkodierung Besondere Bedeutung der Binärkodierung in der Informatik Abbildung auf Alphabet mit zwei Zeichen, in der Regel B = {0, 1} Entspricht den zwei möglichen Schaltzuständen in der Elektronik:

Mehr

WS 2008/09. Diskrete Strukturen

WS 2008/09. Diskrete Strukturen WS 2008/09 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0809

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter H. Schmitt David Farago, Christoph Scheben, Mattias Ulbrich Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Programmiersprachen und Programmierkonzepte

Programmiersprachen und Programmierkonzepte Programmiersprachen und Programmierkonzepte Inhalt Programmiersprachen- Entwicklung Programmiersprachen und Programmierparadigmen Die Geschichte der Programmiersprachen Anfänge vor 200 Jahren Programmierbare

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Einführung in die Fuzzy Logic

Einführung in die Fuzzy Logic Einführung in die Fuzzy Logic Entwickelt von L. Zadeh in den 60er Jahren Benutzt unscharfe (fuzzy) Begriffe und linguistische Variablen Im Gegensatz zur Booleschen Logik {0,} wird das ganze Intervall [0,]

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

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.

Mehr

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten! Mathefritz 5 Terme und Gleichungen Meine Mathe-Seite im Internet kostenlose Matheaufgaben, Skripte, Mathebücher Lernspiele, Lerntipps, Quiz und noch viel mehr http:// www.mathefritz.de Seite 1 Copyright

Mehr

Zahlensysteme Seite -1- Zahlensysteme

Zahlensysteme Seite -1- Zahlensysteme Zahlensysteme Seite -- Zahlensysteme Inhaltsverzeichnis Dezimalsystem... Binärsystem... Umrechnen Bin Dez...2 Umrechnung Dez Bin...2 Rechnen im Binärsystem Addition...3 Die negativen ganzen Zahlen im Binärsystem...4

Mehr

5.1 Drei wichtige Beweistechniken... 55 5.2 Erklärungen zu den Beweistechniken... 56

5.1 Drei wichtige Beweistechniken... 55 5.2 Erklärungen zu den Beweistechniken... 56 5 Beweistechniken Übersicht 5.1 Drei wichtige Beweistechniken................................. 55 5. Erklärungen zu den Beweistechniken............................ 56 Dieses Kapitel ist den drei wichtigsten

Mehr

Logik. A.3 Logik und Mengenlehre A.32 A.32. Logik und Mengenlehre. Logik. 2001 Prof. Dr. Rainer Manthey Informatik I 21

Logik. A.3 Logik und Mengenlehre A.32 A.32. Logik und Mengenlehre. Logik. 2001 Prof. Dr. Rainer Manthey Informatik I 21 Logik und Mengenlehre.3 Logik und Mengenlehre 2001 Prof. Dr. Rainer Manthey Informatik I 21 Logik Logik 2001 Prof. Dr. Rainer Manthey Informatik I 22 Logik: egriff, edeutung und Entwicklung Logik ist die

Mehr

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client

Mehr

Einführung in die Algebra

Einführung in die Algebra Prof. Dr. H. Brenner Osnabrück SS 2009 Einführung in die Algebra Vorlesung 13 Einheiten Definition 13.1. Ein Element u in einem Ring R heißt Einheit, wenn es ein Element v R gibt mit uv = vu = 1. DasElementv

Mehr

Grundlagen der Informatik I Informationsdarstellung

Grundlagen der Informatik I Informationsdarstellung Grundlagen der Informatik I Informationsdarstellung Einführung in die Informatik, Gumm, H.-P./Sommer, M. Themen der heutigen Veranstaltung. ASCIi Code 2. Zeichenketten 3. Logische Operationen 4. Zahlendarstellung

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 7: Einführung Aussagenlogik schulz@eprover.org Logisches Schließen 2 gold +1000, 1 per step, Beispiel: Jage den Wumpus Performance measure death 1000 10

Mehr

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen Gleichungen Lösen Was bedeutet es, eine Gleichung zu lösen? Was ist überhaupt eine Gleichung? Eine Gleichung ist, grundsätzlich eine Aussage über zwei mathematische Terme, dass sie gleich sind. Ein Term

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

2. Negative Dualzahlen darstellen

2. Negative Dualzahlen darstellen 2.1 Subtraktion von Dualzahlen 2.1.1 Direkte Subtraktion (Tafelrechnung) siehe ARCOR T0IF Nachteil dieser Methode: Diese Form der Subtraktion kann nur sehr schwer von einer Elektronik (CPU) durchgeführt

Mehr

7 Rechnen mit Polynomen

7 Rechnen mit Polynomen 7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird. Zahlensysteme Definition: Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird. In der Informatik spricht man auch von Stellenwertsystem,

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Übungen zu Informatik 1

Übungen zu Informatik 1 Communication Systems Group (CSG) Prof. Dr. Burkhard Stiller, Universität Zürich, Binzmühlestrasse 14, CH-8050 Zürich Telefon: +41 44 635 6710, Fax: +41 44 635 6809, stiller@ifi.uzh.ch Fabio Hecht, Telefon:

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

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.

Mehr

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04 4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04 JOACHIM VON ZUR GATHEN, OLAF MÜLLER, MICHAEL NÜSKEN Abgabe bis Freitag, 14. November 2003, 11 11 in den jeweils richtigen grünen oder roten Kasten

Mehr

Grundlagen der Informatik

Grundlagen der Informatik : : : : : : : : : : : : : : : : : : : : : : Grundlagen der Informatik Unter Verwendung von Folien von Prof. Helmut Balzert MICHAEL M. RESCH (HLRS) Rechnersysteme II : : : : : : : : : : : : : : : : : :

Mehr

Theorie der Informatik

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

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 11: Abstrakte Reduktionssysteme schulz@eprover.org Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung Mathematik UND/ODER Verknüpfung Ungleichungen Betrag Intervall Umgebung Stefan Gärtner 004 Gr Mathematik UND/ODER Seite UND Verknüpfung Kommentar Aussage Symbolform Die Aussagen Hans kann schwimmen p und

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Informatik und Informationstechnik (IT)

Informatik und Informationstechnik (IT) Informatik und Informationstechnik (IT) Abgrenzung Zusammenspiel Übersicht Informatik als akademische Disziplin Informations- und Softwaretechnik Das Berufsbild des Informatikers in der Bibliothekswelt

Mehr

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Also kann nur A ist roter Südler und B ist grüner Nordler gelten. Aufgabe 1.1: (4 Punkte) Der Planet Og wird von zwei verschiedenen Rassen bewohnt - dem grünen und dem roten Volk. Desweiteren sind die Leute, die auf der nördlichen Halbkugel geboren wurden von denen auf

Mehr

Wintersemester 2010/2011 Rüdiger Westermann Institut für Informatik Technische Universität München

Wintersemester 2010/2011 Rüdiger Westermann Institut für Informatik Technische Universität München Informatik 1 Wintersemester 2010/2011 Rüdiger Westermann Institut für Informatik Technische Universität München 1 0 Allgemeines Zielgruppen Siehe Modulbeschreibung Studierende anderer (nicht Informatik)

Mehr

Binärdarstellung von Fliesskommazahlen

Binärdarstellung von Fliesskommazahlen Binärdarstellung von Fliesskommazahlen 1. IEEE 754 Gleitkommazahl im Single-Format So sind in Gleitkommazahlen im IEEE 754-Standard aufgebaut: 31 30 24 23 0 S E E E E E E E E M M M M M M M M M M M M M

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen? BITte ein BIT Vom Bit zum Binärsystem A Bit Of Magic 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen? 3. Gegeben ist der Bitstrom: 10010110 Was repräsentiert

Mehr

2 Darstellung von Zahlen und Zeichen

2 Darstellung von Zahlen und Zeichen 2.1 Analoge und digitale Darstellung von Werten 79 2 Darstellung von Zahlen und Zeichen Computer- bzw. Prozessorsysteme führen Transformationen durch, die Eingaben X auf Ausgaben Y abbilden, d.h. Y = f

Mehr

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN Wir wollen nun die Rechengesetze der natürlichen Zahlen auf die Zahlenmenge der ganzen Zahlen erweitern und zwar so, dass sie zu keinem Widerspruch mit bisher geltenden

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Probleme beim Arbeiten mit Variablen, Termen und Gleichungen

Probleme beim Arbeiten mit Variablen, Termen und Gleichungen Probleme beim Arbeiten mit Variablen, Termen und Gleichungen Tage des Unterrichts in Mathematik, Naturwissenschaften und Technik Rostock 2010 Prof. Dr. Hans-Dieter Sill, Universität Rostock, http://www.math.uni-rostock.de/~sill/

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität Carolo Wilhelmina zu Brauschweig Institut für rechnergestützte Modellierung im Bauingenierwesen Prof. Dr.-Ing. habil. Manfred Krafczyk Pockelsstraße 3, 38106 Braunschweig http://www.irmb.tu-bs.de

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person dranzuhängen, Sie sind persönlich verantwortlich für Ihren Lernerfolg. 1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich

Mehr

VBA-Programmierung: Zusammenfassung

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

Mehr