Home

4.5 Ausführen von Hamster-Programmen

image

Contents

1. define rechtsFrei T let T1 rechtsUm T if vornFrei T1 begin linksUm T1 begin linksUm T1 ct Hh 7 6 Scheme Konsole Neben dem Schreiben kompletter Scheme Hamster Programme ist es auch m glich einzelne Befehle interaktiv ausf hren zu lassen Hierzu dient die Scheme Konsole Diese k nnen Sie ber das Men Fenster des Editor Fensters ffnen In den Eingabebereich 71 k nnen Sie nun Scheme Befehle eingeben und durch Anklicken des AusfUhren Buttons ausf hren Ausgaben erscheinen im Ausgabebereich der Konsole Tippen Sie bspw mal in den Eingabebereich der Scheme Konsole folgendes ein vor getTerritorium Der Hamster h pft eine Kachel nach vorne Die Funktion getTerritorium liefert dabei die entsprechende Territoriumsliste des aktuell im Simulation Fenster sichtbaren Territoriums Mit Hilfe der Buttons vor und zur ck k nnen Sie in Ihren bereits ausgef hrten Befehlen navigieren um bspw einen Befehl wiederholt auszuf hren Mit dem Button L schen l schen Sie Eingaben im Eingabebereich Aktuell ist es in der Konsole nur m glich Befehle einzeln auszuf hren Wenn Sie versuchen mehrere Befehle gleichzeitig ausf hren zu lassen wird nur der letzte tats chlich ausgef hrt Sowohl der Eingabe als auch der Ausgabebereich der Konsole unterst tzen Copy und Paste und zwar Uber die Tastatureingaben Strg c bzw Strg v Bei Ausf hrung
2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT INDIRECT INCIDENTAL SPECIAL EXEMPLARY OR CONSEQUENTIAL DAMAGES INCLUDING BUT NOT LIMITED TO PROCUREMENT 105 OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE DATA OR PROFITS OR BUSINESS INTERRUPTION HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY WHETHER IN CONTRACT STRICT LIABILITY OR TORT INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 106 10 Ruby Ruby engl f r Rubin ist eine moderne vielseitige h here Programmiersprache die Mitte der Neunziger Jahre von Yukihiro Matsumoto entworfen wurde Ruby ist interpretiert und objektorientiert unterst tzt aber mehrere weitere Programmierparadigmen unter anderem Prozedurale und Funktionale Programmierung sowie Nebenl ufigkeit bietet dynamische Typisierung Reflexion und Automatische Speicherbereinigung Aus Unzufriedenheit ber verf gbare Skriptsprachen begann Yukihiro Matz Matsumoto 1993 an einer eigenen Sprache zu arbeiten und gab am 21 Dezember 1995 die erste Version von Ruby 0 95 frei Den Namen hergeleitet vom Edelstein Rubin w hlte er als Anspielung auf die P
3. Ausf hren Buttons dritter Button von rechts starten wir das Programm Ausgef hrt wird brigens automatisch das Programm das sich im Editor Fenster gerade im Eingabebereich befindet Wenn Sie bis hierhin alles richtig gemacht haben sollte der Hamster loslaufen und wie im Programm beschrieben zwei K rner einsammeln Herzlichen Gl ckwunsch zu Ihrem ersten Hamster Programm Wollen Sie die Programmausf hrung anhalten k nnen Sie dies durch Anklicken des Pause Buttons zweiter Button von rechts erreichen Der Hamster stoppt so lange bis Sie wieder den Ausf hren Button anklicken Dann f hrt der Hamster mit seiner Arbeit fort Das Programm vorzeitig komplett abbrechen k nnen Sie mit Hilfe des Stopp Buttons erster Button von rechts Rechts neben dem Hamster Territorium werden brigens w hrend der Programmausf hrung jeweils die Hamster Befehle angezeigt die der Hamster gerade ausf hrt Wenn Sie ein Programm mehrmals hintereinander im gleichen Territorium ausf hren k nnen Sie mit dem R cksetzen Button vierter Button von rechts den Zustand des Territoriums wieder herstellen der vor Ausf hren des Programms bestand Der Schieberegler ganz rechts in der Men leiste dient zur Steuerung der Geschwindigkeit der Programmausf hrung Je weiter Sie den Knopf nach links verschieben umso langsamer erledigt der Hamster seine Arbeit Je weiter Sie ihn nach rechts verschieben umso schneller flitzt der Hamster durchs
4. Hamster Grundbefehle folgendes Das von der entsprechenden Funktion gelieferte Territorium wird im Simulation Fenster angezeigt 7 4 3 Scheme Hamster Programme Ein Scheme Hamster Programm hat immer folgende Gestalt define start Territorium lt Funktionsaufruf gt start ist die Funktion die beim Ausf hren eines Hamster Programms aufgerufen wird Ihr wird als Parameter die entsprechende Listenrep sentation des aktuell im Simulation Fenster angezeigten Territoriums bergeben Im folgenden Hamster Programm h pft der Hamster eine Kachel nach vorne define start Territorium vor Territorium Im folgenden Hamster Programm h pft der Hamster eine Kachel nach vorne und dreht sich anschlie end nach links define start Territorium linksUm vor Territorium Vergeichen Sie mit diesem Programm bitte das folgende Hamster Programm define start Territorium vor Territorium linksUm Territorium 69 Hier h pft der Hamster zun chst eine Kachel nach vorne Anschlie end wird der Befehl linksUm jedoch auf dem anf nglichen Territorium dem Parameter ausgef hrt und nicht auf dem durch den vor Befehl ge nderten Territorium d h das Ergebnis ist dass sich der Hamster nach der Ausf hrung des Programms auf der selben Kachel befindet auf der er sich vor Start des Programms befand allerdings mit einer anderen Blickrichtung Grund hierf r ist der folgende Im Hamster Simulator geschieht nach dem Ausf hr
5. OR OTHERWISE USING JYTHON OR ANY DERIVATIVE THEREOF EVEN IF ADVISED OF THE POSSIBILITY THEREOF 6 This License Agreement will automatically terminate upon a material breach of its terms and conditions 7 Nothing in this License Agreement shall be deemed to create any relationship of agency partnership or joint venture between PSF and Licensee This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee or any third party 8 By copying installing or otherwise using Jython Licensee agrees to be bound by the terms and conditions of this License Agreement Jython 2 0 2 1 License Copyright c 2000 2001 2002 2003 2004 2005 2006 2007 Jython Developers All rights reserved Redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met e Redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer e Redistributions in binary form must reproduce the above copyright notice this list of conditions and the following disclaimer in the documentation and or other materials provided with the distribution e Neither the name of the Jython Developers nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission
6. der Hamster steht irgendwo in einem beliebigen Territorium ohne innere Mauern er soll alle K rner fressen drehe dich um 180 Grad def kehrt linksUm linksUm drehe dich um 90 Grad nach rechts def rechtsUm kehrt linksUm der Hamster sammelt alle Koerner eines Feldes ein def sammle while kornDa nimm Ueberpruefung ob sich links vom Hamster eine Mauer befindet def linksFrei linksUm if vornFrei rechtsUm return True else rechtsUnm return False 99 Ueberpruefung Mauer befindet def rechtsFrei rechtsUm if vornFrei linksUm return True else linksUm return False der Hamster laeuft bis zur naechsten Wand def laufeZurWand while vornFrei vor der Hamster laeuft in eine Ecke laufelInEcke laufeZurWand linksUm laufeZurWand linksUm def der Hamster soll sich in die naechste Reih Richtung begeben vom Hamster aus gesehen links ob sich rechts vom Hamster eine in noerdlicher von ihm def begibDichLinksUmInNaechsteReihe linksUm der Hamster soll sich in di naechste Reih Richtung begeben vom Hamster aus gesehen vor linksUm liegt diese Reih in noerdlicher rechts von ihm def begibDichRechtsUmInNaechsteReihe rechtsUm Q E H r vor rechtsUm Ueberpruefung
7. ft ob T eine Konstante oder Zahl ist Pr ft ob T eine Zahl ist Pr ft ob T eine ganze Zahl ist Pr ft ob T eine Variable bzw keine Variable ist Pr ft ob T und U identisch bzw nicht identisch sind Pr ft ob T und U unifizierbar sind Bei der dritten Kategorie handelt es sich Pr dikate zur Berechnung arithmetischer Funktionen sowie Operatoren zum Vergleich und Auswertung von Zahlen sowie entsprechender Variablen Terme Nachfolgend werden einige davon aufgelistet Y X Y X lt Y X lt Y X gt Y X gt Y Vis X sin X cos X Ist wahr wenn der Wert von X gleich dem Wert von Y ist Ist wahr wenn der Wert von X ungleich dem Wert von Y ist Ist wahr wenn der Wert von X kleiner als der Wert von Y ist Ist wahr wenn der Wert von X kleiner gleich als der Wert von Y ist Ist wahr wenn der Wert von X gr er als der Wert von Y ist Ist wahr wenn der Wert von X gr er gleich dem Wert von Y ist V wird mit dem Wert von X unifiziert Sch gt fehl wenn X keine Zahl oder V keine Variable ist Liefert jeweils den Wert der gew hlten arithmetischen Funktion Zu der vierten Kategorie den Steuerungs und Metapr dikaten geh ren Pr dikate zur allgemeinen Programmsteuerung sowie eine Menge von Pr dikaten zur Manipulation der PROLOG Datenbank Diese Pr dikate finden in der Regel den h ufigsten Einsatz im 83 Programm Die nachfolgenden Beispiele sind nur ein kleiner Ausschnitt aus der Gesamthe
8. nnen brigens auch die K rneranzahl auf mehreren Kacheln gleichzeitig festlegen Klicken Sie dazu mit der Maus auf eine Kachel und ziehen Sie die Maus bei gedr ckter Maustaste ber die Kacheln deren K rneranzahl Sie ndern m chten Erst wenn Sie die Maustaste loslassen erscheint die Dialogbox Geben Sie dann die Anzahl ein und klicken Sie den OK Button Die K rneranzahl wird auf allen Kacheln ver ndert die Sie vorher markiert hatten Mauern werden hnlich wie K rner auf Kacheln platziert Aktivieren Sie zun chst den Mauer setzen Button achter Button von links Klicken Sie anschlie end auf die Kacheln die durch eine Mauer blockiert werden sollen M chten Sie bestimmte Kacheln im Territorium wieder leeren so dass weder eine Mauer noch K rner auf ihnen platziert sind so aktivieren Sie den Kachel l schen Button neunter Button von links Klicken Sie anschlie end auf die Kacheln die geleert werden sollen So jetzt wissen Sie eigentlich alles was notwendig ist um das Hamster Territorium nach Ihren W nschen zu gestalten Bevor Sie weiterlesen erzeugen Sie als n chstes das in Abbildung 2 skizzierte Territorium Sie k nnen ein bestimmtes Territorium auch in einer Datei abspeichern wenn Sie es irgendwann noch einmal benutzen m chten ohne alle Eingaben erneut zu t tigen Dr cken Sie einfach auf den Territorium speichern Button dritter Button von links und geben Sie in der sich ffnenden Dateiauswah
9. ob in noerdlicher Richtung gesehen links eine weitere nicht mit Mauern besetzte Reihe existiert f weitereReiheLinksVomHansterExistiert return linksFrei liegt diese Reih vom Hamster aus vom Hamster aus insammeln Ueberpruefung ob in noerdlicher Richtung gesehen rechts eine weitere nicht mit Mauern besetzte Reihe existiert def weitereReiheRechtsVomHamsterExistiert return rechtsFrei der Hamster soll alle Koerner in einer Reih def ernteEineReihe sammle while vornFrei vor 100 sammle der Hamster soll alle Koerner in einer Reih insammeln er laeuft dabei von Westen nach Osten def ernteHineReiheNachOsten rnteEineReihe der Hamster soll alle Koerner in einer Reih insammeln er laeuft dabei von Osten nach Westen def ernteEineReiheNachWesten rnteEineReihe der Hamster soll einzelne Koernerreihen abgrasen so lange noch weitere Reihen existieren er unterscheidet dabei ob er die Reihen von 1 Osten oder von Westen aus abgrast aufelInEcke rnteEineReiheNach sten while weitereReiheLinksVomHansterExistiert begibDichLinksUmInNaechsteReihe rnteEineReiheNachWesten if weitereReiheRechtsVomHamsterExistiert begibDichRechtsUmInNaechsteReihe rnteEineReiheNach Osten else kehrt 9 3 3 Berg erklimmen Im folgenden imperati
10. verdoppelt werden Standardm ig steht in der Property Datei workspace Programme Mehr Informationen zu Properties finden Sie im Abschnitt 5 1 14 Anmerkungen zur alten Version 1 des Hamster Simulators Version 1 des Hamster Simulators wird nicht weiter unterst tzt Aus Kompatibilit t zu fr heren Versionen des Hamster Simulators kann diese Property auch home genannt werden 15 Die aktuelle Version 2 des Simulators hat nur noch wenige Gemeinsamkeiten mit Version 1 Die Benutzungsoberflache wurde vollkommen redesigned und die Funktionalitat stark erweitert zum Beispiel Kapselung der Dateiverwaltung Integration eines Debuggers Benutzer k nnen deutlich weniger Fehler bei der Installation und Bedienung machen als dies noch in Version 1 der Fall war Wenn Sie trotzdem mit Version 1 des Simulators arbeiten m chten weil Sie sich bspw an die Version gew hnt haben sei Ihnen gesagt Version 1 unterst tzt nicht die Entwicklung objektorientierter Hamster Programme dient also lediglich als Begleitprogramm zum ersten Band der beiden Hamster B cher Hamster Programme die mit der Version 1 des Hamster Simulators erstellt wurden k nnen auf zweierlei Art und Weise in die neue Version 2 bernommen werden e Sie bertragen den alten Sourcecode mittels Copy Paste in den Editor des neuen Hamster Simulators speichern diesen und kompilieren e Indem Ordner in dem die Datei hamstersimulator jar liegt befindet sich ein
11. vornFrei hamster Reihe Spalte Blickrichtung territorium TReihen TSpalten nextPos Reihe Spalte Blickrichtung ReiheNeu SpalteNeu ReiheNeu gt 0 ReiheNeu lt TReihen SpalteNeu gt 0 SpalteNeu lt TSpalten not mauer ReiheNeu SpalteNeu write prologhamster vornFrei ttyflush read Return call Return linksUm hamster Reihe Spalte Blickrichtung AnzahlKoerner dreheHamster Blickrichtung BlickrichtungNeu Aktualisiere die Datenbank retract hamster Reihe Spalte Blickrichtung AnzahlKoerner assert hamster Reihe Spalte BlickrichtungNeu AnzahlKoerner Rufe linksUm beim Hamster auf write prologhamster linksUm ttyflush read Return call Return dreheHamster NORD WEST dreheHamster WEST SUED dreheHamster SUED OST dreheHamster OST NORD rechtsUm linksUm linksUm linksUm nimm hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaul korn Reihe Spalte AnzahlKoerner AnzahlKoerner gt 0 AnzahlKoernerImMaulNeu is AnzahlKoernerImMaul 1 AnzahlKoernerNeu is AnzahlKoerner 1 Aktualisiere die Datenbank retract hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaul retract korn Reihe Spalte AnzahlKoerner assert hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaulNeu assert korn Reihe Spalte AnzahlKoernerNeu Rufe nimm beim Hamster auf writ
12. zu verbinden e Pfeile Elemente lassen sich untereinander mit Pfeilen verbinden um somit den Programmfluss zu definieren Abbildung 13 1 zeigt beispielhaft einen Hamster PAP 135 Abbildung 13 1 Elemente von Hamster PAPs 13 3 Voraussetzungen Um mit dem Hamster Simulator Hamster PAPs entwickeln und ausf hren zu k nnen muss die Property flowchart auf true gesetzt sein Standardm ig ist das der Fall Um den PAP Modus auszuschalten ffnen Sie bitte die Datei hamster properties und ersetzen Sie dort die Zeile f lowchart true durch die Zeile flowchart false 136 13 4 Erstellen von Hamster PAPs Um einen neuen Hamster PAP zu erstellen klicken Sie bitte in der Toolbar des Editor Fensters auf den Neu Button 1 Toolbar Button von links Er erscheint ein Fenster in dem der Programmtyp ausgewahlt werden muss Wahlen Sie hier den Programmtyp Programmablaufplan Nach dem Dr cken des OK Buttons erscheint im Editor Fenster anstelle eines normalen textuellen Editors ein so genanntes PAP Editorfenster Es besteht aus zwei Bereichen siehe auch Abbildung 13 1 dem Auswahl Men auf der linken Seite und dem Programmbereich 13 4 1 Auswahl Men Das Auswahl Men an der linken Seite beinhaltet folgende Funktionalit t von oben nach unten e Start Stop Element Mit diesem gr nen Symbol kann ein Start oder Stop Element in den Programmbereich gebracht werden e Operation Element Mit diesem grauen Symbol k
13. 2 des Hamster Simulators lassen sich die Beschriftungen der Scratch Bl cke ber Properties ndern Folgende Properties k nnen dabei gesetzt werden dahinter steht jeweils der Standard Wert scratch new procedure Neue Prozedur scratch new function Neue Funktion scratch void return verlasse scratch bool return liefere scratch true wahr a scratch false falsch scratch and und scratch or oder scratch not nicht scratch if falls scratch else_if falls scratch else sonst scratch while solange scratch do wiederhol scratch do while solange 5 1 17 fsm ber die Property fsm kann die F higkeit des Hamster Simulators Hamster Automaten zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Kapitel 12 Befindet sich in der Datei hamster properties eine Zeile mit dem Text fsm false ist der Automaten Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text fsm t rue ist der Automaten Modus eingeschaltet Standardm ig ist der Ruby Modus ausgeschaltet 61 5 1 18 flowchart Uber die Property flowchart kann die F higkeit des Hamster Simulators Hamster Programmablaufplane PAP zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Kapitel 13 Befindet sich in der Datei hamster properties eine Zeile mit dem Text flowchart false ist der PAP Modus ausgeschaltet Befindet sich in der Date
14. 3 Pausieren eines Hamster ProgrammS sssssessesseesserrrrrrresserrrennnrnnneserrrnne 48 4 5 4 W hrend der Ausf hrung eines Hamster Programmes gt 48 4 5 5 Einstellen der Geschwindigkeit ANEN 48 4 5 6 Wiederherstellen eines Hamster Termtoums nenn 49 4 5 7 M gliche Fehlerquellen ee 49 4 6 Debuggen von Hamster Programmen 49 4 6 1 Aktivieren bzw deaktivieren des Debuggers ssssssssenseeessssrrrrerrresserereee 50 4 6 2 Beobachten der Programmausf hrung en 50 4 6 3 Schrittweise Programmausf hrung nn 51 4 7 3D Simulationsfenster und Sound sssssssssssesnnrrreesserrrrnnnnnnsrerrrrnnnnnnneeeeennna 52 4 7 1 Steuerung mittels der Toolbar 53 4 7 2 Steuerung mittels der Maus esse ea 54 4 8 Dateiverwaltung auf Beitebssvstemebene 54 5 Greet 55 5 1 Vorhandene Propertes en 55 ag e BE d EE 55 Delica WORKS EE 56 E Ne ee 56 9 1 4 EE E 57 E E le Ee 57 5 1 6 language E 57 I le NCI E 57 OG EE 58 SMO gt D EE 59 9 11 10 legoma a a A 59 NEE W el 619 DEE 59 Sell SE 59 Ek ET EE 60 9 1 14 NEES 60 5 1 19 de EE 60 DIG EE eege ee Aes Ree ead heise 61 SU E 61 9 1 18 leede a a 62 5 2 MENIOGNUIZSHANIQK eI ii ns 62 6 ENn lisChsprachiger Hamster a 63 d EEN 65 7 1 Funktionale Programmiersprachen EEN 65 7 2 Die Programmiersprache Gcheme en 66 7 3 Gcheme Hamster Programme 66 7 4 Grundlagen und BET 67 7 41 dE ell EEN 67 7 4 3 Gcheme Hamster Programme AE 69 7 9 EE 70 7 6 gt Scheme K
15. Angabe der Atome ist dabei sehr wichtig die ein mehrstelliger PROLOG Term nicht kommutativ ist Die komplexen Terme werden in PROLOG wie bereits angedeutet dazu verwendet Beziehungen zwischen Objekten und deren Eigenschaften herzustellen und den vorliegenden Daten eine bessere Strukturierung zu verleihen In diesem Fall k nnen komplexe Terme auch einfach als Pr dikate bezeichnet Zus tzlich k nnen komplexe Terme aber auch dazu verwendet Anfragen an das PROLOG System zu formulieren Einige Argumente eines komplexen Terms werden dabei als Variablen deklariert mit der Aufgabe an PROLOG entsprechende Belegungen f r diese zu finden Wird ein komplexer Term zur Abfrage an PROLOG verwendet so handelt es sich dabei um einen Prozedur Aufruf Listen Eine der wichtigsten und meist genutzten Datenstrukturen in PROLOG ist die Liste Dabei handelt es sich um eine rekursiv definierte Struktur die zur Darstellung einer beliebig langen geordneten Menge von Termen verwendet wird Prinzipiell sind Listen nur spezielle komplexe Terme und k nnen in PROLOG durch die bliche allgemeine Notation eines Terms ausgedr ckt werden Eine Liste aus drei Elementen a b und c kann wie folgt geschrieben werden a b c Die Konstante bezeichnet dabei eine leere Liste Als Funktor bei einem Listen Term wird das Zeichen verwendet Zu einer besseren Lesbarkeit und Handhabung gibt es in PROLOG f r die Liste eine besondere Schreibweise
16. Die Dialogbox schlie t sich und der Standard Hamster hat die eingegebene Anzahl an K rnern im Maul 4 4 5 Platzieren von K rnern auf Kacheln des Hamster Territorium Um auf einzelnen Kacheln des Hamster Territoriums K rner zu platzieren m ssen Sie zun chst im Simulation Fenster in der Toolbar den K rner setzen Button siebter Toolbar Button von links anklicken Dadurch aktivieren Sie die K rner Setzen Funktion Sie erkennen dies daran dass der Hintergrund des Buttons nun dunkler erscheint Solange die Funktion aktiviert ist k nnen Sie nun durch Anklicken einer Kachel die K rneranzahl auf dieser Kachel festlegen Nach Anklicken der entsprechenden Kachel erscheint eine Dialogbox mit einem Eingabefeld in das Sie die gew nschte Anzahl an K rnern eingeben k nnen Nach Klicken des OK Buttons schlie t sich die Dialogbox und die K rner erscheinen auf der Kachel Dabei gilt Bei einer K rneranzahl bis 12 werden entsprechend viele K rner auf der Kachel angezeigt Bei einer K rneranzahl gr er als 12 werden immer nur 12 K rner angezeigt Wie viele K rner tats chlich auf der Kachel liegen k nnen Sie ermitteln wenn Sie den Mauscursor auf die entsprechende Kachel verschieben Es erscheint ein Tooltipp in dem die Koordinaten der Kachel sowie die genaue K rneranzahl ersichtlich sind Es ist auch m glich die Anzahl an K rnern auf mehreren Kacheln gleichzeitig festzulegen Klicken Sie dazu die Maus auf einer der Kacheln und zi
17. Kachel zu platzieren m ssen Sie zun chst im Simulation Fenster in der Toolbar den Hamster versetzen Button vierter Toolbar Button von links anklicken Dadurch aktivieren Sie die Hamster Versetzen Funktion Sie erkennen dies daran dass der Hintergrund des Buttons nun dunkler erscheint Solange die Funktion aktiviert ist k nnen Sie nun durch Anklicken einer Kachel den Standard Hamster auf diese Kachel platzieren Eine Deaktivierung der Hamster Versetzen Funktion ist durch Anklicken des K rner setzen Mauer setzen oder Kachel l schen Buttons und der damit verbundenen Aktivierung der entsprechenden Funktion m glich 4 4 3 Setzen der Blickrichtung des Standard Hamsters Um die Blickrichtung des Standard Hamsters zu ndern klicken Sie bitte den Hamster drehen Button f nfter Toolbar Button von links an Bei jedem Klick auf diesen Button dreht sich der Standard Hamster um 90 Grad linksum 43 4 4 4 Abfragen und Festlegen der K rneranzahl im Maul des Stan dard Hamsters Um die Anzahl an K rnern im Maul des Standard Hamster festzulegen klicken Sie bitte den K rner im Maul Button sechster Toolbar Button von links an Es ffnet sich eine Dialogbox mit einem Eingabefeld In diesem Eingabefeld erscheint die aktuelle Anzahl an K rnern im Maul des Standard Hamsters Sie k nnen nun in das Eingabefeld die gew nschte Anzahl eingeben Klicken Sie anschlie end den OK Button um die Eingabe zu best tigen
18. PROLOG ebenfalls als konstante Terme dargestellt Diese k nnen als Integerzahlen 12 3500 oder Dezimalzahlen mit Dezimalpunkt 3 1415 oder Exponentenschreibweise 1 34e10 geschrieben werden PROLOG definiert eine Reihe arithmetischer Operatoren und und vordefinierter Systempr dikate die in Verbindung mit Zahlen Termen eingesetzt werden k nnen Variablen sind spezielle Terme die als Platzhalter f r beliebige andere PROLOG Terme dienen Bei den Variablen unterscheidet man zwischen anonymen und nicht anonymen bzw normalen Variablen Der Variablen Term besitzt in PROLOG zum leichteren Erkennen eine besondere Schreibweise e Die normale Variable beginnt immer mit einem Gro buchstaben Der Rest der Variable besteht aus Kleinbuchstaben Ziffern oder dem Unterstreichungszeichen Nicht anonyme Variablen A B HamsterXYZ e Die anonyme Variable beginnt im Unterschied dazu mit einem Unterstrich Dabei kann diese unter Umst nden auch nur aus einem einzigen Unterstrich bestehen Die anonyme Variable spielt hier eine besondere Rolle Mit dem Einsatz der anonymen Variablen bietet PROLOG die M glichkeit die sogenannten Dont Care Variablen zu markieren Dies sind Variablen deren sp teren Wertebelegungen den Programmierer einfach nicht interessieren Hierbei ist eine sehr wichtige Eigenschaft der anonymen Variable zu beachten Jedes Vorkommen der anonymen Variable innerhalb eines PROLOG Pradikats referenziert jeweils eine andere
19. Programmausf hrung d h der Programmierer sieht unmittelbar in einer graphischen Umgebung was seine Anweisungen bzw Programme bewirken Genauere Informationen zum Hamstern mit BlueJ k nnen Sie dem PDF Dokument HamsternMitBlueJ pdf entnehmen das Sie auf der Website zum Java Hamster Modell finden 1 13 nderungen in Version 2 1 gegen ber 2 0 Gegen ber der Version 2 0 des Hamster Simulators enth lt Version 2 1 folgende Anderungen e Ein paar Fehler wurden behoben bspw der Fehler beim Schlie en des Simulators wenn eine oder mehrere Dateien noch nicht gespeichert wurden e Das Simulation Fenster erscheint nun beim Start des Simulators gr er e Linksh nder k nnen nun im Editor auch lt ctr1 gt lt Einfg gt zum Kopieren und lt Shift gt lt Einfg gt zum Einf gen nutzen 14 e Uber eine so genannte Property Datei k nnen sie bestimmte Voreinstellungen berlagern Die Datei muss den Namen hamster properties haben und sich in dem Ordner befinden wo sich auch die Dateien hamstersimulator jar bzw namstersimulator bat befinden Momentan sind folgende Einstellungen m glich e security Befindet sich in der Datei hamster properties eine Zeile mit dem Text security false wird der so genannte Security Manager ausgeschaltet Das bedeutet Hamster Programme d rfen auf die Festplatte zugreifen und d rfen Dateien lesen und in Dateien schreiben Damit ist es bspw auch m glich aus Hamster Programmen
20. Programms Zum ffnen eines abgespeicherten Hamster Programms haben Sie mehrere M glichkeiten Zum einen k nnen Sie den ffnen Button nutzen zweiter Toolbar Button von links Es erscheint eine Dateiauswahl Dialogbox in der sie die entsprechende Datei ausw hlen k nnen Eine schnellere Alternative stellt das Anklicken des entsprechenden Namens im Dateibaum dar Im Eingabebereich wird das Hamster Programm angezeigt 37 4 2 3 ndern eines existierenden Hamster Programms Um ein Hamster Programm zu ndern m ssen Sie es zuvor ffnen so dass der Sourcecode im Eingabebereich erscheint Im Eingabebereich k nnen Sie nun die gew nschten nderungen am Sourcecode vornehmen und anschlie end mit Hilfe des Speichern Buttons oder des Speichern Als Buttons abspeichern 4 2 4 L schen eines existierenden Hamster Programms M chten Sie ein Hamster Programm wieder l schen klicken Sie zun chst den entsprechenden Namen im Dateibaum an Er wird durch ein blaues Rechteck hinterlegt Klicken Sie anschlie end die rechte Maustaste Es erscheint ein Popup Men in dem Sie das Men item L schen anklicken Damit ist das Programm unwiderruflich gel scht der Name verschwindet aus dem Dateibaum und falls das Programm ge ffnet war verschwindet auch der Sourcecode inklusive Dateireiter aus dem Eingabebereich 4 2 5 Umbenennen eines existierenden Hamster Programms M chten Sie ein Hamster Programm umbenennen klicken Sie zu
21. Sie sind pseudom ig implementiert und sollen dazu dienen dass fortgeschrittene Hamster Programmierer auch andere Entwicklungsumgebungen wie bspw Eclipse zum Eintippen und Compilieren von Hamster Programmen nutzen k nnen 2 3 Hamster Simulator unter JDK 1 4 Die veraltete Java Version 1 4 und auch die Version 5 werden nicht weiter unterstitzt 2 4 Starten des Hamster Simulators Nachdem Sie eine Java Laufzeitumgebung sowie den Hamster Simulator wie oben beschrieben auf Ihrem Rechner installiert haben k nnen Sie den Simulator starten Dies geschieht folgenderma en e Unter Windows F hren Sie mit der Maus einen Doppelklick auf die Datei hamstersimulator jar oder die Datei hamstersimulator bat aus e Unter Linux und Solaris Rufen Sie in dem Ordner in dem sich die Datei hamstersimulator jar befindet folgenden Befehl auf e java jar hamstersimulator jar e Unter Macintosh OS X F hren Sie mit der Maus einen Doppelklick auf die Datei hamstersimulator jar aus Anschlie end ffnen sich zwei Fenster die mit Editor und Simulation betitelt sind Herzlichen Gl ckwunsch Sie k nnen mit der Entwicklung von Hamster Programmen beginnen Hinweis Wenn es Probleme mit dem Doppelklick unter Windows gibt kann es sein dass die Endung jar dem falschen Programm bzw Java Interpreter zugeordnet ist Testen Sie dies indem Sie in einem Eingabeaufforderungsfenster folgendes eingeben und in etwa die folgenden Ergebn
22. Territorium 25 Die Bedienelemente zum Steuern der Programmausf hrung Ausf hren Button Pause Button Stopp Button und Geschwindigkeitsregler finden Sie brigens auch im Editor Fenster sowie im Debugger Men des Editor Fensters Welche Sie nutzen ist Ihnen berlassen 3 5 Debuggen eines Hamster Programms Debuggen eines Programms eines Programms bedeutet dass Sie bei der Ausf hrung eines Programms zus tzliche M glichkeiten zur Steuerung besitzen und sich den Zustand des Programms welche Zeile des Sourcecodes wird gerade ausgef hrt welche Werte besitzen aktuell die Variablen in bestimmten Situationen anzeigen lassen k nnen Den Debugger k nnen Sie im Editor Fenster mit dem Debugger aktivieren Button dritter Button der Men leiste von rechts aktivieren und wieder deaktivieren Wenn er aktiviert ist erscheint der Button etwas dunkler Wenn der Debugger aktiviert ist und Sie Uber den Ausf hren Button ein Hamster Programm starten ffnen sich oberhalb des Eingabebereichs im Editor Fenster zwei neue Bereiche Im linken Bereich wird angezeigt in welcher Funktion sich der Programmablauf gerade befindet Im rechten Bereich werden die Variablen und ihre aktuellen Werte dargestellt Au erdem wird im Eingabebereich durch einen blauen Balken gekennzeichnet welche Zeile des Programms ausgef hrt wird Bei aktiviertem Debugger haben Sie die M glichkeit das Programm schrittweise d h Anweisu
23. Territoriums Wenn Sie ein Hamster Programm ffnen bzw aktivieren wird automatisch berpr ft ob es im gleichen Verzeichnis eine zum Hamster Programm gleichnamige Territorium Datei gibt In diesem Fall wird gleichzeitig mit dem Hamster Programm auch das entsprechende Territorium geladen und im Simulation Fenster angezeigt 4 3 Compilieren von Hamster Programmen Beim Kompilieren werden Programme genauer gesagt der Sourcecode auf ihre syntaktische Korrektheit berpr ft und im Erfolgsfall ausf hrbare Programme erzeugt Zum Kompilieren von Programmen dient im Editor Fenster das Kompilieren Men 4 3 1 Compilieren Wenn Sie das Kompilieren Men item im Kompilieren Men oder in der Toolbar des Editor Fensters den Kompilieren Button vierzehnter Toolbar Button von links anklicken wird das Programm das gerade im Eingabebereich des Editor Fensters sichtbar ist kompiliert Wenn Sie zuvor Anderungen am Sourcecode vorgenommen und noch nicht abgespeichert haben werden Sie durch eine Dialogbox gefragt ob das Programm vor dem Kompilieren gespeichert werden soll oder nicht Wenn Ihr Programm korrekt ist erscheint nach ein paar Sekunden eine Dialogbox mit einer entsprechenden Meldung Es wurde ein neues ausf hrbares Programm erzeugt 4 3 2 Beseitigen von Fehlern Wenn Ihr Programm Fehler enth lt ffnet sich unterhalb des Eingabebereichs ein neuer Bereich der die Fehlermeldungen des Compilers anzeigt s
24. Variablen Instanz Dadurch kann sich der Programmierer den Aufwand des Ausdenkens einen eindeutigen Namen f r Variable ersparen sofern ihn die Variable an sich nicht interessiert Anonyme Variablen a _myHam _ Komplexe Terme Strukturen Ein komplexer Term kann im Allgemeinen durch ein Ausdruck der Form p al an beschrieben werden Er besteht aus einem Funktor p und einer beliebigen Anzahl von Argumenten al an Beim Funktor handelt es sich um ein Atom welches in der Regel in der Pr fixnotation mit der in runde Klammern eingeschlossenen Argumentenliste 76 geschrieben wird An Stelle der Argumente k nnen beliebige PROLOG Terme also Konstanten Variablen oder auch komplexe Terme verwendet werden Die Anzahl der Argumente des komplexen Terms definiert seine Stelligkeit Bei dem Term mit der Stelligkeit O handelt es sich in diesem Sinne um ein einfaches Atom Nachfolgend sind einige Beispiele der komplexen Terme aufgelistet Tier hamster kornfeld X Y liebt hamster koerner Der erste Term dr ckt die Beziehung aus dass der Hamster ein Tier ist Die Stelligkeit des Terms tier hamster ist 1 Die Stelligkeit des zweiten Terms kornfeld X Y ist 2 Dabei sind Argumente des Terms noch nicht genau spezifiziert Dabei kann es sich an Stelle von X und Y noch um beliebige auch nicht numerische Terme handeln Der dritte Term definiert eine Beziehung liebt 2 zwischen den Atomen hamster und koerner Die Reihenfolge der
25. Verschieben neuer Ordner k nnen Sie auch auf Betriebssystemebene durchf hren Sie sollten dies jedoch nicht tun wenn der Hamster Simulator gestartet ist da es ansonsten zu Inkonsistenzen kommen kann Dateien mit Sourcecode von Hamster Programmen haben die Endung ham Dateien mit Hamster Territorien haben die Endung ter Ansonsten gibt es noch Dateien mit der Endung java und class Diese werden beim Kompilieren generiert und enthalten Java Sourcecode j ava bzw ausf hrbaren Java Bytecode class Sie k nnen Hamster Programme auch mit anderen Editoren entwickeln Dabei gilt es allerdings folgendes zu beachten e Objektorientierten Hamster Programmen muss folgender Kommentar unmittelbar vorangestellt werden object oriented program e Separaten Klassen und Interfaces muss der Kommentar class unmittelbar vorangestellt werden e Imperativen Hamster Programmen sollte muss aber nicht folgender Kommentar unmittelbar vorangestellt werden imperative program Die Kommentare kennzeichnen den Typ der Programme Sie werden vom Editor des Hamster Simulators automatisch generiert Weiterhin k nnen Sie in Hamster Programmen auch die Java Anweisungen System out println und System err println benutzen Die Ausgaben erfolgen bei Aus f hrung des Programms in Dateien namens sysout txt bzw syserr txt in dem Ordner in dem auch die Datei hamstersimulator jar liegt Im Workspace
26. als Bedingungen und Anweisungsbl cke als innere Anweisungen zugeordnet werden Variablen werden durch das Scratch Hamster Modell nicht unterst tzt um es nicht unn tig zu verkomplizieren Intention des Scratch Hamster Modells ist es Programmieranf ngern einen ersten Eindruck von der Programmierung zu geben Das Scratch Hamster Modell deckt dazu die ersten 12 Kapitel des Java Hamster Buches erster Band ab Danach sollte unserer Meinung nach ein Programmieranf nger so weit sein dass er ohne gro e Probleme auf die textuelle Programmierung umschwenken kann 11 2 Voraussetzungen Um mit dem Hamster Simulator Scratch Hamster Programme entwickeln und ausf hren zu k nnen muss die Property scratch auf true gesetzt sein Standardm ig ist das der Fall Um den Scratch Modus auszuschalten ffnen Sie bitte die Datei hamster properties und ersetzen Sie dort die Zeile scratch true durch die Zeile scratch false Mit Hilfe von Properties lassen sich seit Version 2 8 2 des Hamster Simulators auch die Beschriftungen der Standard Bl cke ver ndern sie Kapitel 5 1 16 11 3 Ein erstes kleines Beispiel Um einen ersten kleinen Eindruck vom Scratch Hamster Modell zu bekommen ffnen Sie bitte im Ordner beispielprogramme den Unterordner scratch und laden Sie dann das Programm Beispiel Es erscheint das in Abbildung 11 2 dargestellte Scratch Editorfenster F hren Sie das Programm durch Anklicken des Run Buttons in der Toolbar au
27. angegeben werden kann Auch die Farbgestaltung neu erzeugter Hamster kann manipuliert werden Einzelheiten entnehmen Sie bitte Abschnitt 5 Es gibt ein Property namens logfolder ber das der Ordner in dem die beiden Dateien sysout txt und syserr txt erzeugt werden ge ndert werden kann Einzelheiten entnehmen Sie bitte Abschnitt 5 Mitte des Jahres 2008 erscheint im Teubner Verlag ein drittes Buch zum Java Hamster Modell in dem in die parallele Programmierung mit Java Threads eingef hrt wird Der Hamster Simulator ab Version 2 5 erlaubt die Ausf hrung solcher paralleler Hamster Programme Die Beispielprogramme des dritten Bandes sind bereits unter beispielprogramme einseh und ausf hrbar Prinzipiell ist es m glich mit dem Hamster Simulator einen Lego Mindstorms Roboter zu steuern Da der Roboter jedoch oft noch ein wenig planlos heruml uft wird die endg ltige Freischaltung dieses Features auf die Version 2 6 des Hamster Simulators verschoben 1 10 nderungen in Version 2 4 gegen ber 2 3 Neben der Korrektur einiger kleiner Fehler sind zwei wesentliche Erweiterungen am Hamster Simulator vorgenommen worden Es wurde das Property runlocally eingef hrt Standardm ig ist dies auf false gesetzt so dass sich gegen ber den alten Versionen des Hamster Simulator nichts ndert Hamster Programme werden in einer neu gestarteten JVM ausgef hrt Setzt man das Property jedoch auf true passiert folgendes Ha
28. dazu auf den Button Neues Territorium erster Button von links Es erscheint eine Dialogbox in der Sie die gew nschte Anzahl an Reihen und Spalten eingeben k nnen Um die dort erscheinenden Werte jeweils 10 ndern zu k nnen klicken Sie mit der Maus auf das entsprechende Eingabefeld Anschlie end k nnen Sie den Wert mit der Tastatur eingeben Nach der Eingabe der Werte klicken Sie bitte auf den OK Button Die Dialogbox schliesst sich und das Territorium erscheint in der angegebenen Gr e Achtung Wenn Sie die Gr e des Territoriums ndern wird das Territorium automatisch komplett geleert Nun werden wir den Hamster der immer im Territorium sitzt im objektorientierten Hamster Modell wird er Standard Hamster genannt umplatzieren Dazu klicken wir mit der Maus auf den Button Hamster versetzen vierter Button von links Dieser Button ist nun aktiviert Das erkennt man an dem etwas dunkleren Hintergrund Solange er aktiviert ist kann der Standard Hamster im Territorium auf eine andere Kachel gesetzt werden Klicken Sie dazu einfach auf die entsprechende Kachel Standardm ig schaut der Standard Hamster nach Osten Mit dem Button Hamster drehen f nfter Button von links k nnen Sie jedoch seine Blickrichtung ndern Jedes Mal wenn Sie auf den Button klicken dreht er sich um 90 Grad nach links Normalerweise hat der Standard Hamster 0 K rner im Maul Mit Hilfe des Buttons K rner im Maul sechster
29. der Scheme Funktion read in der Scheme Konsole erscheint eine Dialogbox in der Sie die Eingabe t tigen m ssen Wenn Sie ber die Konsole Funktionsdefinitionen ausf hren geben Sie diese dem kompletten System bekannt D h Sie k nnen die entsprechenden Funktionen danach auch in Scheme Programmen nutzen ohne sie erneut definieren zu m ssen Umgekehrt gilt dies genauso Bei Beendigung des Hamster Simulators gehen jedoch alle entsprechenden Definitionen verloren 7 7 Implementierungshinweise F r die Implementierung des Scheme Hamster Modells wurde JScheme benutzt siehe http jscheme sourceforge net jscheme mainwebpage html 72 8 Prolog Ab der Version 2 6 deckt der Hamster Simulator nach der imperativen objektorientierten und parallelen Programmierung mit Java und der funktionalen Programmierung mit Scheme mit der logikbasierten Programmierung mit Prolog alle wichtigen Programmierparadigmen ab Herzlichen Dank an Andreas Sch fer der im Rahmen einer Studienarbeit die Integration von Prolog in den Hamster Simulator vorgenommen hat 8 0 Voraussetzungen F r den Einsatz von PROLOG innerhalb des Hamster Simulators muss auf dem Zielsystem ein SW IProlog Interpreter installiert werden Die daf r notwendigen Installationsdateien k nnen direkt von der SWIProlog Homepage runtergeladen werden Die SWIProlog Homepage ist unter dem Link http www swi prolog org erreichbar Bei der Entwicklung der PROLOG Komponente wurde die Versi
30. eine immer gr ere Bedeutung in der Forschung und in der Anwendung Gegen ber den traditionellen prozeduralen Programmiersprachen wie beispielsweise JAVA oder C hat die Programmierung in PROLOG einen ganz anderen Charakter Wie bereits erw hnt orientiert sich PROLOG an den M glichkeiten einer eher abstrakteren Wissensdarstellung mit Hilfe des Pr dikatenkalk ls erster Stufe anstatt sich bei der traditioneller Rechnerarchitektur wie es bei den anderen Sprachen der Fall ist zu Institute for New Generation Computer Technology 74 orientieren Dabei andert sich der Programmierstil fur PROLOG im Vergleich zu den Letzteren sehr stark Hier wird das eigentliche Problem in den Vordergrund gestellt Anstatt sich beim Entwurf dem algorithmischen Ablauf des Programms zu widmen und dieses danach zu strukturieren beschreiben die PROLOG Programme im Wesentlichen nur was das Ziel eines Programms bzw Programmteils darstellt Dabei wird also nicht unbedingt extra spezifiziert wie dieses Ziel erreicht werden soll Ein PROLOG Programm repr sentiert im Allgemeinen lediglich nur das Wissen das dazu notwendig w re mit Hilfe logischer Schlussfolgerungen an die L sung des Problems bzw der an PROLOG Interpreter gestellten Anfrage zu kommen Dank dieser Eigenschaft sind die PROLOG Programme sehr kompakt und der Entwicklungsaufwand wird dadurch verringert Eine andere Eigenschaft von PROLOG liegt an der einfachen M glichkeit der Progra
31. entsprechenden Bereich wechseln 137 13 4 3 Elemente Start Stop Elemente Das Hauptprogramm und alle Unterprogramme m ssen jeweils genau ein Start und einen Stop Element besitzen Beim Start Element startet das Unter Programm beim Stop Element endet es Bei der Erzeugung eines Start Stop Elementes erscheint nach dem Draggen ein Men ber das man ausw hlen kann ob es sich bei dem neu erzeugten Element um ein Start oder ein Stop Element handeln soll Operation Elemente Bei der Erzeugung eines Operation Elementes erscheint nach dem Draggen ein Men ber das man ausw hlen kann welchen Hamster Befehl die neue Operation repr sentieren soll vor linksUm gib nimm Verzweigung Elemente Bei der Erzeugung eines Verzweigung Elementes erscheint nach dem Draggen ein Men ber das man ausw hlen kann welchen Hamster Testbefehl die neue Operation repr sentieren soll vornFrei maulLeer kornDa Unterprogramm Elemente Bei der Erzeugung eines Unterprogramm Elementes erscheint nach dem Draggen ein Men ber das man ausw hlen kann ob ein bereits definiertes Unterprogramm aufgerufen werden oder ein neues Unterprogramm definiert werden soll Im zweiten Fall muss man in einem kleinen erscheinenden Fenster den Namen des neuen Unterprogramms eintippen und anschlie end die RETURN Taste dr cken Im Programmbereich wird dann ein neuer Tab erzeugt und automatisch aktiviert Kommentar Elemente Nach der Erzeugung eines Kommentar Elem
32. erstellen und testen k nnen Erstellen Sie zum Beispiel ein Programm in dem sich der Hamster zwei Kacheln nach vorne bewegt sich dann linksum dreht und wiederum zwei Kacheln nach vorne springt siehe Abbildung 11 9 Abbildung 11 9 Erstes kleines Scratch Hamster Programm 11 4 6 Kontrollstrukturen Die Bl cke die die Kontrollstrukturen reprasentieren lassen sich analog zu den Anweisungsbl cken handhaben Sie besitzen jedoch als weitere Unterkomponenten einen Bedingungsbereich gr n und einen Innenbereich siehe Abbildung 11 10 Bedingungsbereich vomFrei und nicht maulLeer sonst linksUm Innenbereich Abbildung 11 10 Steuerungsbl cke 124 In den Bedingungsbereich lassen sich beliebige Boolesche Ausdrucks Bl cke ziehen die die Bedingung der entsprechenden Kontrollstruktur repr sentieren Ein leerer Bedingungsbereich entspricht implizit dem Wert wahr Auch die Boolesche Ausdruck Bl cke die die booleschen Operatoren repr sentieren enthalten analog zu handhabende Bedingungsbereiche Damit lassen sich komplexe Bedingungen realisieren In den Innenbereich eines Kontrollstrukturblockes lassen sich wiederum Anweisungsbl cke und Stapel ziehen Diese entsprechen dabei der true oder false Anweisung einer if Anweisung oder der Iterationsanweisung einer Schleife 11 4 7 Prozeduren und boolesche Funktionen Das Konzept der Definition neuer Prozeduren und Funktionen existiert im Original Scratch leider nicht
33. names with instructions on where to get the original software distribution d make other distribution arrangements with the author 3 You may distribute the software in object code or binary form an provided that you do at least ONE of the following a distribute the binaries and library files of the software together with instructions in the manual page or equivalent on where to get the original distribution b accompany the distribution with the machine readable source of the software c give non standard binaries non standard names with instructions on where to get the original software distribution d make other distribution arrangements with the author 4 You may modify and include the part of the software into any other software possibly commercial But some files in the distribution are not written by the author so that they are not under these terns For the list of those files and their copying conditions see the file LEGAL 5 The scripts and library files supplied as input to or produced as output from the software do not automatically fall under the copyright of the software but belong to whomever generated them and may be sold commercially and may be aggregated with this software 6 THIS SOFTWARE IS PROVIDED AS IS AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPO
34. nnen auch andere Funktionalit ten bspw Abbruch der Programmausf hrung durch Anklicken des Stopp Buttons ausgef hrt werden Treten bei der Ausf hrung eines Programms Laufzeitfehler auf in objektorientierten Programmen entsprechen diese dem Werfen von Exceptions z B wenn ein Hamster gegen eine Mauer donnert wird eine Dialogbox ge ffnet die eine entsprechende Fehlermeldung enth lt Nach dem Anklicken des OK Buttons in der Dialogbox wird das Hamster Programm beendet 4 5 5 Einstellen der Geschwindigkeit Mit dem Schieberegler ganz rechts in der Toolbar des Simulation Fenster und der Toolbar des Editor Fensters k nnen Sie die Geschwindigkeit der Programmausf hrung beeinflussen Je weiter links der Regler steht desto langsamer wird das Programm ausgef hrt Je weiter Sie den Regler nach rechts verschieben umso schneller flitzen die Hamster durchs Territorium 48 4 5 6 Wiederherstellen eines Hamster Territoriums Beim Testen eines Programms recht hilfreich ist der R cksetzen Button vierter Toolbar Button des Simulation Fensters von rechts Sein Anklicken bewirkt dass das Hamster Territorium in den Zustand zur ckversetzt wird den es vor dem letzten Start eines Programms inne hatte Au erdem verschwinden w hrend der Ausf hrung eines objektorientierten Programms erzeugte Hamster aus dem Territorium 4 5 7 M gliche Fehlerquellen Im Folgenden werden die h ufigsten Fehlerquellen genannt die bei der Ausf hrung
35. nnen nur gel scht werden wenn f r diese Transition eine weitere Beschriftung vorhanden ist Anmerkung Werden von einem Zustand zu einem anderen Zustand zwei Transitionen definiert wird nur ein Pfeil gezeichnet Die beiden Transitionen werden durch so genannte Beschriftungen dargestellt e Zustand erzeugen Durch Klicken an einen bestimmten Punkt im Programmbereich wird an dieser Stelle der Mittelpunkt des neu erzeugten 130 Zustands gesetzt Der Zustand bekommt dabei eine Standardbenennung z lt Zahl gt Der erste erzeugte Zustand wird als Startzustand definiert e Startzustand markieren Durch Klicken auf einen Zustand wird dieser als Startzustand definiert Der vorher als Startzustand markierte Zustand wird zu einem normalen Zustand abge ndert e Endzustand markieren Durch Klicken auf einen Zustand wird dieser als Endzustand definiert wenn es vorher keiner war oder als Nicht Endzustand definiert wenn es schon ein Endzustand gewesen ist e Transition erzeugen Klicken Sie zun chst den Zustand an von dem die Transition ausgehen soll und ziehen sie die Maus bei gehaltener Maustaste zu dem Zustand bei dem die Transition enden soll Nach Loslassen der Maus wird ein neues Fenster ge ffnet wird indem die Transition genauer definiert werden kann Darauf wird sp ter eingegangen e Kommentar erzeugen Durch Klicken an einen bestimmten Punkt im Programmbereich wird die linke obere Ecke des neu erzeugten Kommentar gesetzt
36. skizziert ein objektorientiertes englisches Hamster Programm class MyHamster extends Hamster MyHamster Hamster h super h getRow h getColumn h getDirection h getNumberOfGrains void turnRight this turnLeft this turnLef this turnLef void main MyHamster paul new MyHamster Hamster getDefaultHamster try while true paul move catch WallInFrontException exc paul turnRight paul write Number of Hamsters Territory getNumberOfHansters Prinzipiell kann man brigens auch die deutschen und englischen Befehle mischen 64 7 Scheme In Band 1 des Hamster Buches Programmieren spielend gelernt mit dem Java Hamster Modell werden die Programmiersprachen verschiedenen Programmierparadigmen zugeordnet Java wird dabei in die Klasse der imperativen objektorientierten Sprachen eingeordnet Ich versichere Ihnen wenn Sie die imperativen Konzepte von Java verstanden haben Prozeduren Anweisungen Schleifen Variablen werden Sie ohne gro e Probleme auch andere imperative Programmiersprachen wie Pascal oder Modula 2 erlernen k nnen Im Prinzip unterscheiden diese sich nur durch eine andere Syntax von der Programmiersprache Java Anders sieht dies jedoch auch wenn Sie Programmiersprachen anderer Programmierparadigmen lernen wollen Die zugrunde liegenden Konzepte der einzelnen Programmierparadigmen weichen stark voneinander ab Seit
37. this get palte Kalah u gt MeinErstesHan return false 00Programm paul this vor Ti Spalte Abbildung 20 Debugging Fenster Im Funktionen Bereich werden Informationen zu den aktiven Funktionen bzw Methoden angezeigt und zwar jeweils von links nach rechts der Programm bzw Klassenname der Funktions bzw Methodenname und die aktuelle Zeile Ganz oben erscheint die aktuell aktive Funktion darunter gegebenenfalls die Funktion die diese Funktion aufgerufen hat usw Ganz unten steht also immer die main Funktion Im Variablen Bereich werden die aktiven Variablen und ihre aktuellen Werte angezeigt Die Darstellung erfolgt dabei analog zu einem Dateibaum d h bei komplexen Variablen wie Objekten oder Arrays k nnen Sie durch Anklicken des Symbols vor dem Variablennamen die Attribute bzw Komponenten einsehen Im Eingabebereich selbst wird jeweils der Sourcecode eingeblendet der gerade ausgef hrt wird Die Zeile mit der gerade aktiven Anweisung wird durch einen blauen Balken hinterlegt Bei objektorientierten Programmen die aus mehreren Dateien bestehen werden gegebenfalls Dateien automatisch ge ffnet Auch w hrend der Debugger aktiviert ist k nnen Sie die Programmausf hrung durch Anklicken des Pause Buttons anhalten und durch anschlieBendes Anklicken des Ausf hren Buttons wieder fortfahren lassen Auch die Geschwindigkeit der Programmausf hrung l sst sich mit dem Schieberegler anpas
38. vor sammle end end der Hamster soll alle Koerner in einer Reih insammeln er laeuft dabei von Westen nach Osten def ernteEineReiheNachOsten 111 rnteEineReih end der Hamster soll alle Koerner in einer Reih insammeln er laeuft dabei von Osten nach Westen def ernteEineReiheNachWesten rnteEineReih end der Hamster soll einzelne Koernerreihen abgrasen so lange noch weitere Reihen existieren er unterscheidet dabei ob er die Reihen von Osten oder von Westen aus abgrast laufeInEcke rnteEineReiheNachOsten while weitereReiheLinksVomHamsterExistiert begibDichLinksUmInNaechsteReihe rnteEineReiheNachWesten if weitereReiheRechtsVomHamsterExistiert begibDichRechtsUmInNaechsteReihe rnteEineReiheNachOsten else kehrt end end 10 3 3 Berg erklimmen Im folgenden imperativen Ruby Programm erklimmt der Standard Hamster einen Berg Aufgabe der Hamster soll den Gipfel eines vor ihm stehenden Berges erklimmen der Hamster soll zum Berg laufen def laufeZumBerg while vornFrei vor end end der Hamster soll den Berg erklimmen def erklimmeDenBerg while not gipfelErreicht erklimmeEineStufe end end der Hamster soll eine Stufe erklimmen def erklimmeEineStufe linksUm nun schaut der Hamster nach oben vor der Hamster erklimmt die Mauer rechtsUm der Hamster wendet sich wieder dem Berg zu vor der Hamster s
39. www bluej org ist eine Entwicklungsumgebung f r objektorientierte Java Programme die speziell f r Programmieranf nger entworfen wurde BlueJ richtet sich also an dieselbe Zielgruppe wie das Java Hamster Modell Mit der Entwicklungsumgebung einher geht eine didaktische Methode zur Einf hrung in die objektorientierte Programmierung Ihr zugrunde liegt ein iteratives Vorgehen bei der Einf hrung der Konzepte der objektorientierten Programmierung das unter dem Motto Objekte zuerst steht Eine der gro en St rken von BlueJ ist die M glichkeit des interaktiven Erzeugens von Objekten und des interaktiven Umgangs mit diesen Eine weitere St rke ist die Visualisierung der Programmstruktur durch Diagramme Dagegen liegt die besondere St rke des Java Hamster Modells insbesondere in Verbindung mit dem Hamster Simulator in der Visualisierung der Ausf hrung eines Programms Der Programmierer sieht von Anfang an in einer ansprechenden Umgebung was seine Programme bewirken Was ab Version 2 2 des Hamster Simulators nun m glich ist ist seine Integration in BlueJ Hamster Programme k nnen mit den Werkzeugen und M glichkeiten die BlueJ bietet entwickelt und im Hamster Simulator ausgef hrt werden Konkret bedeutet das an Vorteilen f r Programmieranf nger BlueJ visualisiert die Programmstruktur und erlaubt insbesondere die interaktive Erzeugung von Hamstern und den interaktiven Aufruf von Hamster Befehlen und der Hamster Simulator visualisiert die
40. zusammen mit einem Territorium cccceeeeeeeeeeeeeeeeeeeeeees 40 4 2 13 Gleichzeitiges ffnen eines Hamster Programms und Territoriums 41 4 3 Compilieren von Hamster Programmen 41 4 321 EOMpilieren EEN 41 4 3 2 Beseitigen von Fehlern ee 41 4 3 3 GetzendesCLAGGPATH nn 42 4 4 Verwalten und Gestalten von Hamster Terttorten nennen 42 4 4 1 Ver ndern der Gr e des Hamster TerritoriUms nn 43 4 4 2 Platzieren des Standard Hamsters im Hamster Territorium 43 4 4 3 Setzen der Blickrichtung des Gtondard Hamsters 43 4 4 4 Abfragen und Festlegen der K rneranzahl im Maul des Standard Hamsters 44 4 4 5 Platzieren von K rnern auf Kacheln des Hamster Territorium 44 4 4 6 Platzieren von Mauern auf Kacheln des Hamster Territorium 44 4 4 7 L schen von Kacheln des Hamster Territorium 022002442 nennen 45 4 4 8 Abspeichern eines Hamsier Tertonums 45 4 4 9 Wiederherstellen eines abgespeicherten Hamster Territoriums 45 4 4 10 Umbenennen eines abgespeicherten Hamster Territoriums 46 4 4 11 L schen und Verschieben einer Datei mit einem Hamster Territorium in einen anderen ONAN ss ein 46 4 4 12 Ver ndern der Gr endarstellung des Hamster Territoriums 46 4 5 Ausf hren von Hamster Programmen 46 4 5 1 Starten eines Hamster Programme 47 4 5 2 Stoppen eines Hamsier Programmes 47 4 5
41. 15 10 5 Implementierung DEE 116 Hamstern mit Scratch EE 117 11 1 berblick senken 118 112 EEN 119 11 3 Ein erstes kleines Beispiel 119 11 4 Erstellen von Gcratch Programmen 119 11 4 1 Kalegorienauswahl z B 120 11 4 2 Ee 120 11 4 3 Pr gkammbereiche ee eee das 123 11 4 4 Anmwesungesseduenzen EE 123 11 457 Programme uiios etansa iiet a aii e a aa deia ia 123 1146 1K ntrollstrukiuren ss 124 11 4 7 Prozeduren und boolesche Funktionen sssssssssssesnssesssesrrrnnnnnnsseerrnne 125 11 5 Ausf hren von Gcratch Hamster Programmen 126 11 6 Generieren von Java Hamster Programmen ssssssssssrsnneeesesrrrrnrnreeserrrene 127 Theat Eege ee E 127 12 Hamstern mit endlichen Automaten n neen000aannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnrnneneennnnne 128 12 1 Endliche Automaten Aue aa 128 12 2 Hamster Automaten sen00000annnnnnnnnnennnnnnnnnnnnnnnnnnnrrrnnnnnnnnnrrrrrnennnnnnnrrrreenne 128 12 3 VObaUSoe zung eisen hee Nee re Nhe he Ne A Ate ah 130 12 4 Erstellen von Hamster Automaten ccccccccesceessseeeeeeeceeeecaeeeseeeeeeeeeeeeeeas 130 12 4 1 Zeichen MENU EE 130 KEEN Geet Ee 131 12 4 3 Definition einer Transition 132 12 4 4 Automaten Ee 133 12 5 Weitere Funktionen Aaen ee ees 134 13 Hamstern mit Programmablaufpl nen sssessssssseeennnesseessnrnnnnrrsserrrnnnnnnrneseerrnne 135 13 1 Progr mmabla fpl NE eege 135 192 1 E SE 135 13 3 CAE EEN 136 13 4 Erstellen von Hamster PA
42. 93 210 schemetutorial schemetutorial html ausf hrliches Scheme Tutorial e http cs wwc edu KU PR Scheme html kurzes Scheme Tutorial e http www scheme com tspl2d index hntml The Scheme Programming Language e http www pu informatik uni tuebingen de pfg 2001 scheme schintro v1 4 schin tro_toc html An Introduction to Scheme and its Implementation 7 3 Scheme Hamster Programme Um Scheme Hamster Programme zu entwickeln und zu testen m ssen Sie die Property scheme auf true gesetzt haben siehe Abschnitt 66 5 Dies ist standardmaBig nicht der Fall Anschlie end m ssen Sie eine neue Datei ffnen Men Datei Item Neu und in der Auswahl Scheme Programm ausw hlen Es erscheint eine neue Datei mit folgendem Grundger st define start Territorium Die zweite Zeile ersetzen Sie dabei durch entsprechende Scheme Anweisungen Bspw lasst das folgende Scheme Programm den Hamster zwei Schritte vorlaufen define start Territorium vor vor Territorium Anschlie end m ssen Sie die neue Datei abspeichern Nach dem Speichern k nnen Sie Ihr Scheme Programm durch Dr cken des Start Buttons ausf hren Kompilieren ist nicht notwendig Scheme Programme werden interpretiert d h wenn sie Fehler enthalten werden Sie dar ber zur Ausf hrungszeit informiert 7 4 Grundlagen und Befehle 7 4 1 Territoriumsliste Die grundlegende Datenstruktur des Scheme Hamster Modells ist die Territorium
43. Anklicken eines Objektes mit der Maus gesprochen wird bedeutet das dass Sie den Mauscursor auf dem Bildschirm 29 durch Verschieben der Maus auf dem Tisch ber das Objekt platzieren und dann die im Allgemeinen linke Maustaste dr cken 4 1 2 Tooltipps Als Tooltipps werden kleine Rechtecke bezeichnet die automatisch auf dem Bildschirm erscheinen wenn man den Mauscursor auf entsprechende Objekte platziert siehe Abbildung 5 In den Tooltipps werden bestimmte Informationen ausgegeben SIEGE Abbildung 5 Tooltipp 4 1 3 Button Buttons sind Objekte der Benutzungsoberfl che die man anklicken kann und die daraufhin eine bestimmte Aktion ausl sen siehe Abbildung 6 Buttons besitzen eine textuelle Beschreibung z B OK oder eine Graphik die etwas Uber die Aktion aussagen Sie erkennen Buttons an der etwas hervorgehobenen Darstellung Graphik Buttons sind in der Regel Tooltipps zugeordnet die die zugeordnete Aktion beschreiben xD Abbildung 6 Buttons 4 1 4 Men Men s befinden sich ganz oben in einem Fenster in der so genannten Men leiste siehe Abbildung 7 Sie werden durch einen Text beschrieben Datei Bearbeiten Klickt man die Texte an ffnet sich eine Box mit so genannten Men items Diese bestehen wiederum aus Texten die man anklicken kann Durch Anklicken von Men items werden genauso wie bei Buttons Aktionen ausgel st die im Allgemeinen durch die Texte beschrieben werden Speiche
44. Button von links l sst sich dies ndern Wenn Sie auf den Button klicken erscheint eine Dialogbox Sie sehen eine Zahl die die aktuelle Anzahl an K rnern im Maul des Hamsters angibt Wenn Sie diese Anzahl ndern wollen tippen Sie einfach ber die Tastatur die gew nschte Zahl ein und klicken Sie anschlie end auf den OK Button in der Dialogbox Die Dialogbox wird anschlie end automatisch wieder geschlossen Nun wollen wir auf einigen Kacheln K rner platzieren Hierzu dient der Button K rner setzen siebter Button von links Wenn Sie ihn mit der Maus anklicken wird er aktiviert 21 Der bis jetzt aktivierte Hamster versetzen Button wird automatisch deaktiviert Es kann immer nur ein Button aktiviert sein Solange der K rner setzen Button aktiviert ist k nnen Sie nun auf die Kacheln des Territoriums K rner legen Klicken Sie dazu mit der Maus auf die entsprechende Kachel Es erscheint eine Dialogbox in der Sie die gew nschte Anzahl an K rnern eingeben k nnen Anschlie end m ssen Sie auf den OK Button in der Dialogbox klicken Diese schlie t sich und auf der Kachel sehen Sie die angegebene Anzahl an K rnern Dabei gilt Es werden maximal 12 K rner angezeigt auch wenn dort mehr K rner liegen Wenn Sie die genaue Anzahl an K rnern auf einer Kachel ermitteln m chten fahren Sie einfach mit der Maus ber die Kachel Es erscheint ein Tooltipp in dem die Anzahl an K rnern auf der Kachel angegeben wird Sie k
45. Datenbank wird dabei in einer festen Reihenfolge von oben nach unten durchlaufen Die Reihenfolge der einzelnen Klauseln im Programm spielt dabei also eine wichtige Rolle Beim erfolgreichen Unifizieren eines Teilziels der Zielklausel mit einem Faktum wird nachfolgend mit der Bearbeitung des n chsten Teilziels fortgesetzt Bei der Unifizierung eines Teilziels mit einer Regel Klausel wird der gesamte Inhalt des Regelk rpers der Regel an die Stelle des Teilziels geschrieben Dabei f hrt PROLOG mit der Bearbeitung des ersten Teilziels der gerade ausgew hlten Regel fort Im Falle eines Fehlers sofern kein einziger passender Eintrag in der PROLOG Datenbank f r das aktuelle Ziel gefunden werden konnte legt das PROLOG System ein Backtracking Schritt ein Beim Backtracking geht das Programm zum letzten bekannten Abzweigungspunkt an dem weitere Auswahlm glichkeiten bei der Unifikation der Klauseln bestanden Dabei werden die alten Variablenbelegungen aufgehoben und die n chste Alternativ L sung gew hlt Ist es m glich alle Teilziele der Zielklausel auf diese Weise zu erf llen so liefert das PROLOG System die ermittelten Variablenbelegungen zur ck und beantwortet die Anfrage mit einem true Andernfalls nach dem Ersch pfen aller verf gbarer Backtracking Punkte schl gt die Bearbeitung der Abfrage fehl und das PROLOG System liefert ein false zur ck W hrend der Bearbeitung eines PROLOG Programms f hrt das System bei der Suche nach einer L
46. Die vorherige Liste kann dabei wie folgt geschrieben werden a b c Die Elemente der Liste werden voneinander mit Komma getrennt und in eckige Klammern eingeschlossen Nachfolgend werden einige Beispiele zur Definition von Listen angegeben Mit dem vordefinierten Operator op 3 ist es aber auch m glich alternative Notationen wie zweistellige Infix oder einstellige Pr fix Postfix Operatoren zu definieren In diesem Fall k nnen die Klammern auch weggelassen werden 77 Ll a b c d e f oder Ll a b c d e L2 hamster liebt koerner koerner sind braun L3 eine mauer ist vorne hinten rechts links 8 2 1 2 Aufbau des Programms Ein PROLOG Programm besteht aus einer Menge von Fakten Regeln und Abfragen Jedes dieser Elemente kann durch eine spezielle Form einer PROLOG Klausel ausgedr ckt werden Die allgemeine Form einer PROLOG Klausel hat die folgende Struktur Klauselkopf Klauselk rper Eine PROLOG Klausel in genau dieser Form mit sowohl einem Klauselkopf als auch einem Klauselk rper wird als Regel bezeichnet Bei einer Klausel ohne Klauselk rper handelt es sich um ein Fakt Sollte hingegen der Klauselkopf fehlen so handelt es sich bei einer solchen Definition um eine Anfrage an das PROLOG System Die Abfrage Klausel wird dabei auch Zielklausel genannt Sehen wir uns mal als N chstes die Zusammensetzung einer Klausel am Beispiel einer abstrakten Regel Klausel an Ein
47. Dietrich Boles Daniel Jasper Hamster Simulator Version 2 9 Benutzungshandbuch 28 08 2015 Inhaltsverzeichnis 1 N 4 lt D EE 8 1 1 Das Hamster Modell cccccccccseeeessececcceeeeeeeeeseeseeeeeeeeeeeeeees eaeeeeaeeeeeeaeeeseseeeeees 8 1 2 Der HaniSter Simulator vests crcssneecciosdetands eonrenbtnbadiwnd wesdensdedbbunndessdarcioaboeenbeentansdehon 9 1 3 nderungen in Version 2 9 gegen ber Version 28 9 1 4 nderungen in Release 3 von Version 38 10 1 5 nderungen in Release 2 von Version 38 10 1 6 nderungen in Version 2 8 gegen ber 37 10 1 7 nderungen in Version 2 7 gegen ber 28 10 1 8 nderungen in Version 2 6 gegen ber 2p 11 1 9 nderungen in Version 2 5 gegen ber 24 11 1 10 nderungen in Version 2 4 gegen ber 33 12 1 11 nderungen in Version 2 3 gegen ber 33 12 1 12 nderungen in Version 2 2 gegen ber 31 13 1 12 1 Erstellen von Hamster Programmen unabh ngig vom Editor des SEENEN 13 1 12 2 Hamstern mit BlueJ onan see 14 1 13 nderungen in Version 2 1 gegen ber 20 14 1 14 Anmerkungen zur alten Version 1 des Hamster Simulators 15 Installation und Starten des Hamster Simulators 4444 nnnnnnnennnnnnn nn 17 2 1 Laden und Installation einer Java Lautzetumgebung 44444 gt 17 2 2 Laden und Installation des Hamster Simulators 44 18 2 3 Hamster Simulator unter JDK AEN 18 2 4 Starten des Hamster Gmulators nn 18 Ihr erstes Hamster Programm AE 20 3 1 Gest
48. Feel laf com sun java swing plaf windows WindowsLookAndFeel laf com sun java swing plaf motif MotifLookAndFeel laf javax swing plaf metal MetalLookAndFeel laf org jvnet substance skin SubstanceBusinessLookAndFeel laf org jvnet substance skin SubstanceBusinessBlueSteelLookAndFeel laf org jvnet substance skin SubstanceBusinessBlackSteelLookAndFeel laf org jvnet substance skin SubstanceCremeLookAndFeel laf org jvnet substance skin SubstanceCremeCoffeeLookAndFeel laf org jvnet substance skin SubstanceSaharaLookAndFeel laf org jvnet substance skin SubstanceModerateLookAndFeel laf org jvnet substance skin SubstanceOfficeSilver2007LookAndFeel laf org jvnet substance skin SubstanceOfficeBlue2007LookAndFeel laf org jvnet substance skin SubstanceNebulaLookAndFeel laf org jvnet substance skin SubstanceNebulaBrickWallLookAndFeel laf org jvnet substance skin SubstanceAutumnLookAndFeel laf org jvnet substance skin SubstanceMistSilverLookAndFeel laf org jvnet substance skin SubstanceMistAquaLookAndFeel laf org jvnet substance skin SubstanceDustLookAndFeel laf org jvnet substance skin SubstanceDustCoffeeLookAndFeel laf org jvnet substance api skin SubstanceGeminiLookAndFeel laf org jvnet substance skin SubstanceRavenGraphiteLookAndFeel laf default Standardeinstellung ist default Probieren Sie doch einfach mal das ein oder andere LAF aus Die meisten LAFs stammen brigens aus dem Projekt substance https substance dev java net 5 1 14 python U
49. Grundlage gew hlt Java auch als Sprache des Internet bezeichnet ist eine moderne Programmiersprache die sich in den letzten Jahren sowohl im Ausbildungsbereich als auch im industriellen Umfeld durchgesetzt hat Zum Hamster Modell existieren drei B cher In dem ersten Buch Programmieren spielend gelernt mit dem Java Hamster Modell werden allgemeine Grundlagen der Programmierung erl utert sowie Konzepte der imperativen Programmierung Anweisungen Schleifen Prozeduren Typen Variablen Parameter Rekursion eingef hrt Darauf aufbauend behandelt das zweite Buch Objektorientierte Programmierung spielend gelernt mit dem Java Hamster Modell alle wichtigen Konzepte der objektorientierten Programmierung Objekte Klassen Vererbung Polymorphie Interfaces Exceptions Zugriffsrechte Pakete Im dritten Band Parallele Programmierung spielend gelernt mit dem Java Hamster Modell geht es um die parallele Programmierung mit Java Threads Threads Kommunikation Synchronisation Deadlocks Alle drei B cher sind insbesondere f r Sch ler und Studierende ohne Programmiererfahrung empfehlenswert Die B cher sind als Grundlage f r Programmierkurse sowie zum Selbststudium geeignet Dazu enthalten sie viele Beispielprogramme und bungsaufgaben Erg nzende Materialien werden im Internet unter www java hamster modell de bereitgestellt 1 2 Der Hamster Simulator Auf der Website www java hamster modell de s
50. Im Gro en und Ganzen kann man sagen dient das Editor Fenster zum Editieren Compilieren und Debuggen von Hamster Programmen und das Simulation Fenster zur Gestaltung des Hamster Territoriums und zum Ausf hren von Hamster Programmen 28 Toolbar Territorium Ausgabebereich Simu lation vornFrei true vor vornFrei true vor vornFrei true vor vornFrei false linksUm linksUm linksUm Abbildung 4 Komponenten des Simulation Fensters Damit wurden auch bereits die Hauptfunktionsbereiche des Hamster Simulators genannt e Verwalten und Editieren von Hamster Programmen e Compilieren von Hamster Programmen e Verwalten und Gestalten von Hamster Territorien e Ausf hren von Hamster Programmen e Debuggen von Hamster Programmen Bevor im Folgenden anhand dieser Funktionsbereiche der Simulator im Detail vorgestellt wird werden zuvor noch einige Grundfunktionen graphischer Benutzungsoberflachen erlautert 4 1 Grundfunktionen In diesem Unterabschnitt werden einige wichtige Grundfunktionalit ten graphischer Benutzungsoberfl chen beschrieben Der Abschnitt ist f r diejenigen unter Ihnen gedacht die bisher kaum Erfahrungen mit Computern haben Diejenigen von Ihnen die schon l ngere Zeit einen Computer haben und ihn regelm ig benutzen k nnen diesen Abschnitt ruhig berspringen 4 1 1 Anklicken Wenn im Folgenden von Anklicken eines Objektes oder
51. Maustaste ber die anderen Kacheln Auf allen Kacheln werden unmittelbar Mauern gesetzt Eine Deaktivierung der Mauer Setzen Funktion ist durch Anklicken des Hamster versetzen K rner setzen oder Kachel l schen Buttons und der damit verbundenen Aktivierung der entsprechenden Funktion m glich 4 4 7 L schen von Kacheln des Hamster Territorium Um einzelne Kacheln des Hamster Territoriums zu l schen d h gegebenenfalls vorhandene K rner bzw Mauern zu entfernen m ssen Sie zun chst im Simulation Fenster in der Toolbar den Kachel l schen Button neunter Toolbar Button von links anklicken Dadurch aktivieren Sie die Kachel L schen Funktion Sie erkennen dies daran dass der Hintergrund des Buttons nun dunkler erscheint Solange die Funktion aktiviert ist k nnen Sie nun durch Anklicken einer Kachel diese Kachel l schen Es ist auch m glich mehrere Kacheln gleichzeitig zu l schen Klicken Sie dazu die Maus auf einer der Kacheln und ziehen Sie den Mauscursor bei gedr ckter Maustaste ber die anderen Kacheln Alle Kacheln die nach Loslassen der Maustaste gel scht werden werden durch ein rotes X gekennzeichnet Eine Deaktivierung der Kachel L schen Funktion ist durch Anklicken des Hamster versetzen K rner setzen oder Mauer setzen Buttons und der damit verbundenen Aktivierung der entsprechenden Funktion m glich 4 4 8 Abspeichern eines Hamster Territoriums Sie k nnen einmal gestaltet
52. Ordner befindet sich eine Datei namens settings properties in der der aktuelle CLASSPATH siehe Abschnitt 4 3 3 gespeichert wird 54 5 Properties ber so genannte Properties k nnen sie bestimmte Voreinstellungen des Simulators berlagern 5 1 Vorhandene Properties Die Properties werden in einer Datei namens hamster properties definiert die sich in dem Ordner befinden muss wo sich auch die Dateien hamstersimulator jar bzw hamstersimulator bat befinden Properties bestehen immer aus einem Namen und einem Wert die durch ein Gleichheitszeichen getrennt werden und in derselben Zeile stehen m ssen Tritt ein Name mehrfach in der Property Datei auf ist das unterste Vorkommen g ltig Steht am Anfang einer Zeile ein Zeichen wird die Zeile ignoriert Momentan sind folgende Properties m glich 5 1 1 security Befindet sich in der Datei hamster properties eine Zeile mit dem folgenden Text security false wird der so genannte Security Manager ausgeschaltet Das bedeutet Hamster Programme d rfen auf die Festplatte zugreifen und d rfen Dateien lesen und in Dateien schreiben Aber Vorsicht sollten sie diese Option gesetzt haben empfehle ich Ihnen dringend keine fremden Hamster Programme auszuf hren Sind diese bspw b swillig geschrieben k nnten sie Ihnen prinzipiell die gesamte Festplatte l schen Standardm ig steht in der Property Datei security true Durch Setzen der security Property auf false
53. PS anna ana are aa 137 13 4 1 LO E EE 137 13 42 gt PROGKAMMDCICICN i asus 137 13 243 CEET ee 138 13 4 4 EE 138 13 5 W6ILEresFUNKUONEN ava asa ata aaa Sara Na 139 14 INGER Fragen EE 140 1 Einleitung Programmieranf nger haben h ufig Schwierigkeiten damit dass sie beim Programmieren ihre normale Gedankenwelt verlassen und in eher technisch orientierten Kategorien denken m ssen die ihnen von den Programmiersprachen vorgegeben werden Gerade am Anfang str men oft so viele inhaltliche und methodische Neuigkeiten auf sie ein dass sie das Wesentliche der Programmierung n mlich das L sen von Problemen aus den Augen verlieren 1 1 Das Hamster Modell Das Hamster Modell ist mit dem Ziel entwickelt worden dieses Problem zu l sen Mit dem Hamster Modell wird Programmieranf ngern ein einfaches aber m chtiges Modell zur Verf gung gestellt mit dessen Hilfe Grundkonzepte der imperativen und objektorientierten Programmierung auf spielerische Art und Weise erlernt werden k nnen Programmierer entwickeln so genannte Hamster Programme mit denen sie virtuelle Hamster durch eine virtuelle Landschaft steuern und bestimmte Aufgaben l sen lassen Die Anzahl der gleichzeitig zu ber cksichtigenden Konzepte wird im Hamster Modell stark eingeschr nkt und nach und nach erweitert Prinzipiell ist das Hamster Modell programmiersprachenunabh ngig Zum praktischen Umgang mit dem Modell wurde jedoch bewusst die Programmiersprache Java als
54. SE 116 11 Hamstern mit Scratch Scratch ist eine Programmierumgebung bzw Programmiersprache f r echte Programmieranf nger Anders als bei anderen Programmiersprachen m ssen hier die Programmierer keinen textuellen Sourcecode schreiben Vielmehr setzen sich Scratch Programme aus graphischen Bausteinen zusammen siehe Abbildung 11 1 Die Programmierumgebung unterst tzt dabei das Erstellen von Programmen durch einfache Drag and Drop Aktionen mit der Maus Mehr Informationen zu Scratch findet man im Internet unter Aussehen F hlen Klang Operatoren Malstift Variablen Neues Objekt SF EX Ki EE drehe GE rod EEN EH ion au oshe sux Dr ED ies ie sek zu Dr ED EECH GE andere y um D RETI pralle vom Rand ab E x Position Il y Position E Richtung Abbildung 11 1 Scratch Ein Vorteil von Scratch f r Programmieranf nger ist dass man keine syntaktischen Fehler machen kann und dass sich sehr schnell kleine Programme zusammenklicken lassen Aus diesem Grund haben wir einige Ideen und Konzepte von Scratch in den Hamster Simulator integriert Das Look and Feel ist dabei bis auf wenige Ausnahmen identisch mit dem Look and Feel des Original Scratch siehe Abbildung 11 2 Herzlichen Dank an J rgen Boger der die Scratch Integration im Rahmen seiner Bachelor Arbeit implementiert hat 117 Datei Bearbeiten Compiler Debugger Fenster Extr
55. Unter Ordner namens Programme Kopieren Sie die alten bam Dateien einfach in diesen Ordner oder in Unter Ordner des Ordners Anschlie end k nnen Sie die Dateien ber den Editor des neuen Hamster Simulators ffnen und kompilieren Achtung Sie m ssen die alten ham Dateien auf jeden Fall neu kompilieren Die alten ausf hrbaren class Dateien funktionieren nicht mehr Hamster Territorien die mit Version 1 des Hamster Simulators erstellt und abgespeichert wurden k nnen leider in Version 2 des Hamster Simulators nicht mehr benutzt werden Sie m ssen sie im Simulation Fenster von Version 2 des Hamster Simulators neu erstellen und abspeichern 16 2 Installation und Starten des Hamster Simulators Der Hamster Simulator l uft zur Zeit auf Windows Macintosh Linux und Solaris Rechnern Dort haben wir ihn auch getestet Da er in Java geschrieben ist m sste er eigentlich auch auf allen anderen Rechnern laufen f r die eine Java JVM existiert 2 1 Laden und Installation einer Java Laufzeitumgebung Der Hamster Simulator ist ein in Java geschriebenes Programm Um es ausf hren zu k nnen muss auf Ihrem Rechner eine Java Laufzeitumgebung installiert werden In Java gibt es nun zwei Varianten dies zu tun Die erste Variante ist die Installation eines Java SE Development Kit JDK Das JDK steht in verschiedenen Versionen zur Verf gung Aktuell Stand 21 11 2012 ist die Version 7 manchmal wird sie auch als Versio
56. Version 2 3 unterst tzt der Hamster Simulator das funktionale Programmierparadigma Es ist m glich in der funktionalen Programmiersprache Scheme Hamster Programme zu entwickeln und auszuf hren Herzlichen Dank an Martin Kramer der im Rahmen einer Studienarbeit die Integration von Scheme in den Hamster Simulator vorgenommen hat Dieses Benutzerhandbuch enth lt keine Einf hrung in die funktionale Programmierung und auch keine Einf hrung in die Programmiersprache Scheme Hierzu wird auf die im folgenden genannte Literatur verwiesen Wenn Sie also Scheme lernen wollen sollten Sie sich eines der genannten B cher beschaffen oder die online verf gbare Literatur sichten Ein Problem vieler Anf ngerb cher f r Scheme ist dass nahezu alle Beispiele aus der Welt der Mathematik stammen was Sch ler bzw Studierende die keinen gro en Bezug zur Mathematik haben h ufig abschreckt An dieser Stelle setzt das Hamster Modell an Sie k nnen Scheme quasi unabh ngig von Ihren mathematischen F higkeiten lernen in dem Sie einen Hamster durch ein Territorium steuern und ihn bestimmte nicht mathematische Aufgaben l sen lassen 7 1 Funktionale Programmiersprachen Die wichtigsten Unterschiede funktionaler Programmiersprachen gegen ber imperativen Programmiersprachen sind e Programme funktionaler Programmiersprachen werden als mathematische Funktionen betrachtet e Funktionen werden als Daten behandelt e Seiteneffekte von Funktionen werden sta
57. Wand linksUm laufeZurWand linksUm rnteEineReih end sammle while vornFrei vor sammle end rnteBineReiheUndLaufeZurueck end rnteEineReih kehrt laufeZurueck end end Haupt paul paul la gesammelteKoerner return gesammelt programm AbgrasHamster new 2 3 Hamster WEST 0 ufelInEcke nteEineReiheUndLaufeZurueck paul er paul re while p pau pau 114 chtsUm aul vornFrei l vor l1 rechtsUm paul ernteEineReiheUndLaufezurueck paul rechtsUm end paul schreib Gesammelte Koerner paul gesammelteKoerner to_ s 10 4 Ruby Konsole Mit Hilfe der Ruby Konsole ist es m glich interaktiv Ruby und Ruby Hamster Befehle auszuf hren Die Ruby Konsole k nnen Sie ber das Men Fenster im Editor Fenster ffnen Er erscheint ein neues Fenster auf dem Bildschirm Die Hamster Ruby Konsole funktioniert dabei wie eine normale Python Konsole Zus tzlich zu normalen Ruby Befehlen k nnen Sie jedoch auch Hamster Befehle eingeben Ruby Konsole Eingabe if paul kornDa nimm end jPpaul Hamster new 1 1 Hamster OST 1 gt Hamster steht auf Kachel 1 1 mit Blickrichtung OST und 1 Korn im Maul l gt paul vor gt nil Ausf hren L schen Vor Zur ck Abbildung 10 1 Ruby Konsole Hinweis Die Ruby Konsole und Ruby Programme arbeiten mit unterschiedlichen Ruby Interpretern d h nachde
58. Welt integriert worden Das betrifft nicht nur die Benutzungsoberfl che sondern auch das Modell selbst Werfen Sie dazu einen Blick in Abschnitt 6 Standardm ig werden Sie mit dem Hamster Simulator Java Programme entwickeln Seit Version 2 6 bzw 2 8 ist es jedoch auch m glich Programme in der funktionalen Programmiersprache Scheme der logikorientierten Programmiersprache Prolog der Programmiersprache Python der Programmiersprache Ruby und der visuellen Programmiersprache Scratch zu entwickeln und zu testen Wie Sie dies tun k nnen erfahren Sie in den Abschnitten 7 bis 11 In der Version 2 9 wurde das Hamstern mit endlichen Automaten und Programmablaufpl nen erg nzt siehe die Abschnitt 12 und 13 1 3 nderungen in Version 2 9 gegen ber Version 2 8 Im Wesentlichen wurde der Hamster Simulator um zwei Erweiterungen erg nzt e Es ist nun m glich Hamster Programme durch endliche Automaten auszudr cken siehe Abschnitt 12 e Es ist nun m glich Hamster Programme durch Programmablaufpl ne zu beschreiben und auszuf hren siehe Abschnitt 13 1 4 nderungen in Release 3 von Version 2 8 Es wurden ein paar Fehler beseitigt die sich bei der Umstellung auf das JDK 1 7 eingeschlichen hatten 1 5 nderungen in Release 2 von Version 2 8 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige Erweiterungen betreffen die Scratch Programmierung siehe Kapitel 11 Scratch Hamster Programme lassen sich nun ausdrucke
59. Wir haben versucht es m glichst harmonisch zu integrieren Definition Bei Auswahl von Anweisungen in der Kategorienauswahl erscheint in der Blockpalette ein Button Neue Prozedur ber den eine neue Prozedur definiert werden kann Bei Auswahl von Boolesche Ausdr cke in der Kategorienauswahl erscheint in der Blockpalette ein Button Neue Funktion ber den eine neue boolesche Funktion definiert werden kann Nach Dr cken eines der beiden Buttons wird der Programmierer nach dem Namen der neuen Prozedur bzw Funktion gefragt Der anzugebende Name muss dabei den Java Bezeichner Konventionen entsprechen Nach Dr cken des OK Buttons erscheint in der Blockpalette ein neuer Block der die entsprechende Prozedur bzw Funktion repr sentiert Weiterhin erscheint oben im Programmbereich einer neuer Tab Durch Anklicken eines Tabs wird der entsprechende Prozedur bzw Funktionsrumpf im Programmbereich angezeigt Die aktuelle Prozedur wird durch einen hellblauen Tab angezeigt Die Definition einer Prozedur bzw Funktion ist v llig analog zu der Definition der main Prozedur durch Hineinziehen entsprechender Bl cke m glich siehe oben Wird eine Prozedur bzw Funktion aufgerufen wird dabei die Anweisungssequenz ausgef hrt die an den Prozedurrapfen der entsprechenden Prozedur bzw Funktion angedockt ist Aufruf Die neuen Bl cke die bei der Definition einer Prozedur bzw Funktion in die Blockpalette integriert wurden k nnen an
60. Zun chst aber wird ein Textfeld an dieser Stelle gesetzt in dem der Kommentar eingegeben werden kann Dieser kann durch Enter oder klicken an einen Punkt au erhalb der Eingabe best tigt werden Durch Dr cken der Taste Esc wird das Textfeld verlassen ohne einen Kommentar zu erzeugen Nach Ausf hrung eines Men punktes wird jedes Mal automatisch wieder in den Editieren Modus gewechselt 12 4 2 Editieren Modus In diesem Modus k nnen Kommentare und Zust nde verschoben werden indem das entsprechende Element mit der Maus angeklickt und per Drag and Drop an die gew nschte Stelle gezogen wird Dabei ist es bei Zust nden m glich mehrere gleichzeitig zu verschieben Dazu werden diese angeklickt w hrend die Strg Taste gedr ckt wird Nach Loslassen dieser werden die entsprechenden Zust nde hervorgehoben und sie k nnen nun verschoben werden indem einer dieser Zust nde an die gew nschte Stelle gezogen wird Weiterhin k nnen Zust nde und Kommentare umbenannt bzw der Text ge ndert werden indem ein Textfeld durch einen Doppelklick auf das entsprechende Element ge ffnet wird Bei Zust nden ist die Besonderheit dass Zust nde nicht in z Zahl umbenannt werden d rfen weil es sich um die Standardbenennung der Zust nde handelt Au erdem m ssen sich die Namen aller Zust nde unterscheiden Die Namen m ssen dabei aus Buchstaben und Ziffern bestehen Transitionen k nnen an andere Zielzust nde umgelegt wird indem die Pfeilsp
61. alle Dateien und Unterordner des Ordners unwiderruflich gel scht e Men item Einf gen Wenn Sie zuvor eine Datei mit dessen Popup Mentitem Kopieren kopiert haben k nnen Sie durch Anklicken dieses Items die entsprechende Datei in den aktuellen Ordner einf gen d h die Datei wurde kopiert e Menuitem Umbenennen Mit Hilfe dieses Items k nnen Sie den Namen des Ordners ndern Es ffnet sich eine Dialogbox in der Sie den gew nschten Namen eingeben k nnen M chten Sie einen Ordner samt aller seiner Unterordner und Dateien in einen anderen Ordner verschieben klicken Sie den entsprechenden Ordner im Dateibaum an und verschieben Sie den Mauscursor bei gedr ckter Maustaste ber den Namen des Ordners in den der Ordner verschoben werden soll Der Name verschwindet aus dem vorherigen Ordner und erscheint im neuen Ordner falls dieser ge ffnet ist F hren Sie die Funktion bei gedr ckter Strg Taste durch wird der Ordner samt Inhalt kopiert anstelle von verschoben 4 2 12 Speichern zusammen mit einem Territorium Mit dem Speichern mit Territorium Button f nfter Toolbar Button von links k nnen Sie das aktuelle Hamster Programm zusammen mit dem aktuellen Territorium speichern Das Territorium bekommt dabei denselben Namen wie das Hamster Programm Analoges gilt f r den Speichern mit Territorium Als Button sechster Toolbar Button von links 40 4 2 13 Gleichzeitiges ffnen eines Hamster Programms und
62. alog zu anderen Bl cken verwendet werden Prozedurbl cke sind dabei spezielle Anweisungsbl cke Funktionsbl cke sind spezielle Boolesche Ausdruck Bl cke Handhabung Durch Doppelklick auf einen Prozedur bzw Funktionsblock in der Blockpalette wird die entsprechende Funktion im Programmbereich ge ffnet Durch Anklicken des entsprechenden Tabs im Programmbereich l sst sich zwischen verschiedenen Prozeduren und Funktionen hin und her wechseln Zu jeder Prozedur bzw Funktion existiert ein Popup Men das sich durch Anklicken mit der Maus rechte Maustaste ber dem entsprechenden Block in der Blockpalette oder 125 dem Tab im Programmbereich ffnen l sst Im Popup Men existieren zwei Ment ltems zum Umbenennen und L schen von Prozeduren und Funktionen Besonderheiten Feht am Ende der Ausf hrung einer booleschen Funktion eine boolesche return Anweisung so wird automatisch der Wert true geliefert Dasselbe gilt f r den Fall der Ausf hrung einer normalen return Anweisung innerhalb einer booleschen Funktion Wird innerhalb einer Prozedur eine boolesche return Anweisung ausgef hrt wird der gelieferte Wert ignoriert Auslagern von Bl cken M chte man ganze Stapel oder Teile von Stapeln in Prozeduren bzw Funktionen auslagern kann man das erreichen indem man oberhalb eines Blockes ein Popup Men aktiviert und hierin das Men ltem Auslagern in Prozedur bzw Auslagern in Funktion anklickt Es wird dann ei
63. altung eines Hamster Termtoums 21 3 2 Eingeben eines Hamster Programmes 23 3 3 Compilieren eines Hamsier Progoramms n 24 3 4 Ausf hren eines Hamster Programme EE 25 3 5 Debuggen eines Hamster Programmes EEN 26 3 6 ZUsammenlassuhd sect cance hsttiaysnd setae Saunegenispechidsrmecsedeenasscdaraeccbomedeudaumeatie 27 Bedienung des Hamster Simulators u 28 41 SHEI 29 Gu DN et 29 2 1 2 MOO tele 30 AI BUTON E 30 EE CEA EE 30 4 1 9 e Kee EE 31 4 1 6 lt Pop up Men ne cata iia ach 31 4 1 7 Eingabefeld ee ee lese 32 41 1 9 BITE 00 610 Ve aa an ee eae a a N a N N er ehe 32 4 1 9 D teiausw hl DialogBboX nenns ana 33 AW D telbaln EE 34 4 2 Verwalten und Editieren von Hamster Programmen 34 4 2 1 Schreiben eines neuen Hamster Programmes 36 4 2 2 ffnen eines existierenden Hamster Programms s ssesessiseieiererererrereera 37 4 2 3 ndern eines existierenden Hamster Programmes s s ssisessiseieiererererrereers 38 4 2 4 L schen eines existierenden Hamster ProgrammsS nn 38 4 2 5 Umbenennen eines existierenden Hamster ProgrammsS gt 38 4 2 6 Verschieben eines existierenden Hamster Programms in einen anderen Ordner 38 4 2 7 Kopieren eines existierenden Hamster Programms in einen anderen Ordner 38 4 2 8 Drucken eines Hamster Programmes 39 4 2 9 Schlie en eines ge ffneten Hamster Programmes 4 44 39 4 2 10 E Get Eer DEE 39 4 2 11 Verwaltung von Ordnern EE 40 4 2 12 Speichern
64. ammen mit der Information welche L sungsmethode vorgesehen ist in den Programmcode eingef gt Logische Programmiersprachen geh ren zu den deklarativen Programmiersprachen und haben ihre Urspr nge im Forschungsgebiet K nstliche Intelligenz 73 In einem imperativen Programm wird genau beschrieben wie und in welcher Reihenfolge ein Problem zu l sen ist Im Gegensatz dazu wird in einem logikbasierten Programm idealerweise nur beschrieben was gilt Das wie ist bereits durch die L sungsmethode vorgegeben Die L sung wird aus den vorhandenen Regeln hergeleitet Meistens wird schon nur eine Menge von Regeln als das Programm bezeichnet wenn klar ist welche L sungsmethode dazugeh rt N mlich die einzige in der vom regelbasierten System bereit gestellten Inferenzmaschine verwirklichte Die bekannteste logische Programmiersprache ist Prolog 8 2 Die Programmiersprache Prolog Die Programmiersprache PROLOG fr PROgrammation en LOGique wurde Anfang 70er Jahre Alain Colmerauer und Philippe Roussel an der Universit t von Marseille entwickelt und erstmalig implementiert Die zahlreichen bereits gemachten Erfahrungen auf dem Gebiet der automatischen Beweisf hrung mathematischer S tze deren Entwicklung in dem Moment vorerst nur innerhalb der Logik vorangetrieben wurde lieferten die Ausgangsbasis zur Entwicklung der Sprache Die Aufstellung der wesentlichen theoretischen Grundlagen zur logischen Programmierung weicht bis in die Mitte de
65. ann ein Operation Element d h ein Hamster Befehl in den Programmbereich gebracht werden e Verzweigung Element Mit diesem roten Symbol kann ein Verzweigung Element d h ein Hamster Testbefehl in den Programmbereich gebracht werden e Unterprogramm Element Mit diesem orangenem Element kann ein neues Unterprogramm Element in den Programmbereich gebracht werden e Kommentar Element Mit dem Kommentar Element kann ein neues Kommentar Element in den Programmbereich gebracht werden e Pfeil Element Durch Klicken auf den Pfeil l sst sich der Pfeil Zeichnen Modus ein und ausschalten siehe Abschnitt 13 4 4 Die Erzeugung eines Elementes mit Ausnahme von Pfeilen erfolgt dabei auf die Art und Weise dass das entsprechende Element im Auswahl Men angeklickt und die Maus bei gedr ckter Maustaste in den Programmbereich gezogen wird Draggen L sst man die Maustaste los erscheint eine Elementtyp spezifische Abfrage und anschlie end wird das Element im Programmbereich angezeigt Aus Gr nden einer besseren bersichtlichkeit ist dem Programmbereich ein unsichtbares Raster hinterlegt das daf r sorgt dass Elemente nur an bestimmten Stellen stehen k nnen In dieses Raster schnappen die Elemente ein 13 4 2 Programmbereich Der Programmbereich enth lt Hamster PAPs Oberhalb des Programmbereichs sind f r das Hauptprogramm main sowie definierte Unterprogramme Tabs angebracht Durch Anklicken eines Tabs k nnen Sie in den
66. aphen des Hamster Automaten in einem Kreis neu angeordnet Auswahl der Art des Hamster Automaten Durch Auswahl einer der beiden Punkte deterministisch und nicht deterministisch wird der entsprechende Typ dem Hamster Automaten zugeordnet Dies wirkt sich bei der Ausf hrung des Hamster Automaten Programmes aus da bei einem deterministischen Hamster Automaten Fehlermeldungen geworfen werden wenn es einen Zustand mit mehreren ausf hrbaren Transitionen gibt 12 5 Weitere Funktionen Ausf hrung Wie andere Programme auch k nnen Hamster Automaten gestartet gestoppt pausiert und fortgesetzt werden W hrend der Ausf hrung werden die gerade aktiven Elemente rot hervorgehoben Auch eine schrittweise Ausf hrung ist m glich Funktion Schritt hinein Speichern Laden Hamster Automaten k nnen bspw ber das Men Datei gespeichert und sp ter wieder geladen werden Im Dateibaum im Editorfenster werden entsprechende Dateien durch das Symbol gelbes K stchen mit rotem Punkt dargestellt Drucken Hamster Automaten k nnen bspw ber das Men Datei gedruckt werden Generieren ber das Men ltem Generieren im Men Datei l sst sich aus einem Hamster Automaten ein gleichbedeutendes imperatives Java Hamster Programm generieren 134 13 Hamstern mit Programmablaufplanen Seit der Version 2 9 unterst tzt der Hamster Simulatorr das Hamstern mit Programmablaufplanen Flowcharts Herzlichen Dank an Gerri
67. as Diskettensymbol im Karteireiter deutet an dass es sich um eine Datei handelt in der Anderungen durchgef hrt wurden die noch nicht abgespeichert worden sind Im Eingabebereich erscheint ein voreingestellter Programmrahmen Im Eingabebereich k nnen Sie nun wie in anderen Editoren auch mit Hilfe der Tastatur Zeichen also Sourcecode eingeben Der Editor unterst tzt brigens Syntax Highlighting d h normaler Sourcecode wird schwarz Java Schl sselw rter werden violett Kommentare gr n und Stringliterale blau dargestellt 36 Es ist im Eingabebereich m glich mehrere Dateien gleichzeitig zu bearbeiten F r jede ge ffnete Datei existiert ein Karteireiter siehe auch Abbildung 15 Welche Datei sich aktuell im Eingabebereich in Bearbeitung befindet erkennen Sie an dem etwas helleren Karteireiter Durch Anklicken eines Karteireiters k nnen Sie den entsprechenden Sourcecode in den Eingabebereich laden Bei einem derartigen Wechsel der Datei wird nicht automatisch gespeichert Kompilieren Debugger Info jole sie ae olli AllroundHamster MeinErstesHamsterProgramm SammelndeHamster void maint iter amm imst Abbildung 15 Karteireiter Zum Abspeichern des von Ihnen editierten Textes klicken Sie bitte den Speichern Button an dritter Toolbar Button von links Handelt es sich um eine bereits angelegte Datei wird automatisch in diese Datei gespeichert Handelt es sich um eine neu angelegte D
68. as Hilfe oa Anweisungen MEO Boolesche Ausdricke nimmAlle Steuerung solange vornFrei nimmAlle verlasse liefere vor linksUm nimm gib main nimmAlle Abbildung 11 2 Scratch Hamster Simulator 11 1 berblick Das Scratch Hamster Modell unterst tzt folgende Komponenten bzw Konzepte e Die vier Grundbefehle des Hamsters vor linksUm gib und nimm sind als Anweisungsbl cke vordefiniert e Es lassen sich neue Befehle als Prozeduren definieren die als neue Anweisungsbl cke repr sentiert werden e Die drei Testbefehle des Hamsters vornFrei kornDa und maulLeer sind als Boolesche Ausdruck Bl cke vordefiniert Weiterhin gibt es die Boolesche Ausdruck Bl cke true und false e Mittels entsprechender Boolesche Ausdruck Bl cke f r die booleschen Operatoren nicht und und oder k nnen komplexe boolesche Ausdr cke erstellt werden Als Operanden sind dabei beliebige andere Boolesche Ausdruck Bl cke einsetzbar e Es lassen sich neue Testbefehle als boolesche Funktionen definieren die als neue Boolesche Ausdruck Bl cke repr sentiert werden e Als Kontrollstrukturen zur Programmsteuerung sind die if Anweisung die if else Anweisung die while Schleife und die do while Schleife als spezielle Anweisungsbl cke falls falls sonst solange wiederhole solange integriert 118 Diesen k nnen Boolesche Ausdruck Bl cke
69. atei erscheint eine Dateiauswahl Dialogbox Hier m ssen Sie nun den Namen Ihres Programms angeben Achtung Der Name muss ein g ltiger Java Bezeichner sein ansonsten erscheint eine Fehlermeldung Dateien mit Hamster Programmen haben immer die Endung ham Die k nnen Sie m ssen Sie aber nicht beim Dateinamen eingeben Im letzteren Fall wird die Endung automatisch erg nzt Nachdem Sie ein neues Programm abgespeichert haben erscheint der angegebene Name im Dateibaum des Editorfensters Au erdem zeigt nun der Karteireiter anstelle von NeuerHamster den Namen an Das Diskettensymbol ist verschwunden d h alle nderungen sind gespeichert Wenn an einer Datei keine nderungen vorgenommen wurden ist ein Speichern brigens nicht m glich der Speichern Button ist ausgegraut Eine Alternative zum Speichern Button stellt der Speichern Als Button dar vierter Toolbar Button von links Hiermit k nnen Sie den eingegebenen bzw ge nderten Text in eine andere als die aktuelle Datei speichern Dazu erscheint eine Dateiauswahl Dialog box in der Sie den gew nschten Namen eingeben m ssen Im Dateibaum ist brigens auch der Typ eines Programms ersichtlich Bei imperativen Programmen ist dem Namen ein einzelner blauer Pfeil vorangestellt bei objektorientierten Programmen drei Pfeile in den Farben blau gelb und rot und Klassen erkennen Sie an einem blauen Pfeil in einem Rechteck 4 2 2 ffnen eines existierenden Hamster
70. ateinamen ein Dies muss ein g ltiger Java Bezeichner sein zum Beispiel MeinErstesHamster Programm Der Dateiname erh lt brigens automatisch die Endung ham Anschlie end klicken wir den OK Button Damit ist unser Programm in der entsprechenden Datei abgespeichert Ihnen sicher von anderen Editoren bzw Textverarbeitungsprogrammen bekannte Funktionen wie Ausschneiden Kopieren Einf gen R ckg ngig und Wiederherstellen k nnen Sie ber das Bearbeiten Men bzw die entsprechenden Buttons in der Toolbar ausf hren siebter bis elfter Button von links Weiterhin gibt es einen Offnen Button zum ffnen von Dateien die irgendwann einmal abgespeichert worden sind zweiter Button von links Es erscheint eine Dateiauswahl Dialogbox in der Sie die entsprechende Datei durch Mausklick ausw hlen Nach dem Anklicken des OK Buttons erscheint das Programm das die Datei enth lt im Eingabebereich Eine Alternative zum ffnen Button ist das Anklicken des entsprechenden Dateinamens im Dateibaum auf der linken Seite Wenn Sie ein Programm in einer anderen Datei abspeichern m chten nutzen Sie den Speichern Als Button vierter Button von links Mit dem Schlie en Button f nfter Button von links k nnen Sie eine Datei wieder schlie en Das entsprechende Programm verschwindet dann aus dem Eingabebreich Zu guter Letzt gibt es noch den Drucken Button sechster Button von links zu
71. ative Herleitung f r das Pr dikat P suchen Dies ist aber unn tig da wir schon wissen dass P bereits bewiesen werden kann Im anderen Fall sollte die erste Berechnung von P fehlschlagen w rde das PROLOG System mit der Bearbeitung der zweiten Klausel der Prozedur if then else P O R C2 forfahren Hier findet aber nochmals die Berechnung von not P statt was ebenfalls berfl ssig ist da P bereits bei der ersten Klausel als falsch ausgewertet wurde Zur Behandlung solcher Probleme gibt es in PROLOG den Cut Pr dikat Dieser wird im nachfolgenden Abschnitt n her beschrieben 8 2 5 1 Cut Pr dikat Der Cut ist ein nullstelliges Pr dikat welches in PROLOG im Programm mit einem Zeichen geschrieben wird Dieses Pr dikat ist immer war und es hat die Eigenschaft das Backtracking im Programm zu verhindern Die Funktionsweise des Pr dikats an sich ist sehr einfach F r alle Ziele vor einem Cut Symbol werden keine Alternativl sungen auch wenn diese vorhanden sind angenommen Die Variablenbelegungen vor dem Cut k nnen nicht mehr aufgehoben werden Das in dem oberen Abschnitt aufgef hrte Beispiel kann mit dem Cut Pr dikat wie folgt erg nzt werden if then elsefP R gt Pp ty Os if then 6 se PyOyR Re oe QQA N e oe Diese Implementierung ist deutlich effizienter Beim Fehlschlagen des Pradikats Q analog wie im oberen Beispiel findet in diesem Fall kein Backtracking mehr statt Die Antwort auf die Abfrag
72. aum und das gro e Feld rechts ist der Eingabebereich f r den Sourcecode Bevor wir ein Hamster Programm eintippen m ssen wir zun chst einen neuen Programmrahmen erzeugen Dazu klicken wir auf den Neu Button erster Button von links in der Toolbar Es erscheint eine Dialogbox in der wir uns f r den Typ des Programms imperatives Programm objektorientiertes Programm Klasse oder Scheme Programm entscheiden m ssen Unser erstes Programm soll ein imperatives Hamster Programm gem Band 1 der zwei Hamster B cher werden Daher w hlen wir dies aus und klicken den OK Button Der Eingabebereich wird heller und es erscheint ein Programmrahmen f r imperative Hamster Programme void main Unser erstes Programm soll bewirken dass der Hamster in dem gerade von uns gestalteten Territorium zwei K rner frisst Wir klicken in die zweite Reihe des Eingabebereiches und tippen dort wie in einem normalen Editor bzw Textverarbeitungsprogramm wie Microsoft Word die entsprechenden Hamster Befehle ein so dass letztlich folgendes im Eingabebereich steht void main vor vor linksUm vor vor nimm4 void nimm4 nimm nimm nimm nimm r 23 Das ist unser erstes Hamster Programm Wir m ssen es als n chstes in einer Datei abspeichern Dazu klicken wir den Speichern Button dritter Button von links Es erscheint eine Dateiauswahl Dialogbox Hier geben wir den gew nschten D
73. ber die Property python kann die F higkeit des Hamster Simulators Python Programme zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Kapitel 9 Befindet sich in der Datei hamster properties eine Zeile mit dem Text python false ist der Python Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text python true ist der Python Modus eingeschaltet Standardm ig ist der Python Modus ausgeschaltet 5 1 15 ruby ber die Property ruby kann die F higkeit des Hamster Simulators Ruby Programme zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Kapitel 10 Befindet sich in der Datei hamster properties eine Zeile mit dem Text ruby false ist der Ruby Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text ruby true ist der Ruby Modus eingeschaltet Standardm ig ist der Ruby Modus ausgeschaltet 60 5 1 16 scratch Uber die Property scratch kann die F higkeit des Hamster Simulators Scratch Programme zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Kapitel 11 Befindet sich in der Datei hamster properties eine Zeile mit dem Text scratch false ist der Scratch Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text scratch true ist der Scratch Modus eingeschaltet Standardm ig ist der Scratch Modus eingeschaltet Seit Version 2 8
74. bool Eine vordefinierte Klasse namens Hamster kann f r objektorientierte Python Programme genutzt werden Die Klasse stellt folgende Methoden zur Verf gung vor self linksUm self gib self nimm self vornFrei self gt bool kornDa self gt bool maulLeer self gt bool schreib self string liesZeichenkette self string gt string liesZahl self string gt int getReihe self gt int getSpalte self gt int getBlickrichtung self gt int Hamster NORD Hamster SUED Hamster OST Hamster WEST getAnzahlKoerner self gt int getStandardHamster gt Hamster Die Klasse definiert 2 Konstruktoren Hamster self reihe spalte blickrichtung anzahlKoerner Hamster self hamster 9 2 1 Python Bibliothek einbinden Wenn Sie Module aus der Standard Bibliothek von Python nutzen und importieren wollen m ssen Sie zus tzlich folgendes tun 1 Sie m ssen Jython downloaden http www jython org 95 2 Sie m ssen Jython installieren bspw ins Verzeichnis C Program Files jython2 5 1 3 Jetzt gibt es zwei Alternativen a Entweder verschieben kopieren Sie dann das Jython Lib Verzeichnis C Program Files jython2 5 1 Lib in das Uhnterverzeichnis lib des Hamster Simulator Ordners so dass es in lib ein Unterverzeichnis Lib gibt Oder Sie schreiben die folgende Zeile in die Datei hamstersimulator bat im Ha
75. cessing and otherwise using this software Jython in source or binary form and its associated documentation 2 Subject to the terms and conditions of this License Agreement PSF hereby grants Licensee a nonexclusive royalty free world wide license to reproduce analyze test perform and or display publicly prepare derivative works distribute and otherwise use Jython alone or in any derivative version provided however that PSF s License Agreement and PSF s notice of copyright i e Copyright c 2007 Python Software Foundation All Rights Reserved are retained in Jython alone or in any derivative version prepared by Licensee 104 3 In the event Licensee prepares a derivative work that is based on or incorporates Jython or any part thereof and wants to make the derivative work available to others as provided herein then Licensee hereby agrees to include in any such work a brief summary of the changes made to Jython 4 PSF is making Jython available to Licensee on an AS IS basis PSF MAKES NO REPRESENTATIONS OR WARRANTIES EXPRESS OR IMPLIED BY WAY OF EXAMPLE BUT NOT LIMITATION PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF JYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS 5 PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF JYTHON FOR ANY INCIDENTAL SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING DISTRIBUTING
76. chte Maustaste dr ckt Genauso wie bei normalen Men s erscheint dann eine Box mit Men items 31 I elep eip DE IK hleinErstes paul SammelHa Sammelnde IT L schen Ia Kopieren E Dei Umbenennen Abbildung 9 Popup Men 4 1 7 Eingabefeld Eingabefelder dienen zur Eingabe von Zeichen siehe Abbildung 10 Positionieren Sie dazu den Mauscursor auf das Eingabefeld und klicken Sie die Maus Anschlie end k nnen Sie ber die Tastatur Zeichen eingeben die im Eingabefeld erscheinen 4 1 8 Dialogbox Beim Ausl sen bestimmter Aktionen erscheinen so genannte Dialogboxen auf dem Bildschirm siehe Abbildung 10 Sie enthalten in der Regel eine Menge von graphischen Objekten wie textuelle Informationen Eingabefelder und Buttons Wenn eine Dialogbox auf dem Bildschirm erscheint sind alle anderen Fenster des Programms f r Texteingaben oder Mausklicks gesperrt Zum Schlie en einer Dialogbox d h um die Dialoxbox wieder vom Bildschirm verschwinden zu lassen dienen in der Regel eine Menge an Buttons die unten in der Dialogbox angeordnet sind Durch Anklicken eines OR Buttons wird dabei die der Dialogbox zugeordnete Aktion ausgel st Durch Anklicken des Abbrechen Buttons wird eine Dialogbox geschlossen ohne dass irgendwelche Aktionen ausgel st werden Spalten 10 Zeilen 10 Abbildung 10 Dialogbox mit Eingabefeldern 32 4 1 9 Dateiauswahl Dialogbox Dateiauswahl Dialogboxen sind spezielle Dial
77. cken einer Territorium Datei im Dateibaum wird das entsprechende Territorium im Simulation Fenster geladen Achtung Der Zustand des Hamster Territoriums der vor dem Ausf hren der Territorium Offnen Funktion G ltigkeit hatte ist unwiderruflich verloren Speichern Sie ihn daher gegebenenfalls vorher ab 4 4 10 Umbenennen eines abgespeicherten Hamster Territoriums Um eine Datei mit einem abgespeicherten Hamster Territorium umzubenennen klicken Sie bitte den Territorium ffnen Button an zweiter Toolbar Button von links Es ffnet sich eine Dateiauswahl Dialogbox Klicken Sie dann im mittleren Bereich der Dateiauswahl Dialogbox zweimal mit Pause zwischendurch auf den Namen der Datei Die textuelle Darstellung des Namens wird dann zu einem Eingabefeld in der man ber die Tastatur den Namen ver ndern kann Klicken Sie anschlie end den OK Button wenn Sie die umbenannte Datei gleich ffnen wollen oder den Abbrechen Button wenn Sie nur eine Umbenennung vornehmen wollen Alternativ k nnen Sie auch im Dateibaum des Editor Fensters ein Popup Men oberhalb einer Territorium Datei aktivieren und hierin die Funktion Umbenennen ausw hlen 4 4 11 L schen und Verschieben einer Datei mit einem Hamster Terri torium in einen anderen Ordner Das L schen und Verschieben einer Datei mit einem abgespeicherten Territorium ist analog zu Hamster Programmen ber den Dateibaum im Editor Fenster m glich 4 4 12 Ver ndern der G
78. d Informatik in Amsterdam als Nachfolger f r die Programmier Lehrsprache ABC entwickelt und war urspr nglich f r das verteilte Betriebssystem Amoeba gedacht Der Name geht nicht etwa auf die gleichnamige Schlangengattung Pythons zur ck sondern bezog sich urspr nglich auf die englische Komikertruppe Monty Python Trotzdem etablierte sich die Assoziation zur Schlange Python wurde mit dem Ziel entworfen m glichst einfach und bersichtlich zu sein Dies soll durch zwei Ma nahmen erreicht werden Zum einen kommt die Sprache mit relativ wenigen Schl sselw rtern aus zum anderen ist die Syntax reduziert und auf bersichtlichkeit optimiert Dies f hrt dazu dass Python eine Sprache ist in der schnell und einfach programmiert werden kann Sie ist daher besonders dort geeignet wo bersichtlichkeit und Lesbarkeit des Codes eine herausragende Rolle spielen zum Beispiel in der Teamarbeit bei Besch ftigung mit dem Quelltext nach l ngeren Pausen oder bei Programmieranf ngern Python ist eine Multiparadigmensprache Das hei t Python zwingt den Programmierer nicht zu einem einzigen bestimmten Programmierparadigma sondern erlaubt es das f r die jeweilige Aufgabe am besten geeignete Paradigma zu w hlen Objektorientierte und strukturierte Programmierung werden vollst ndig unterst tzt weiterhin gibt es Spracheigenschaften f r funktionale und aspektorientierte Programmierung aus Wikipedia 9 1 Die Programmiersprache Python Im I
79. d main while vornFrei vor 2 3 S SammelHamster 4 rechtsUm 6 ff 8 gt sammeln gt CH scheme SchemeBeispiele void kehrt 9 linksUm 10 linksUm H d 13 void rechtsUm 14 kehrt 15 linksUm 16 17 Spalte Abbildung 1 Editor Fenster Mom tex aa a gt vornFrei true vor vornFrei true vor vornFrei true vor vornFrei false linksUm linksUm linksUm Abbildung 2 Simulation Fenster 20 Im Folgenden wird im Detail beschrieben was Sie machen m ssen um Ihr erstes Hamster Programm zu schreiben und auszuf hren Insgesamt m ssen k nnen f nf Stationen durchlaufen werden e Gestaltung eines Hamster Territoriums e Eingeben eines Hamster Programms e Compilieren eines Hamster Programms e Ausf hren eines Hamster Programms e Debuggen eines Hamster Programms 3 1 Gestaltung eines Hamster Territoriums Als erstes wollen wir ein Hamster Territorium aufbauen in dem unser Programm ablaufen soll Das geschieht im Simulation Fenster siehe auch Abbildung 2 In der Mitte sehen wir das Hamster Territorium dar ber eine so genannte Toolbar mit graphischen Buttons Fahren Sie einfach mal mit der Maus ber die einzelnen Buttons der Toolbar dann erscheint jeweils ein Tooltipp der beschreibt wozu dieser Button dient Zun chst werden wir die Gr e des Territoriums anpassen Klicken Sie
80. d t fa Y sind unifizierbar wenn X durch a und Y durch b ersetzt wird Die dabei gesuchte Substitution lautet o X a Y b e Die Terme t fla b und t fc Y sind nicht unifizierbar da keines der ersten Argumente der Terme eine Variable beinhaltet e Die Terme t F und t Km WO sind unifizierbar wenn F f m W d Y o F f m W d Y e Die Terme t f m X xX Y und t f Z a p Z sind unifizierbar wenn o X a Zima Y p m a Auf eine aquivalente Art und Weise erfolgt die Unifikation von Listen Nachfolgend werden einige Beispiele der Unifikation mit den Listen dargestellt Bei der Schreibweise der Listen wird dabei das Symbol zur Trennung vom Kopf und dem Rest der Liste verwendet 79 Beispiele e t a b C und t De d sind unifizierbar mit o C e fl D a b e t a 6 c und t A B Z sind unifizierbar mit o A a B b Z c e t a und t A B sind unifizierbar mit o A a BI 8 2 2 2 Resolutionsalgorithmus Der Resolutionsalgorithmus bildet die Grundlage f r die automatische Beweisf hrung von PROLOG Klauseln Der Algorithmus verwendet das Verfahren der Unifikation sowie das Verfahren der automatischen R cksetzung das Backtracking Zur Erf llung einer Zielklausel wird versucht alle Teilziele einer Klausel nacheinander von links nach rechts abzuarbeiten und zu erf llen F r jedes der Teilziele wird versucht dieses mit den in dem Programm befindlichen Klauseln zu unifizieren Die Programm
81. dem Text indent true ist die Spaltenausrichtung eingeschaltet Das ist der Standard Befindet sich in der Datei hamster properties eine Zeile mit dem Text indent false ist die Spaltenausrichtung ausgeschaltet ber das Menu Extras kann der indent Modus auch w hrend der Programmausf hrung noch ge ndert werden 5 1 8 color ber die Property color kann die Farbe des Standard Hamsters ge ndert werden Voreingestellt ist BLAU M glich sind folgende Farben BLAU BLUE ROT RED GRUEN GREEN GELB YELLOW CYAN MAGENTA ORANGE PINK GRAU GRAY WEISS und WHITE Weiterhin wurde f r objektorientierte Programme in der Klasse Hamster ein zus tzlicher Konstruktor eingef hrt bei dem als f nften Parameter die Farbe des Hamsters angegeben werden kann Die Klasse Hamster stellt hierf r entsprechenden Konstanten zur Verf gung public final static int BLAU 0 public final static int BLUE 0 public final static int ROT 1 public final static int RED 1 public final static int GRUEN 2 public final static int GREEN 2 public final static int GELB 3 public final static int YELLOW 3 public final static int CYAN 4 public final static int MAGENTA 5 public final static int ORANGE 6 public final static int PINK 7 public final static int GRAU 8 pub
82. der Ausf hrung nach Anklicken des Pause Buttons m glich 126 11 6 Generieren von Java Hamster Programmen Seit der Version 2 8 2 des Hamster Simulators ist es m glich aus Scratch Hamster Programmen quivalente imperative Java Hamster Programme zu generieren ffnen Sie dazu das umzuwandelnde Scratch Hamster Programm und w hlen Sie im Men Datei den Eintrag Generieren Es ffnet sich im Eingabebereich des Editor Fensters ein neuer Karteireiter mit dem generierten Java Hamster Programm Es ist zu beachten dass bei der Generierung unter Umst nden Java Programme entstehen die sich nicht compilieren lassen Hintergrund hierf r ist dass return Anweisungen in Scratch anders behandelt werden als in Java Sie m ssen also unter Umst nden noch fehlende return Anweisungen in das generierte Java Programm integrieren 11 7 Beispielprogramme Im Unterordner scratch des Ordners beispielprogramme finden Sie einige Scratch Hamster Programme als Beispiele 127 12 Hamstern mit endlichen Automaten Seit der Version 2 9 unterst tzt der Hamster Simulator das Hamstern mit endlichen Automaten Die Idee hierzu wurde von Kara dem Marienk fer bernommen siehe http www swisseduc ch informatik karatojava kara Herzlichen Dank an Raffaela Ferrari die im Rahmen ihrer Bachelorarbeit die Integration dieses Konzeptes in den Hamster Simulator vorgenommen hat 12 1 Endliche Automaten Die grundlegende Theorie endlich
83. e prologhamster nimm ttyflush read Return call Return nimm Rufe nimm beim Hamster auf write prologhamster nimm ttyflush read Return call Return false gip s hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaul 89 korn Reihe Spalte AnzahlKoerner AnzahlKoernerImMaul gt 0 AnzahlKoernerImMaulNeu is AnzahlKoernerImMaul 1 AnzahlKoernerNeu is AnzahlKoerner 1 Aktualisiere die Datenbank retract hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaul retract korn Reihe Spalte AnzahlKoerner assert hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaulNeu assert korn Reihe Spalte AnzahlKoernerNeu Rufe gib beim Hamster auf write prologhamster gib ttyflush read Return call Return falls es noch keine koerner auf dieser Kachel gibt gip hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaul AnzahlKoernerImMaul gt 0 AnzahlKoernerImMaulNeu is AnzahlKoernerImMaul 1 AnzahlKoernerNeu is 1 Aktualisiere die Datenbank retract hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaul assert hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaulNeu assert korn Reihe Spalte AnzahlKoernerNeu Rufe gib beim Hamster auf write prologhamster gib ttyflush read Return call Return gib Rufe gib beim Hamster auf write prologhamster gib ttyflush read Return ca
84. e Hamster Territorien in einer Datei abspeichern und sp ter wieder laden Zum Abspeichern des aktuellen Territoriums dr cken Sie bitte den Territorium speichern Button dritter Toolbar Button von links Es ffnet sich eine Dateiauswahl Dialogbox Hierin k nnen Sie den Ordner ausw hlen und den Namen einer Datei eingeben in die das aktuelle Territorium gespeichert werden soll Namen von Dateien mit Hamster Territorien bekommen brigens automatisch die Endung ter Mit dem Speichern mit Territorium Button des Editor Fensters haben Sie auch die M glichkeit das aktuelle Hamster Programm zusammen mit dem aktuellen Territorium abzuspeichern Das Territorium wird dabei in einer dem Hamster Programm gleichnamigen Territorium Datei abgespeichert 4 4 9 Wiederherstellen eines abgespeicherten Hamster Territoriums Abgespeicherte Hamster Territorien k nnen mit dem Territorium ffnen Button zweiter Toolbar Button von links wieder geladen werden Klicken Sie hierzu den Button Es erscheint eine Dateiauswahl Dialogbox in der Sie die zu ladende Datei ausw hlen 45 k nnen Nach dem Anklicken des OK Buttons schlie t sich die Dialogbox und das entsprechende Hamster Territorium ist wiederhergestellt Seit Version 2 7 des Hamster Simulators gibt es eine Alternative zum Wiederherstellen gespeicherter Territorien Seit dieser Version werden n mlich Territorium Dateien auch im Dateibaum des Editor Fensters angezeigt Beim Ankli
85. e Regel Klausel kann in PROLOG wie folgt geschrieben werden Der Kopf einer Regel definiert ein einzelnes Pr dikat welches im Nachfolgenden mittels dieser Regel abgeleitet werden kann Der Regelk rper umfasst eine Liste von Pr dikaten die f r die Erf llung dieser Regel ebenfalls erf llt werden m ssen Das Symbol fungiert dabei als ein umgekehrtes Implikationszeichen lt Dies bedeutet dass zur Erf llung von A alle Pr dikate von B bisB erf llt werden m ssen Deklarative und prozedurale Sicht auf das Programm Bei der Interpretation der oben dargestellten Regel k nnen in PROLOG zwei unterschiedliche Sichtweisen eingesetzt werden Die deklarative Sichtweise besagt dass das Pr dikat A nur dann erf llt ist wenn alle Zielpradikate B bis D erf llt werden k nnen Hierbei ist die Reihenfolge der Erf llung der B Pradikate nicht von Bedeutung Die deklarative Sicht hat einen rein informellen Charakter Aus der anderen der prozeduralen Sichtweise kann das Pr dikat A nur dann erf llt werden wenn zun chst B dann B und dann schlie lich de B Klausel erf llt werden k nnen Sollte also eines der B Pr dikate nicht zu erf llen sein so braucht der Rest der B Pradikate gar nicht mehr 78 betrachtet werden Die Auswertung der Regel w rde in diesem Fall mit einer negativen Antwort false beendet werden Bei der Abarbeitung einer Regel w hrend der Programmausf hrung setzt PROLOG f r die Definition der Reg
86. e gesetzt sein Standardm ig ist das der Fall Um den Automaten Modus auszuschalten ffnen Sie bitte die Datei hamster properties und ersetzen Sie dort die Zeile fsm true durch die Zeile fsm false 12 4 Erstellen von Hamster Automaten Um einen neuen Hamster Automatenzu erstellen klicken Sie bitte in der Toolbar des Editor Fensters auf den Neu Button 1 Toolbar Button von links Er erscheint ein Fenster in dem der Programmtyp ausgew hlt werden muss Wahlen Sie hier den Programmtyp Endlicher Automat Nach dem Dr cken des Ok Buttons erscheint im Editor Fenster anstelle eines normalen textuellen Editors ein so genanntes Automat Editorfenster Es besteht aus drei Bereichen siehe auch Abbildung 12 1 dem Zeichnen Men auf der linken Seite der Automaten Men oben und dem Programmbereich 12 4 1 Zeichnen Men Das Zeichnen Men an der linken Seite beinhaltet folgende Funktionalit t von oben nach unten durch Anklicken des entsprechenden Buttons wobei immer nur ein Button zur gleichen Zeit aktiv sein kann e Editieren Durch die vielf ltigen M glichkeiten in diesem Modus wird dieser Punkt im n chsten Abschnitt behandelt e L schen Durch Klicken auf ein Element Zustand Transition werden dieses und alle davon abh ngigen Elemente gel scht Dabei gilt bei bereinanderliegenden Elementen dass stets das oberste Element gel scht wird Der Startzustand kann nicht gel scht werden Beschriftungen von Transitionen k
87. e w rde dabei false sein Im zweiten Fall wenn das Pr dikat P in der Klausel C1 86 fehlschl gt wird direkt mit der Bearbeitung von R in der Klausel C2 fortgesetzt Bei dieser Implementierung finden also keine zus tzlichen Berechnungen statt Bei der Verwendung von Cuts unterscheidet man zwischen den gr nen und roten Cuts Die gr nen Cuts sind optional und k nnen auch weggelassen werden ohne dass die Bedeutung des Programms in irgendeiner Weise ver ndert wird Die gr nen Cuts beschleunigen die Abarbeitung des Programms in dem bestimmte Teile des Suchbaums die keine L sungen enthalten abgeschnitten werden Die roten Cuts sind ein essentieller Bestandteil der Programmlogik und k nnen daher nicht weggelassen werden Bei den roten Cuts werden auch solche Teile des Suchbaums beschnitten die potentielle L sungen enthalten Bei der Programmierung in PROLOG gilt es daher die Verwendung der roten Cuts zu vermeiden 8 2 5 2 Negation Das Systempr dikat not 1 bietet dem Anwender die M glichkeit zum Auszudr cken der Negationen von Aussagen Das not Pr dikat darf aber dabei keineswegs als logische Verneinung einer Aussage aufgefasst werden Die einzig korrekte Interpretation der Aussage not X ist die folgende not X ist erf llt wenn X fehlschl gt In PROLOG geht man von der Annahme einer geschlossenen Welt Das hei t alles was sich nicht aus dem Programm herleiten l sst ist automatisch nicht wahr Doch in der realen Welt tr
88. edienung des Hamster Simulators ist gar nicht so kompliziert Der Hamster Simulator bietet jedoch noch weitere M glichkeiten Diese k nnen Sie nun durch einfaches Ausprobieren selbst erkunden oder im n chsten Abschnitt nachlesen 27 4 Bedienung des Hamster Simulators Im letzten Abschnitt haben Sie eine kurze Einf hrung in die Funktionalit t des Hamster Simulators erhalten In diesem Abschnitt werden die einzelnen Funktionen des Simulators nun im Detail vorgestellt Dabei wird sich nat rlich einiges auch wiederholen Wenn Sie den Hamster Simulator starten ffnen sich zwei Fenster Das eine hei t Editor Fenster das andere Simulation Fenster Sie erkennen die beiden Fenster an ihren Titeln Editor bzw Simulation Abbildung 3 skizziert die einzelnen Komponenten des Editor Fensters Abbildung 4 die des Simulation Fensters Men leiste Editor Datei Bearbeiten Compiler Debugger Fenster Extras Hilfe Blea S X o E Programme o EI beispielprogramme e CH band 1 gt CH band 2 gt CH band 3 gt C prolog C scheme gt meinErstesProgramm Dateibaum Abbildung 3 Komponenten des Editor Fensters 4 b meinErstesProgramm 1 void main while vornFrei vor 2 3 2 9 rechtsUm 6 a 8 void kehrti 9 linksUm 10 linksUn KR 12 13 void rechtsUm 14 kehrt 15 linksUm 16 17 Eingabebereich Spalte
89. egende Manipulationsm glichkeiten in der PROLOG Datenbank Steuerung der Programmausf hrung und hnliche Funktionen Die Systempr dikate k nnen vom Programmierer zwar verwendet aber nicht mehr umdefiniert werden Neben den Systempr dikaten eines Standard PROLOG Systems welche von den meisten PROLOG Systemen angeboten werden bieten einzelne PROLOG Implementierungen auch noch weitere vordefinierten Pr dikate Auf diese speziellen Pr dikate wird aber im Weiten nicht n her eingegangen Die vom PROLOG System angebotene Systempr dikate lassen sich im Allgemeinen in mehrere Kategorien unterscheiden Diese unterteilen sich in e Pradikate ohne logische Bedeutung Die Seiteneffekte sind entscheidend e Testpr dikate e Pradikate zur Auswertung und Vergleich arithmetischer Ausdr cke e Steuerung und Metapr dikate e Pradikate zur Manipulation von Listen Die Gesamtzahl aller vom PROLOG System angebotenen Systempr dikate ist sehr gro Es w re kaum sinnvoll und auch m glich alle diese Pr dikate hier im einzelnen aufzuf hren und zu erl utern Nachfolgend werden nur die einzelnen Kategorien grob beschrieben und einige wichtigsten Repr sentanten dieser Kategorien genannt und erl utert Eine umfassendere bersicht ber die Systempr dikate in PROLOG kann beispielsweise in der erweiterten Literatur gewonnen werden Zu der ersten Kategorie geh ren solche Systempr dikate die keine explizite logische Bedeutung besitzen und nur durch
90. ehen Sie den Mauscursor bei gedr ckter Maustaste ber die anderen Kacheln Alle betroffenen Kachel werden zun chst durch ein Korn in der Mitte markiert Wenn Sie dann die Maustaste loslassen erscheint die Dialogbox zur Eingabe der K rneranzahl Die Anzahl an K rnern die sie jetzt eingeben wird dann auf allen markierten Kacheln abgelegt Eine Deaktivierung der K rner Setzen Funktion ist durch Anklicken des Hamster versetzen Mauer setzen oder Kachel l schen Buttons und der damit verbundenen Aktivierung der entsprechenden Funktion m glich 4 4 6 Platzieren von Mauern auf Kacheln des Hamster Territorium Um auf einzelnen Kacheln des Hamster Territoriums Mauern zu platzieren m ssen Sie zun chst im Simulation Fenster in der Toolbar den Mauer setzen Button achter Toolbar Button von links anklicken Dadurch aktivieren Sie die Mauer Setzen Funktion Sie erkennen dies daran dass der Hintergrund des Buttons nun dunkler erscheint Solange die Funktion aktiviert ist k nnen Sie nun durch Anklicken einer Kachel auf dieser Kachel eine Mauer platzieren 44 Dabei gilt Es nicht nicht m glich auf einer Kachel auf der sich aktuell ein Hamster befindet eine Mauer zu platzieren Liegen auf einer angeklickten Kachel K rner werden diese gel scht Es ist auch m glich auf mehreren Kacheln gleichzeitig Mauern zu platzieren Klicken Sie dazu die Maus auf einer der Kacheln und ziehen Sie den Mauscursor bei gedr ckter
91. eichbedeutendes imperatives Java Hamster Programm generieren Die Funktion sollte allerdings nur bei fehlerfreien Hamster PAPs ausgef hrt werden Ist das Hamster PAP fehlerhaft ist nicht definiert was das generierte Programm tut 139 14 Noch Fragen Eigentlich m sste dieses Benutzungshandbuch alle Fragen im Zusammenhang mit dem Hamster Simulator kl ren Wenn Sie trotzdem noch weitere Fragen oder Probleme haben schauen Sie doch einfach mal im WWW auf der Website www java hamster modell de ins Diskussionsforum Hier k nnen Sie Ihre Fragen stellen und mit anderen Hamster Programmierern und den Autoren des Hamster Buches bzw dem Entwickler des Hamster Simulators in Kontakt treten 140
92. eine Mauer befindet def linksFrei linksUm if vornFrei rechtsUm return true else rechtsUm return false end end Ueberpruefung ob sich rechts vom Hamster eine Mauer befindet def rechtsFrei rechtsUm if vornFrei linksUm return true else linksUm return false end end der Hamster laeuft bis zur naechsten Wand def laufeZurWand 110 while vornFrei vor end end der Hamster laeuft in eine Ecke def laufelInEcke laufeZurWand linksUm laufeZurWand linksUm end der Hamster soll sich in di naechst ihe in noerdlicher a a Richtung begeben vom Hamster aus ges links von ihm def begibDichLinksUmInNaechsteReihe linksUm vor linksUm end n liegt diese Reih der Hamster soll sich in die naechst ihe in noerdlicher a a Richtung begeben vom Hamster aus ges rechts von ihm def begibDichRechtsUmInNaechsteReihe rechtsUm vor rechtsUm end n liegt diese Reih Ueberpruefung ob in noerdlicher Richtung vom Hamster aus gesehen links eine weitere nicht mit Mauern besetzte Reihe existiert def weitereReiheLinksVomHamsterExistiert return linksFrei end Ueberpruefung ob in noerdlicher Richtung vom Hamster aus gesehen rechts eine weitere nicht mit Mauern besetzte Reihe existiert def weitereReiheRechtsVomHamsterExistiert return rechtsFrei end der Hamster soll alle Koerner in einer Reih insammeln def ernteEineReih sammle while vornFrei
93. eines Programms auftreten k nnen e Sie haben ein neues Programm geschrieben und auch abgespeichert aber nicht kompiliert oder der Compiler hat Fehler gemeldet In diesem Fall erscheint beim Starten des Programms die Laufzeitfehler Dialogbox mit der Fehlermeldung ClassNotFoundException e Sie haben den Sourcecode eines Programms ver ndert eventuell auch noch abgespeichert aber nicht neu kompiliert Oder Sie haben zwar kompiliert der Compiler hat jedoch Fehlermeldungen geliefert In diesem Fall wird das alte Programm ausgef hrt e Bei objektorientierten Programmen m ssen Sie darauf achten dass wenn Sie Werte von Konstanten im Sourcecode ndern alle Dateien die diese Konstanten benutzen neu kompiliert werden m ssen Ansonsten arbeiten die nicht kompilierten Dateien noch mit den alten Werten e Wenn in einem objektorientierten Programm eine Klasse X eine Klasse Y referenziert und umgekehrt m ssen Sie zun chst X kompilieren dann Y und anschlie end nochmal X 4 6 Debuggen von Hamster Programmen Debugger sind Hilfsmittel zum Testen von Programmen Sie erlauben es w hrend der Programmausf hrung den Zustand des Programms zu beobachten und gegebenenfalls sogar interaktiv zu ndern Damit sind Debugger sehr hilfreich wenn es um das Entdecken von Laufzeitfehlern und logischen Programmfehlern geht Der Debugger des Hamster Simulator erm glicht w hrend der Ausf hrung eines Hamster Programms das Beobachten des Programmz
94. el Klauseln die deklarative Sichtweise voraus 8 2 2 Operationale Semantik Bei der Ausf hrung eines Programms f hrt das PROLOG System f r eine zuvor formulierte Zielklausel mehrere Berechnungsschritte durch Die angegebene Zielklausel wird vorerst nur als These betrachtet die im Nachfolgenden entweder zu beweisen oder zu widerlegen ist Das PROLOG System versucht daraufhin zu pr fen ob die angegebene Zielklausel sich logisch aus den Pr dikaten des vorliegenden Programms ableiten l sst Der erste Schritt beim Abarbeiten einer Abfrage besteht darin die einzelnen Subterme der Zielklausel zur erf llen Daf r kommt in PROLOG der Unifikationsalgorithmus zum Einsatz Der nachfolgende Abschnitt beschreibt das Wesen und die Funktionsweise der Unifikation 8 2 2 1 Unifikation Die Unifikation bezeichnet ein Vorgehen bei welchem versucht wird zwei Terme durch Auswahl g ltiger Substitutionen zur Deckung zu bringen Zwei Terme t und t sind dabei unifizierbar wenn es eine Substitution s gibt sodass gilt s t s t Das Ziel einer Unifikation liegt in der Suche nach einer solchen Substitution die am wenigsten einschrankend auf die beiden Terme t und t wirkt Das hei t alle Variablen innerhalb eines Terms bleiben weiterhin unbelegt sofern dies nicht unbedingt f r die Deckung der Terme notwendig ist Eine nach diesem Vorgehen gefundene L sung wird als allgemeinster Unifikator bezeichnet Beispiele e Die Terme t f X b un
95. en Bereich sehen Sie den Dateibaum Den Sourcecode von Hamster Programmen m ssen Sie in solchen Dateien abspeichern Dateien sind dabei logische Speicherbeh lter auf der Festplatte Ihres Computers Der Dateibaum zeigt Ihnen an welche Dateien bereits existieren Neben Dateien enth lt der Dateibaum auch Ordner Ordner sind spezielle Ablagebereiche um Dateien strukturiert abspeichern zu k nnen Den Hauptteil des Editor Fensters nimmt der Eingabebereich ein Hier k nnen Sie Programme eintippen Unten werden dabei die aktuelle Zeile und Spalte eingeblendet Ganz oben im Editor Fenster gibt es eine Men leiste F r das Verwalten und Editieren von Programmen sind die beiden Men s Dateien und Bearbeiten wichtig Unterhalb der Men leiste ist eine spezielle Toolbar zu sehen ber die Sie alle Funktionen der Men s auch schneller erreichen und ausf hren k nnen Schieben Sie einfach mal die Maus ber die Buttons Dann erscheint jeweils ein Tooltipp der die Funktionalit t des Buttons anzeigt siehe auch Abbildung 14 35 Wiederherstellen Speichern Debugger aktivieren mit Territorium Ausschneiden Ausf hren Neu Speichem Schlie en Einf gen Peine Schritt ber A Extras Tute amp RB R gt CG J Programme Ml meirerstesProgra X H a haienialnrnnfammo z EL ffnen Drucken Kopieren Kompilieren Schritt hinein Speichem Als Speichern R ckg ngig Stopp Geschwindigkeit mit Territorium Als Abbildung 14 Too
96. en eines der vier Hamster Grundbefehle in Scheme folgendes Das von der entsprechenden Funktion gelieferte Territorium wird im Simulation Fenster angezeigt Es wird nicht wie im imperativen Hamster Modell der Befehl auf dem aktuell sichtbaren Territorium ausgef hrt Ein Hinweis f r erfahrenere Scheme Programmierer Ausgaben bzw Eingaben ber die Scheme Funktionen display bzw read erfolgen ber Standard Out bzw Standard In d h Sie sollten den Hamster Simulator entsprechend Uber den Befehl java jar hamstersimulator jar und nicht via Doppelklick auf die Datei hamstersimulator jar starten damit Sie eine Konsole haben 7 5 Beispiele Es folgen ein paar Beispiele f r n tzliche Scheme Hamster Funktionen define kehrt T linksUm linksUm T define rechtsUm T kehrt linksUm T define nimmAlle T if kornDa T nimmAlle nimm T P define gibAlle T if not maulLeer T gibAlle gib T T define vorwaerts n T if and vornFrei T gt n 0 vorwaerts n 1 vor T T 70 define zurMauer T if vornFrei T zurMauer vor T T define hinUndZurueck T if vornFrei T vor hinUndZurueck vor T kehrt T define reiheBearbeiten T if vornFrei T reiheBearbeiten vor nimmAlle T nimmAlle T define linksFrei T let T1 linksUm T if vornFrei T1 begin rechtsUm T1 t begin rechtsUm T1 f
97. en entsprechenden Ordner ausw hlen kann Neben dem Suchen in Men sind noch f nf Graphik Buttons angeordnet Durch Anklicken des linken Buttons kommt man im Ordnerbaum eine Ebene h her Durch Anklicken des zweiten Buttons von links gelangt man zur Wurzel des Ordnerbaumes Mit dem mittleren Button kann man im aktuellen Ordner einen neuen Unterordner anlegen Mit den beiden rechten Buttons kann man die Darstellung im mittleren Bereich ver ndern 33 M chte man einen Ordner oder eine Datei umbenennen muss man im mittleren Bereich der Dateiauswahl Dialogbox zweimal mit Pause zwischendurch auf den Namen des Ordners oder der Datei klicken Die textuelle Darstellung des Namens wird dann zu einem Eingabefeld in der man ber die Tastatur den Namen ver ndern kann 4 1 10 Dateibaum Ein Dateibaum repr sentiert die Ordner und Dateien des Dateisystems siehe Abbildung 12 Frogramme AllroundHamster EJ beispielprogramm CH band amp C band gt MeinErstesHamst C paul gt SammelHamster gt SammelndeHams Abbildung 12 Dateibaum Ordner und Dateien werden dabei durch unterschiedliche Symbole dargestellt hinter denen die Namen erscheinen Durch Anklicken des Zeigers vor einem Ordnersymbol kann man den Ordner ffnen und schlie en Bei einem ge ffneten Ordner werden die darin enthaltenen Unterordner und Dateien genauer ihre Namen angezeigt Das Anklicken eines Dateinamens im Dateibaum entspricht im Ha
98. entes kann man nach dem Draggen den Kommentartext eingeben und die Eingabe durch Dr cken der RETURN Taste abschlie en Elemente lassen sich bei deaktiviertem Pfeil Zeichnen Modus siehe Abschnitt 13 4 4 durch Anklicken und Verschieben bei gedruckter Maustaste Dragging im Programmbereich an andere Stellen verschieben Alle Elemente besitzen ein Kontext Men das man durch Klicken der rechten Maustaste oberhalb des Elementes aktivieren kann Hier ber ist es m glich Elemente umzubenennen zu entfernen oder vom Element ausgehende Verbindungen zu entfernen 13 4 4 Pfeile Durch Klicken des Pfeil Symbols im Auswahl Men l sst sich der Pfeil Zeichnen Modus an bzw wieder ausschalten Ist der Modus aktiv lassen sich Verbindungen zwischen den Elementen erzeugen W hrend der Modus aktiv ist k nnen Elemente im Programmbereich nicht verschoben werden Bewegt man bei aktiviertem Pfeil Zeichnen Modus die Maustaste ber ein Element im Programmbereich erscheinen kleine rote Kreise die m gliche Ausgangspunkte eines Pfeils andeuten Klickt man einen solchen Kreis an und zieht die Maus bei gedr ckter Maustaste auf ein anderes Element Draggen erscheinen dort ebenfalls kleine rote Kreise L sst man die Maus dann los wird ein Pfeil zwischen den beiden Elementen gezeichnet Es wird versucht die Pfeile optisch m glichst bersichtlich zu positionieren Verschiebungen von Pfeilen oder Teilen von Pfeilen sind m glich in dem erschei
99. entypen von Prolog Wie auch jede andere Programmiersprache hat auch PROLOG zur Beschreibung und Charakterisierung von Informationen primitive Datentypen Im Vergleich zu JAVA gibt es aber in PROLOG nur schwache Typisierung Der endg ltige Datentyp zu einem Ausdruck wird in PROLOG erst zur Laufzeit dynamisch ermittelt und zugewiesen Nachfolgend werden die wichtigsten Datentypen von PROLOG beschrieben Term Ein Term ist der grundlegende syntaktische Baustein eines PROLOG Programms Bei den Termen unterscheidet man zwischen einfachen und komplexen Termen Einfache Terme k nnen entweder konstant Atome und Zahlen oder auch variabel Variablen sein Komplexe Terme im Weiteren auch Strukturen genannt entstehen durch Zusammensetzung mehrerer einfacher Terme und haben einen besonderen Aufbau 75 Einfache Terme Zu den einfachen Termen geh ren Atome Zahlen und Variablen Die Atome sind beliebige Zeichenfolgen die mit einem Kleinbuchstaben anfangen Diese setzten sich dabei zusammen aus Kleinbuchstaben Ziffern oder dem Unterstreichungszeichen Weiterhin k nnen auch Atome gebildet werden indem beliebige in Anf hrungszeichen eingeschlossene Zeichenfolgen angegeben werden In diesem Fall k nnen auch Sonderzeichen und Gro buchstaben bei der Definition eines Atoms verwendet werden Nachfolgend sind einige Beispiele f r Atom Definitionen aufgef hrt Atom Beispiele kornfeld hamster 123ham ROGGEN Weizen Die Zahlen werden in
100. er Automaten entnehmen Sie am besten dem entsprechenden Wikipedia Eintrag http de wikipedia org wiki Endlicher Automat Ein endlicher Automat EA auch Zustandsmaschine Zustandsautomat englisch finite state machine FSM ist danach ein Modell eines Verhaltens bestehend aus Zust nden Zustands berg ngen und Aktionen 12 2 Hamster Automaten Die im Hamster Modell verwendete Form eines endlichen Automaten ist von den Mealy Automaten siehe http de wikipedia org wiki Mealy Automat abgeleitet und wird im Folgenden als Hamster Automat bezeichnet Ein konkreter Hamster Automat besteht aus Zust nden und Verbindungen zwischen Zust nden so genannte Transitionen Zust nde werden grafisch durch Kreise repr sentiert Verbindungen durch Pfeile die von einem Zustand zu einem anderen Zustand oder auch dem gleichen f hren Den Pfeilen zugeordnet sind Beschriftungen die jeweils aus zwei Teilen bestehen Der erste Teil ist ein boolescher Ausdruck in dem die Hamster Testbefehle benutzt werden k nnen Der zweite Teil ist eine Sequenz von Hamster Befehlen Genau ein Zustand eines Hamster Automaten ist als Startzustand ausgezeichnet zu erkennen an einem eingehenden Pfeil Bestimmte Zust nde k nnen als Endzust nde markiert sein Kreise mit doppelter Umrandung Wird ein Hamster Automat ausgef hrt passiert folgendes e Genau ein Zustand ist jeweils aktiv Anfangs ist dies der Startzustand e Es wird berpr ft ob vom ak
101. erver installiert und dann von mehreren Nutzern gleichzeitig genutzt werden wobei die Programme der Nutzer in unterschiedlichen Verzeichnissen abgespeichert werden k nnen siehe Abschnitt 5 2 In der oberen Men leiste des Editor Fensters gibt es ein neues Men Fenster ber dieses Men ist es m glich das Simulation Fenster sowie die Scheme Konsole sichtbar bzw unsichtbar zu machen e Einige kleine Fehler wurden beseitigt 1 12 nderungen in Version 2 2 gegen ber 2 1 An der generellen Funktionalit t des Hamster Simulators wurde nichts ge ndert Die Anderungen beziehen sich nur auf den internen Programmcode Was jedoch mit dieser neuen Version m glich ist sind zwei Dinge e Hamster Programme lassen sich nun auch ohne den Editor des Hamster Si mulators erstellen und ausf hren e Der Hamster Simulator wurde so angepasst dass eine Integration in die Entwicklungsumgebung BlueJ m glich ist 1 12 1 Erstellen von Hamster Programmen unabh ngig vom Editor des Simulators Ab dieser Version des Hamster Simulators k nnen Sie Hamster Programme unabh ngig vom Hamster Editor erzeugen und ausf hren Dazu m ssen Sie folgenderma en vorgehen e Erstellen Sie ein Hamster Programm mit einem beliebigen Editor Speichern Sie dies in einer Datei ab bspw test sammler ham Dabei ist folgendes zu beachten Wenn die Datei ein objektorientiertes Hamster Programm enth lt muss sie mit folgendem Kommentar beginnen object oriented
102. hend aktualisiert Am oberen Rand des 3D Simulationsfenster befindet sich eine Toolbar Diese enth lt Buttons zur Manipulation der 3D Ansicht und Steuerbefehle f r den Ablauf der Simulation Alternativ zur Nutzung dieser Buttons kann auch die Maus zur Manipulation der 3D Ansicht verwendet werden 4 7 1 Steuerung mittels der Toolbar Mit den ersten beiden Buttons k nnen Sie in das Territorium hein und hinauszoomen Die n chsten beiden Buttons erlauben das Drehen der Hamsterwelt Gedreht wird dabei immer um den Punkt auf den die Kamera schaut Der Neigungswinkel der Kamera l sst sich mit dem n chsten Buttonpaar einstellen Hier ist keine v llig freie Bewegung m glich so l sst sich die Welt von einem recht flachen Winkel bis hin zur Vogelperspektive betrachten ber 90 Grad l sst sich die Kamera nicht neigen die Szene kann also nicht auf dem Kopf stehen Mit dem siebten Button der Toolbar kann die Ansicht in eine Ich Perspektive umgeschaltet werden In dieser Ansicht wird die Welt aus der Ansicht des Standard Hamsters gezeigt und man folgt diesem auf seinem Weg durch das Territorium Durch wiederholtes Dr cken des Buttons wird die Ansicht wieder gewechselt ber den achten Button k nnen die Gitterlinien entfernt bzw eingeblendet werden Mit dem neunten Button kann ein Sound aktiviert bzw deaktiviert werden der ert nt wenn der Hamster l uft Auch der zehnte Button dient dem Aktivieren bzw Deaktivieren von Sound der fortw h
103. heraus Sounds abzuspielen Aber Vorsicht sollten sie diese Option gesetzt haben empfehle ich Ihnen dringend keine fremden Hamster Programme auszuf hren Sind diese bspw b swillig geschrieben k nnten sie Ihnen prinzipiell die gesamte Festplatte l schen Standardm ig steht in der Property Datei security true e workspace Standardm ig erscheint im Dateibaum als oberster Ordner ein Ordner names Programme der so genannte Workspace Ordner Er repr sentiert den Unterordner Programme des Ordners in dem sich die Dateien hamstersimulator jar bzw hamstersimulator bat befinden In diesem Ordner werden alle Hamster Programme und Hamster Territorien abgespeichert Durch Setzen der Property workspace kann ein anderer Ordner als Workspace Ordner festgelegt werden Befindet sich in der Datei eine Zeile die mit dem Text workspace beginnt wird der dahinter angegebene Ordner als Workspace Ordner gesetzt bspw workspace C Dokumente und Einstellungen karl oder workspace C Dokumente und Einstellungen heidi Eigene Dateien Der angegebene Ordner muss existieren und er muss lesbar und beschreibbar sein Achten Sie bitte darauf dass in dem Ordner Namen keine Sonderzeichen vorkommen bspw ein Ausrufezeichen da die aktuelle Java Version 5 0 im Moment nicht damit zurecht kommt F r Windows Nutzer ist es wichtig zu wissen dass die Zeichen in den Ordner Namen durch ein Zeichen ersetzt werden m ssen Alternativ kann auch jedes Zeichen
104. hle auszuf hren Die Python Konsole k nnen Sie ber das Men Fenster im Editor Fenster ffnen Er erscheint ein neues Fenster auf dem Bildschirm Die Hamster Python Konsole funktioniert dabei wie eine normale Python Konsole Zus tzlich zu normalen Python Befehlen k nnen Sie jedoch auch Hamster Befehle eingeben 103 Python Konsole Optionen gt gt gt 2 5 7 gt gt gt vor gt gt gt paul Hamster 1 1 Hamster OST 3 gt gt gt Daul vor gt gt gt if paul kornDa nimm gt gt gt if paul vornFreil vor gt gt gt 4 8 6 38 gt gt gt Abbildung 9 1 Python Konsole Hinweis Die Python Konsole und Python Programme arbeiten mit unterschiedlichen Python Interpretern d h nachdem Sie ein Python Programm ausgef hrt haben sind unter Umst nden durch das Programm angelegte Variablen nicht in der Python Konsole und auch nicht in anderen Python Programmen verf gbar Weiterhin ist anzumerken dass nach der Ausf hrung eines Python Programms unter Umst nden vorher in der Konsole erzeugte Hamster anschlie end nicht mehr zugreifbar sind 9 5 Implementierung Die Anbindung von Python an den Hamster Simulator wurde mit Hilfe von Jython realisiert http www jython org Hier die Lizenzbedingungen PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 1 This LICENSE AGREEMENT is between the Python Software Foundation PSF and the Individual or Organization Licensee ac
105. hn mit der Maus linke Taste an ziehen Sie die Maus bei gedr ckter linker Taste in den Programmbereich und lassen Sie die Maustaste los Folgende Bl cke werden standardm ig in der Blockpalette angezeigt siehe auch die Abbildungen 11 4 11 5 und 11 6 e Anweisungsbl cke Kategorie Anweisungen o vor Repr sentiert den Hamster Grundbefehl vor o linksUm Repr sentiert den Hamster Grundbefehl linksUm 120 121 nimm Reprasentiert den Hamster Grundbefehl nimm gib Repr sentiert den Hamster Grundbefehl gib verlasse Repr sentiert die return Anweisung zum Verlassen einer Prozedur liefere lt boolescher Ausdruck gt Repr sentiert die boolesche return Anweisung zum Verlassen einer booleschen Funktion main Repr sentiert die main Prozedur ber den Button Neue Prozedur lassen sich neue Prozeduren definieren verlasse liefere vor linksUm nimm gib Abbildung 11 4 Blockpalette der Kategorie Anweisungen e Boolesche Ausdrucks Bl cke Kategorie Boolesche Ausdr cke O O O vornFrei Repr sentiert den Hamster Testbefehl vornFrei kornDa Repr sentiert den Hamster Testbefehl kornDa maulLeer Repr sentiert den Hamster Testbefehl maulLeer wahr Repr sentiert das boolesche Literal true falsch Repr sentiert das boolesche Literal false lt boolescher Ausdruck gt und lt boolescher Ausdruck gt Repr sentiert den booleschen Und Operator
106. hr passieren Nachteile dieses Modus Eine Nutzung des Debuggers ist nicht m glich Auch die Nutzung des CLASSPATH ist nicht m glich siehe Kapitel 14 von Band 2 des Java Hamster Buches Im Modus runlocally true gibt es ab Version 2 6 1 eine Console die Ein und Ausgaben ber System in bzw System out und System err verarbeitet Konkret bedeutet das Enth lt ein Hamster Programm bspw den Befehl System out printin hallo und wird das Programm ausgef hrt ffnet sich das Consolen Fenster und die Zeichenkette hallo wird in das Fenster geschrieben Im Standard Modus runlocally false ndert sich nichts Ausgabeanweisungen werden weiterhin in die Dateien sysout txt bzw syserr txt geschrieben 5 1 6 language ber die Property language kann die Sprache des Hamster Simulators eingestellt werden Befindet sich in der Datei hamster properties eine Zeile mit dem Text language de ist als Sprache Deutsch eingestellt Das ist der Standard Befindet sich in der Datei hamster properties eine Zeile mit dem Text language en ist als Sprache Englisch eingestellt Weitere Infos zu englischen Hamster Programmen siehe auch in Abschnitt 6 5 1 7 indent Uber die Property indent kann eingestellt werden ob im Editor beim Zeilenumbruch die Cursorposition in der neuen Zeile anhand der ersten beschriebenen Spalte der 57 vorhergehenden Zeile ausgerichtet wird Befindet sich in der Datei hamster properties eine Zeile mit
107. htig zu wissen dass die Zeichen in den Ordner Namen durch ein Zeichen ersetzt werden m ssen Standardm ig steht in der Property Datei workspace Programme Wenn Sie den Workspace Ordner ver ndern und mit Paketen arbeiten muss im CLASSPATH anstelle von Programme der String angegeben werden den Sie der Property workspace zugewiesen haben also bspw C DokumenteundEinstellungen karl oder test 5 1 3 logfolder ber diese Property kann der Ordner gew hlt werden in dem die beiden Dateien sysout txt und syserr txt erzeugt werden sollen In diese Dateien werden Ausgaben auf Standard Output System out und Standard Error System err umgelenkt nur im Modus runlocally false Befindet sich in der Datei eine Zeile die mit dem Text logfolder beginnt wird der dahinter angegebene Ordner als Logfolder Ordner gesetzt bspw logfolder C Dokumente und Einstellungen karl oder logfolder C Dokumente und Einstellungen heidi Eigene Dateien oder logfolder test Der angegebene Ordner muss existieren und er muss lesbar und beschreibbar sein Achten Sie bitte darauf dass in dem Ordner Namen keine Sonderzeichen vorkommen bspw ein Ausrufezeichen da die einige Java Versionen nicht damit zurecht kommen F r Windows Nutzer ist es wichtig zu wissen dass die Zeichen in den Ordner Namen durch ein Zeichen ersetzt werden m ssen Standardm ig steht in der Property Datei logfolder Aus Kompat
108. i hamster properties eine Zeile mit dem Text flowchart true ist der PAP Modus eingeschaltet Standardm ig ist der PAP Modus ausgeschaltet 5 2 Mehrbenutzerfahigkeit Seit Version 2 3 ist der Hamster Simulator Mehrbenutzer f hig d h er kann einmal auf einem Server installiert und dann von mehreren Nutzern gleichzeitig genutzt werden Jeder Nutzer hat dabei seinen eigenen Ordner f r die Hamster Programme Um die Mehrbenutzer F higkeit des Hamster Simulators zu nutzen muss ein Nutzer eine Datei namens hamster properties in seinem HOME Verzeichnis anlegen bspw durch Kopieren der gleichnamigen Datei aus dem Ordner wo sich auch die Dateien nhamstersimulator jar bzw hamstersimulator bat befinden Die Property Einstellungen in der Datei im HOME Verzeichnis haben dabei die h chste Priorit t bezogen auf den Nutzer In der Datei hamster properties in seinem HOME Verzeichnis sollte dann jeder Nutzer die Properties workspace und logfolder entsprechend seinen W nschen setzen d h dort sollten die Ordner eingetragen werden in dem die Hamster Programme dieses Nutzers gespeichert bzw in dem die Log Dateien sysout txt und syserr txt erzeugt werden sollen 62 6 Englischsprachiger Hamster Seit Version 2 4 des Hamster Simulators ist der Hamster Simulator in die englisch sprachige Welt integriert worden Das betrifft zun chst die Benutzungsoberfl che Durch Einstellen der Property language auf den Wert en e
109. ibilit t zu fr heren Versionen des Hamster Simulators kann diese Property auch home genannt werden 56 5 1 4 scheme Uber die Property scheme kann die F higkeit des Hamster Simulators Scheme Programme zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Abschnitt 7 Befindet sich in der Datei hamster properties eine Zeile mit dem Text scheme false ist der Scheme Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text scheme true ist der Scheme Modus eingeschaltet Standardm ig ist der Scheme Modus ausgeschaltet 5 1 5 runlocally Uber die Property runlocally kann eingestellt werden ob die Ausf hrung eines Hamster Programms in einer neuen JVM oder in der JVM des Hamster Simulators erfolgen soll Befindet sich in der Datei hamster properties eine Zeile mit dem Text runlocally false werden Hamster Programme in einer neuen JVM ausgef hrt Standardm ig ist dies der Fall Befindet sich in der Datei hamster properties eine Zeile mit dem Text runlocally true werden Hamster Programme in derselben JVM wie der Hamster Simulator selbst ausgef hrt Normalerweise muss man sich nicht um dieses Property k mmern Leider kam es jedoch bei einigen Macintosh und Linux Nutzer zu dem Problem dass beim Starten eines Hamster Programms Fehler auftraten oder sich der Start der Ausf hrung um viele Sekunden verz gerte Im runlocally Modus true kann das nicht me
110. iehe Abbildung 16 Es wurde kein neues ausf hrbares Programm erzeugt Jede Fehlermeldung erscheint in einer eigenen Zeile Jede Zeile enth lt den wahrscheinlichen Fehler die Anweisung die den Fehler enth lt die Zeile der Anweisung im Programm und den Dateinamen Wenn Sie eine Fehlermeldung anklicken wird die entsprechende Anweisung im Eingabebereich blau markiert und der Mauscursor an die entsprechende Stelle gesetzt Sie m ssen nun die einzelnen Fehler beseitigen und dann erneut speichern und kompilieren bis Ihr Programm keine Fehler mehr enth lt Der Fehlermeldungsbereich schlie t sich dann automatisch wieder 41 Datei Bearbeiten Kompilieren Debugger Info Salele KIala 2e Drui Programme MeinErstesHamsterProgramm 3 AllroundHamster E DI beispielprogramm EH gt MeinErstesHamst vor DI paul vor gt SammelHamster nimni gt SammelndeHams rechtsUm vor vor nimm voit rechtsUm linksUm linksUm linksUm Zeile 11 Spalte 17 e Problem _ Zeile Datei expected voit rechtsUm 11 MeinErstesHam invalid method declaration r linksUmd 13 MeinErstesHam 7 invalid method declaration r linksUmd 14 MeinErstesHam class or interface expected 16 MeinErstesHam class or i exnected 6 Mein esHam lol x Abbildung 16 Fehlermeldungen Acht
111. ifft diese Annahme nicht immer zu Bei der bertragung der Probleme der realen Welt in PROLOG hat man also darauf zu achten dass bei der Programmentwicklung keine logischen Denkfehler einschleichen und die Benutzung des not Pr dikats im Sinne der Aufgabenstellung stets zum korrekten Ergebnis f hrt 8 2 6 Informationen zu Prolog im WWW Learn Prolog now http www learnprolognow org Prolog Programming A first course http computing unn ac uk staff cgpb4 prologbook Prolog Beispielsammlung http www csupomona edu irfisher www prolog_tutorial contents html Prolog Tutorial http www ifi uzh ch reg courses logische programmierung ws03 documents Prolog Tut orial pdf 8 3 Prolog Hamster Modell Der Zustand und die Befehle der Hamster Welt werden im Prolog Hamster Modell durch entsprechende Fakten und Regeln in einer vordefinierten und automatisch zur Verf gung stehenden Datenbasis repr sentiert Diese hat folgende Gestalt ER Modellierung der Basisbefehle des Java Hamsters 2 87 ole ole EK oo Ski Modellierung des Hamsterterritoriums foe EK territorium lt anzahlReihen gt lt anzahlSpalten gt dynamic territorium we EK ER ines Korns im Hamsterterritorium Modellierung foe EK korn lt reihe gt lt spalte gt lt anzahl gt L dynamic korn L EK EK Modellierung der Mauern im Hamsterterritorium EK EK mauer lt reihe gt lt
112. ihre Ausf hrung gewisse Seiteneffekte im System hervorrufen Dazu geh ren in erster Linie die Pr dikate zur Steuerung der Ein und Ausgabe in der Konsole Pr dikate zu Erstellung und Verwaltung von Dateien im Betriebssystem sowie einige allgemeinen Funktionen des Interpreters Nachfolgend werden einige davon aufgelistet listing Auflisten aller bekannten Programmklauseln listing P Auflisten aller bekannten Programmklauseln f r die Prozedur P read T Einlesen eines Terms T write T Ausgabe des Terms T auf die Konsole tab N Ausgabe von N Leerzeichen nl Nachste Ausgabe erfolgt in einer neuen Zeile see F Umschalten des Eingabestroms auf die Datei F seen SchlieBen des aktuellen Eingabestroms Umschalten auf die Konsole tell F SchlieBen des Ausgabestroms auf die Datei F 82 told trace notrace debug nodebug Der aktuelle Ausgabestrom wird geschlossen Umschalten auf die Konsole Ein Ausschalten des tracing Mode Ein Ausschalten des debugging Mode Die zweite Kategorie beinhaltet Pr dikate zur Pr fung der unterschiedlichen Term Typen sowie der Gleichheit und Ungleichheit aus der Sich der Unifikation von Termen Dabei kann gepr ft werden ob es sich bei einem Term T um ein Atom eine Zahl oder Variable handelt Weiterhin gibt es Operatoren zur manuellen Unifikationspr fung von Termen atom T atomic T number T integer T var T nonvar T T U T U T U Pr ft ob T ein PROLOG Atom ist Pr
113. isse angezeigt bekommen Eingabe assoc jar Ausgabe jar jarfile Eingabe ftype jarfile Ausgabe jarfile C Program Files Java jre bin javaw exe jar 1 Den Java Interpreter der standardm ig beim Doppelklick auf eine jar Datei aufgerufen werden soll k nnen Sie durch folgende Eingabe in einem Eingabeaufforderungsfenster ndern ftype jarfile pfad javaw exe jar 1 wobei pfad entsprechend Ihrer Java Installation ge ndert werden muss bspw so jarfile C Program Files Java jdk1 7 0 bin javaw exe jar 1 Eine weitere Alternative besteht darin ein Eingabeaufforderung Fenster zu ffnen sich in den Ordner zu begeben in dem sich die Datei hamstersimulator jar befindet und dort folgenden Befehl einzugeben java jar hamstersimulator jar 19 3 Ihr erstes Hamster Programm Nachdem Sie den Hamster Simulator gestartet haben ffnen sich auf dem Bildschirm zwei neue Fenster das Editor Fenster siehe auch Abbildung 1 und das Simulation Fenster siehe auch Abbildung 2 Sie erkennen die beiden Fenster an ihren Titeln Editor bzw Simulation Im Gro en und Ganzen kann man sagen Im Editor Fenster entwickeln Sie Hamster Programme und im Simulation Fenster f hren Sie Hamster Programme aus Datei Bearbeiten Compiler Debugger Fenster Extras Hilfe Bla Beo Xba a Dp E Programme meinErstesProgramm o C beispielprogramm gt meinErstesProgra o CH prolog pb PrologBeispiele 1 voi
114. ist es bspw m glich aus Hamster Programmen heraus Sounds abzuspielen Im folgenden Hamster Programm wird ein Sound aus der angegebenen Datei abgespielt w hrend der Hamster zur Mauer l uft void main try java io File f new java io File C fanfare wav java applet AudioClip audioClip java applet Applet newAudioClip f toURL audioClip play catch Exception exc while vornFrei vor 55 5 1 2 workspace Standardm ig erscheint im Dateibaum als oberster Ordner ein Ordner names Programme der so genannte Workspace Ordner Er repr sentiert den Unterordner Programme des Ordners in dem sich die Dateien hamstersimulator jar bzw namstersimulator bat befinden In diesem Ordner werden alle Hamster Programme und Hamster Territorien abgespeichert Durch Setzen der Property workspace kann ein anderer Ordner als Workspace Ordner festgelegt werden Befindet sich in der Datei eine Zeile die mit dem Text workspace beginnt wird der dahinter angegebene Ordner als Workspace Ordner gesetzt bspw workspace C Dokumente und Einstellungen karl oder workspace C Dokumente und Einstellungen heidi Eigene Dateien oder workspace test Der angegebene Ordner muss existieren und er muss lesbar und beschreibbar sein Achten Sie bitte darauf dass in dem Ordner Namen keine Sonderzeichen vorkommen bspw ein Ausrufezeichen da die einige Java Versionen nicht damit zurecht kommen F r Windows Nutzer ist es wic
115. istisch eingestellt ist existieren zwei Zustande Einer tr gt den Namen aufeZurNaechstenWand und ist der Startzustand der andere den Namen kehrt Der Zustand kehrt ist ein Endzustand Au erdem existieren zwei Transitionen Die erste geht vom Zustand laufeZurNaechstenWand aus und f hrt auch wieder in diesen Zustand hinein Die zweite geht vom Zustand aufeZurNaechstenWand aus und f hrt zum Zustand kehrt Die erste Transition besitzt den booleschen Ausdruck vornFrei und die Befehlssequenz vor Die zweite Transition besitzt den booleschen Ausdruck nicht vornFrei und die Befehlssequenz linksUm linksUm Bei der Ausf hrung startet das Programm im Startzustand laufeZurNaechstenWand Es werden die beiden ausgehenden Transitionen berpr ft Steht der Hamster vor einem freien Feld wird die erste Transition ausgew hlt weil der boolesche Ausdruck vornFrei den Wert true liefert und der Befehl vor wird ausgef hrt Der n chste aktive Zustand ist 129 wiederum der Zustand aufeZurNaechstenWand Steht der Hamster vor einer Wand wird die zweite Transition ausgewahlt und die Befehlssequenz linksUm linksUm ausgef hrt Der n chste aktive Zustand ist nun der Zustand kehrt Da vom diesem Zustand keine Transitionen ausgehen ist das Programm beendet und zwar erfolgreich weil der Zustand kehrt ein Endzustand ist 12 3 Voraussetzungen Um mit dem Hamster Simulator Hamster Automaten entwickeln und ausf hren zu k nnen muss die Property fsm auf tru
116. it aller Steuerungs und Metapr dikate Eine vollstandigere Auflistung kann beispielsweise im Buch von Ivan eingesehen werden consult F reconsult F Die Datei F wird eingelesen und die PROLOG Datenbank um die im Programm befindlichen Klauseln erweitert Analog zur consult Klauseln mit identischer Signatur werden dabei aber Uberschrieben aktualisiert assert C Die Klausel C wird am Ende des aktuellen Programms Wissensbasis hinzugef gt retract C Das erste Vorkommen der Klausel C im Programm retractall F PROLOG Datenbank wird gel scht Alle Vorkommen der Klausel C im Programm werden gel scht abolish P N Eine Prozedur P mit der Stelligkeit N wird vollst ndig aus dem Programm gel scht not G Ist wahr wenn das Pr dikat G nicht erf llbar ist true Ein Pr dikat das immer erf llt ist fail Schl gt immer fehl Erzwingt ein Backtracking Schritt Das Cut Pr dikat ist immer erf llt Verhindert sp teres Backtracking P Q Oder Verkn pfung zweiter Prozeduren Weiterhin bieten die meisten PROLOG Systeme vordefinierte Systempr dikate f r den Umgang mit Listen Konstrukten Diese Pr dikate k nnen aber auch relativ leicht manuell im eigenen Programm nachimplementiert werden Die am h ufigsten verwendeten Pr dikate sind Pr ft ob X ein Element der Liste L Konkateniert die Listen L1 und L2 zusammen in der Ergebnisliste L3 member X L append L1 L2 L3 reverse L1 L2 L2 ist die invertierte Liste vo
117. itionen vermeiden Im Input Bereich gibt es au er den Hamster Testbefehlen und den booleschen Operatoren und oder nicht noch das Epsilon Das ist gleichbedeutend zum Wert true Im Output Bereich steht das Epsilon f r die leere Anweisung die nichts bewirkt 132 Beschriftung f r die Transition von z2 nach z3 Testbefehle und Operatoren ausgew hlte Bedingung 0 kornDa ausgew hlte Befehlssequenz em Ra Abbildung 12 2 Transitionsfenster Nach ihrer Definition im Transitionsfenster wird die Transition entsprechend beschriftet Bestand vorher schon eine Transition zwischen dem ausgehenden Zustand zum Folgezustand wird nur eine zusatzliche Beschriftung an den schon existierenden Transitionspfeil angehangt Der Input und Output werden abgeschnitten wenn der Input zu lang ist bzw der Output mehr als zwei Befehle enthalt In jedem Zeichnen Modus kann aber die komplette Beschriftung betrachtet werden wenn die Maus Uber den entsprechenden Bereich fahrt 12 4 4 Automaten Men Das Automaten Men oberhalb des Programmbereiches beinhaltet folgende Funktionalit t durch Auswahl des entsprechenden Men punktes 133 Vergr ern Durch Klicken auf diesen Men punkt wird der Graph im Programmbereich um eine Stufe vergr ert Verkleinern Durch Klicken auf diesen Men punkt wird der Graph um eine Stufe verkleinert Layouten Durch Klicken auf diesen Men punkt werden die Zust nde im Gr
118. itze der Transition auf den gew nschten Zielzustand gezogen wird Au erdem ist es m glich Transitionen zu biegen Dazu wird auf den Transitionspfeil doppelgeklickt und der erscheinende rote Punkt so gezogen bis die Transition die gew nschte Biegung besitzt 131 Eine Beschriftung einer Transition kann geandert werden indem durch einen Doppelklick auf die Beschriftung das Fenster zur Anderung ge ffnet wird welches im folgenden Abschnitt beschrieben ist Jedes Element besitzt in diesem Modus ein Kontextmen bzw Popup Men indem die f r das Element m glichen Funktionen aufgef hrt werden Das Kontextmen wird im Allgemeinen ge ffnet wenn die rechte Maustaste gedr ckt wird w hrend sich die Maus auf dem entsprechenden Element befindet Auch der Programmbereich selber besitzt ein Kontextmen welches sich auf einer freien Stelle ffnet Darin ist es m glich den Graphen zu vergr ern oder zu verkleinern zu layouten und neue Kommentare Zust nde oder Transitionen zu erstellen Bei letzteren wird ein spezielles Auswahl Fenster ge ffnet in dem der Start und Endzustand festgelegt werden kann Danach ffnet sich das Fenster zur Festlegung der einzelnen Bestandteile dieser Transition 12 4 3 Definition einer Transition Das Fenster f r die Definition einer Transition ist in zwei Bereiche aufgeteilt wie Abbildung 12 2 zeigt Im oberen Bereich kann der boolesche Ausdruck auch Bedingung oder Input genannt der Transition im u
119. ken 11 4 4 Anweisungssequenzen Befindet sich im Programmbereich ein Anweisungsblock A und zieht man einen anderen Anweisungsblock B in die N he ober und unterhalb dann erscheint irgendwann ein transparenter grauer Bereich siehe Abbildung 11 7 L sst man B nun los schnappen Zapfen unten an den Anweisungsbl cken und Mulde oben an den Anweisungsbl cken der beiden Bl cke ein und A und B bilden nun eine Anweisungssequenz in Scratch wird der Begriff Stapel verwendet Zieht man im Folgenden den obersten Block einer Anweisungssequenz im Programmbereich hin und her wird automatisch der gesamte Block mit verschoben Eine Anweisungssequenz kann man wieder trennen indem man einen mittleren Block verschiebt Darunter liegende Bl cke werden dann mit verschoben dar ber liegende Bl cke bleiben liegen und werden abgetrennt zapfen Mulde Abbildung 11 7 Bilden von Anweisungssequenzen 11 4 5 Programme Scratch Hamster Programme starten immer durch Ausf hrung der main Prozedur Ausgef hrt wird dabei die Anweisungssequenz die mit der main Prozedur verbunden ist Hierzu besitzt die Prozedur am oberen Rand des Programmbereichs einen Zapfen den sogenannten Prozedurzapfen Hier muss man die entsprechende Anweisungssequenz andocken siehe Abbildung 11 8 123 Prozedurzapfen Abbildung 11 8 Definition von Prozeduren Zwischenbemerkung Nun sind wir so weit dass wir ein erstes kleines Scratch Hamster Programm selbst
120. l Dialogbox einen Namen an zum Beispiel MeinErstesTerritorium Wenn Sie dann auf den OK Button klicken wird das Territorium in einer Datei mit diesem Namen gespeichert Der Dateiname erh lt brigens automatisch die Endung ter Zum Wiederherstellen eines gespeicherten Territoriums klicken Sie auf den Territorium ffnen Button zweiter Button von links Es erscheint eine Dateiauswahl Dialogbox In der Mitte werden die Namen der existierenden Dateien mit abgespeicherten Territorien angezeigt Klicken Sie mit der Maus auf den Dateinamen in dem das Territorium abgespeichert ist das Sie laden m chten Wenn Sie danach auf den OK Button klicken schlie t sich die Dateiauswahl Dialogbox und das abgespeicherte Territorium wird wieder hergestellt Seit Version 2 7 des Hamster Simulators gibt es eine Alternative zum Wiederherstellen gespeicherter Territorien Seit dieser Version werden n mlich Territorium Dateien auch im Dateibaum des Editor Fensters angezeigt Beim Anklicken einer Territorium Datei im Dateibaum wird das entsprechende Territorium im Simulation Fenster geladen 22 3 2 Eingeben eines Hamster Programms Nachdem wir unser erstes Hamster Territorium im Simulation Fenster gestaltet haben begeben wir uns nun in das Editor Fenster Dort werden wir unser erstes Hamster Programm schreiben Im Editor Fenster befindet sich ganz oben eine Men leiste und darunter eine Toolbar mit graphischen Buttons Links sehen wir den Dateib
121. lbar des Editor Fensters 4 2 1 Schreiben eines neuen Hamster Programms Wenn Sie ein neues Hamster Programm schreiben m chten klicken Sie bitte den Neu Button an erster Toolbar Button von links Es ffnet sich eine Dialogbox In dieser Dialogbox m ssen Sie ausw hlen welchen Typ von Programm Sie schreiben m chten Es existieren drei Alternativen e Imperatives Programm Imperative Programme sind Programme wie sie in Band 1 des Java Hamster Buches Programmieren spielend gelernt eingef hrt werden Sie bestehen aus einer main Funktion sowie weiteren Funktionen e Objektorientiertes Programm Objektorientierte Programme sind Programme wie sie in Band 2 des Java Hamster Buches Objektorientierte Programmierung spielend gelernt eingef hrt werden Sie bestehen aus einer main Funktion sowie Funktionen und Klassen e Klasse Wollen Sie eine separate Klasse ohne main Funktion schreiben bspw eine erweiterte Hamster Klasse m ssen Sie diesen Typ von Programm aus w hlen W hlen Sie den Programmtyp Klasse auch wenn Sie separate Interfaces definieren m chten e Scheme Programm hierzu siehe Abschnitt 7 Achtung Es ist nicht m glich den Typ eines Programms nachtr glich zu ndern Nach der Auswahl des Programmtyps dr cken Sie bitte den OK Button Die Dialogbox schlie t sich und oben im Eingabebereich des Editor Fenster erscheint ein Karteireiter mit der Bezeichnung NeuerHamster sowie einem Diskettensymbol D
122. ldung 17 Die ersten drei Buttons von links dienen zum Verwalten von Hamster Territorien Mit den Buttons vier bis neun kann das Hamster Territorium umgestaltet werden Mit dem zehnten und elften Button lasst sich das Erscheinungsbild des Territoriums verandern Die restlichen Buttons sowie der Schieberegler haben beim Ausf hren von Hamster Programmen eine Bedeutung Neues Territorium Mauer setzen Kachel l schen Territorium speichern Stopp Hamster versetzen R cksetzen ll x F E Die Male Ex Aa ail gt e S Territorium ffnen K rner setzen K rner im Maul Verkleinern Pause Geschwindigkeit Hamster drehen Vergr ern Ausf hren Abbildung 17 Toolbar des Simulation Fensters 4 4 1 Ver ndern der Gr e des Hamster Territoriums Durch Anklicken des Neues Territorium Buttons erster Toolbar Button von links k nnen Sie die Gr e des Territoriums ver ndern Es ffnet sich eine Dialogbox mit zwei Eingabefelder in denen Sie die gew nschte Reihen und Spaltenanzahl eingeben k nnen Nach Dr cken des OK Buttons schlie t sich die Dialogbox und das Territorium erscheint in der angegebenen Gr e Aber Achtung Nach dem Andern der Gr e des Territoriums sind alle Kacheln leer und der Standard Hamster nimmt seinen Standardzustand ein 4 4 2 Platzieren des Standard Hamsters im Hamster Territorium Um den Standard Hamster im Hamster Territorium auf eine andere
123. ldung klicken springt der Cursor im Eingabebereich automatisch in die angegebene Zeile Vorsicht Die Fehlermeldungen sowie die Zeilenangabe eines Compilers sind nicht immer wirklich exakt Das Interpretieren der Meldungen ist fur Programmieranfanger haufig nicht einfach und bedarf einiger Erfahrungen Deshalb machen Sie ruhig am Anfang mal absichtlich Fehler und versuchen Sie die Meldungen des Compilers zu verstehen Tipp Arbeiten Sie die Fehler die der Compiler entdeckt hat immer von oben nach unten ab Wenn Sie eine Meldung dann berhaupt nicht verstehen speichern Sie ruhig erst mal ab und kompilieren Sie erneut H ufig ist es leider so dass der Compiler f r einen einzelnen Fehler mehrere Fehlermeldungen ausgibt was Anf nger leicht verwirren kann Nachdem Sie die Fehler korrigiert haben m ssen Sie das Programm zun chst erst wieder speichern und dann erneut kompilieren Wiederholen Sie dies so lange bis der Compiler die Meldung Kompilierung erfolgreich ausgibt Erst dann k nnen Sie das Programm ausf hren 3 4 Ausf hren eines Hamster Programms Nach dem erfolgreichen Kompilieren ist es endlich soweit Wir k nnen den Hamster bei der Arbeit beobachten Macht er wirklich das was wir ihm durch unser Programm beigebracht haben Zum Ausf hren eines Programms begeben wir uns wieder in das Simulation Fenster Zum Steuern der Programmausf hrung dienen dort die drei rechten Buttons rechts in der Toolbar Durch Anklicken des
124. lic final static int GRAY 8 public final static int WEISS 9 public final static int WHITE 9 neuer zusaetzlicher Konstruktor public Hamster int reihe int spalte 58 in in blickrichtung int anzahlKoerner farbe 5 1 9 3D Uber die Property 3D kann das 3D Simulationsfenster ein oder ausgeschaltet werden siehe Abschnitt 4 7 Befindet sich in der Datei hamster properties eine Zeile mit dem Text 3D false ist der 3D Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text 3D true ist der 3D Modus eingeschaltet Standardm ig ist der 3D Modus eingeschaltet 5 1 10 lego ber die Property lego kann der Lego Modus ein oder ausgeschaltet werden Befindet sich in der Datei hamster properties eine Zeile mit dem Text lego false ist der Lego Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text lego true ist der Lego Modus eingeschaltet Standardm ig ist der Lego Modus ausgeschaltet Die M glichkeit ber den Hamster Simulator einen Lego Mindstorms Roboter zu steuern wird vermutlich erst in Version 2 8 des Hamster Simulators erl utert Die Funktionalit t ist zwar bereits integriert enth lt aber leider noch ein paar Fehler 5 1 11 prolog ber die Property prolog kann die F higkeit des Hamster Simulators Prolog Programme zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Absch
125. ll Return false kornDa hamster Reihe Spalte _ korn Reihe Spalte AnzahlKoerner AnzahlKoerner gt 0 write prologhamster kornDa ttyflush read Return call Return maulLeer hamster _ _ _ AnzahlKoernerImMaul AnzahlKoernerImMaul 0 write prologhamster maulLeer ttyflush read Return call Return 8 4 Prolog Hamster Programme Ein Prolog Hamster Programm hat immer folgende Gestalt 90 6 Eintrittspunkt des Programms main lt ziele gt main 1 ist das Pr dikat das beim Ausf hren eines Prolog Hamster Programms aufgerufen wird Im folgenden Prolog Hamster Programm l uft der Hamster bis zur n chsten Wand Eintrittspunkt des Programms main laufeZurWand laufeZurWand vornFrei vor laufeZurWand laufeZurWand 8 5 Prolog Konsole Die PrologKonsole bietet einen alternativen Weg zur Steuerung des Hamsters Sie gibt dabei dem Programmierer die M glichkeit direkt mit dem PROLOG System zu interagieren Dabei kann ber die Benutzung der angebotenen Steuerungsbuttons oder auch durch das direkte Eintippen der Befehle die Suche der Alternativ L sungen initiiert werden Die prim re Aufgabe der PrologKonsole liegt aber an der F higkeit den Programmierer beim Debugging Prozess der PROLOG Programme zu unterst tzen und diesen Prozess zu visualisieren Sie k nnen die Prolog Konsole ber den entsprechenden Ment ltem im Men Fenster ffnen 8 6 Beis
126. lt boolescher Ausdruck gt oder lt boolescher Ausdruck gt Repr sentiert den booleschen Oder Operator nicht lt boolescher Ausdruck gt Repr sentiert den booleschen Nicht Operator ber den Button Neue Funktion lassen sich neue boolesche Funktionen definieren Neue Funktion wahr falsch nicht und oder vomFrei komDa maulLeer Abbildung 11 5 Blockpalette der Kategorie Boolesche Ausdr cke e Steuerungsbl cke Kategorie Steuerung Bei den Steuerungsbl cken handelt sich um spezielle Anweisungsbl cke O O O 122 falls Repr sentiert die if Anweisung falls sonst Repr sentiert die if else Anweisung solange lt boolescher Ausdruck gt Repr sentiert die while Schleife wiederhole solange lt boolescher Ausdruck gt Repr sentiert die do while Schleife solange wiederhole solange Abbildung 11 6 Blockpalette der Kategorie Steuerung 11 4 3 Programmbereich Im Programmbereich liegen die Scratch Hamster Programme StandardmaBig ist hier die main Prozedur ge ffnet Bl cke die aus der Blockpalette in den Programmbereich gezogen wurden lassen sich hier per Drag and Drop Aktion weiter hin und herschieben Bl cke lassen sich aus dem Programmbereich wieder entfernen indem man sie in die Kategorienauswahl oder die Blockpalette zieht Alternativ kann man auch oberhalb eines zu entfernenden Blocks ein Popup Men aktivieren und hierin das Men ltem entfernen anklic
127. m Ausdrucken eines Hamster Programms Alle gerade erl uterten Funktionen zum Verwalten von Dateien mit Hamster Programmen finden Sie auch im Men Datei 3 3 Compilieren eines Hamster Programms Nachdem wir unser Hamster Programm geschrieben und in einer Datei abgespeichert haben m ssen wir es kompilieren Der Compiler berpr ft den Sourcecode auf syntaktische Korrektheit und transformiert ihn wenn er korrekt ist in ein ausf hrbares Programm Zum Kompilieren dr cken Sie einfach auf den Kompilieren Button zw lfter Button von links oder Kompilieren Men Kompiliert wird dann das Programm das gerade im Eingabebereich sichtbar ist Wenn das Programm korrekt ist erscheint eine Dialogbox mit der Nachricht Kompilierung erfolgreich Zur Best tigung m ssen Sie anschlie end noch den OK Button dr cken Das Programm kann nun ausgef hrt werden Merken Sie sich bitte Immer wenn Sie nderungen am Sourcecode Ihres Programms vorgenommen haben m ssen Sie es zun chst abspeichern und dann neu kompilieren Sonst werden die Anderungen nicht ber cksichtigt Wenn das Programm syntaktische Fehler enth lt wenn Sie sich bspw bei der Eingabe des obigen Programms vertippt haben werden unter dem Eingabebereich die Fehlermeldungen des Compilers eingeblendet Diese erscheinen in englischer Sprache 24 Weiterhin wird die Zeile angegeben in der der Fehler entdeckt wurde Wenn Sie mit der Maus auf die Fehlerme
128. m bei dem der Standard Hamster ein beliebiges Territorium ohne innere Mauern leert Aufgabe der Hamster steht irgendwo in einem beliebigen Territorium ohne innere Mauern er soll alle K rner fressen def kehrt 108 linksUm linksUm end def rechtsUm kehrt linksUm end def laufeZurueck while vornFrei vor end end def sammle while kornDa nimm end end def laufeZurWand while vornFrei vor end end def laufelInEcke laufeZurWand linksUm laufeZurWand linksUm end def ernteEineReih sammle while vornFrei vor sammle end end def ernteEineReiheUndLaufezurueck rnteEineReih kehrt laufeZurueck end Hauptprogramm laufeInEcke rnteEineReiheUndLaufeZurueck rechtsUm while vornFrei vor rechtsUm rnteEineReiheUndLaufeZurueck rechtsUm end 109 10 3 2 Territorium leeren 2 Auch das folgende Ruby Programm ist ein einfaches imperatives Beispielprogramm bei dem der Standard Hamster ein beliebiges Territorium ohne innere Mauern leert Aufgabe der Hamster steht irgendwo in einem beliebigen Territorium ohne innere Mauern er soll alle K rner fressen drehe dich um 180 Grad def kehrt linksUm linksUm end drehe dich um 90 Grad nach rechts def rechtsUm kehrt linksUm end der Hamster sammelt alle Koerner eines Feldes ein def sammle while kornDa nimm end end Ueberpruefung ob sich links vom Hamster
129. m Sie ein Ruby Programm ausgef hrt haben sind unter Umst nden durch das Programm angelegte Variablen nicht in der Ruby Konsole und auch nicht in anderen Ruby Programmen verf gbar Weiterhin ist anzumerken dass nach der Ausf hrung eines Ruby Programms unter Umst nden vorher in der Konsole erzeugte Hamster anschlie end nicht mehr zugreifbar sind 115 10 5 Implementierung Die Anbindung von Ruby an den Hamster Simulator wurde mit Hilfe von JRuby realisiert http jruby org Lizenz CPL GPL und LGPL JRuby distributes some ruby modules which are distributed under Ruby license Ruby is copyrighted free software by Yukihiro Matsumoto lt matz netlab jp gt You can redistribute it and or modify it under either the terms of the GPL see the file GPL or the conditions below 1 You may make and give away verbatim copies of the source form of the software without restriction provided that you duplicate all of the original copyright notices and associated disclaimers 2 You may modify your copy of the software in any way provided that you do at least ONE of the following a place your modifications in the Public Domain or otherwise make them Freely Available such as by posting said modifications to Usenet or an equivalent medium or by allowing the author to include your modifications in the software b use the modified software only within your corporation or organization c give non standard binaries non standard
130. mme sich w hrend der Laufzeit zu ver ndern Dabei kann Programm Wissen dazugewonnen oder auch verworfen werden Das Programm kann dabei als eine Art Datenbank angesehen werden die sich nach Belieben k rzen oder erweitern l sst Aufgrund der gleichen Struktur der Daten und Prozeduren worauf im sp teren Verlauf etwas n her eingegangen wird kann die Erweiterung des Programms sehr leicht vollzogen werden Die grundlegende Vorgehensweise im Umgang mit PROLOG gestaltet sich wie folgt hnlich wie es im Umgang mit einer Datenbank der Fall ist kann der Benutzer unterschiedliche Anfragen an das PROLOG System stellen Jede Anfrage wird vom PROLOG System als eine neue These bzw ein Ziel interpretiert die das System nachfolgend versucht mit Hilfe der vorliegenden Fakten und Prozeduren im Programm zu beweisen Hierzu wird der sogenannte Resolutionsalgorithmus um vom bekannten Informationen eine L sung f r das angeforderte Ziel abzuleiten verwendet Nebenbei werden unter anderem Verfahren wie das Pattern Matching Mustervergleich oder Unifikation und das Backtracking R ckverfolgung bei der Suche nach einer L sung im Resolutionsalgorithmus angewandt 8 2 1 Syntax von Prolog Dieser Abschnitt beschreibt die Regeln f r die syntaktische Zusammensetzung der PROLOG Programme Im ersten Teil erfolgt die Vorstellung der grundlegenden Datentypen der Sprache Im zweiten Part wird der generelle Aufbau eines PROLOG Programms beschrieben 8 2 1 1 Dat
131. mster Programme werden in derselben JVM ausgef hrt wie der Simulator selbst Hintergrund f r diese Erweiterung ist der dass auf einigen Linux und Macintosh Rechnern Fehler beim Starten eines Hamster Programms auftraten bzw es nach dem Dr cken des Run Buttons bis zu einer Minute dauerte bis der Hamster tats chlich loslief Die Hamster Programmierer bei denen dieses Problem auftritt m ssen also einfach dieses Property auf false setzen womit sich das Problem gel st hat Nachteil Im Modus runlocally true ist es nicht m glich den Debugger zu nutzen und die Benutzung des CLASSPATH ist ebenfalls nicht m glich Weitere Infos siehe in Abschnitt 5 Der Hamster Simulator ist nun auch komplett in englischer Sprache nutzbar Komplett bedeutet sowohl die Oberfl che des Simulators als auch das Hamster Modell selbst wurden an die englische Sprache angelehnt Hierzu muss nur das Property language auf den Wert en gesetzt werden Standardm ig steht der Wert auf de Deutsch Weitere Infos finden sich in Abschnitt 6 1 11 nderungen in Version 2 3 gegen ber 2 2 Die Version 2 3 des Hamster Simulators enth lt folgende nderungen bzw Erweiterungen gegen ber Version 2 2 Es ist nun auch m glich Hamster Programme in der funktionalen Programmiersprache Scheme zu schreiben Genaueres siehe im Abschnitt 7 Die Properties wurden erweitert siehe Abschnitt 5 Der Hamster Simulator ist nun Mehrbenutzer f hig d h er kann einmal auf einem S
132. mster Simulator Ordner java Dpython home C Program Files jython2 5 1 hamstersimulator jar und starten den Hamster Simulator dann durch Doppelklick auf diese Datei hamstersimulator bat jar 9 2 2 Eigene Module definieren Sie k nnen auch eigene Module definieren und nutzen Wenn Sie bspw einen vordefinierten Hamster Befehl rechtsUm zur Verf gung stellen wollen gehen Sie folgenderma en vor 1 Legen Sie im Jython Lib Verzeichnis bspw eine Datei mit dem Namen hamstererweiterung py an F llen Sie die Datei mit folgendem Inhalt from de hamster python model import PythonHamster vor Py linksUm gib Pyt nimm vornFrei kornDa maulLeer def rechtsUm linksUm linksUm linksUm thonHamster getStandardHamsterIntern vor PythonHamster getStandardHamsterIntern LlinksUm cthonHamster getStandardHamsterIntern gib PythonHamster getStandardHamsterIntern nimm PythonHamster getStandardHamsterIntern vornFrei PythonHanster getStandardHamsterIntern kornDa PythonHamster getStandardHamsterIntern maulleer 2 Starten Sie dann den Hamster Simulator neu 3 Im Hamster Simulator k nnen Sie nun bspw folgendes Programm eingeben und ausf hren 96 from hamstererweiterung import rechtsUm for i in range 5 vor rechtsUm 4 Wenn Sie die definierten Befehle nicht ein
133. mster Simulator dem Offnen einer Datei Der entsprechende Inhalt wird im Eingabebereich des Fensters dargestellt Den Ordnern und Dateien sind Popup Men s zugeordnet Um diese zu ffnen muss man zun chst den Ordner bzw die Datei mit der Maus anklicken Der Name wird dann durch einen blauen Balken hinterlegt Anschlie end muss man die rechte Maustaste dr cken Dann ffnet sich das Popup Men Die Popup Men s enthalten bspw Mentitems zum L schen und Umbenennen des entsprechenden Ordners bzw der entsprechenden Datei 4 2 Verwalten und Editieren von Hamster Programmen Das Schreiben von Programmen bzw genauer gesagt das Schreiben des Sourcecodes von Programmen bezeichnet man als Editieren Im Hamster Simulator dient das Editor Fenster zum Editieren von Hamster Programmen 34 Schauen Sie sich das Editor Fenster einmal an siehe Abbildung 13 Meniileiste Toolbar Datei Bearbeiten Compiler Debugger Fenster Extras Hilfe iS S O 8 bg H V meinErstesProgramm Ris E Programme o EI beispielprogramme gt C band 1 gt C band 2 gt CH band 3 gt C prolog void main while vornFrei vor rechtsUm gt C scheme gt meinErstesProgramm OO A Oh m WN void kehrt linksUn 10 linksUm i 12 13 void rechtsUm 14 kehrt 15 linksUm 16 17 VD Spalte Dateibaum Eingabebereich Abbildung 13 Editorfenster Im link
134. n Aus Scratch Hamster Programmen k nnen nun Java Hamster Programme generiert werden Die Beschriftungen der Scratch Bl cke lassen sich ber Properties ndern 1 6 nderungen in Version 2 8 gegen ber 2 7 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige Erweiterungen sind Hamster Programme k nnen nun auch in der Programmiersprache Python geschrieben werden siehe Kapitel 9 Hamster Programme k nnen nun auch in der Programmiersprache Ruby geschrieben werden siehe Kapitel 10 Hamster Programme k nnen nun auch in der visuellen Programmiersprache Scratch geschrieben werden siehe Kapitel 11 1 7 nderungen in Version 2 7 gegen ber 2 6 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige nderungen sind Im Dateibaum des Editor Fensters werden nun auch die Territorium Dateien angezeigt Beim Anklicken wird das entsprechende Territorium in das Simulation Fenster geladen Existiert in einem Ordner zu einem Hamster Programm ein gleichnamiges Territorium wird beim ffnen bzw Aktivieren des Hamster Programms das Territorium automatisch in das Simulation Fenster geladen Im Editor Fenster gibt es nun entsprechende Funktionen Sichern mit Territorium durch dessen Aktivierung das gerade aktive Programm und gleichzeitig auch das aktuelle Territorium in eine gleichnamige Datei gespeichert werden ber ein Property namens laf kann das Look And Feel Erscheinungsbild des Hamster Simulators angepass
135. n chst den entsprechenden Namen im Dateibaum an Er wird durch ein blaues Rechteck hinterlegt Klicken Sie anschlie end die rechte Maustaste Es erscheint ein Popup Men in dem Sie das Mentitem Umbenennen anklicken Es ffnet sich eine Dialogbox in der Sie den neuen Namen angeben k nnen Wenn Sie eine Datei mit einem Hamster Programm umbenannt haben m ssen Sie sie neu kompilieren 4 2 6 Verschieben eines existierenden Hamster Programms in einen anderen Ordner M chten Sie eine Datei mit einem Hamster Programm oder auch einen kompletten Ordner in einen anderen Ordner verschieben klicken Sie den entsprechenden Namen im Dateibaum an und verschieben Sie den Mauscursor bei gedr ckter Maustaste ber den Namen des Ordners in den die Datei bzw der Ordner verschoben werden soll Der Name verschwindet aus dem vorherigen Ordner und erscheint im neuen Ordner falls dieser ge ffnet ist Wenn Sie eine Datei mit einem Hamster Programm in einen anderen Ordner verschoben haben m ssen Sie sie neu kompilieren 4 2 7 Kopieren eines existierenden Hamster Programms in einen anderen Ordner M chten Sie ein Hamster Programm in einen anderen Ordner kopieren klicken Sie zun chst den entsprechenden Namen im Dateibaum an Er wird durch ein blaues Rechteck hinterlegt Klicken Sie anschlie end die rechte Maustaste Es erscheint ein Popup Men in dem Sie das Men item Kopieren anklicken Klicken Sie nun im Dateibaum den Namen des Ordner
136. n 1 7 bezeichnet Sie sollten m glichst immer die aktuellste Version installieren Notwendige Voraussetzung f r die Nutzung des Hamster Simulator ist die Nutzung mindestens der Version 6 Neben der ben tigten Java Laufzeitumgebung beinhaltet ein JDK noch weitere Werkzeuge zur Entwicklung von Java Programmen wie bspw einen Compiler Sie sollten also ein JDK installieren wenn Sie au er Hamster Programmen noch richtige Java Programme entwickeln m chten Problem beim JDK ist Es ist sehr gro ca 70 MByte Es kann ber den folgenden URL kostenlos aus dem WWW geladen werden http www oracle com technetwork java javase downloads index html Die zweite Variante ist die Installation eines Java SE Runtime Environment JRE Dieses stellt genau die ben tigte Laufzeitumgebung dar JREs sind in JDKs enthalten existieren also in denselben Versionen Die Vorteile von JREs sind Sie sind weit weniger gro ca 20 MBytes Auch JREs k nnen ber den folgenden URL kostenlos aus dem WWW geladen werden http www oracle com technetwork java javase downloads index html Sowohl das JDK als auch das JRE werden standardm ig von der Firma SUN f r die Betriebssysteme Windows Linux und Solaris zur Verf gung gestellt leider nicht f r Ma cintosh Betriebssysteme Nachdem Sie entweder ein JDK oder ein JRE auf Ihren Rechner geladen haben m ssen Sie es installieren Das geschieht normalerweise durch Ausf hren der geladenen Datei in Wi
137. n L1 last X L Liefert X als letztes Element der Liste L 8 2 4 Trace Boxenmodell In PROLOG gibt es eine M glichkeit sich die Einzelheiten der Ausf hrung einer Abfrage n her anzuschauen und somit das Programm auf eventuelle Fehler zu untersuchen Mit Hilfe des trace Pr dikats kann das PROLOG System in den sogenannten 84 Protokollierungs Modus versetzt werden W hrend des tracing Mode macht das System f r jeden ausgef hrten Schritt zus tzliche Ausgaben auf die Konsole Anhand dieser Ausgaben beh lt der Programmierer die bersicht ber den aktuellen Ausf hrungsfortschritt und kann durch Interaktion mit dem System die Abarbeitung des aktuellen Programms in eine von ihm gew nschte Richtung lenken Die im tracing Modus get tigte Ausgabe des PROLOG Systems wird durch das Boxenmodell beschrieben Das Boxenmodell stellt ein vereinfachtes Modell zur grafischen Visualisierung der Ausf hrung einer PROLOG Klausel dar Eine einzelne Box repr sentiert dabei eine PROLOG Klausel Die Box hat mehrere Ein und Ausgabe Ports die vom System w hrend der Bearbeitung der Klausel abh ngig vom aktuellen Zustand und den Eingaben des Nutzers genommen werden k nnen Die Bedeutung der einzelnen Ports wird nachfolgend erl utert CALL Beim Aufruf einer Klausel wird f r diese eine neue Box erstellt und ber den CALL Port betreten Jede erstellte Box bekommt eine fortlaufend vergebene Nummer zugewiesen Besteht die aktuelle Klausel aus mehrere
138. n Sie die Datei dann ab Ruby Programme brauchen nicht compiliert zu werden Nach dem Abspeichern haben Sie direkt die M glichkeit das Programm auszuf hren Syntaxfehler werden erst zur Laufzeit angezeigt Im Hamster Simulator lassen sich sowohl imperative als auch objektorientierte Ruby Programme entwickeln Auch gemischte Programme sind m glich Der imperative Hamster kennt wie blich die Befehle 107 vor linksUm gib nimm vornFrei gt bool kornDa gt bool maulLeer gt bool Eine vordefinierte Klasse namens Hamster kann f r objektorientierte Ruby Programme genutzt werden Die Klasse stellt folgende Methoden zur Verf gung vor linksUm gib nimm vornFrei gt bool kornDa gt bool maulLeer gt bool schreib string liesZeichenkette string gt string liesZahl string gt int getReihe gt int getSpalte gt int getBlickrichtung gt int Hamster NORD Hamster SUED Hamster OST Hamster WEST getAnzahlKoerner gt int getStandardHamster gt Hamster Die Klasse definiert 2 Konstruktoren Hamster reihe spalte blickrichtung anzahlKoerner Hamster hamster 10 3 Ruby Beispielprogramme Die folgenden Unterabschnitte demonstrieren an Beispielen das Schreiben von Ruby Hamster Programmen 10 3 1 Territorium leeren Das folgende Ruby Programm ist ein einfaches imperatives Beispielprogram
139. n Unterzielen so werden f r diese innerhalb der aktuellen Box weitere Boxen angelegt EXIT Bei der erfolgreichen Bearbeitung der Klausel verl sst das System die Box ber den EXIT Port Ist die aktuelle Klausel nur ein Teil einer gr eren Abfrage so wird anschlie end das n chste Unterziel Klausel der Abfrage ber den CALL Port aufgerufen FAIL Konnte die aktuelle Klausel nicht wahr gemacht werden so verl sst das System ber diesen Ausgang die Box Bei der dar ber liegenden Klausel wird dabei beim Backtracking das REDO Port betreten um eine Neuauswertung der dar ber liegenden Klausel zu initiieren REDOBeim Backtracking kommt das System ber diesen Port zu seinem fr heren Ziel zur ck Dem Programmierer stehen zudem mehrere M glichkeiten zur Verf gung die Bearbeitung der aktuellen Klausel zu beeinflussen bzw zu dirigieren creep Aktion Bei der Wahl dieser Aktion setzt das System die Bearbeitung der Klausel fort bis das n chste Port Ereignis registriert wird skip Aktion Die Protokollierung der Ausf hrung der aktuellen Klausel wird bersprungen retry Aktion Mit dieser Anweisung kann der Programmierer ein Backtracking Schritt erzwingen Das PROLOG System kehrt dabei zur ck und versucht die aktuelle Klausel erneut zu erf llen fail Aktion Mit der fail Aktion kann der Programmierer das Fehlschlagen des aktuellen Ziels erzwingen Dabei wird das PROLOG System sofern es m glich ist ein Backtracking Schritt ei
140. nderma en diese Modu 97 le nutzen import sys sys path append Programme from my import rechtsUm if vornFrei vor rechtsUm 9 3 Python Beispielprogramme Die folgenden Unterabschnitte demonstrieren an Beispielen das Schreiben von Python Hamster Programmen 9 3 1 Territorium leeren Das folgende Python Programm ist ein einfaches imperatives Beispielprogramm bei dem der Standard Hamster ein beliebiges Territorium ohne innere Mauern leert Aufgabe der Hamster steht irgendwo in einem beliebigen Territorium ohne innere Mauern er soll alle K rner fressen def kehrt linksUm linksUm def rechtsUm kehrt linksUm def laufeZurueck while vornFrei vor def sammle while kornDa nimm def laufeZurWand while vornFrei vor def laufelnkEcke laufezurWand linksUm laufezurWand linksUm 98 def ernteEineReihe sammle while vornFrei vor sammle def ernteEineReiheUndLaufeZurueck rnteEineReihe kehrt laufeZurueck laufelnEcke rnteEineReiheUndLaufeZurueck rechtsUm while vornFrei vor rechtsUm rnteEineReiheUndLaufeZurueck rechtsUm 9 3 2 Territorium leeren 2 Auch das folgende Python Programm ist ein einfaches imperatives Beispielprogramm bei dem der Standard Hamster ein beliebiges Territorium ohne innere Mauern leert Aufgabe
141. ndows Doppelklick auf die exe Datei Sie werden dann durch die weitere Installation gef hrt 2 2 Laden und Installation des Hamster Simulators Auf der Hamster Website http www java hamster modell de befindet sich im Bereich Simulator eine Datei namens hamstersimulator v29 02 zip zip Dateien sind Dateien die mehrere andere Dateien komprimiert speichern Die Datei hamstersimula tor v29 02 zip m ssen Sie auf Ihren Rechner laden und anschlie end entpacken Die Datei enth lt eine Reihe von Dateien und vier Ordner Die wichtigsten sind Datei hamstersimulator jar Enth lt den ausf hrbaren Hamster Simulator Datei hamstersimulator bat Alternative zum Starten des Hamster Simu lators unter Windows Datei handbuch pdf Das Handbuch zum Hamster Simulator im PDF Format Datei hamster properties Datei zum Einstellen bestimmter Eigenschaften Ordner Programme Enth lt standardm ig alle Hamster Programme der drei Hamster B cher In diesem Ordner werden von Ihnen entwickelte Hamster Programme abgespeichert Dieser Ordner muss sich immer in demselben Ordner befinden in dem auch die Dateien hamstersimulator jar undhamstersimulator bat liegen Ordner 1ib Enth lt diverse ben tigte Java Bibliotheken Insbesondere die Datei tools jar in dem der Java Compiler steckt Ordner handbuch Das Handbuch im HTML Format Ordner pseudo hamsterklassen Hier liegen die Klassen aus Anhang A von Band 2 des Java Hamster Buches
142. ne neue Prozedur bzw Funktion definiert in die alle Bl cke des Stapels unterhalb des betroffenen Blockes ausgelagert werden Die ausgelagerten Bl cke werden automatisch durch einen Block der neuen Prozedur bzw Funktion ersetzt Auch Boolescher Ausdruck Bl cke lassen sich in Funktionen auslagern In die neue Funktion wird dann automatisch eine entsprechende Boolesche Return Anweisung integriert 11 5 Ausf hren von Scratch Hamster Programmen Zum Ausf hren von Scratch Hamster Programmen dienen die entsprechenden Buttons Start bzw Fortf hren Pause und Stopp der Toolbar Scratch Hamster Programme werden dabei interpretativ ausgef hrt m ssen also nicht und k nnen auch nicht compiliert werden Ein Abspeichern ist vor der Ausf hrung nicht unbedingt notwendig W hrend der Ausf hrung eines Programms was man daran erkennt dass der Stopp Button enabled also anklickbar ist ist keine Anderung an dem Programm m glich Weiterhin ist es m glich ein Scratch Programm Schritt f r Schritt d h Anweisung f r Anweisung auszuf hren Hierzu dient der Schritt hinein Button der Toolbar Der Block der im n chsten Schritt auszuf hrenden Anweisung wird dabei im Programmbereich durch eine rote Farbe markiert Es wird automatisch in neu definierte Prozeduren bzw Funktionen verzweigt und die entsprechenden Tabs werden automatisch ge ffnet Das schrittweise Ausf hren eines Scratch Hamster Programms ist von Anfang an oder auch w hrend
143. nende kleine rote Pfeile entsprechend an andere Stellen gedraggt werden 138 Pfeile lassen sich ber das Kontext Men des ausgehenden Elementes l schen Verbindung entfernen Von jedem Element au er einem Verzweigung Element kann nur ein Pfeil ausgehen Zeichnet man einen weiteren Pfeil wird der andere automatisch entfernt Aus einem Verzweigung Element k nnen zwei Pfeile ausgehen Einer kennzeichnet den Weg sollte die Auswertung des Verzweigung Elementes zur Laufzeit den Wert wahr true ja ergeben der andere den anderen Fall falsch false nein Zeichnet man einen Pfeil der von einem Verzweigung Element ausgeht wird man gefragt ob es sich um den ja oder nein Pfeil handeln soll 13 5 Weitere Funktionen Ausf hrung Wie andere Programme auch k nnen Hamster PAPs gestartet gestoppt pausiert und fortgesetzt werden Auch eine schrittweise Ausf hrung ist m glich Funktion Schritt hinein W hrend der schrittweisen Ausf hrung werden die gerade aktiven Elemente rot hervorgehoben Speichern Laden Hamster PAPs k nnen bspw ber das Men Date gespeichert und sp ter wieder geladen werden Im Dateibaum im Editorfenster werden entsprechende Dateien durch das Symbol gelbes K stchen mit blauem Punkt dargestellt Drucken Hamster Automaten k nnen bspw ber das Men Datei gedruckt werden Generieren ber das Men Hem Generieren im Men Datei l sst sich aus einem Hamster PAP ein gl
144. ng f r Anweisung auszuf hren Das k nnen Sie mit Hilfe der beiden rechten Buttons in der Men leiste des Editor Fensters Der linke Button hei t Schritt hinein Button der rechte Schritt Ober Button Normalerweise bewirken die beiden Button das gleiche die n chste Anweisung und nur die wird ausgef hrt Wenn die n chste auszuf hrende Anweisung jedoch der Aufruf einer von Ihnen definierten Prozedur oder Funktion ist bewirkt der Schritt Ober Button die Ausf hrung der kompletten Prozedur ohne zwischendurch anzuhalten w hrend durch das Anklicken des Schritt hinein Buttons zur ersten Anweisung des entsprechenden Funktionsrumpfs verzweigt wird und Sie dadurch die M glichkeit haben auch die Ausf hrung der Funktion schrittweise zu t tigen Sie k nnen bei aktiviertem Debugger zun chst auch einfach das Programm durch Anklicken des Ausf hren Buttons starten und beobachten Wenn Sie dann den Pause Button dr cken haben Sie anschlie end ebenfalls die M glichkeit der schritt weisen Ausf hrung ab der aktuellen Position Den Pause Zustand mit der M glichkeit der schrittweisen Ausf hrung eines Programms k nnen Sie jederzeit wieder durch Anklicken des Ausf hren Buttons beenden Das Programm l uft dann selbstst ndig wieder weiter 26 3 6 Zusammenfassung Herzlichen Gl ckwunsch Wenn Sie bis hierhin gekommen sind haben Sie Ihr erstes Hamster Programm erstellt und ausgef hrt Sie sehen die B
145. nitt 8 Befindet sich in der Datei hamster properties eine Zeile mit dem Text prolog false ist der Prolog Modus ausgeschaltet Befindet sich in der Datei hamster properties eine Zeile mit dem Text prolog true ist der Prolog Modus eingeschaltet Standardm ig ist der Prolog Modus ausgeschaltet 5 1 12 plcon Uber die Property plcon kann der Pfad zum SWIProlog Interpreter angegeben werden Standardm ig ist dort der Wert swipl exe angegeben Wurde SWIProlog installiert und die PATH Umgebungsvariable entsprechend angepasst sollte das unter WINDOWS funktionieren F r andere Betriebssysteme LINUX muss hier eventuell der vollst ndige Pfad zum SWIProlog Interpreter angegeben werden bspw in der Form plcon C Programme pl bin swipl exe oder plcon C Programme pl bin swipl exe Achtung In lteren Versionen von SWI Prolog hie der SWI Interpreter nicht swipl sondern plcon Dementsprechend m ssten Sie swipl exe durch plcon exe ersetzen 59 5 1 13 laf Uber die Property laf kann seit der Version 2 7 das Look And Feel des Hamster Simulators d h sein Erscheinungsbild ver ndert werden Folgende Einstellungen sind dabei m glich laf com sun java swing plaf nimbus NimbusLookAnd
146. nleiten und die n chste Alternativl sung pr sentieren Ausgehend vom Programm Beispiel im Abschnitt 8 2 2 3 nachfolgend eine Anfrage im trace Modus gestartet Das PROLOG System erstellt dabei die folgende Ausgabe An den einzelnen Interaktionspunkten wurde hier stets die creep Aktion gew hlt trace raeuber fuchs Call 8 raeuber fuchs creep 85 Call 9 tier fuchs creep Exit 9 tier fuchs creep Cal 9 jagt fuchs _1186 creep Exit 9 jagt fuchs maus creep Exit 8 raeuber fuchs creep true 8 2 5 Kontrollfluss Bei den prozedurallen Programmiersprachen gibt es eine Reihe unterschiedlicher Kontrollstrukturen um Fallunterscheidungen durchf hren zu k nnen Das if then else Konstrukt ist eines davon In PROLOG gibt es ebenfalls eine M glichkeit diesen Konstrukt mit Hilfe von Prozeduren nachzubilden Das nachfolgende Beispiel stellt eine Implementierung dieses Konstrukts dar oe QQ if then else P O R Ge Py Q if then else P Q R 27 not P R NH oe Diese L sung ist aber nicht sehr effizient da bei der Bearbeitung der Prozedur auch unn tige Berechnungen durchgef hrt werden Nehmen wir an dass w hrend der Bearbeitung die erste Klausel C1 augewahlt und das erste Pradikat P bereits als wahr ausgewertet wurde Das Pr dikat Q schl gt aber nachfolgend fehl In diesem Fall w rde das PROLOG System im Rahmen des Backtracking zur ckgehen und eine altern
147. nteren Bereich die Befehlssequenz auch Output genannt festgelegt werden Die Vorgehensweise in beiden Bereichen ist aber die Gleiche Im linken Feld des jeweiligen Bereiches befinden sich die zur Auswahl stehenden Elemente Um ein Element auszuw hlen wird dieses per Drag and Drop in das jeweils rechte Feld gezogen Dort muss es an eine hervorgehobene Stelle innerhalb des gr nen bzw blauen Feldes platziert werden Diese Stellen werden sichtbar graue Hervorhebung sobald die Maus ber den entsprechenden Bereich f hrt W hrend bei der Bedingung genau ein Element ausgew hlt wird in das gegebenenfalls Kinderelemente gezogen werden k nnen so ist es bei der Befehlssequenz m glich eine Ausgabeliste zu erstellen die aus mehreren Elementen bestehen kann Um ein Element wieder aus der Auswahl Liste in den rechten Bereichen zu entfernen muss der Men punkt l schen im Kontextmen des Elementes ausgew hlt werden Dabei werden gegebenenfalls auch untergeordnete Elemente gel scht Das Kontextmen f r ein Element wird dabei dadurch ge ffnet dass der rechte Mausbutton geklickt wird w hrend sich der Mauszeiger auf dem entsprechenden Element befindet Durch Anklicken des fertig Buttons wird die Definition der Transition best tigt Wird das Fenster geschlossen oder die Auswahl abgebrochen so werden Standardwerte als Ein und Ausgabe genommen Gleiches geschieht wenn in der Auswahl nichts festgelegt wurde Dies soll ung ltige Trans
148. nternet finden Sie viele Informationen rund um die Programmiersprache Python Schauen Sie einfach mal unter folgenden Links nach e http www python org offizielle Webseite e http de wikipedia org wiki Python Programmiersprache Wikipedia e http openbook galileocomputing de python Online Buch 9 2 Python Hamster Programme Um mit dem Hamster Simulator Python Programme entwickeln und ausf hren zu k nnen muss die Property python auf true gesetzt sein Standardm ig ist das nicht der Fall ffnen Sie also die Datei hamster properties und ersetzen Sie dort die Zeile python false durch die Zeile python true Starten Sie dann den Hamster Simulator Wenn Sie ein neues Programm erstellen wollen w hlen Sie in der erscheinenden Dialogbox den Eintrag Python Programm Im Editor Bereich erscheint dann ein Feld mit dem Inhalt if vornFrei vor 94 Ersetzen Sie diesen Inhalt durch Ihr Python Programm und speichern Sie die Datei dann ab Python Programme brauchen nicht compiliert zu werden Nach dem Abspeichern haben Sie direkt die M glichkeit das Programm auszuf hren Syntaxfehler werden erst zur Laufzeit angezeigt Im Hamster Simulator lassen sich sowohl imperative als auch objektorientierte Python Programme entwickeln Auch gemischte Programme sind m glich Der imperative Hamster kennt wie blich die Befehle vor linksUm gib nimm vornFrei gt bool kornDa gt bool maulLeer gt
149. ogboxen die zum Speichern und ffnen von Dateien benutzt werden siehe Abbildung 11 Sie spiegeln im Prinzip das Dateisystem wider und enthalten Funktionalit ten zum Verwalten von Dateien und Ordnern ffnen U xl Suchen in C Programme x ES ei fe EB CC beispielprogramme Ci paul AllroundHamster G MeinErstesHamsterProgramm G SammelHamster D SammelndeHamster Dateiname MeinErstesHamsterProgramm ham Dateityp Programm u ffnen Abbrechen Abbildung 11 Dateiauswahl Dialogbox Im mittleren Bereich einer Dateiauswahl Dialogbox erscheinen alle Dateien und Unterordner des aktuellen Ordners Sie sind durch unterschiedliche Symbole repr sentiert Der eigentliche Zweck von Dateiauswahl Dialogboxen ist wie der Name schon sagt die Auswahl einer Datei Klickt man auf eine Datei erscheint der Name automatisch im Eingabefeld Dateiname Dort kann man auch ber die Tastatur einen Dateinamen eingeben Anschlie end wird nach Dr cken des OK Buttons die entsprechende Datei ge ffnet bzw gespeichert Dateiauswahl Dialogboxen stellen jedoch noch zus tzliche Funktionalit ten bereit Durch Doppelklick auf einen Ordner kann man in den entsprechenden Ordner wechseln Es werden dann anschlie end die Dateien und Unterordner dieses Ordners im mittleren Bereich angezeigt Um zu einem bergeordneten Ordner zur ck zu gelangen bedient man sich des Men s Suchen in in dem man d
150. on 5 6 61 des Interpreters verwendet Auch andere Versionen sind aber durchaus verwendbar da keine zus tzlichen Bibliotheken verwendet werden Die PROLOG Komponente verwendet die konsolenbasierte Version des Interpreters plcon exe bzw swipl exe Die daf r verantwortliche Anwendungsdatei befindet sich nach der Installation im Unterverzeichnis bin des Installationsverzeichnisses von SWIProlog Damit die Anwendungsdatei von der Java Virtual Machine gefunden werden kann muss die Umgebungsvariable PATH um den Pfad standardm ig C Programme pl bin erweitert werden Weiterhin muss in der Datei hamster properties das Property prolog auf true gesetzt sein und unter Umst nden muss das Property plcon auf den vollst ndigen Pfad zum SW IProlog Interpreter gesetzt werden siehe Abschnitt 5 1 11 und 5 1 12 8 1 Logikbasierte Programmierung Aus Wikipedia Logische oder logikbasierte Programmierung ist ein Programmierparadigma das auf der mathematischen Logik beruht Anders als bei der imperativen Programmierung besteht ein Logik Programm nicht aus einer Folge von Anweisungen sondern aus einer Menge von Axiomen welche hier als eine reine Ansammlung von Fakten oder Annahmen zu verstehen sind Stellt der Benutzer eines Logik Programms eine Anfrage so versucht der Interpreter die L sungsaussage allein aus den Axiomen zu berechnen Dazu werden eine Menge von so genannten Regeln und Anweisungen die der Syntax gem aufgebaut sind zus
151. onsoler nves erahnen 71 7 2 mplementierungshinweise zus 72 8 Prolog BEEN 73 8 0 e EE Te Te EE 73 8 1 Logikbasierte Programmierumng nnn 73 8 2 Die Programmiersprache Prolog AAA 74 8 2 1 Syntax von Prolog 75 8 2 2 Operationale Semantik eege EE EE EES EEN 79 E Ener 81 8 2 4 e e E INTE 84 8 2157 nee 86 8 2 6 Informationen zu Prolog im WWW 87 8 3 Prol g H anister Modell ra a ae a a ae ee 87 8 4 Prolog Hamster Programme EEN 90 8 3 Prol6g gt Konsoler un anne ee ein nee 91 8 6 EE 91 9 A el EE 94 9 1 Die Programmiersprache Python Li 94 9 2 Python Hamster Programme ums44424444440nnnnnnnnnnnnnnnnnnmnnnnnnnnnnnnnnnnnnnnnnnnnn 94 9 2 1 Python Bibliothek einbnden 111 95 9 2 2 Eigene Module definieren EEN 96 9 3 Pvthon Beispoielorogoramme ennn 98 9 3 1 Terrilori m leeren 2 u r Herne ee er ee 98 9 3 2 Territorium EEN 99 E CN e EE nl E EE 101 GES e E TEE 102 9 3 5 Objektorientiertes Territorium Jeeren un 102 9 4 Pyth n Konsble ec asd cate eo ca ee ce pene poses Gowen hie eno nee 103 9 3 HEISER 104 192 RUDY penta ath A nto a EA ata EE 107 10 1 Die Programmiersprache Ruby ee 107 102 Ruby Hamster Programme seier eege 107 10 3 bw eelere Cegedel 108 10 3 1 STeitiion mleerent ra ee ee ee ee ee ra eee see ee 108 10 3 2 Territorium leeren EE 110 10 3 3 BergrerklliNnMen BEE 112 ke E WEE GE 113 10 3 5 Objektorientiertes Territorium leeren en 113 HOA RUDY KOMSO E eet ee EEGEN 1
152. paraten Klassen Befindet sich aktuell eine Datei mit einer separaten Klasse im Eingabebereich erscheint der Ausf hren Button auch ausgegraut und kann nicht angeklickt werden Nach dem Starten eines Hamster Programms werden die Hamster im Hamster Territorium aktiv und tun das was das Programm ihnen befiehlt W hrend des Ausf hrens eines Hamster Programms wird der Eingabebereich im Editor Fenster ausgegraut d h es k nnen w hrend der Ausf hrung eines Programms keine Anderungen am Sourcecode durchgef hrt werden Wenn Sie vor dem Anklicken des Ausf hren Buttons die Datei im Eingabebereich ge ndert aber noch nicht gespeichert und oder kompiliert haben werden Sie ber entsprechende Dialogboxen gefragt ob das Abspeichern und Kompilieren noch vor dem Ausf hren erledigt werden soll oder nicht 4 5 2 Stoppen eines Hamster Programms Die Ausf hrung eines Hamster Programms kann durch Anklicken des Stopp Buttons erster Toolbar Button des Simulation Fensters von rechts jederzeit abgebrochen werden 47 4 5 3 Pausieren eines Hamster Programms M chten Sie ein in Ausf hrung befindliches Programm anhalten k nnen Sie dies durch Anklicken des Pause Buttons zweiter Toolbar Button des Simulation Fensters von rechts tun Wenn Sie anschlie end auf den Ausf hren Button klicken wird das Programm fortgef hrt 4 5 4 W hrend der Ausf hrung eines Hamster Programms Der Standard Hamster wird immer in blau darges
153. piele Das folgende Prolog Hamster Beispielprogramm zeigt eine L sung f r das Problem dass der Hamster ein mauerloses Territorium komplett leeren sprich alle K rner fressen soll Weitere Beispielprogramme finden Sie in den Beispielprogrammen des Hamster Simulators 91 OO 6 Eintrittspunkt des Programms main leereTerritorium zus tzliche n tzliche Befehle kehrt linksUm linksUm rechtsUm kehrt linksUm laufeZurWand vornFrei vor laufeZurWand laufeZurWand laufeInEcke laufeZurWand LinksUm laufeZurwand LinksUm zus tzliche Testbefehl ohne Seiteneffekte linksFrei linksUm vornFrei rechtsUm linksFrei rechtsUm fail rechtsFrei rechtsUm vornFrei linksUm rechtsFrei linksUm fail K rner sammeln nimmAlle 92 kornDa nimm nimmAlle nimmAlle 6 laufen und sammeln graseReiheAb nimmAlle vornFrei vor graseReiheAb graseReiheAb leereTerritorium laufelnEcke graseAlleReihenAb leereTerritorium graseAlleReihenAb graseReiheAb kehrt laufeZurWand kehrt linksFrei begibDichInNaechsteReihe G graseAlleReihenAb begibDichInNaechsteReihe linksUm vor rechtsUm 93 9 Python Die Programmiersprache Python wurde Anfang der 1990er Jahre von Guido van Rossum am Centrum Wiskunde amp Informatica Zentrum f r Mathematik un
154. pringt auf den Vorsprung end 112 der Hamster dreht sich nach rechts um def rechtsUm linksUm linksUm linksUm end hat der Hamster den Gipfel erreicht def gipfelErreicht return vornFrei end der Hamster soll zunaechst bis zum Berg laufen und dann den Berg erklimmen laufeZumBerg erklimmeDenBerg 10 3 4 Wettlauf Im folgenden objektorientierten Ruby Programm liefern sich 3 Hamster einen Wettlauf bis zur nachsten Mauer paul Hamster getStandardHamster willi Hamster new paul maria Hamster new paul getReihe 1 paul getSpalte paul getBlickrichtung 0 while paul vornFrei and willi vornFrei and maria vornFrei paul vor willi vor maria vor end paul schreib Fertig 10 3 5 Objektorientiertes Territorium leeren Im folgenden Ruby Programm werden objektorientierte Konzepte genutzt um einen Hamster das Territorium leeren zu lassen Ein neu erzeugter Hamster grast das Territorium ab und zaehlt dabei die gesammelten Koerner class AbgrasHamster lt Hamster def initialize reihe spalte blickrichtung anzahlKoerner super reihe spalte blickrichtung anzahlKoerner gesammelt 0 end def kehrt linksUm linksUm end 113 def end def end def end def end def end rechtsUm kehrt linksUm laufeZurueck while vornFrei vor end sammle while kornDa nimm gesammelt 1 end laufeZurWand while vornFrei vor end laufeInEcke laufeZur
155. program Wenn die Datei eine Hamster Klasse enth lt muss sie mit folgendem Kommentar beginnen class Wenn die Datei ein imperatives Hamster Programm enth lt ist nichts weiter zu beachten e Aus der ham Datei muss zun chst eine g ltige java Datei erzeugt werden Das geht durch folgenden Aufruf java classpath hamstersimulator jar tools jar de hamster ham2java lt ham Datei gt Im konkreten Beispiel java classpath hamstersimulator jar tools jar de hamster ham2java test sammler ham e Die erzeugte java Datei muss compiliert werden Das geht durch folgenden Aufruf javac classpath hamstersimulator jar tools jar lt java Datei gt Im konkreten Beispiel javac classpath hamstersimulator jar tools jar test sammler java Insofern das Programm keine Fehler enthalt wird eine class Datei mit dem Java Byte Code erzeugt e Es muss mit dem Hamster Simulator eine Datei mit einem Territorium erzeugt und gespeichert werden in unserem Beispiel in die Datei test sammler ter e Nun kann das Hamster Programm in dem Territorium ausgef hrt werden Das geht durch folgenden Aufruf 13 java classpath hamstersimulator jar tools jar de hamster run lt class Datei gt lt ter Datei gt Im konkreten Beispiel java classpath hamstersimulator jar tools jar de hamster run test sammler class test sammler ter e Dann erscheint das Hamster Territorium und man muss nur noch auf den Start Button dr cken 1 12 2 Hamstern mit BlueJ BlueJ
156. r endarstellung des Hamster Territoriums Durch Anklicken des Vergr ern bzw Verkleinern Buttons zehnter und elfter Toolbar Button von links k nnen Sie die Darstellung der Hamster Territoriums manipulieren Bei jedem Klick auf einen dieser Buttons erscheint es vergr ert bzw verkleinert Eine Verkleinerung ist dabei nur bis zu einem bestimmten Ma m glich so dass man auch noch etwas erkennen kann 4 5 Ausf hren von Hamster Programmen Ausgef hrt werden Hamster Programme im Simulation Fenster Zur Steuerung dienen dabei die Graphik Buttons sowie der Schieberegler im rechten Teil der Toolbar oberhalb des Hamster Territoriums siehe auch Abbildung 18 Alle Steuerelemente befinden sich zus tzlich auch im Editor Fenster 46 Rucksetzen Geschwindigkeit ke A3 Ausf hren Stopp Abbildung 18 Toolbar des Simulation Fensters 4 5 1 Starten eines Hamster Programms Bevor ein Hamster Programm ausgef hrt werden kann muss es im Editor Fenster ge ffnet werden und sein Sourcecode im Eingabebereich des Editor Fensters erscheinen Au erdem muss es nat rlich erfolgreich kompiliert worden sein Gestartet werden kann dieses Programm dann durch Anklicken des Ausf hren Buttons dritter Toolbar Button des Simulation Fensters von rechts Es k nnen nur solche Programme ausgef hrt werden die in Dateien vom Typ Imperatives Programm oder objektorientiertes Programm abgespeichert sind also keine se
157. rend in einer Schleife abgespielt wird Wenn Sie einen anderen Sound w nschen wechseln Sie einfach im Unterverzeichnis data die Datei music mid gegen eine andere MIDI Datei aus Die weiteren Elemente der Toolbar kennen Sie bereits aus dem 2D Simulationsfenster Sie dienen zum Starten Pausieren und Stoppen der Ausf hrung eines Hamster Programms sowie zum Einstellen der Ausf hrungsgeschwindigkeit 53 4 7 2 Steuerung mittels der Maus Alternativ zur Benutzung der Toolbar Buttons kann die 3D Ansicht auch auf intuitive Weise mit der Maus manipuliert werden So kann das Zoomen ber das Mausrad vorgenommen werden Bei gedr ckter linker Maustaste kann die Hamsterwelt mit der Maus verschoben werden Bei gedr ckter rechter Maustaste wird die Welt mit Seitw rtsbewegungen rotiert und mit Aufw rtsbewegungen geneigt 4 8 Dateiverwaltung auf Betriebssystemebene Die von Ihnen entwickelten Hamster Programme sowie die Hamster Territorien werden auf Betriebssystemebene in Dateien abgespeichert Diese Dateien finden Sie im so genannten Workspace Ordner Dies ist standardm ig ein Ordner namens Programme in demselben Ordner in dem auch die Dateien zum Starten des Hamster Simulators hamstersimulator jar bzw hamstersimulator bat liegen ber ein entsprechendes Property kann auch ein anderer Workspace Ordner als der Ordner Programme verwendet werden siehe Abschnitt 5 Funktionen zum Verwalten dieser Dateien Umbenennen Kopieren
158. ritorium leeren zu lassen Ein neu erzeugter Hamster grast das Territorium ab und zaehlt dabei die gesammelten Koerner class AbgrasHamster Hamster def init self reihe spalte blickrichtung anzahlKoerner Hamster init self reihe spalte blickrichtung anzahlKoerner self Gesammelt 0 def kehrt self self linksUm self linksUm def rechtsUm self self kehrt self linksUm def laufeZurueck self while self vornFrei self vor 102 def sammle self while self kornDa self nimm self Gesammelt 1 def laufeZurWand self while self vornFrei self vor def laufelnEcke self self laufeZurWand self linksUm self laufeZurWand self linksUm def ernteEineReihe self self sammle while self vornFrei self vor self sammle def ernteHineReiheUndLaufeZurueck self self ernteEineReihe self kehrt self laufeZurueck def gesammelteKoerner self return self Gesammelt Hauptprogramm paul AbgrasHamster 2 3 Hamster WEST 0 paul laufelnEcke paul ernteEineReiheUndLaufeZurueck paul rechtsUm while paul vornFrei paul vor paul rechtsUm paul ernteEineReiheUndLaufeZurueck paul rechtsUm paul schreib Gesammelte Koerner str paul gesammelteKoerner HA Python Konsole Mit Hilfe der Python Konsole ist es m glich interaktiv Python und Python Hamster Befe
159. rk eingeschr nkt e Es gibt keine Variablen e Es gibt keine Schleifen e Rekursion spielt in der funktionalen Programmierung eine entscheidende Rolle e Zentrale Datenstruktur der funktionalen Programmierung ist die Liste 65 Funktionale Programmiersprachen werden insbesondere im Bereich der K nstlichen Intelligenz f r mathematische Beweissysteme und f r Logikanwendungen eingesetzt Weitere Eigenschaften der funktionalen Programmierung finden Sie bspw unter http de wikipedia org wiki Funktionale Programmierung 7 2 Die Programmiersprache Scheme Die erste funktionale Programmiersprache die in den 60er Jahren entwickelt wurde hie LISP Von Lisp wurden viele Dialekte entwickelt Die beiden Dialekte die zum Standard geworden sind hei en Common Lisp und eben Scheme d h Scheme ist ein standardisierter Lisp Dialekt Scheme ist keine rein funktionale Programmiersprache Vielmehr enth lt sie auch Konzepte der imperativen Programmierung Schleifen Variablen Um funktional programmieren zu lernen sollten Sie sich jedoch auf die funktionalen Konzepte beschr nken und die imperativen Konzepte nicht benutzen Im Internet finden sich eine Reihe von Informationen ber und Online Tutorials zu Scheme e http de wikipedia org wiki Scheme e http www htdp org How to design programs e http www ccs neu edu home dorai t y scheme t y scheme Z H 1 html Teach Yourself Scheme in Fixnum Days e http www cs hut fi Studies T
160. rn Kopieren Nach dem Anklicken eines Men items wird die Aktion gestartet und die Box schlie t sich automatisch wieder Klickt man irgendwo au erhalb der Box ins Fenster schlie t sich die Box ebenfalls und es wird keine Aktion ausgel st H ufig steht hinter den Mentitems ein weiterer Text wie z B Strg O oder Alt N Diese Texte kennzeichnen Tastenkombinationen Dr ckt man die entsprechenden Tasten wird dieselbe Aktion ausgel st die man auch durch Anklicken des Men items ausl sen w rde 30 Manchmal erscheinen bestimmte Men items etwas heller Man sagt auch sie sind ausgegraut In diesem Fall kann man das Men item nicht anklicken und die zugeordnete Aktion nicht ausl sen Das Programm befindet sich in einem Zustand in dem die Aktion keinen Sinn machen w rde Datei Bearbeiten Kompilieren Debugger Info 2 Ruckgangig Wiederherstellen Abbildung 7 Men 4 1 5 Toolbar Direkt unterhalb der Men leiste ist die so genannte Toolbar angeordnet siehe Abbildung 8 Sie besteht aus einer Menge an Graphik Buttons die Alternativen zu den am h ufigsten benutzten Mentitems darstellen Ketten zuvur munwvee AALT Vtc muny LELES Glale OS xee aer Aa ni Programme Abbildung 8 Toolbar 4 1 6 Popup Men Popup Men s sind spezielle Men s die bestimmten Elementen auf dem Bildschirm zugeordnet sind siehe Abbildung 9 Man ffnet sie dadurch dass man das Objekt zun chst anklickt und danach nochmal die re
161. rogrammiersprache Perl Zun chst wurde Ruby mangels englischsprachiger Dokumentation fast ausschlie lich in Japan benutzt wo es einen hnlichen Stellenwert erlangte wie Perl und Python in Europa und Amerika Um das Jahr 2000 wurden Aktivit ten gestartet um Ruby auch au erhalb Japans bekannt zu machen woraufhin mit der Zeit auch englische Dokumentationen entstanden Inzwischen gibt es auch dutzende deutschsprachige B cher zu Ruby im Allgemeinen und speziellen Themen Heute wird die Sprache als Open Source Projekt weitergepflegt aus Wikipedia 10 1 Die Programmiersprache Ruby Im Internet finden Sie viele Informationen rund um die Programmiersprache Ruby Schauen Sie einfach mal unter folgenden Links nach e http www ruby lang org de offizielle Webseite e http de wikipedia org wiki Ruby Programmiersprache Wikipedia 10 2 Ruby Hamster Programme Um mit dem Hamster Simulator Ruby Programme entwickeln und ausf hren zu k nnen muss die Property ruby auf true gesetzt sein Standardm ig ist das nicht der Fall ffnen Sie also die Datei hamster properties und ersetzen Sie dort die Zeile ruby false durch die Zeile ruby true Starten Sie dann den Hamster Simulator Wenn Sie ein neues Programm erstellen wollen w hlen Sie in der erscheinenden Dialogbox den Eintrag Ruby Programm Im Editor Bereich erscheint dann ein Feld mit dem Inhalt if vornFrei vor end Ersetzen Sie diesen Inhalt durch Ihr Ruby Programm und speicher
162. rscheinen alle Ausgaben in englischer Sprache Aber nicht nur die Oberfl che auch das Hamster Modell selbst wurde angepasst Bswp versteht der Hamster ab sofort nicht mehr nur den Befehl vor sondern auch den Befehl move der dasselbe bewirkt Der Hamster springt eine Kachel in Blickrichtung nach vorne Im Folgenden wird ein berblick ber die entsprechenden englischen Befehle bzw Klassen des Hamster Modells gegeben vor move linksUm turnLeft nimm pickGrain gib putGrain vornFrei frontiIsClear kornDa grainAvailable maulLeer mouthEmpty liesZahl readNumber liesZeichenkett readString schreib write Init init getReihe getRow getSpalte getColumn getBlickrichtung getDirection getStandardHamster getDefaultHamster getAnzahlKoerner getNumberOfGrains getAnzahlHamster getNumberOfHamsters Territorium Territory HamsterInitialisierungsException HamsterInitializationExce ption HamsterNichtInitialisiertException HamsterNotInitializedExce ption KachelLeerException TileEmptyException MauerDaException WallInFrontException MaulLeerException MouthEmpt yException 63 Ein imperatives englisches Hamster Programm bei dem der Hamster alle vor ihm liegenden K rner einsammeln soll sieht damit folgenderma en aus void main pickAll while frontIsClear move pickAll void pickAll while grainAvailable pickGrain Das folgende Programm
163. s Der Hamster l uft bis zur n chsten Wand und sammelt dabei alle K rner ein 11 4 Erstellen von Scratch Programmen Um ein neues Scratch Hamster Programm zu erstellen klicken Sie bitte in der Toolbar des Editor Fensters auf den Neu Button 1 Toolbar Button von links Er erscheint ein Fenster in dem der Programmtyp ausgew hlt werden muss W hlen Sie hier den Programmtyp Scratch Programm Nach dem Dr cken des OK Buttons erscheint im Editor Fenster anstelle eines normalen textuellen Editors ein so genanntes Scratch Editorfenster Es besteht aus drei Bereichen siehe auch Abbildung 11 3 der Kategorienauswahl der Blockpalette und dem Programmbereich 119 Kategorienauswahl Anweisun en Boolesche Ausdr cke Steuerung verlasse liefere vor linksUm nimm gib Blockpalette Programmbereich Abbildung 11 3 Scratch Editorfenster 11 4 1 Kategorienauswahl In der Kategorienauswahl finden sich die drei Buttons Anweisungen Boolesche Ausdr cke und Steuerung Durch Klick auf einen der Buttons erscheinen entsprechende Bl cke der jeweiligen Kategorie in der Blockpalette 11 4 2 Blockpalette In der Blockpalette werden die Bl cke der in der Kategorienauswahl aktuell ausgew hlten Kategorie angezeigt Diese genauer gesagt Kopien hiervon lassen sich per Drag und Drop mit der Maus in den Programmbereich ziehen um Programme zu erstellen W hlen Sie hierzu den entsprechenden Block klicken Sie i
164. s 19 Jahrhunderts zur ck Die Syntax der Pr dikatenlogik erster Stufe aufgestellt von Gottlob Frege gepr gt und weiterentwickelt durch einer Vielzahl weiterer Wissenschaftler bildet die Grundlage f r die Syntax der meisten heutigen logischen Programmiersprachen Das urspr nglich gedachtes Anwendungsfeld f r PROLOG als Werkzeug f r Sprachwissenschaftler zur Erfassung und Verarbeitung nat rlichsprachlicher S tze auf logischer Ebene wurde im sp teren Verlauf erweitert Es wurde schnell erkannt dass ProLoG auch als eigenst ndige Programmiersprache genutzt werden kann Eine zunehmende Verbreitung von PROLOG beg nstigte Mitte der 70er Jahren die Entwicklung der sogenannten Warren Abstract Machine WAM von David Warren die eine effizientere und schnellere Implementierung von PROLOG darstellte Die WAM stellt auch heute nach wie vor die Grundlage f r die meisten PROLOG Implementierungen dar Ein in den 70er Jahren stattgefundenes japanisches Projekt am Forschungsinstitut ICOT zur Entwicklung der f nften Rechnergeneration w hlte ebenfalls die logische Programmierung als Grundlage f r die Entwicklung Dies beg nstigte ebenfalls die Verbreitung und Entwicklung dieser Programmierung Seit Ende der 80er Jahre f hrte die Entwicklung zur Entstehung von sogenannten constraint logischen Programmiersprachen Constraint Logic Programming die als Erweiterung der logischen Programmierung angesehen werden k nnen Diese Sprachen gewinnen heute
165. s an in den die Datei kopiert werden soll Klicken Sie 38 danach die rechte Maustaste Es erscheint ein Popup Men in dem Sie das Men item Einf gen anklicken Eine Alternative hierzu sieht folgenderma en aus M chten Sie eine Datei mit einem Hamster Programm oder auch einen kompletten Ordner in einen anderen Ordner kopieren klicken Sie den entsprechenden Namen im Dateibaum an und verschieben Sie den Mauscursor bei gedr ckter Maustaste und gedr ckter Strg Taste Ihrer Tastatur ber den Namen des Ordners in den die Datei bzw der Ordner verschoben werden soll Zumindest unter Windows funktioniert die Alternative brigens auch in Kombination mit dem Betriebssystem d h Sie k nnen Dateien bspw auf den Desktop kopieren und umgekehrt Wenn Sie eine Datei mit einem Hamster Programm in einen anderen Ordner kopiert haben m ssen Sie die neue Datei noch kompilieren 4 2 8 Drucken eines Hamster Programms ber den Drucken Button achter Toolbar Button von links k nnen Sie die aktuell im Eingabebereich ge ffnete Datei drucken Es ffnet sich eine Dialogbox in der Sie die entsprechenden Druckeinstellungen vornehmen und den Druck starten k nnen Aktuell funktioniert das Drucken nur unter Windows 4 2 9 Schlie en eines ge ffneten Hamster Programms Mit dem Schlie en Button siebter Toolbar Button von links k nnen Sie die aktuell im Eingabebereich ge ffnete Datei schlie en d h den Sourcecode inkl
166. sen Bei Anklicken des Stopp Buttons wird das Programm abgebrochen und der Funktionen und Variablen Bereich verschwinden 4 6 3 Schrittweise Programmausf hrung Mit den beiden Buttons Schritt hinein zweiter Toolbar Button von rechts und Schritt ber erster Toolbar Button von rechts ist es m glich ein Programm schrittweise d h 51 Anweisung f r Anweisung auszuf hren Immer wenn Sie einen der beiden Buttons anklicken wird die n chste Anweisung und nur die ausgef hrt Die beiden Buttons unterscheiden sich genau dann wenn die n chste Anweisung ein Prozedur Funktions oder Methodenaufruf ist Das Anklicken des Schritt hinein Buttons bewirkt in diesem Fall dass in den entsprechenden Rumpf der Prozedur Funktion oder Methode verzweigt wird so dass man die dortigen Anweisungen ebenfalls Schritt f r Schritt weiter ausf hren kann Beim Anklicken des Schritt Uber Buttons wird die komplette Prozedur Funktion oder Methode in einem Schritt ausgef hrt Beachten Sie bitte dass man die Ausf hrung eines Programms auch mit dem Schritt hinein Button starten kann Ist der Debugger aktiviert f hrt ein Anklicken des Schritt hinein Buttons dazu dass in die main Funktion gesprungen wird Von hieraus k nnen Sie dann ein komplettes Programm schrittweise ausf hren Sie k nnen die Schritt hinein und Schritt ber Buttons auch nutzen wenn der Debugger aktiv ist und die Programmau
167. sf hrung durch Anklicken des Pause Buttons angehalten wurde Wenn Sie also die Programmausf hrung erst ab einer bestimmten Stelle beobachten m chten k nnen Sie das Programm zun chst einfach starten dann anhalten den Debugger aktivieren und dann schrittweise weiter ausf hren Wenn Sie irgendwann ein Programm nicht weiter schrittweise ausf hren m chten k nnen Sie durch Anklicken des Ausf hren Buttons die automatische Programmausf hrung wieder aktivieren 4 7 3D Simulationsfenster und Sound Seit der Version 2 5 des Hamster Simulators ist es m glich sich die Aktivit ten der Hamster zus tzlich in einem 3 dimensionalen Territorium anzuschauen Herzlichen Dank an Christoph Meyer der die 3D Simulation im Rahmen einer Studienarbeit implementiert hat ffnen Sie dazu im Editor Fenster in der Men leiste das Men Fenster und aktivieren Sie den Eintrag 3D Simulation Wenn sich der Eintrag nicht aktivieren l sst ist eine 3D Ansicht auf Ihrem Rechner leider nicht m glich Aktuell funktioniert die 3D Ansicht leider nur unter Windows Nach ein paar Sekunden Wartezeit ffnet sich das in Abbildung 21 gezeigte Fenster 52 3D Simulation QOD t ECKE Abbildung 21 3D Simulationsfenster Das 3D Simulationsfenster enth lt keine Buttons zur Gestaltung eines Territoriums Die Territoriumsgestaltung findet ausschlie lich im 2D Simulationsfenster statt Das 3D Simulationsfenster wird aber immer automatisch entsprec
168. sliste Sie spiegelt das aktuelle Territorium des Simulation Fensters wieder Sie ist folgenderma en aufgebaut in EBNF lt territorium gt lt feld liste gt lt hamster liste gt lt feld liste gt lt reihe liste gt lt reihe liste gt lt kachel gt lt kachel gt en Kachel lt koerner auf kachel gt in Mauer lt hamster liste gt iz Hamster lt reihe gt lt spalte gt lt koerner im maul gt lt blickrichtung gt lt blickrichtung gt Nord Ostet 67 Sued West lt koerner auf kachel gt ist positiver int Wert lt reihe gt ist positiver int Wert oder 0 lt spalte gt ist positiver int Wert oder 0 lt koerner im maul gt ist positiver int Wert Der Ursprung des Territoriums befindet sich in der linken oberen Ecke Die Nummerierung von Spalten und Zeilen beginnt bei 0 Ein Beispiel Das folgende Territorium besteht aus zwei Reihen und drei Spalten In der ersten Spalte liegen auf beiden Kacheln keine K rner In der zweiten Spalte liegen auf beiden Kacheln drei K rner In der dritten Spalte befinden sich ausschlie lich Mauern Der Hamster steht mit Blickrichtung Nord und 3 K rnern im Maul auf der Kachel in der linken unteren Ecke Kachel 0 Kachel 3 Mauer Kachel 0 Kachel 3 Mauer Hamster 1 0 3 Nord 7 4 2 Hamster Befehle Die Hamster Befehle des Java Hamster Modells sind als F
169. spalte gt dynamic mauer JI EK EK Modellierung des Hamsters selbst EK EK hamster lt reihe gt lt spalte gt lt blickrichtung gt lt anzahlKoernerImMaul gt dynamic hamster r T EK EK EK EK ER EK Standard Aktionen des Hamsters EK ER EK vor terri hams next torium TReihen TSpalten ter Reihe Spalte Blickrichtung AnzahlKoerner Pos Reihe Spalte Blickrichtung ReiheNeu SpalteNeu ReiheNeu gt 0 ReiheNeu lt TReihen SpalteNeu gt 0 SpalteNeu lt TSpalten not mauer ReiheNeu SpalteNeu SS Aktualisiere die Prolog Datenbank retract hamster Reihe Spalte Blickrichtung AnzahlKoerner 00 asser SS Ru write read call t hamster ReiheNeu SpalteNeu Blickrichtung AnzahlKoerner fe vor prologhamster vor ttyflush Return Return beim Hamster auf und warte solange dies ausgef hrt wird vor oo CO Rufe vor write prologhamster vor read Return call Return false nextPos Reihe Spal ReiheNeu is Pos Reihe Spal SpalteNeu is Pos Reihe Spal ReiheNeu is Pos Reihe Spal SpalteNeu is Spal te NORD ReiheNeu Spalte Reihe deg bes te WEST Reihe SpalteNeu Spalte Ty oh te SUED ReiheNeu Spalte Reihe 1 te OST Reihe SpalteNeu Ee 15 L my E nex nex nex 88 beim Hamster auf und warte solange dies ausgef hrt wird
170. sung eine Reihe von Unifizierungs und Backtrackingschritten durch 8 2 2 3 Backtracking Das Prinzip des Backtracking Verfahrens ist wie bereits umrissen relativ einfach W hrend der Abarbeitung der einzelnen Schritte im Resolutionsalgorithmus werden einzelne Punkte mit alternativen L sungen gemerkt Beim n chsten Vorkommen eines Fehlers bei der Unifikation kehrt das Programm zum letzten gew hlten Auswahl Punkt zur ck Die alten Variablenbelegungen werden wieder aufgehoben und die n chste L sung falls vorhanden gew hlt 80 Beispiel tier hamster tiger tier fuchs jagt tiger antilope jagt fuchs maus jagt fuchs hamster raeuber X tier X jagt X _ Die obere Definition eines R ubers ist sehr allgemein gehalten Jedes Tier das jagen kann ist ein Rauber Bei der Anfrage an das PROLOG System raeuber Tier w rde das System wie folgt vorgehen Zur Erf llung des Pr dikats raeuber X ist es notwendig die Pr dikate tier X und jagt X s do5 zu erf llen Das erste im Programm vorkommende tier Pr dikat ist das tier hamster Daher wird nachfolgend gepr ft ob das Pr dikat jagt hamster _ unifizierbar ist Da dieses offensichtlich nicht m glich ist und die Unifikation zu einem Fehler f hrt wird daraufhin ein Backtracking Schritt eingeleitet Das System hat sich zuvor gemerkt dass bei der Unifikation von tier X weitere L sungen m glich waren Daher kehrt das PROLOG S
171. t Apeler der im Rahmen seiner Bachelorarbeit die Integration dieses Konzeptes in den Hamster Simulator vorgenommen hat 13 1 Programmablaufpl ne Die grundlegende Theorie von Programmablaufpl nen entnehmen Sie am besten dem entsprechenden Wikipedia Eintrag http de wikipedia org wiki Programmablaufplan Ein Programmablaufplan Abk rzung PAP ist danach ein Ablaufdiagramm f r ein Computerprogramm das auch als Flussdiagramm engl flowchart oder Programmstrukturplan bezeichnet wird Es ist eine graphische Darstellung zur Umsetzung eines Algorithmus in einem Programm und beschreibt die Folge von Operationen zur L sung einer Aufgabe 13 2 Hamster PAPs Als Elemente enthalten Hamster PAPs Start Stop Elemente Operationen Unterprogramme Verzweigungen Kommentare und Pfeile e Start Element Jedes Hamster PAP Programm und jedes selbst definierte Unterprogramm muss mit einem Start Element beginnen e Stop Element Jedes Hamster PAP Programm und jedes selbst definierte Unterprogramm muss bei einem Stop Element enden e Operationen Als vordefinierte Operationen stehen die vier Hamster Befehle vor linksUm gib und nimm zur Verf gung e Unterprogramme Es ist m glich Unterprogramme zu definieren und im Programm zu verwenden e Verzweigungen Als vordefinierte Verzweigungen stehen die drei Hamster Testbefehle vornFrei kornDa und maulLeer zur Verf gung e Kommentare Es ist m glich Kommentare zu definieren und diese mit Elementen
172. t dem Ausf hren Button starten ffnen sich im Editor Fenster oberhalb des Eingabebereiches zwei neue Bereiche Der linke dieser beiden Bereiche hei t Funktionen Bereich der rechte Variablen Bereich siehe auch Abbildung 20 50 Funktionen Bereich Variablen Bereich Datei Bearbeiten Kompilieren Debugger EI d gem e aS Bslia leole Xela ae Del 9 Bl Programme Programm Funktion Zeile DJ regeln irgtance of kalah Spielregein iq SI AllroundHamstZ P kalah Schieds K ntrolliereTer 190 II spielerA instance of hamsterkalah Stra Eteisen ka sets Eer Se E banat gt HamsterKalah hain 8 istspielera true E band C regeln instance of kalah Spielrege 9 C hamst IN reihe 0 2 Ab GI Str IN spalte 7 GI wi 4 LZ gt S w D Spieler Spielregeln Spielzug gt Hams gt MenschHamster SchiedsrichterHamster X Spielbrett C kalah WertSpielbrett gt WertSpielzug AllroundHamster gt KalahSpiel All AbfrageSchiedsrichterHamster HamsterKalah gt StrategieHamster identisch sind GI Ge protected boolean kontrolliereTerritorium GI Sp this vor GI Sp for int i Spielbrett ANZAHL MULDEN _PRO_SPIELER 1 i gt 0 i GI Sp if this brett liefereAnzahlKoerner i a Sp Territorium get nzahlKoerner this getReihe
173. t werden siehe Abschnitt 5 1 13 Beim Starten des Hamster Simulators wird ein SplashScreen angezeigt 1 8 nderungen in Version 2 6 gegen ber 2 5 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige nderungen sind Farbliche Umgestaltung des Simulators Im Modus runlocally true siehe Abschnitt 5 gibt es nun eine Console die Ein und Ausgaben ber System in bzw System out und System err verarbeitet Konkret bedeutet das Enth lt ein Hamster Programm bspw den Befehl System out printIn hallo und wird das Programm ausgef hrt ffnet sich das Consolen Fenster und die Zeichenkette hallo wird in das Fenster geschrieben Im Standard Modus runlocally false ndert sich nichts Ausgabeanweisungen werden weiterhin in die Dateien sysout txt bzw syserr txt geschrieben Es gibt ein neues Men Extras ber das unter anderem die Fontgr e ge ndert werden kann Die gr te nderung war die Integration der logikbasierten Programmiersprache Prolog in den Hamster Simulator siehe Abschnitt 8 1 9 nderungen in Version 2 5 gegen ber 2 4 Neben der Korrektur einiger kleiner Fehler sind folgende wesentliche Erweiterungen am Hamster Simulator vorgenommen worden Hamster Programme k nnen zus tzlich in einer 3D Welt ausgef hrt werden siehe Abschnitt 4 7 Die 3D Ansicht funktioniert momentan aber leider nur unter Windows Es gibt ein Property namens color ber das die Farbe des Standard Hamsters
174. teht auch der Hamster Simulator kostenlos zur Verf gung ein Programm mit dem Hamster Programme erstellt und ausgef hrt werden k nnen Neben den drei B chern kommt dem Hamster Simulator dabei eine ganz wichtige Bedeutung zu denn Programmieren lernt man nicht durch lesen Man muss ben ben ben Und genau dazu dient der Simulator Sie halten hier in H nden bzw sehen am Bildschirm das Benutzungshandbuch des Hamster Simulators Im Prinzip ist dieser sehr einfach zu bedienen Wenn Sie bereits etwas Erfahrung mit Computern haben sollte Ihnen seine Handhabung keine Probleme bereiten Trotzdem gibt es sicher Situationen in denen Sie nicht weiterkommen oder in denen Ihnen nicht bewusst ist welche M glichkeiten Sie berhaupt haben F r genau diese F lle ist dieses Benutzungshandbuch konzipiert Nach dieser Einleitung wird im zweiten Abschnitt erl utert wie Sie den Simulator auf ihrem Rechner installieren und starten Im dritten Abschnitt wird kurz und knapp erkl rt was Sie tun m ssen um Ihr erstes Hamster Programm zu schreiben und ausf hren zu lassen Abschnitt 4 behandelt dann im Detail die einzelnen Funktionen des Simulators ber Properties k nnen Sie bestimmte Eigenschaften des Hamster Simulators beeinflussen Au erdem k nnen Sie ber Properties die Eigenschaft der Mehrbenutzer F higkeit des Hamster Simulators steuern Mehr dazu in Abschnitt 5 Seit Version 2 4 ist der Hamster Simulator auch in die englisch sprachige
175. tellt Wenn Sie in objektorientierten Programmen weitere Hamster erzeugen erhalten diese zur Unterscheidung andere Farben Der erste erzeugte Hamster ist rot der zweite gr n der dritte gelb der vierte pink und der f nfte violett Alle weiteren Hamster haben ein graues Erscheinungsbild F hrt ein Hamster einen Hamster Befehl aus wird dieser im Ausgabebereich des Simulation Fensters ausgegeben Zur Unterscheidung welcher Hamster den Befehl ausgef hrt hat erfolgt die Ausgabe in der Farbe des entsprechenden Hamsters F hrt in objektorientierten Programmen ein Hamster einen schreib oder 1ies Befehl aus ffnet sich eine Dialogbox Der Ausgabe bzw Aufforderungsstring erscheint darin wiederum in der Farbe des entsprechenden Hamsters Beim Befehl schreib pausiert das Programm so lange bis der Benutzer den OK Button der Dialogbox angeklickt hat Bei einem liesZahl oder liesZeichenkette Befehl kann der Benutzer eine Zahl bzw eine Zeichenkette eingeben und muss anschlie end den OK Button dr cken Dann wird der eingegebene Wert an das Programm weitergegeben Gibt der Benutzer bei einem liesZahl Befehl keine g ltige Zahl ein bspw a2d liefert der Befehl den Wert 0 Normalerweise sind Dialogboxen exklusive Fenster die es wenn sie ge ffnet sind nicht erlauben in anderen Fenster Mausklicks zu t tigen Die Dialogboxen der schreib und lies Befehle sind in diesem Sinne keine richtigen Dialogboxen W hrend sie ge ffnet sind k
176. tiven Zustand eine Transition ausgeht deren boolescher Ausdruck den Wert true liefert Ist dies der Fall wird die zugeh rige Sequenz von Hamster Befehlen ausgef hrt Der Zustand in den die Transition f hrt ist anschlie end der neue aktive Zustand Gibt es vom aktiven Zustand ausgehend keine g ltige Transition dann gibt es zwei F lle e Handelt es sich bei dem Zustand um einen Endzustand dann ist das Programm erfolgreich beendet 128 e Handelt es sich beim dem Zustand um keinen Endzustand dann wird das Programm mit einem Fehler beendet Weiterhin ist zu beachten dass unterschieden wird zwischen deterministischen und nicht deterministischen Hamster Automaten Ist ein Hamster Automat deterministisch dann darf es zu jedem Zeitpunkt immer nur eine g ltige Transition geben die aus dem aktiven Zustand herausf hrt Das wird zur Laufzeit berpr ft und gegebenenfalls ein Fehler gemeldet Ist ein Hamster Automat nicht deterministisch dann darf es mehrere g ltige Transitionen geben Welche dann ausgef hrt wird ist vom Zufall abh ngig Abbildung 12 1 zeigt ein Beispiel f r einen Hamster Automaten F hrt man das Programm aus l uft der Hamster zur n chsten Wand und dreht sich dort um oO E EL o 6 deterministisch nichtdeterministisch laufe Zur NaechstenWand mo vornfrei Aintsum Vl HOWl se vornfrei Hvor Abbildung 12 1 Beispiel Hamster Automat In diesem Automaten der als determin
177. ung Die Interpretation von Fehlermeldungen die der Compiler ausgibt ist nicht trivial Die Meldungen sind nicht immer besonders prazise und oft auch irrefuhrend Haufig gibt der Compiler mehrere Fehlermeldungen aus obwohl es sich nur um einen einzelnen Fehler handelt Deshalb beherzigen Sie gerade am Anfang folgende Hinweise Arbeiten Sie die Fehlermeldungen immer von oben nach unten ab Wenn der Compiler eine gro e Menge von Fehlermeldungen liefert korrigieren Sie zun chst nur eine Teilmenge und speichern und kompilieren Sie danach erneut Bauen Sie gerade als Programmieranf nger auch mal absichtlich Fehler in Ihre Programme ein und schauen Sie sich dann die Fehlermeldungen des Compilers an 4 3 3 Setzen des CLASSPATH Als zweites Mentitem enth lt das Kompilieren Men ein Men item mit der Bezeichnung CLASSPATH setzen Was es damit auf sich hat entnehmen Sie bitte Kapitel 14 von Band 2 des Java Hamster Buches Als Anf nger m ssen Sie sich hiermit nicht auseinandersetzen 4 4 Verwalten und Gestalten von Hamster Territorien Das Hamster Territorium befindet sich im Simulation Fenster Es umfasst standardm ig 10 Reihen und 10 Spalten Der Standard Hamster das ist der blaue Hamster steht auf der Kachel ganz oben links also der Kachel mit den Koordinaten 0 0 Er hat 0 K rner im Maul und schaut nach Osten 42 Oberhalb des Hamster Territoriums befindet sich eine Toolbar mit Graphik Buttons siehe auch Abbi
178. unktionen implementiert die ein Territorium auf ein neues Territorium abbilden und zwar mit der bekannten Semantik der Hamster Grundbefehle e vor Territorium liefert ein Territorium in dem der Hamster gegen ber dem als Parameter Ubergebenen Territorium eine Kachel in Blickrichtung gelaufen ist e linksUm Territorium liefert ein Territorium in dem sich der Hamster gegen ber dem als Parameter bergebenen Territorium um 90 Grad nach links umgedreht hat e nimm Territorium liefert ein Territorium in dem der Hamster gegen ber dem als Parameter bergebenen Territorium ein Korn mehr im Maul hat und sich auf der entsprechenden Kachel ein Korn weniger befindet e gib Territorium liefert ein Territorium in dem der Hamster gegen ber dem als Parameter bergebenen Territorium ein Korn weniger im Maul hat und sich auf der entsprechenden Kachel ein Korn mehr befindet e vornFrei Territorium liefert true wenn sich in dem als Parameter bergebenen Territorium keine Mauer vor dem Hamster befindet 68 e maulleer Territorium liefert true wenn in dem als Parameter bergebenen Territorium der Hamster keine K rner im Maul hat e kornDa Territorium liefert true wenn sich in dem als Parameter bergebenen Territorium auf der Kachel auf der der Hamster steht mindestens ein Korn befindet Bei den Befehlen vor nimm und gib k nnen die bekannten Fehler auftreten Im Hamster Simulatorr geschieht nach dem Ausf hren eines der vier
179. usive Karteireiter aus dem Eingabebereich entfernen Wenn Sie den Button anklicken und die aktuelle Datei noch nicht gespeicherte Anderungen enth lt wird ber eine Dialogbox nachgefragt ob diese Anderungen gespeichert werden sollen oder nicht 4 2 10 Editier Funktionen Im Eingabereich k nnen Sie wie bei anderen Editoren auch Uber die Tastatur Zeichen eingeben bzw wieder l schen Dar ber hinaus stellt der Editor ein paar weitere Funktionalit ten zur Verf gung die ber das Bearbeiten Men bzw die entsprechenden Buttons in der Toolbar des Editor Fensters aktiviert werden k nnen e Ausschneiden Button neunter Toolbar Button von links Hiermit k nnen Sie komplette Passagen des Eingabebereichs in einem Schritt l schen Markieren Sie die zu l schende Passage mit der Maus und klicken Sie dann den Button an Der markierte Text verschwindet e Kopieren Button zehnter Toolbar Button von links Hiermit k nnen Sie komplette Passagen des Eingabebereichs in einen Zwischenpuffer kopieren Markieren Sie die zu kopierende Passage mit der Maus und klicken Sie dann den Button an e Einf gen Button elfter Toolbar Button von links Hiermit k nnen Sie den Inhalt des Zwischenpuffers an die aktuelle Cursorposition einf gen W hlen Sie zun chst die entsprechende Position aus und klicken Sie dann den Button an Der Text des Zwischenpuffers wird eingef gt 39 e R ckg ngig Button zw fter Toolbar Button
180. ustands Sie k nnen sich w hrend der Ausf hrung eines Hamster Programms anzeigen lassen welche Anweisung des Sourcecodes gerade ausgef hrt wird und welche Werte die Variablen aktuell speichern Die interaktive nderung von Variablenwerten wird aktuell nicht unterst tzt Der Debugger ist im Hamster Simulator dem Editor Fenster zugeordnet Seine Funktionen sind eng mit den Funktionen zur Programmausf hrung verkn pft Sie finden die Funktionen im Men Debugger Es bietet sich jedoch an die entsprechenden Graphik Buttons der Toolbar zu verwenden Neben dem Ausf hren dem Pause und 49 dem Stopp Button geh ren die drei rechten Buttons Debugger aktivieren Schritt hinein und Schritt ber zu den Debugger Funktionen siehe auch Abbildung 19 Ausf hren Schritt hinein ew Pause Schritt ber Debugger aktivieren Abbildung 19 Toolbar des Editor Fensters 4 6 1 Aktivieren bzw deaktivieren des Debuggers Sie k nnen den Debugger durch Anklicken des Debugger aktivieren Buttons in der Toolbar dritter Toolbar Button von rechts aktivieren bzw durch erneutes Anklicken wieder deaktivieren Der Debugger ist aktiviert wenn der Hintergrund des Buttons dunkler erscheint Das Aktivieren bzw Deaktivieren des Debuggers ist vor aber auch noch w hrend der Ausf hrung eines Programms m glich 4 6 2 Beobachten der Programmausf hrung Wenn der Debugger aktiviert ist und Sie ein Programm mi
181. ven Python Programm erklimmt der Standard Hamster einen Berg Aufgabe der Hamster soll den Gipfel eines vor ihm stehenden Berges erklimmen der Hamster soll zum Berg laufen def laufeZumBerg while vornFrei vor der Hamster soll den Berg erklimmen def erklimmeDenBerg while not gipfelErreicht erklimmeEineStufe der Hamster soll eine Stufe erklimmen def erklimmeEineStufe linksUm nun schaut der Hamster nach oben vor der Hamster erklimmt die Mauer rechtsUm der Hamster wendet sich wieder dem Berg zu vor der Hamster springt auf den Vorsprung der Hamster dreht sich nach rechts um 101 def rechtsUm linksUm linksUm linksUm hat der Hamster den Gipfel erreicht def gipfelErreicht return vornFrei der Hamster soll zunaechst bis zum Berg laufen und dann den Berg erklimmen laufeZumBerg erklimmeDenBerg 9 3 4 Wettlauf Im folgenden objektorientierten Python Programm liefern sich 3 Hamster einen Wettlauf bis zur n chsten Mauer paul Hamster getStandardHanster willi Hamster paul maria Hamster paul getReihe 1 paul getSpalte paul getBlickrichtung 0 while paul vornFrei and willi vornFrei and maria vornFrei paul vor willi vor maria vor paul schreib Fertig 9 3 5 Objektorientiertes Territorium leeren Im folgenden Python Programm werden objektorientierte Konzepte genutzt um einen Hamster das Ter
182. von links Wenn Sie durchgef hrte Anderungen des Sourcecode aus welchem Grund auch immer wieder r ckg ngig machen wollen k nnen Sie dies durch Anklicken des Buttons bewirken Das R ckg ngigmachen bezieht sich dabei immer auf die aktuell im Eingabereich erscheinende Datei e Wiederherstellen Button dreizehnter Toolbar Button von links R ckg ngig gemachte Anderungen k nnen Sie mit Hilfe dieses Buttons wieder herstellen Die Funktionalit ten Kopieren und Einf gen funktionieren brigens auch ber einzelne Programme hinaus Es ist sogar m glich mit Hilfe der Betriebssystem Kopieren Funktion Text aus anderen Programmen bspw Microsoft Word zu kopieren und hier einzuf gen 4 2 11 Verwaltung von Ordnern Um Funktionen auf einem Ordner durchzuf hren klicken Sie zun chst den entsprechenden Ordner im Dateibaum an Der Name des Ordners wird dadurch durch ein blaues Rechteck hinterlegt Klicken Sie anschlie end die rechte Maustaste so dass sich das Popup Menu des Ordners ffnet Im Popup Men haben Sie nun folgende Funktionalit ten zur Verwaltung von Ordern zur Verf gung e Men item Neuer Ordner Durch Anklicken dieses Items k nnen Sie einen neuen Unterordner anlegen Es ffnet sich eine Dialogbox in der sie den Namen des Unterordners angeben m ssen e Men item L schen Durch Anklicken dieses Items k nnen Sie den entsprechenden Ordner l schen Achtung Es werden automatisch auch
183. ystem zur ck an diese Stelle und w hlt die n chste verf gbare Belegung f r die Variable X In diesem Fall wird X mit tiger unifiziert Da es f r den Tiger ein entsprechendes Pr dikat jagt tiger antilope gibt unterbricht das PROLOG System die Bearbeitung der Anfrage und liefert die gefundene L sung an den Benutzer Tier tiger Mit der Eingabe von kann der Benutzer das PROLOG System zur Suche nach weiteren L sungen f r die aktuelle Abfrage bewegen Das System legt dabei ebenfalls ein oder mehrere Backtracking Schritte ein und versucht weitere g ltige Variablenbelegungen zu ermitteln Die Ausgabe f r das aktuelle Beispiel k nnte dabei wie folgt aussehen Tier tiger Tier fuchs false 8 2 3 Systempradikate PROLOG ist eine moderne sich f r praktische Aufgaben eignende Programmiersprache Neben den grundlegenden Funktionalitaten bietet PROLOG wie auch viele andere Programmiersprachen eine Menge zus tzlicher Steuerungsmechanismen zur Unterst tzung des Programmierers bei der Umsetzung von notwendigen und oft wiederkehrenden Aufgaben und Funktionen F r diesen Zweck bietet PROLOG eine Reihe vordefinierter Systempr dikate auch Built In Pr dikate genannt die jeweils eine 81 bestimmte Funktionalitat innerhalb des PROLOG Systems realisieren Es handelt sich dabei beispielsweise um die grundlegenden M glichkeiten der Interaktion des Benutzers mit dem System die M glichkeit zur Ein und Ausgabe von Daten grundl
184. zeln importieren m chten m ssen Sie den Modulnamen vor die Befehle platzieren bspw import hamstererweiterung for i in range 5 vor hamstererweiterung rechtsUm 5 Wenn Sie die Datei hamstererweiterung py um neue Befehle erg nzen scheint es manchmal notwendig zu sein den Hamster Simulator neu zu starten damit dieser auch die neuen Befehle ausf hren kann Eine weitere M glichkeit eigene Module zu schreiben und zu nutzen ist folgende Gegeben folgende Datei my py from de hamster python model import PythonHamster vor PythonHamster getStandardHanmsterIn tern vor linksUm PythonHamster getStandardHamsterIntern LinksUm gib nimm vorn kel Frei PythonHamster ge PythonHamster getst PythonHamster getStandardHansterIn tS kornDa PythonHamster getS maulLeer PythonHamster ge def rechtsUm def zurWand linksUm linksUm linksUm while vornFrei vor tandardHams tS tandardHams tern gib tandardHamsterIntern nimm terl n tern vornFrei tandardHamsterIntern kornDa ECE a n tern maulLeer Sei Programme das Verzeichnis in dem Sie Ihre Hamster Python Programme speichern K nnen Sie auch Python Module dort abspeichern bspw die Datei my py Anschlie end k nnen Sie in Ihren Python Hamster Programmen folge

Download Pdf Manuals

image

Related Search

Related Contents

取扱説明書  Guide d`achat NSU Ro 80 - Ro 80 Club International  SEP 40  DVI Detective Plus - Meditronik.com.pl  GAS BLOWER    「打揚式動物駆逐用煙火※」の  Werbe- / Display-Kühlschrank Glastür  CHYPRE - MODE D`EMPLOI (9782742433766)  

Copyright © All rights reserved.
Failed to retrieve file