ebook img

Probleme und Lösungen mit Turbo-Prolog: Logikaufgaben Sortierprogramme Auswerfen von Datenbanken Variationen von Bäumen PDF

202 Pages·1988·3.547 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Probleme und Lösungen mit Turbo-Prolog: Logikaufgaben Sortierprogramme Auswerfen von Datenbanken Variationen von Bäumen

D. Herrmann Probleme und Lösungen mi t Turbo-Prolog Programmieren von Mikrocomputern Die Bände dieser Reihe geben den Benutzern von Heimcomputern, HObbycomputern bzw. Personalcomputern über die Betriebsanleitung hinaus zusätzliche Anwendungshilfen. Der Leser findet wertvolle Informationen und Hinweise mit Beispielen zur optimalen Ausnutzung seines Gerätes, besonders auch im Hinblick auf die Entwicklung eigener Programme. Bisher erschienene Bände Band 1 Einftihrung in BASIC Band 16 Einftihrung in die Anwendung des von W. Schneider Betriebssystems MS-DOS von W. Schneider Band 3 BASIC für Fortgeschrittene von W. Schneider Band 17 Einführung in die Anwendung des UCSD p-Systems Band 4 Einführung in Pascal von K. Buckner/M. J. Cookson/ von W. Schneider A. I. Hinxman/ A. Tate Band 6 BASIC-Programmierbuch zu den Band 18 Mikrocomputer-COBOL grundlegenden Ablaufstrukturen von W. Kähler der Datenverarbeitung von E. Kaier Band 19 Fortgeschrittene Programmier- techniken in Turbo Pascal Band 7 Lehr-und Übungsbuch für von E. Hering und K. Scheurer Commodore-Volkscomputer von G. Oetzmann Band 20 Einführung in die Anwendung des Betriebssystems Apple DOS Band 9 Einführung in die Anwendung des (Apple II) Betriebssystems CP/M von H. R. Behrendt und von W. Schneider H. Junghans Band 10 Datenstrukturen in Pascal und Band 22 Einführung in Turbo Pascal unter BASIC CP/M 80 von D. Herrmann von G. Harbeck Band 11 Programmierprinzipien in BASIC Band 23 Pascal mit der Turtle und Pascal von K. und K. H. Beelich von D. Herrmann Band 24 Programmieren mit UNIX Band 13 Strukturiertes Programmieren in von G. Martin und M. Trostmann BASIC von W. Schneider Band 25 Murmeltierwelt und Pascal von H. Pinke Band 14 Logo-Programmierkurs für Commodore 64 Logo und Band 27 Sprachverarbeitung mit LlSP Terrapin Logo (Apple 11) und Prolog auf dem PC von B. Schuppar von J. Handke Band 15 Entwerfen von Programmen Band 28 Probleme und Lösungen mit (Commodore 64) Turbo Prolog von G. Oetzmann von D. Herrmann Programmieren von Mikrocomputern Band 28 Dietmar Herrmann Probleme und Lösungen mit Thrbo-Prolog Logikaufgaben Sortierprogramme Auswerfen von Datenbanken Variationen von Bäumen Mit 20 Abbildungen und 60 Programmen Friedr. Vieweg & Sohn Braunschweig / Wiesbaden ISBN 978-3-528-04564-7 ISBN 978-3-322-91755-3 (eBook) DOI 10.1007/978-3-322-91755-3 Das in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgend einer Art verbunden. Der Autor und der Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. Der Verlag Vieweg ist ein Unternehmen der Verlagsgruppe Bertelsmann. Alle Rechte vorbehalten Additional material to this book can be down loaded from http://extras.springer.com. © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig 1988 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere fUr Vervielfaltigungen, Übersetzungen, MikroverfIlmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Umschlaggestaltung: Peter Lenz, Wiesbaden Druck und buchbinderische Verarbeitung: W. LangeJüddecke, Braunschweig v Inhaltsverzeichnis Einleitung .... ............... ......... ................................................... 1 Verzeichnis der Programme •.....•... ............................................ 4 1 Programmieren in Turbo-Prolog •••.•......••..............••..•.. ... ... .... 8 1.1 Fakten, Regeln, Anfragen ...................................................... 8 1.2 Programmaufbau .................................................................... II 1.3 Arithmetik und Standardfunktionen .............. ........... ............ 16 1.4 Listen ...................................................................................... 19 1.5 Ein-/ Ausgabe ......................................................................... 22 1.6 Graphik ................................................................................... 27 I. 7 Unifikation .................................. ..................... ...... ................ 31 1.8 Logische Grundlagen ............................................................. 34 1.9 Rekursion ................................................................................ 40 1.10 Backtracking ........................................................................... 45 1.11 Dateiverwaltung ..................................................................... 51 1.12 DOS- und Systemfunktionen ................................................ 54 2 Programm beispiele •••••••••.•••••.••...•••••.••••....••••.••.....•••.••..•.••.•.. 58 2.1 Elementare Probleme ............................................................. 58 KALENDER.PRO ..............•..............•••••......•••.........••..•.........•...... 58 OSTERN .PRO ...................•.......•.................................................. 60 TILGUNG.PRO •...••.......•••.......................................•.................... 62 AEGYPT.PRO ..•............................••..••.•..•.....•.•.............••........••.. 63 WECHSEL.PRO ...........•..........................................•.................... 64 PRIMZ.PRO ...•.............•..........................................••.................. 65 GGT.PRO •...........•.....•.••.........................................••.......•.......... 66 WUERFEL.PRO ......•............................•..........................•........•... 67 VI ~tsverzeichnds 2.2 Rekursion ................................................................................ 68 ARITH.PRO •••••••••••••••••••••••••••••.••••••••••••••••••••••••••••••••••••••••••••.•••••• 68 FIBO.PRO ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••.•••• 69 PARTIT.PRO ••••••••••••••••••••••••••••••••••••••••••••••••••••••.•••••••••••••••••••••••• 70 REVERSE. PRO ••••••••••••••.••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 71 SIMPSON.PRO ••••••••••••••••••••••••••••••••••••••••••••••..••••••••••.••••••••.•••••..•. 72 2.3 Turtle-Graphik ....................................................................... 74 BAUM1.PRO ••••••••••••••••.••••••••••••••••••••..•••••••...•••••••.••.••••••••••.....•••. 74 BAUM2.PRO ••.••••••••••.•••.••••••••.••••..•••••••••••••••••••••••••••••••••••••••••••••• 76 BAUM3.PRO .••••.••••••••••.•••••••.••••.••..•••••••••••..••.•••••••••.•••••••••••••..•••. 78 HILBERT.PRO .•..•••••••...•.•.•.•••..••••.••••••••••••••••••.•••••••••••••.••••••••••..•• 80 SCHNEEFL.PRO •••••••••••••••••••••••••••••...••••••..••.•••••••••••••.•••••••••••..•••• 83 DRAGON.PRO .••••••••.••..•.•.•••••..•••••••••••••••••••••••.••••••••••••.•.•••••.•••.•.• 85 2.4 Logik ....................................................................................... 87 WAHR.PRO ..•••••........•••...••.....•...........•••......••.•••.••.••...••.••••••••....•• 87 BOOL.PRO .•••.......•...•..........••.....••••••••.••............•......•..•••.......•••••• 88 ADDIERER.PRO ••••••••••.••••••••••.•••••••••••.•.•.•.••.••••••••••••.•..•.•.••..•••.... 90 PARTY.PRO ..••.........•..•..........•...........••••...........••••.•..•..•••••••.•..••.• 93 FLIPFLOP .PRO . .••. ••••....... ..•... ••••......••••.....•... ••••••• •••.. •••••••. .•••. •••• 94 2.5 Knobeleien .............................................................................. 97 ZEBRA.PRO .•.•.•.......•.............•.•••••.••...••...•.•.....••••.•••...•••••...•••..•.• 97 LUEGNER.PRO ..••..••••....•...•••........••••••..•..........•....•.....•••••.........••• 99 FAEHRMAN.PRO ••........................••••••...•..•.•••.............................. 100 DAMEN.PRO •.••.•••....•.........•.......••••••••.•..•........•.••..•••...........••.....• 103 SPRINGER.PRO ...........•••..•....••••••••••...•••.........••••••••••.•...•••...••.•.... 106 2.6 Listen ... ................. ................... ........... ... ...... ............ ............... 110 LISTE.PRO ....••..•... •.•........ ••••.. ........ .••............ .•........... ••...... ......... 110 UMWAND.PRO .......•..........................••.............•••..•........••••......... 113 ROEMISCH.PRO .... ........... .......•. •••••................ ...... ..•... ............. .... 114 PERMUT .PRO .••..•••........••....•.........................••...•......•...........•.•.. 115 KOMPLEX. PRO .•..•.•........................................••...........•.............• 116 VEKTOR. PRO ..•.. .... .•...•••.. ....•••..................... •.......... .......... ..••..... 118 CRAMER.PRO .•..••.........•••.....•••....................••..........••..........••.. ... 120 HORNER.PRO ............•...•......................................•...•............•.... 121 FOLGE.PRO ...................................................•............................ 122 2.7 Sortieren .................................................................................. 123 BUBBLE.PRO .............................................................................. 123 INSERT.PRO ...........•............•...................................................•.. 123 QUICKSRT.PRO .......................................................................... 124 Inhaltsverzeichnis VII 2.8 Mengen 125 MENGE.PRO ...•.......................•...........................•...............••...... 125 TEILER. PRO ...... ..................... .... ................•........•... •••...... .......... 126 SIEB.PRO ............. ................... ....... ............................................ 128 LOTTO.PRO .............................................................•.................. 129 2.9 Graphentheorie ....... ................................... ........ .......... ......... ... 131 FAERBUNG.PRO ......................................................................... 131 LABYRINT.PRO .......................................................................... 133 MINWEG.PRO ............................................................................. 134 AUTOMAT.PRO ........................................................................... 136 2.10 Arbeiten mit Texten .............................................................. 137 PLURAL.PRO ...................... ........................ ... .... ............... .......... 137 SATZ.PRO .................................................................................. 139 MORSEN. PRO ............................................................................. 140 ELIZA.PRO .................................................................................. 142 2.11 Datenbanken ........................................................................... 145 EUROPA.PRO ............................................................................. 145 STERNE.PROjSTERNE.DBA ......................................................... 146 ATOMKERN.PROjELEMENT.DBA ................................................ 150 j ATOMKERN .DBA 2.12 Expertensystem ...................................................................... 160 EXPERT.PRO .............................................................................. 160 2.13 DOS ......................................................................................... 165 BENCHMKl.PRO ........................................................................ 165 BENCHMK2.PRO .................................................•....................... 166 BIOS.PRO . ......... ................. ......................•........................... ...... 167 3 Das Turbo-Prolog-System .••................................................. 169 3.1 Installation .............................................................................. 169 3.2 Abgrenzung gegenüber Standard-Prolog .............................. 174 Literaturverzeichnis ................................................•............... 177 Schlüsselwörter und wichtige Begriffe ...................................... 178 Stichwortverzeichnis ............................................................... 192 1 Einleitung Prolog (eigentlich: PROgrammation LOGique, meist als PROgramming in LOGic gedeutet) wurde 1970 bis 1972 von der Forschungsgruppe GIA (Groupe d'Intelligence Artificielle) der Universität Aix-Marseille unter der Leitung von Alain Colmerauer entwickelt und 1973 erstmalig auch implementiert. Größere Bedeutung erhielt Prolog durch die Arbeiten von Robert Ko walski an der Universität Edinburgh ab 1974, der zusammen mit Harry Barrow vom Stanford Research Institute (Kalifornien) durch eine Imple mentierung auf einer DEC-IO einen grundlegenden Standard setzte. Diese Edinburgh-Version findet sich insbesondere in dem Standardwerk von ClocksinjMellish (1981) [4]. Durch einen Gastaufenthalt von Koichi Furukawa 1978 in Stanford ge langte Prolog nach Japan. In einer breitangelegten japanischen Studie wurde Prolog als Programmiersprache der fünften Computergeneration ausgewählt. Damit gelang Prolog der weltweite Durchbruch zu einer Sprache der künstlichen Intelligenz. Es tritt damit in Konkurrenz zu Lisp (LISt Processing language), das bereits Anfang der sechziger Jahre von John McCarty am Massachusetts Institute of Technology in Boston ent wickelt wurde und damit neben Fortran eine der ältesten Programmier sprachen ist. Während Lisp eine abstrakte, streng formal aufgebaute Spra che ist, kommt Prolog dem Programmierer durch eine leichte Lesbarkeit und einfachere Syntax entgegen. Da Prolog neben Fakten auch Regeln enthalten kann, eignet es sich her vorragend, um eine Datenbank als Wissensbasis für ein Expertensystem zu verwenden. Ganz Prolog-spezifisch ist der eingebaute Backtracking-Me chanismus, der es dem Rechner erlaubt, aufgrund der gegebenen Fakten selbst eine Problemlösung in Angriff zu nehmen. Ein dritter wesentlicher Aspekt von Prolog ist die Unifizierung, die auf Arbeiten von J. Robinson (1965) zurückgeht. Diese ermöglicht eine Anpassung komplexer Strukturen an einfache Regeln und damit eine Handhabung von abstrakten Problem stellungen. Zusammen mit der eingebauten Programm logik lassen sich damit auf ein fachere Weise als in anderen Programmiersprachen Probleme aus Logik, Wissensanwendung, Mustererkennung, Sprachanalyse, Symbolverarbeitung und Beweistechnik bearbeiten. Inzwischen gibt es eine Vielzahl von Prolog-Compilern für Microcompu ter. Außer Turbo-Prolog weichen auch das Arity-Prolog (Arity Corpora tion Massachusetts) und das Prolog 11 (PrologIA Marseille) erheblich vom Standard-Prolog ab. Turbo-Prolog von Borland (Kalifornien) stellt einen 2 Einleitung schnellen, komfortablen Einstieg in die Welt der deklarativen Program miersprachen dar. Durch den integrierten Editor, Window-Technik, DOS Schnittstelle, Real-Arithmetik und die Graphik wird sogar die Systempro grammierung ermöglicht. In Kapitel 3 finden Sie Informationen zu Tur bo-Prolog als System. Kapitellumfaßt zwölf Abschnitte, in denen die wichtigsten Grundlagen des Programmierens in Prolog besprochen werden. Wichtige Fachausdrük ke und Begriffe werden außerdem im Stichwortverzeichnis (Anhang) ge sondert erklärt. Insbesondere befinden sich dort alle Schlüsselwörter (key words) von Turbo-Prolog zum Nachschlagen. Den grundlegenden Prinzi pien wie Backtracking, Rekursion und Unifikation ist jeweils ein eigener Abschnitt zugedacht; ebenso den logischen Grundlagen. Dieses Buch soll kein Lehrbuch für Prolog sein. Es wendet sich an Leser mit Programmiererfahrung in einer oder mehreren prozeduralen Program miersprachen wie BASIC oder C. Es werden aber auch Parallelen zu Logo und Lisp aufgezeigt. Da man das Programmieren am besten anhand zahl reicher Fragestellungen lernt, umfaßt das zweite Kapitel 60 Programmbei spiele der verschiedensten Art. Dabei wurde versucht, nicht nur Prolog typische Probleme wie das Auswerten einer Datenbank oder Lösen von Logikaufgaben aufzugreifen. Die AufgabensteIlungen sind vielseitig: Neben Kalender-Berechnungen werden das Würfelspiel und das Ziehen von Lottozahlen simuliert. Am Beispiel der bekannten Fibonacci-Folge wird die Umwandlung einer Re kursion in ein iteratives Schema aufgezeigt. Obwohl numerische Prozedu ren kein Prolog-Thema sind, wird hier als Beispiel zur Real-Arithmetik die numerische Berechnung eines Integrals mittels Simpson-Formel ge zeigt. Einblick in die Welt der Graphik bieten vier Variationen von Bäu men und fraktalen Kurven. Das Programm party.pro stellt ein grundsätzli ches Verfahren zur Lösung von Logik-Aufgaben vor, bei denen verschie dene Bedingungen gleichzeitig erfüllt sein müssen. Die mit der Aussagen logik verwandte Schaltalgebra wird zum Nachvollziehen eines Serienad dierers und eines Flipflops herangezogen. Anspruchsvoller sind die Pro gramme zum Acht-Damen-Problem und Springerzug (Rösselsprung) auf dem Schachbrett. Anhand der hier eingesetzten Backtrackings wird die Entwicklung künstlicher Intelligenz gezeigt. Grundlegende Verfahren zur Listenverarbeitung werden im Abschnitt Listen bereitgestellt; diese kön nen als Grundlage zur eigenen Programmierung dienen. In weiteren Pro grammen werden die zahlreichen Anwendungen des Listenkonzeptes bei anderen Datenstrukturen demonstriert. Am Beispiel der Sortierprogramme wird der prinzipielle Unterschied zwischen deklarativer und prozeduraler Programmierweise besonders deutlich. Auch Mengen-Operationen lassen sich sehr elegant in Prolog realisieren. Eine weitere Anwendung findet die künstliche Intelligenz in der Graphentheorie, einem relativ neuen Zweig Einleitung 3 der Mathematik. Als Beispiele werden hier die Färbung einer Landkarte und die Wegsuche in einem Labyrinth behandelt. Die Pluralbildung im Englischen und eine Mini-Grammatik werden im Abschnitt zum Arbeiten mit Texten aufgezeigt. Als Beispiel für Datenbanken findet sich hier eine Datei aller europäischen Länder, ein Katalog der 100 hellsten Sterne und ein Verzeichnis aller stabilen Atomkerne. Für nichtstabile Atomkerne wird abgeschätzt, welche Radioaktivität sie entwickeln. Dieses Programm kann bereits als Expertensystem angesehen werden. Das Programm expert .pro stellt ein eigentliches Expertensystem zur Klassifikation von Edelsteinen dar. Den Abschluß der Programme bilden zwei Benchmark Programme, mit denen Sie die Schnelligkeit Ihres Rechners testen können, und das Programm bios.pro, das einen Zugriff auf das BIOS (Basic lnput jOutput System) ermöglicht. Alle Programme sind auf Diskette erhältlich, die mit beiliegender Karte bestellt werden kann. Die Programme sind ent weder selbst-startend (bei Aufruf von RUN im Hauptmenü) oder enthal ten im Kommentarteil das aufzurufende Prädikat. Zahlreiche Graphiken und Bildschirm-Hardcopies dienen zur Veranschaulichung des Textes und dem Ablauf der Programme.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.