Home

Original file was handbuch.tex

image

Contents

1. laf com sun java swing plaf nimbus NimbusLookAndFeel 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
2. gib 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 call 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 89 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 alterna
3. 91 kornDa nimm nimmAlle nimmAlle 6 laufen und sammeln graseReiheAb nimmAlle vornFrei vor graseReiheAb graseReiheAb leereTerritorium laufelInEcke graseAlleReihenAb leereTerritorium graseAlleReihenAb graseReiheAb kehrt laufeZurWand kehrt linksFrei begibDichInNaechsteReihe G graseAlleReihenAb begibDichInNaechsteReihe linksUm vor rechtsUm 92 9 Python Die Programmiersprache Python wurde Anfang der 1990er Jahre von Guido van Rossum am Centrum Wiskunde amp Informatica Zentrum f r Mathematik und 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 Roll
4. lol x Abbildung 16 Fehlermeldungen Achtung Die Interpretation von Fehlermeldungen die der Compiler ausgibt ist nicht trivial Die Meldungen sind nicht immer besonders pr zise und oft auch irref hrend H ufig 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 Men item 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 41
5. 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 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 107 end def end def end def end def end def end linksUm linksUm rechtsUm kehrt linksUm laufezurueck while vornFrei vor end sammle while kornDa nimm end laufeZurWand while vornFrei vor end laufeInEcke laufeZurWan
6. ig steht in der Property Datei logfolder Aus Kompatibilit t zu fr heren Versionen des Hamster Simulators kann diese Property auch home genannt werden 55 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 ber 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
7. public final static int PINK 7 public final static int GRAU 8 public 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 int blickrichtung int anzahlKoerner int farbe 57 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 Pro
8. Zeichen ersetzt werden m ssen Alternativ kann auch jedes Zeichen verdoppelt werden Standardm ig steht in der Property Datei workspace Programme Mehr Informationen zu Properties finden Sie im Abschnitt 5 1 12 Anmerkungen zur alten Version 1 des Hamster Simulators Version 1 des Hamster Simulators wird nicht weiter unterst tzt Die aktuelle Version 2 des Simulators hat nur noch wenige Gemeinsamkeiten mit Version 1 Die Benutzungsoberfl che wurde vollkommen redesigned und die Funktionalit t 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 Aus Kompatibilit t zu fr heren Versionen des Hamster Simulators kann diese Property auch home genannt werden 14 e In dem
9. NORD rechtsUm linksUm linksUm linksUm nimm nimm gib 88 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 write prologhamster nimm ttyflush read Return call Return Rufe nimm beim Hamster auf write prologhamster nimm ttyflush read Return call Return false hamster Reihe Spalte Blickrichtung AnzahlKoernerImMaul 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
10. Oberhalb des Hamster Territoriums befindet sich eine Toolbar mit Graphik Buttons siehe auch Abbildung 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 l sst sich das Erscheinungsbild des Territoriums ver ndern 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 15 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
11. 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 steht 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 d
12. Programmen 48 4 6 1 Aktivieren bzw deaktivieren des Debuggers ssssssssseenreesssssrerrerreesssrerree 49 4 6 2 Beobachten der Programmausf hrung s ssssssssssssssssserrnrrresseerrernnnreneserrrnne 49 4 6 3 Schrittweise Programmausf hrung EEN 50 4 7 3D Simulationsfenster und Sound ENEE 51 4 7 1 Steuerung mittels der Toolbar 52 4 7 2 Steuerung mittels der Maus nn 53 4 8 Dateiverwaltung auf Betriebssystemebene ernennen 53 3 1 tegt 54 5 1 Vorhandene el sense een 54 DAT EECHER 54 512 Workspaces ee eege 55 SE OGIO GAPNEREUBEHNERENICHURRENERIDEREGSEILENANHURUERECHREUBERNHUECEHEERERUBHENRURTENECHRRUBHEUEDETETECHERGENE 55 oa ic ENEE 56 ele T nloealy ee une 56 5k66 NAINA EE 56 SR EEGEN EE 56 MEG COO ege ee gebeten 57 DER I ee cater cul se a a ee ee ne ee are 58 GE Lo WT e e EE 58 GE bh WE e e EE 58 Dales SPICOM sanieren 58 a fa KEE 58 Sl 1A Ee 59 921155 d EE 59 E e E 59 5 2 Mehrbenutzerfahigkeit unn 60 6 Englischsprachiger Hamster ennn 62 7 SACI CNIS aca setae ves esac tes cces a tee EENS EEN 64 7 1 Funktionale Programmiersprachen en 64 7 2 Die Programmiersprache Gcheme en 65 7 3 Gcheme Hamster Programme 65 7 4 Grundlagen und Berehle AAA 66 7 4 1 Temionlimellstee Aenea e 66 7 4 3 Gcheme Hamster Programme AEN 68 To BEISDIOlE ar eege 69 7 6 Seheme DEIER 70 7 7 Implementierungshinweise ssssseeeseeesseseenrtrrrtessetrtrrnnnrnnnserrrrrnnnnnnnneerrrnn ennn 71 E ei ee ee ee ee ee
13. Spalte Dateibaum Eingabebereich Abbildung 13 Editorfenster Im linken 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 34 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
14. brett liefereAnzahlKoerner i a Sp Territorium get nzahlKoerner this getReihe this get palte Kalah u gt MeinErstesHan 7 return false 00Programm paul this vor 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 anschlie endes Anklicken des Ausfuhren Buttons wieder fortfahren lassen Auch
15. e Scratch Hamster Programme lassen sich nun ausdrucken e Aus Scratch Hamster Programmen k nnen nun Java Hamster Programme generiert werden e Die Beschriftungen der Scratch Bl cke lassen sich ber Properties ndern 1 4 nderungen in Version 2 8 gegen ber 2 7 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige Erweiterungen sind e Hamster Programme k nnen nun auch in der Programmiersprache Python geschrieben werden siehe Kapitel 9 e Hamster Programme k nnen nun auch in der Programmiersprache Ruby geschrieben werden siehe Kapitel 10 e Hamster Programme k nnen nun auch in der visuellen Programmiersprache Scratch geschrieben werden siehe Kapitel 11 1 5 nderungen in Version 2 7 gegen ber 2 6 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige nderungen sind e Im Dateibaum des Editor Fensters werden nun auch die Territorium Dateien angezeigt Beim Anklicken wird das entsprechende Territorium in das Simulation Fenster geladen e 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 e Uber ein Property namens laf kann
16. 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 nderung 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 der Ausf hrung nach Anklicken des Pause Buttons m glich 125 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 s
17. 72 e E e Le EE 72 8 1 Logikbasierte Programmierumng nennen 72 8 2 Die Programmiersprache Prolog BEE 73 8 2 7 Syntax VON tee EEN 74 8 2 2 Operationale Semantik seed ege 78 8 2 3 EIERE 80 8 2 4 Trace BOxenmodell ee 83 DR ae 85 8 2 6 Informationen zu Prolog im WWW 86 8 3 Prolog H amsier M dell nu 86 8 4 Prolog Hamster Programme 115 89 8 5 Prolog Konsolen ee 90 8 6 Beispielen nee ee ee 90 97 CA el EE 93 9 1 Die Programmiersprache Pvthon ee 93 9 2 Pvtbon Hamster Programme 93 9 2 1 Python Bibliothek einbinden cccccceeeeeeeeeeeeeneeeeeeeeeeeteeeeeneeeeeeeeeeeeteees 94 9 2 2 Eigene Module definieren ENEE 95 9 3 Pyth n Beispielprogramme ENEE ENEE SNE SEENEN 97 E Ge e elt RT EE 97 9 3 2 Temtoriumleeren 98 9 3 3 Berg erkimmehsrara nn aaa 100 9 3 4 Wellldall 2er een 101 9 3 5 Objektorientiertes Territorium leeren uu44244444444Bnnnnnnnnn nenn 101 GE NEE Gel e 102 9 5 Implementieringssen esse 103 Sg RUBY EE 106 10 1 Die Programmiersprache Ruby ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeteeeeeeaaees 106 10 2 Ruby Hamster Programme ssssssssnenneeeseesrrnrnrnrrrssertrrrnnnnnnseertnnrnnnnnneeerennne 106 10 3 Ruby Beispielprogramme uums44nn2444nnannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 107 103 4 deelt WEE 107 10 3 2 Territorium leeren 2 nee 109 10 38 38 Berg GEIER eege 111 10 3 4 Wettlaut EEN 112 10 3 5 Objektorientierte
18. 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 aus 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
19. 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 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 readab
20. HamsterInitializationExce ption HamsterNichtInitialisiertException HamsterNotInitializedExce ption KachelLeerException TileEmptyException MauerDaException WallInFrontException MaulLeerException MouthEmptyException 62 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 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 63 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
21. 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 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
22. Ordner in dem die Datei hamstersimulator jar liegt befindet sich ein Unter Ordner namens Programme Kopieren Sie die alten ham 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 c1lass 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 15 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 Ak
23. Return Return Rufe vor beim Hamster auf und warte solange dies ausgef hrt wird write prologhamster vor read call Return Return false tPos Reihe Spalte NORD ReiheNeu Spalte ReiheNeu is Reihe 1 tPos Reihe Spalte WEST Reihe SpalteNeu SpalteNeu is Spalte 1 tPos Reihe Spalte SUED ReiheNeu Spalte ReiheNeu is Reihe 1 tPos Reihe Spalte OST Reihe SpalteNeu SpalteNeu is Spalte 1 ufe vor beim Hamster auf und warte solange dies ausgef hrt wird vornFrei linksUm 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 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 tty flush read Return call Return dreheHamster NORD WEST dreheHanmster WEST SUED dreheHamster SUED OST dreheHamster OST
24. Spalte 1 Dateibaum Eingabebereich Abbildung 3 Komponenten des Editor Fensters 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 27 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 Benutzungsoberfl chen erl utert 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 An
25. Speichern R ckg ngig Stopp A See Geschwindigkeit mit Territorium Als Abbildung 14 Toolbar 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
26. Territorium speichern Button dritter Button von links und geben Sie in der sich ffnenden Dateiauswahl 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 21 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 s
27. 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 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 104 OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE DATA OR PROFITS OR BUSINESS INTERRU
28. dann aus dem Eingabebreich Zu guter Letzt gibt es noch den Drucken Button sechster Button von links zum 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 2
29. das Look And Feel Erscheinungsbild des Hamster Simulators angepasst werden siehe Abschnitt 5 1 13 e Beim Starten des Hamster Simulators wird ein SplashScreen angezeigt 1 6 nderungen in Version 2 6 gegen ber 2 5 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige nderungen sind e Farbliche Umgestaltung des Simulators e 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 e 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 7 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
30. 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 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 76 hl a b c dlze 2 oder Hl a y By le Are bI relee ENEN 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
31. dem Projekt substance https substance dev java net 5 1 14 python 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 5 1 16 scratch ber 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 59 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 ei
32. dem Sie das Men item Kopieren anklicken Klicken Sie nun im Dateibaum den Namen des Ordners an in den die Datei kopiert werden soll Klicken Sie 37 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 Giro 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
33. die gew nschte Anzahl eingeben Klicken Sie anschlie end den OK Button um die Eingabe zu best tigen 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 rne
34. die Geschwindigkeit der Programmausf hrung l sst sich mit dem Schieberegler anpassen 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 50 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 Ober 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 Sc
35. ein Property namens color ber das die Farbe des Standard Hamsters 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 8 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 aus
36. 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 Eine 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 bis B 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 Pr dikate nicht von Bedeutung Die d
37. getst thonHamster ge onHamster ge PythonHamster ge tS tS tandardHams PythonHamster getStandardHamsterIntern linksUm tandardHams tS tS can tS tan terIn terIn dardHams dardHams 2 Starten Sie dann den Hamster Simulator neu 3 95 tern vor tern gib tandardHamsterIntern nimm terl tandardHamsterIntern kornDa n tern vornFrei terl n tern maulleer Im Hamster Simulator k nnen Sie nun bspw folgendes Programm eingeben und ausf hren from hamstererweiterung import rechtsUm for i in range 5 vor rechtsUm 4 Wenn Sie die definierten Befehle nicht einzeln 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 getStandardHansterIn tern vor linksUm PythonHamster getStandardHamsterIntern LinksUm gib PythonHamster getStandardH
38. 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 zusammen 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 72 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 Programmiersprach
39. lt muss sie mit folgendem Kommentar beginnen object oriented 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 enth lt 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 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 S
40. nimm self Gesammelt 1 def laufeZurWand self while self vornFrei self vor def laufelnkEcke self self laufeZurWand self linksUm self laufeZurWand self linksUm def ernteEineReihe self self sammle while self vornFrei self vor self sammle def ernteEineReiheUndLaufezurueck self self ernteEineReihe self kehrt self laufeZurueck def gesammelteKoerner self return self Gesammelt Hauptprogramm paul AbgrasHamster 2 3 Hamster WEST 0 paul laufelInEcke paul ernteEineReiheUndLaufeZurueck paul rechtsUm while paul vornFrei paul vor paul rechtsUm paul ernteEineReiheUndLaufeZurueck paul rechtsUm paul schreib Gesammelte Koerner str paul gesammelteKoerner 9 4 Python Konsole Mit Hilfe der Python Konsole ist es m glich interaktiv Python und Python Hamster Befehle 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 102 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 paul vor gt gt gt if paul kornDba n
41. nnen Sie die aktuell im Eingabebereich ge ffnete Datei schlie en d h den Sourcecode inklusive 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 Zwi
42. t A B sind unifizierbar mit o A a B 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 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 Unifikatio
43. um viele Sekunden verz gerte Im runlocally Modus true kann das nicht mehr 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 ber die Property indent kann eingestellt werden ob im Editor beim Zeilenumbruch die Cursorposition in der neuen Zeile anhand der ersten beschriebenen Spalte der vorhergehenden Zeile ausgerichtet wi
44. vor Territorium linksUm Territorium 68 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 hren 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 T defi
45. 0 4 3 3 Setzen des CLAGGPATH ee 41 4 4 Verwalten und Gestalten von Hamsier Terttorten nennen 41 4 4 1 Ver ndern der Gr e des Hamster TerritOriuMs nn 42 4 4 2 Platzieren des Standard Hamsters im Hamster Territorium 42 4 4 3 Setzen der Blickrichtung des Gtoandard Hamsters 42 4 4 4 Abfragen und Festlegen der K rneranzahl im Maul des Standard Hamsters 43 4 4 5 Platzieren von K rnern auf Kacheln des Hamster Territorium 43 4 4 6 Platzieren von Mauern auf Kacheln des Hamster Territorium 43 4 4 7 L schen von Kacheln des Hamster Territorium nn 44 4 4 8 Abspeichern eines Hamster Tertonums 44 4 4 9 Wiederherstellen eines abgespeicherten Hamster Territoriums 44 4 4 10 Umbenennen eines abgespeicherten Hamster Territoriums 45 4 4 11 L schen und Verschieben einer Datei mit einem Hamster Territorium in einen anderen ee TEE 45 4 4 12 Ver ndern der Gr endarstellung des Hamster Territoriums 45 4 5 Ausf hren von Hamster Programmen 45 4 5 1 Starten eines Hamster Programme 46 4 5 2 Stoppen eines Hamsier Programme 46 4 5 3 Pausieren eines Hamster Programms en 47 4 5 4 W hrend der Ausf hrung eines Hamster Programmes esssssssseenneeeseeeeee 47 4 5 5 Einstellen der Geschwindigkeit ANEN 47 4 5 6 Wiederherstellen eines Hamster Tertoums nn 48 4 5 7 M gliche Fehlergliellenz ze ee Ad et hie 48 4 6 Debuggen von Hamster
46. 3 Weiterhin wird die Zeile angegeben in der der Fehler entdeckt wurde Wenn Sie mit der Maus auf die Fehlermeldung 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 f r Programmieranf nger h ufig 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
47. Dietrich Boles Daniel Jasper Hamster Simulator Version 2 8 2 Benutzungshandbuch 20 01 2011 Inhaltsverzeichnis 1 N 4 lat Die EE 7 1 1 Das Hamster Modell 222444444000HHHRnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmnnnnnannnnnnnnnnnnnnnnnnn 7 1 2 DerHamsier Simblalerzsasesssssnack a LE EEE 8 1 3 nderungen in Release 2 von Version 38 8 1 4 nderungen in Version 2 8 gegen ber 37 9 1 5 nderungen in Version 2 7 gegen ber 28 9 1 6 nderungen in Version 2 6 gegen ber 25 9 1 7 nderungen in Version 2 5 gegen ber 24 10 1 8 nderungen in Version 2 4 gegen ber 33 10 1 9 nderungen in Version 2 3 gegen ber 33 11 1 10 nderungen in Version 2 2 gegen ber 31 11 1 10 1 Erstellen von Hamster Programmen unabh ngig vom Editor des 111 ABS eegene eege eege 12 1 102 Hamster mit lte eege 12 1 11 nderungen in Version 2 1 gegen ber 320 13 1 12 Anmerkungen zur alten Version 1 des Hamster Simulators 14 Installation und Starten des Hamster SimulatOrs nenn 16 2 1 Laden und Installation einer Java Laufzeitumgebung 44444 gt 16 2 2 Laden und Installation des Hamster SimulatOrs nennen 17 2 3 Hamster Simulator unter JDK AEN 17 2 4 Starten des Hamster Gumulators Ae 17 Ihr erstes Hamster Programm ube 19 3 1 Gestaltung eines Hamster Tertortums nennen 20 3 2 Eingeben eines Hamster Programme 22 3 3 Compilieren eines Hamsier Programme 23 3 4 Ausf hren eines Hamster ProgrammsS
48. EEN 24 3 5 Debuggen eines Hamster Programmes EEN 25 36 Zusammenfassung E 26 Bedienung des Hamster Simulators AEN 27 4 1 EH 28 GN Da et 28 4 1 2 SISDONPPe ee ee ee 29 4 1 3 Button anne 29 IN ON ect cts ee ee irre nee 29 a E e te 30 GAR POPU E EE 30 4 1 7 ere EE EN 4 1 8 TEE EN 4 1 9 Dateiauswahl Dialogbox 244444440nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn nn 32 AAO Liette EE iii 33 4 2 Verwalten und Editieren von Hamster Programmen nn 33 4 2 1 Schreiben eines neuen Hamster Programmes nen 35 4 2 2 ffnen eines existierenden Hamster Programmes 36 4 2 3 ndern eines existierenden Hamster Programmes s s sisessieeieieiereereerereera 37 4 2 4 L schen eines existierenden Hamster ProgrammsS 4 4 gt 37 4 2 5 Umbenennen eines existierenden Hamster ProgrammsS gt 37 4 2 6 Verschieben eines existierenden Hamster Programms in einen anderen Ordner 37 4 2 7 Kopieren eines existierenden Hamster Programms in einen anderen Ordner 37 4 2 8 Drucken eines Hamsier Programme 38 4 2 9 Schlie en eines ge ffneten Hamster Programmes 4 4 4 38 4 2 10 lt Editier Finklionen au iin 38 4 2 11 Verwaltung VonordNern ser ee ee ir 39 4 2 12 Speichern zusammen mit einem Territorium ccceeeeeeeeeeeeeeeeeeeeeees 39 4 2 13 Gleichzeitiges ffnen eines Hamster Programms und Territoriums 40 4 3 Compilieren von Hamster Programmen 40 4 3 1 ele EE A0 4 3 2 Beseitigen von Fehlern EE 4
49. Frei vor 93 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 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
50. Items k nnen Sie den entsprechenden Ordner l schen Achtung Es werden automatisch auch alle Dateien und Unterordner des Ordners unwiderruflich gel scht e Mentitem Einf gen Wenn Sie zuvor eine Datei mit dessen Popup Men item 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 T
51. 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 112 def rechtsUm kehrt linksUm end def laufeZurueck while vornFrei vor end end def sammle while kornDa nimm gesammelt 1 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 def gesammelteKoerner return gesammelt end end Hauptprogramm paul AbgrasHamster new 2 3 Hamster WEST 0 paul laufeInEcke paul ernteEineReiheUndLaufeZurueck paul rechtsUm while paul vornFrei paul vor paul rechtsUm 113 paul ernteE
52. 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 118 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 ihn 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 G
53. OG 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 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 73 orientieren Dabei ndert sich der Programmierstil f r 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 wa
54. PTION 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 105 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 Programmiersprache 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 Proj
55. 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 94 2 Sie m ssen Jython Files jython2 5 1 3 Jetzt gibt es zwei Alternativen installieren bspw ins Verzeichnis C Program a Entweder verschieben kopieren Sie dann das Jython Lib Verzeichnis C Program Files jython2 5 1 Lib in das Unterverzeichnis lib des Hamster Simulator Ordners so dass es in lib ein Unterverzeichnis Lib gibt im Hamster Simulator Ordner java hamstersimulator jar und starten den Hamster Simulator dann durch Doppelklick auf diese Datei hamstersimulator bat 9 2 2 Eigene Module definieren Dpython home C Program Files jython2 5 1 Oder Sie schreiben die folgende Zeile in die Datei hamstersimulator bat jar 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 linksUm gib nimm vornFrei kornDa maulLeer def rechtsUm Py PythonHams Python Py Pyth linksUm linksUm linksUm thonHamster ge ter ge Hamster
56. Standard Hamsters im Hamster Territorium Um den Standard Hamster im Hamster Territorium auf eine andere 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 42 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
57. Zum Steuern der Programmausf hrung dienen dort die drei rechten Buttons rechts in der Toolbar Durch Anklicken des 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 er
58. achten der Programmausf hrung Wenn der Debugger aktiviert ist und Sie ein Programm mit 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 49 Funktionen Bereich Variablen Bereich Datei Bearbeiten Kompilieren Debugger EI d gem e ES Bslia leole simpel ae Del 9 CH Programme Programm Funktion Zeile DJ regeln irgtance ofkalah Spielregeln id SI AllroundHamstZ P kalah Schieds K ntrolliereTer 190 II spielerA instance of hamsterkalah Stra Eteisen ka sets Eer Ser E banat gt HamsterKalah hain 8 istspielera true E band C regeln instance of kalah Spielrege 9 C hamst IN reihe 0 gt Ab GI Str IN spalte 7 GI wi 4 LZ gt GI w D Spieler Spielregein Spielzug gt Hams gt MenschHamster SchiedsrichterHamster X Spielbrett C kalah WertSpielbrett gt WertSpieizug AllroundHamster KalahSpiel All AbfrageSchiedsrichterHamster HamsterKalah gt StrategieHamster f 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
59. alerweise hat der Standard Hamster 0 K rner im Maul Mit Hilfe des Buttons K rner im Maul sechster 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 20 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
60. amsterIn tern gib nimm PythonHamster getStandardHamsterIntern nimm m vornFrei PythonHamster ge kornDa PythonHamster getS maulLeer PythonHamster ge def rechtsUm linksUm linksUm linksUm def zurWand while vornFrei vor tStandardHamsterIntern vornFrei tandardHamsterIntern kornDa tStandardHamsterIntern 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 folgenderma en diese Module nutzen 96 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 laufeZurWan
61. atenbasis repr sentiert Diese hat folgende Gestalt ER Modellierung der Basisbefehle des Java Hamsters H 86 ER ER 2 066 ER ER o dp odp ER ER o dp odp ER ole o dp odp ER ER ae ole ae dp oe dp oe ER ER vor vor nex nex nex nex 87 Model dynamic Model lierung des Hamsterterritoriums territorium lt anzahlReihen gt lt anzahlSpalten gt territorium _ korn lt r dynamic Model mauer lt dynamic Model hamster dynamic Standa lierung eines Korns im Hamsterterritorium eihe gt lt spalte gt lt anzahl gt korn _ _ _ lierung der Mauern im Hamsterterritorium reihe gt lt spalte gt mauer _ _ lierung des Hamsters selbst lt reihe gt lt spalte gt lt blickrichtung gt lt anzahlKoernerImMaul gt hamster p rd Aktionen des Hamsters territorium TReihen TSpalten hams next Reih ter Reihe Spalte Blickrichtung AnzahlKoerner Pos Reihe Spalte Blickrichtung ReiheNeu SpalteNeu Neu gt 0 ReiheNeu lt TReihen Spal teNeu gt 0 SpalteNeu lt TSpalten not mauer ReiheNeu SpalteNeu So A ktualisiere die Prolog Datenbank retract hamster Reihe Spalte Blickrichtung AnzahlKoerner asse R rt hamster ReiheNeu SpalteNeu Blickrichtung AnzahlKoerner write prologhamster vor ttyflush read call oo
62. ch Wenn Sie bis hierhin gekommen sind haben Sie Ihr erstes Hamster Programm erstellt und ausgef hrt Sie sehen die Bedienung 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 26 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 Toolbar B Editor Datei Bearbeiten Compiler Debugger Fenster Extras Hilfe Aa DASS E Programme d meinErstesProgramm o EI beispielprogramme CH band 1 ul 2 oC band 2 3 oC band 3 A 5 6 S 8 void main while vornFrei vor gt C prolog rechtsUn oC scheme gt meinErstesProgramm void kehrt 9 linksUn 10 linksUn H 12 13 void rechtsUm 14 kehrt 15 linksUn 16 17
63. ches 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 l1iebt 2 zwischen den Atomen hamster und koerner Die Reihenfolge der 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
64. chreibt wozu dieser Button dient Zun chst werden wir die Gr e des Territoriums anpassen Klicken Sie 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 Norm
65. d while vornFrei vor def laufelnkEcke laufeZurWand linksUm laufeZurWand linksUm 97 def ernteEineReihe sammle while vornFrei vor sammle def ernteEineReiheUndlaufezurueck rnteEineReihe kehrt laufeZurueck laufelInEcke 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 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 98 Ueberpruefung Mauer befindet def rechtsFrei rechtsUm if vornF linksUm ret else linksUm ret der Hamste def laufeZurWand while vo vor der def la la lin la lin ams
66. d linksUm laufeZurWand linksUm rnteEineReih end sammle while vornFrei vor sammle end rnteEineReiheUndLaufeZurueck end Ha lauf rnt rnteEineReih kehrt laufeZurueck uptprogramm elnEcke EineReiheUndLaufeZurueck rech whil end 108 tsUm e vornFrei vor rechtsUm rnteEineReiheUndLaufezurueck rechtsUm 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 liebigen Territorium Aufgabe der Hamster steht irgendwo in einem b ohne innere Mauern er soll alle K rn 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 ines Feldes r fressen in def sammle while kornDa nimm end end Ueberpruefung eine Mauer befindet def linksFrei linksUm if vornFrei rechtsUm return true else rechtsUm return false end end Ueberpruefung Mauer befindet def rechtsFrei rechtsUm if vornFrei linksUm return true else linksUm return false end end ob sich links vom Hamster ob sich rechts vom Hamster eine der Hamster laeuft bis zur naechsten Wand def laufeZurWand 109 while vornFrei vor end end der Hamster laeuft in eine Ecke def lauf
67. d 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 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 75 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 einfa
68. 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 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
69. det sich wieder dem Berg zu der Hamster springt auf den Vorsprung der Hamster dreht sich nach rechts um 100 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 Territorium 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 101 def sammle self while self kornDa self
70. die Kachel Es erscheint ein Tooltipp in dem die Anzahl an K rnern auf der Kachel angegeben wird Sie k 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
71. e 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 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 Unterschie
72. e 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 des 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 PROL
73. e 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 Internet 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 vorn
74. efehle sind in diesem Sinne keine richtigen Dialogboxen W hrend sie ge ffnet sind k 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 47 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 Fehle
75. egte Datei wird automatisch in diese Datei gespeichert Handelt es sich um eine neu angelegte Datei 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 e
76. eklarative 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 die 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 77 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 Regel 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 l
77. ekt 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 i vornFrei vor end Ersetzen Sie diesen Inhalt durch Ihr Ruby Programm und speichern 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 106 vor linksUm gib nimm vornFrei gt bool kornDa gt bool maulLeer
78. elInEcke laufeZurWand linksUm laufeZurWand linksUm end der Hamster soll sich in die naechste Reihe in noerdlicher Richtung begeben vom Hamster aus gesehen liegt diese Reih links von ihm def begibDichLinksUmInNaechsteReihe linksUm vor linksUm end der Hamster soll sich in die naechste Reihe in noerdlicher Richtung begeben vom Hamster aus gesehen liegt diese Reih rechts von ihm def begibDichRechtsUmInNaechsteReihe rechtsUm vor rechtsUm end 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 vor sammle end end der Hamster soll alle Koerner in einer Reih insammeln er laeuft dabei von Westen nach Osten def ernteEineReiheNachOsten 110 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 Reihe
79. ele 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 80 bestimmte Funktionalit t 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 grundlegende 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 Systempradikaten 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 Testpradikate e Pr dikate zur Auswertung und Vergleich arithmetischer Ausdr cke e Steuerung und Metapr dikate e Pr dikate zur Manipulation von Listen Die Gesamtzahl alle
80. elprogramm gt meinErstesProgra o CH prolog Pb PrologBeispiele E 1 void nmaini while vornFrei vor 2 3 S SammelHamster 4 S rechtsUm 6 2 8 gt sammeln gt CH scheme A SchemeBeispiele void kehrt 9 linksUm 10 linksUm H 12 13 void rechtsUm 14 kehrt 15 linksUm 16 17 Spalte Abbildung 1 Editor Fenster B Simulation Rae Rass dt vornFrei true vor vornFrei true vor vornFrei true vor vornFrei false linksUm linksUm linksUm Abbildung 2 Simulation Fenster 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 bes
81. en Ordner zur ck zu gelangen bedient man sich des Men s Suchen in in dem man den 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 32 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 je EE Programine AllroundHamster EJ beispielprogramm CH band amp C band 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 g
82. enauer ihre Namen angezeigt Das Anklicken eines Dateinamens im Dateibaum entspricht im Hamster 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 33 Schauen Sie sich das Editor Fenster einmal an siehe Abbildung 13 Men leiste Toolbar Datei Bearbeiten Compiler Debugger Fenster Extras Hilfe d Zi Deko b Sg E Programme v meinErstesProgramm o C beispielprogramme 1 gt C band 1 2 gt C band 2 3 gt c band 3 4 5 6 F E void main while vornFreii vor gt CC prolog gt Cl scheme rechtsUm gt meinErstesProgramm void kehrt 9 linksUm 10 linksUm LL 12 13 void rechtsUm 14 kehrt T5 linksUm 16 17
83. er Simulator ist nun Mehrbenutzer f hig d h er kann einmal auf einem Server 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 Einige kleine Fehler wurden beseitigt 1 10 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 Hamster Programme lassen sich nun auch ohne den Editor des Hamster Si mulators erstellen und ausf hren Der Hamster Simulator wurde so angepasst dass eine Integration in die Entwicklungsumgebung BlueJ m glich ist 1 10 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
84. er 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 82 Programm Die nachfolgenden Beispiele sind nur ein kleiner Ausschnitt aus der Gesamtheit aller Steuerungs und Metapr dikate Eine vollst ndigere 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 berschrieben 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 Da
85. erscheint ein Karteireiter mit der Bezeichnung NeuerHamster sowie einem Diskettensymbol Das 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 35 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 main 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 angel
86. erung 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 mehreren 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 REDO Beim 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 Ak
87. erungsfenster folgendes eingeben und in etwa die folgenden Ergebnisse 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 6 0 _ 20 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 18 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 BlealalwlolallxIala dic Bl ly e C Programme 4 meinErstesProgramm C beispi
88. es existierenden Hamster Programms M chten Sie ein Hamster Programm umbenennen 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 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
89. feln feZurWand ksUm feZurWand ksUm Le der Hamster sol r laeuft bis zur r laeuft in eine ECcke ob sich rechts vom Hamster eine rei rn True rn False cnFrei Ecke naechsten Wand 1 sich in di naec Rich links von ihm ung begeben hst vom Hamster aus geseh in noerdlicher liegt diese Reih R def begibDichLinksUmInNaechsteReihe lin vor lin ksUm 0 ksUm der Hamster sol 1 sich in di naechst n Reihe in noerdlicher Richtung begebe rechts von ihm n vom Hamster aus geseh liegt diese Reih def begibDichRechtsUmInNaechsteReihe rechtsUnm vor rechtsUm Ueberpruefung gesehen links Reihe existiert f weit ReiheL return linksF SH FE r Ueberpruefung gesehen rechts Reihe existiert f weit SH H r ob in noerdlicher eine weitere nicht inksVomHamsterExis rei ob in noerdlicher eine weitere nich ReiheRechtsVomHamsterExi return rechts der Hamster sol f ernteEineReih Q a Frei l alle Koerner in Rich mit tier Rich t mi stie in n tung vom Hamster aus Mauern besetzte t tung vom Hamster aus t Mauern besetzte rt r Reih insammeln 0 sammle while vornFre vor 99 AE sa He mmle der Hamster soll alle Koerner in einer Reih insamme
90. g zu Hamster Programmen ber den Dateibaum im Editor Fenster m glich 4 4 12 Ver ndern der Gr 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 45 R cksetzen Geschwindigkeit er 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 im
91. gef hrt Setzt man das Property jedoch auf true passiert folgendes Hamster 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 9 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 Hamst
92. gel st die im Allgemeinen durch die Texte beschrieben werden Speichern 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 29 Manchmal erscheinen bestimmte Men items etwas heller Man sagt auch sie sind ausgegraut In diesem Fall kann man das Men litem 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 Men items darstellen Ketten DUuUDUnNvI WALZER A KL wvuwruyygwei Diepeeob ap EA Programme Programme ale C Abbildung 8 Toolbar 4 1 6 Popup Menu Popup Men s sind spezielle Men s die bestimmten Elementen auf dem Bildschirm zugeordnet sind siehe Abbild
93. geschieht normalerweise durch Ausf hren der geladenen Datei in Windows 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 v28 02 zip zip Dateien sind Dateien die mehrere andere Dateien komprimiert speichern Die Datei hamstersimula tor v28 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 und hamstersimulator 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
94. gramme zu entwickeln bzw auszuf hren ein bzw ausgeschaltet werden siehe Abschnitt 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 ber 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 SWl Interpreter nicht swipl sondern plcon Dementsprechend m ssten Sie swipl exe durch plcon exe ersetzen 5 1 13 laf ber die Property laff 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 58
95. halb des Eingabebereichs ein neuer Bereich der die Fehlermeldungen des Compilers anzeigt siehe 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 40 Datei Bearbeiten Kompilieren Debugger Info Salele Klala ale 0 DIE gt 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 linksUn linksUn 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 interface expected 6 Mein esHam
96. halten 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 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 Set 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 d
97. hrend der Ausf hrung eines Hamster Programms Der Standard Hamster wird immer in blau dargestellt 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 B
98. hritt ber Buttons auch nutzen wenn der Debugger aktiv ist und die Programmausf 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 51 3D Simulation RAG tr ale Abbildung 21 3D Simulationsfenster Das 3D Simulationsfenster enth lt keine Buttons zur Gestaltung eines Territoriums Die Territoriumsgestaltung findet ausschlie lich im 2D Simu
99. iben Damit ist es bspw auch m glich aus Hamster Programmen 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 13 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
100. ich ganz oben eine Men leiste und darunter eine Toolbar mit graphischen Buttons Links sehen wir den Dateibaum 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 nimm rechtsUm vor vor nimm void rechtsUm linksUm linksUm linksUm 22 Das ist unser erstes Hamster Programm Wir m ssen es als n chstes in einer Datei abspeichern Dazu klicken wir den Speicher
101. ich 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 126 12 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 127
102. ie 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 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
103. iel 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 Funktionen 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 Territo
104. ieren Klicken Sie dazu die Maus auf einer der Kacheln und ziehen Sie den Mauscursor bei gedr ckter 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 entspreche
105. iese 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 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 1 3 nderungen in Release 2 von Version 2 8 Wiederum wurden ein paar kleine Fehler korrigiert Wichtige Erweiterungen betreffen die Scratch Programmierung siehe Kapitel 11
106. imm 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 ython 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 accessing 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 P
107. ineReiheUndLaufeZurueck 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 paul 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 nachdem 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 114 10 5 Implementierung Die Anbindung von Ruby an den Hamster Simulator wurde mit Hilfe von JRuby realisiert http jruby org Lizenz
108. ingabefeldern 31 4 1 9 Dateiauswahl Dialogbox Dateiauswahl Dialogboxen sind spezielle Dialogboxen 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 EEE xl Suchen in C Programme 4 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 bergeordnet
109. klicken Wenn im Folgenden von Anklicken eines Objektes oder Anklicken eines Objektes mit der Maus gesprochen wird bedeutet das dass Sie den Mauscursor auf dem Bildschirm 28 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 x66 g 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 ber 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 Menditems Diese bestehen wiederum aus Texten die man anklicken kann Durch Anklicken von Mentitems werden genauso wie bei Buttons Aktionen aus
110. ksUm 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 117 Diesen k nnen Boolesche Ausdruck Bl cke 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
111. lationsfenster statt Das 3D Simulationsfenster wird aber immer automatisch entsprechend 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 A
112. le 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 PURPOSE 115 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 Dro
113. le 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 Version 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 SWIProlog Interpreter gesetzt werden siehe Abschnitt 5 1 11 und 5 1 12 8 1 Logikbasierte Programmierung Aus Wikipedia Logische oder
114. ledigt der Hamster seine Arbeit Je weiter Sie ihn nach rechts verschieben umso schneller flitzt der Hamster durchs Territorium 24 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 ber 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 Prog
115. lesche Ausdr cke e Steuerungsbl cke Kategorie Steuerung Bei den Steuerungsbl cken handelt sich um spezielle Anweisungsbl cke O O O 121 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 Standardm ig 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 anklicken 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 bilde
116. lgende Beispiel stellt eine Implementierung dieses Konstrukts dar S Lt E e WEE eg if then else P Q R 27 not P R oe Cl C2 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 augew hlt und das erste Pr dikat 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 alternative 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 a
117. liegen die Klassen aus Anhang A von Band 2 des Java Hamster Buches 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 unterst tzt 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 Eingabeaufford
118. lle 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 else P R zx PB ty Os if then elsetP Q R T Ra oe MO N He 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 Abfrage w rde dabei false sein Im zweiten Fall wenn das Pr dikat P in der Klausel C1 85 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 Verwe
119. ln er laeuft dabei von Westen nach Osten def ernteEineReiheNach sten rnteEineReihe He 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 Osten oder von Westen aus abgrast aufeInEck e er unterscheidet dabei ob er die Reihen von J rnteEineReiheNachOsten while weit reReiheLinksVomHamsterExistiert begibDichLinksUmInNaechsteReihe tereReiheRechtsVomHamsterExistiert gibDichRechtsUmInNaechsteReihe rnteEineReiheNachWesten if wei be rnteEineReiheNachOsten else kehrt 9 3 3 Berg erklimmen Im folgenden imperativen Python Programm erklimmt der Standard Hamster einen Berg Aufgabe der Hams Berges e der Hams ter soll den Gipfel eines vor ihm stehenden rklimmen ter soll zum Berg laufen def laufeZumBerg while vo der Hams c vornFrei ter soll den Berg erklimmen def erklimmeDenBerg while not gipfelErreicht SE der Hams def erklimme linksU vor rechts vor klimmel m Um EineStufe ter soll eine Stufe erklimmen EineStufe nun schaut der Hamster nach oben der Hamster erklimmt die Mauer der Hamster wen
120. m Ordner in dem auch die Datei hamstersimulator jar liegt Im Workspace Ordner befindet sich eine Datei namens settings properties in der der aktuelle CLASSPATH siehe Abschnitt 4 3 3 gespeichert wird 53 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 i
121. m 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 61 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 erscheinen 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 frontIsClear kornDa grainAvailable maulLeer mouthEmpty liesZahl readNumber liesZeichenkette readString schreib write init init getReihe getRow getSpalte getColumn getBlickrichtung getDirection getStandardHamster getDefaultHamster getAnzahlKoerner getNumberOfGrains getAnzahlHamster getNumberOfHamsters Territorium Territory HamsterInitialisierungsException
122. mationen 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 Datentypen 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 74 Einfache Terme Zu den einfachen Termen geh ren Atome Zahlen und Variablen Di
123. n Button dritter Button von links Es erscheint eine Dateiauswahl Dialogbox Hier geben wir den gew nschten Dateinamen 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 Ment 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
124. n siehe Abschnitt 5 Funktionen zum Verwalten dieser Dateien Umbenennen Kopieren 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 java 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 de
125. n 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 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 79 Beispiel tier hamster tiger 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 R uber Bei der Anfrage an das PROLOG System raeuber Tier w rde da
126. n der Property Datei security true Durch Setzen der security Property auf false 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 54 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 d
127. n 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 springt auf den Vorsprung end 111 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
128. n 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 122 Prozedurzapfen Abbildung 11 8 Definition von Prozeduren Zwischenbemerkung Nun sind wir so weit dass wir ein erstes kleines Scratch Hamster Programm selbst 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 repr sentieren lassen sich analog zu den Anweisungsbl cken ha
129. n 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 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 analo
130. nde 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 Territoriumsliste 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 P Kachel lt koerner auf kachel gt in Mauer lt hamster liste gt Hamster lt reihe gt lt spalte gt lt koerner im maul gt lt blickrichtung gt lt blickrichtung gt Nord Ostet 66 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 Beisp
131. nden Funktion m glich 4 4 8 Abspeichern eines Hamster Territoriums Sie k nnen einmal gestaltete 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 Offnen 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 44 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 Versio
132. ndhaben 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 123 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 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 Funk
133. ndung 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 trifft 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 req 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 D
134. ne gibAlle T if not maulLeer T gibAlle gib T E define vorwaerts n T if and vornFrei T gt n 0 vorwaerts n 1 vor T T 69 define zurMauer T if vornFrei T zurMauer vor T T define hinUndZurueck T if vornFrei T vor hinUndZurueck vor T kehrt T defin 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 define rechtsFrei T let T1 rechtsUm T if vornFrei T1 begin linksUm T1 begin linksUm T1 CT Fh 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 70 k nnen Sie nun Scheme Befehle eingeben und durch Anklicken des Ausf hren 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
135. ngeschaltet Standardm ig ist der Scratch Modus eingeschaltet Seit Version 2 8 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 pr cedure Neue Prozedur scratch new function Neue Funktion scratch void return verlasse an scratch bool return lief E scratch true wahr Pag scratch false Talsch scratch and und scratch or oder scratch nok nicht scratch if falls scratch else_if falls scratch else sonst scratch while solange scratch do wiederhol scratch do while solange 5 2 Mehrbenutzerf higkeit 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 hamstersimulator 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 60 In der Datei hamster properties in seine
136. nth 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 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 html The Scheme Programming Language e http www pu informatik uni tuebingen de pfg 200 1 scheme schintro v14 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 65 5 Dies ist standardm ig 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 folge
137. oolbar Button von links 39 4 2 13 Gleichzeitiges ffnen eines Hamster Programms und 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 unter
138. or erm glicht w hrend der Ausf hrung eines Hamster Programms das Beobachten des Programmzustands 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 48 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 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 Beob
139. p Aktionen mit der Maus Mehr Informationen zu Scratch findet man im Internet unter Snes Bewegung Steuerung Aussehen F hlen Klang Operatoren Malstift Variablen Wenn angeklickt wiederhole fortlaufend x 248 y 132 Neues Objekt LG EX X EE anne ores BI ache zux v E BI lite Bun v ED Kee setze x auf EECH setze y auf O pre worm Rand ab E x Position E 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 116 Datei Bearbeiten Compiler Debugger Fenster Extras 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 lin
140. peratives Programm oder objektorientiertes Programm abgespeichert sind also keine separaten 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 46 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
141. r 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 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 81 told trace notrace debug nodebug Der aktuelle Ausgabestrom wird geschlossen Umsc
142. ramms ausgef hrt wird Bei aktiviertem Debugger haben Sie die M glichkeit das Programm schrittweise d h Anweisung 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 25 3 6 Zusammenfassung Herzlichen Gl ckwuns
143. rd Befindet sich in der Datei hamster properties 56 eine Zeile mit 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
144. rium liefert true wenn sich in dem als Parameter bergebenen Territorium keine Mauer vor dem Hamster befindet 67 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 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
145. rkennen Sie an einem blauen Pfeil in einem Rechteck 4 2 2 ffnen eines existierenden Hamster 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 36 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 ein
146. rn auf mehreren Kacheln gleichzeitig festzulegen Klicken Sie dazu die Maus auf einer der Kacheln und ziehen 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 43 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 platz
147. rquellen Im Folgenden werden die h ufigsten Fehlerquellen genannt die bei der Ausf hrung 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 wahrend der Programmausf hrung den Zustand des Programms zu beobachten und gegebenenfalls sogar interaktiv zu andern Damit sind Debugger sehr hilfreich wenn es um das Entdecken von Laufzeitfehlern und logischen Programmfehlern geht Der Debugger des Hamster Simulat
148. ruf von Hamster Befehlen und der Hamster Simulator visualisiert die 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 11 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 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 hamstersimulator 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 schre
149. rundbefehl linksUm 119 120 nimm Repr sentiert 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 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 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 Boo
150. s 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 Programme 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 Ahnlich 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 Infor
151. s 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 Li und L2 zusammen in der Ergebnisliste L3 member X L append L1 L2 L3 reverse L1 L2 L2 ist die invertierte Liste von 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 83 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 Visualisi
152. s 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 System 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 Funktionalit ten bietet PROLOG wie auch vi
153. s Territorium leeren unn 112 10 4 Ruby Konsole nean enni EE E DN 114 UE SN une Ee Ee EEN 115 1 1 eet 116 13 1 bel rss ebene 117 11 2 SVOrausselz Under er oe a ae Oe a eee eh eee ae ae 118 11 3 Ein erstes kleines Beispiel AEN 118 11 4 Erstellen von Gcratch Programmen ssssssssssrnsessseserrrrnnrensserrrrrnnnnnneeerennne 118 11 4 1 Kalegerienauswahl nes ss 119 RE NN ee TE 119 14 3 PROGFAIMMD GIGI E 122 11 4 4 Anweisungssequenzen u eennnesssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 122 114 5 Programmen eek 122 11 4 6 K nir llstruklurens ue seen ee 123 11 4 7 Prozeduren und boolesche Funktionen sn nnnnnnnnnnnnnnnnnn 124 11 5 Ausf hren von Gcratch Hamster Programmen 125 11 6 Generieren von Java Hamster Programmen ssssssssseensssssesrrrrrnnrrnsseerrnne 126 11 7 Beispielprogramme zcncsnnaserea ebene 126 12 Noch Le E KEEN 127 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
154. schenpuffers wird eingef gt 38 e R ckg ngig Button zw fter Toolbar Button von links Wenn Sie durchgef hrte nderungen 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 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
155. 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 stark 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 64 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 e
156. tart Button dr cken 1 10 2 Hamstern mit BlueJ BlueJ 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 12 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 Auf
157. tiger 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 einschr nkend 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 und 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 m W d Y sind unifizierbar wenn F fm W d Y o F fim W d Y e Die Terme t f m X x Y und t f Z a p Z sind unifizierbar wenn o X a Zim a Yip m a Auf eine quivalente 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 78 Beispiele e t a b C und t Dle fl sind unifizierbar mit o C e A D a b e t ab c und t A BIZ sind unifizierbar mit o A a B b Z c e t a und
158. tion 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 analog 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 Pro
159. tion 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 einleiten 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 84 Call 9 tier fuchs creep Exit 9 tier fuchs creep Cal 9 jagt Fuchs E186 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 nachfo
160. tiven Weg zur Steuerung des Hamsters Sie gibt dabei dem Programmierer die M glichkeit direkt mit dem PROLOG System zu interagieren Dabei kann Uber 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 Men Item im Men Fenster ffnen 8 6 Beispiele 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 90 OO Eintrittspunkt des Programms main leereTerritorium zus tzliche n tzliche Befehle kehrt linksUm linksUm rechtsUm kehrt linksUm laufeZurWand vornFrei vor laufeZurWand laufeZurWand laufelnEcke laufeZurWand linksUm laufeZurWand linksUm zus tzliche Testbefehle ohne Seiteneffekte linksFrei linksUm vornFrei rechtsUm linksFrei rechtsUm fail rechtsFrei rechtsUm vornFrei linksUm rechtsFrei linksUm fail K rner sammeln nimmAlle
161. tuell Stand 20 01 2011 ist die Version 6 manchmal wird sie auch als Version 1 6 bezeichnet Sie sollten m glichst immer die aktuellste Version installieren Notwendige Voraussetzung f r die Nutzung des Hamster Simulator ist die Nutzung 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
162. uch der zehnte Button dient dem Aktivieren bzw Deaktivieren von Sound der fortw hrend 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 52 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 Uber ein entsprechendes Property kann auch ein anderer Workspace Ordner als der Ordner Programme verwendet werde
163. ung 9 Man ffnet sie dadurch dass man das Objekt zun chst anklickt und danach nochmal die rechte Maustaste dr ckt Genauso wie bei normalen Men s erscheint dann eine Box mit Men items 30 J elep eip DE IK WeinErstes 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 E
164. 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 ber die Tastatureingaben Strg c bzw Strg v Bei Ausf hrung 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 Fur die Implementierung des Scheme Hamster Modells wurde JScheme benuizt siehe http jscheme sourceforge net jscheme mainwebpage html 71 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 al
165. ython Software Foundation All Rights Reserved are retained in Jython alone or in any derivative version prepared by Licensee 103 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 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
166. zeduren 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 124 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 Ment ltem Auslagern in Prozedur bzw Auslagern in Funktion anklickt Es wird dann eine 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

Download Pdf Manuals

image

Related Search

Related Contents

Inst 040-508 Lagerlos  Owner`s Manual: LIftPak LP1000  cellule de charge pour contrôle poussée axiale  EFG-Vac 22-30 / 25L/S/SL  Manual - Can-Am Instruments Ltd.  Tripp Lite A012-012 User's Manual  RCA 25255RE2 Quick Start Guide  câmera sony alpha.100  CF 01-707 92_13028-01  小荷物専用昇降機の適正な維持管理のお願い  

Copyright © All rights reserved.
Failed to retrieve file