Home » Best laufzeitfehler 9 index außerhalb des gültigen bereichs New

Best laufzeitfehler 9 index außerhalb des gültigen bereichs New

by Tratamien Torosace

You are viewing this post: Best laufzeitfehler 9 index außerhalb des gültigen bereichs New

Neues Update zum Thema laufzeitfehler 9 index außerhalb des gültigen bereichs


Benutzungshandbuch – Java-Hamster-Modell New

Um Laufzeitfehler zu vermeiden, die ja bspw. dadurch entstehen können, dass Sie dem Hamster den Befehl vor geben, obwohl er vor einer Mauer steht, existieren drei so genannte Testbefehle. Testbefehle liefern boolesche Werte, also wahr (true) oder falsch (false):

+ Details hier sehen

Read more

Benutzerhandbuch

Hamstersimulator Licht

Version 2.0 (24.08.2010)

Dietrich Boles

Universität Oldenburg

Inhaltsverzeichnis

1

Einleitung

10

1.1 Das Hamstermodell 10

1.2 Der Hamstersimulator 10

1.3 Voraussetzungen.

11

1.4 Hinweise.

11

1.5 Änderungen von Version 2.0 zu Version 1.0

11

1.6 Aufbau des Benutzerhandbuchs.

12

2 Installation.

13

2.1 Voraussetzungen.

13

2.2 Download, Installation und Start 13

3 Das Java-Hamster-Modell 14

3.1 Landschaft 14

3.2 Hamster 15

3.3 Befehle

15

4 Imperative Programmierkonzepte der Programmiersprache Java

17

4.1 Grundlagen.

17

4.2 Anweisungen und Programme

17

4.2.1 Hamsterbefehle

18

4.2.2 Anweisungen

18

4.2.3 Programme

19

4.2.4 Kommentare

19

4.2.5 Beispielprogramm.

19

4.3 Prozeduren.

20

4.3.1 Prozedurdefinition.

20

4.3.2 Prozeduraufruf 21

4.3.3 Beispielprogramm.

21

4.4 Auswahlanweisungen.

22

4.4. 1 Testbefehle

22

4.4.2 Boolesche Operatoren und Ausdrücke

23

4.4.3 Blockunterricht

23

4.4.4 Bedingte Anweisung

23

4.4.5 Alternative Anweisungen

24

4.4.6 Beispielprogramm.

24

4.5 Iterationsanweisungen.

25

4.5.1 while-Anweisung

25

4.5.2 do-Anweisung

25

4.5.3 Beispielprogramm.

26

4.6 Boolesche Funktionen.

27

4.6.1 Boolesche Rückgabeanweisung

27

4.6.2 Definition von Booleschen Funktionen.

27

4.6.3 Aufruf von Booleschen Funktionen.

27

4.6.4 Beispielprogramm.

28

4.7 Variablen und Ausdrücke

28

4.7.1 Datentypen.

29

4.7.2 Variablen.

29

4.7.3 Ausdrücke

29

4.7.4 Zuordnung

30

4.7.5 Vergleichsausdrücke

31

4.7.6 Gültigkeitsbereich von Variablen.

31

4.7.7 Lebensdauer von Variablen.

31

4.7.8 Beispielprogramm.

32

4.8 int-Funktionen.

32

4.8.1 Funktionsdefinition.

32

4.8.2 Funktionsaufruf 33

4.8.3 Verallgemeinerung des Funktionskonzepts

33

4.8.4 Beispielprogramm.

33

4.9 Funktionsparameter 34

4.9.1 Formalparameter 35

4.9.2 Aktuelle Parameter 35

4.9.3 Parameterübergabe

35

4.9.4 Funktionsüberladung.

36

4.9.5 Beispielprogramm.

36

4.10 Rekursion.

37

5 Ihr erstes Hamster-Programm.

38

5.1 Die Hamster-Befehle ausprobieren

39

5.2 Entwerfen eines Hamsterreviers

39

5.3 Einstieg in ein Hamsterprogramm

42

5.4 Kompilieren eines Hamsterprogramms

43

5.5 Ein Hamsterprogramm betreiben

44

5.6 Debuggen eines Hamsterprogramms

45

5.7 Zusammenfassung

46

​​​​6 Wie man den Hamstersimulator bedient

47

6.1 Grundfunktionen.

48

6.1.1 Klicken.

48

6.1.2 Tooltips

48

6.1.3 Schaltfläche.

48

6.1.4 Menü.

49

6.1.5 Symbolleiste 50

6.1.6 Popup-Menü.

50

6.1.7 Eingabefeld

50

6.1.8 Dialogfeld

50

6.1.9 Dateiauswahldialog

51

6.1.10 Elementbaum

52

6.1.11 Geteiltes Fenster

53

6.2 Verwaltung und Bearbeitung von Hamsterprogrammen

53

6.2.1 Ein neues Hamsterprogramm schreiben

55

6.2.2 Ändern des aktuellen Hamsterprogramms

55

6.2.3 Löschen des aktuellen Hamsterprogramms

55

6.2.4 Speichern des aktuellen Hamsterprogramms

55

6.2.5 Öffnen eines gespeicherten Hamsterprogramms

55

6.2.6 Drucken eines Hamsterprogramms

56

6.2.7 Editierfunktionen.

56

6.3 Hamsterprogramme zusammenstellen.

57

6.3.1 Kompilieren.

57

6.3.2 Fehler beseitigen.

57

6.4 Hamsterreviere verwalten und gestalten.

58

6.4.1 Ändern die Größe des Hamsterreviers

59

6.4.2 Umsetzen des Hamsters im Hamsterrevier

59

6.4.3 Einstellung der Sichtlinie des Hamsters

59

6.4.4 Abfrage und Angabe der Körneranzahl im Hamstermaul

60

6.4.5 Körner auf Hamstergebietsplättchen legen

60

6.4.6 Das Platzieren von Mauern auf Hamster-Revierplättchen

60

6.4.7 Hamster-Revierplättchen löschen

61

6.4

8 Ein Hamsterrevier retten

61

6.4.9 Wiederherstellen eines gespeicherten Hamstergebiets

61

6.5 Hamster-Befehle interaktiv ausführen.

62

6.5.1 Befehlsfenster 62

6.5.2 Parameter 63

6.5.3 Rückgabewerte von Funktionen.

63

6.5.4 Befehls-Popup-Menü.

63

6.6 Ausführen von Hamsterprogrammen

63

6.6.1 Starten eines Hamsterprogramms

64

6.6.2 Stoppen eines Hamsterprogramms

64

6.6.3 Ein Hamsterprogramm pausieren

64

6.6.4 Während der Durchführung eines Hamsterprogramms

64

6.6.5 Geschwindigkeit einstellen 64

6.6.6 Wiederherstellung eines Hamsterterritoriums

65

6.7 Debuggen von Hamsterprogrammen.

65

6.7.1 Beobachten der Programmausführung

66

6.7.2 Schrittweise Programmausführung

67

6.7.3 Haltepunkte

67

6.7.4 Debugger-Fenster 68

6.8 Konsole

68

7 Beispielprogramme

71

7.1 Ein Feld beweiden.

71

7.2 Einen Berg erklimmen.

72

7.3 Einen Berg erklimmen (objektorientierte Variante) 73

8 Literatur zum Programmieren lernen

75

Programmieranfänger finden es oft schwierig zu programmieren, wenn sie ihre normale Denkweise verlassen und in eher technisch orientierten Kategorien denken müssen, die ihnen von den Programmiersprachen vorgegeben werden

Gerade am Anfang werden sie oft mit so vielen inhaltlichen und methodischen Neuerungen konfrontiert, dass sie das Wesentliche des Programmierens, nämlich das Problemlösen, aus den Augen verlieren

Mit dem Ziel, dieses Problem zu lösen, wurde das Hamstermodell entwickelt

Mit dem Hamstermodell wird Programmieranfängern ein einfaches, aber leistungsfähiges Modell an die Hand gegeben, mit dem sich die Grundkonzepte der (imperativen) Programmierung spielerisch erlernen lassen

Programmierer entwickeln sogenannte „Hamsterprogramme“, mit denen sie einen virtuellen Hamster durch eine virtuelle Landschaft steuern und bestimmte Aufgaben lösen können

Die Zahl der gleichzeitig zu berücksichtigenden Konzepte wird im Hamstermodell stark reduziert und sukzessive erweitert

Prinzipiell ist das Hamstermodell unabhängig von der Programmiersprache

Für den praktischen Einsatz des Modells wurde jedoch bewusst die Programmiersprache Java als Basis gewählt

Java – auch als „Sprache des Internets“ bezeichnet – ist eine moderne Programmiersprache, die sich in den letzten Jahren sowohl im Bildungsbereich als auch im industriellen Umfeld etabliert hat

Das Hamster-Modell ist im Buch „Programmieren gelernt mit Java -Hamster-Modell“, erschienen im Vieweg-Teubner-Verlag, ausführlich beschrieben

Viele weitere Informationen finden Sie auf der Hamster-Website im WWW unter www.java-hamster-modell. de Beim Hamster-Modell steht nicht so sehr das „Lernen durch Zuhören“ oder „Lernen durch Lesen“ im Vordergrund, sondern vielmehr das „Learning-by-Doing“, also praktische Übungen.Genau das ist mit dem Hamster-Simulator möglich Diese bietet eine Reihe von Werkzeugen zum Erstellen und Ausführen von Hamsterprogrammen: einen Editor zum Eingeben und Verwalten von Hamsterprogrammen, einen Compiler zum Übersetzen von Hamsterprogrammen, einen Gebietsdesigner zum Entwerfen und Verwalten von Hamstergebieten, einen Interpreter zum Ausführen von Hamsterprogrammen und einen Debugger Hamsterprogramme testen Der Hamstersimulator ist einfach zu bedienen, wurde aber in Funktion und Bedienung bewusst an professionelle Entwicklungsumgebungen für Java (z

B

Eclipse) angelehnt, um den späteren Umstieg zu erleichtern r gibt es einen weiteren Hamster-Simulator, der noch viele weitere Funktionen bietet (die für echte Programmier-Anfänger allerdings nicht zwingend notwendig sind)

Diese finden Sie auf der Hamster-Website www.java-hamster-modell.de

Zielgruppe des Hamstermodells sind Schüler oder Studenten ohne Programmiererfahrung, die die Grundlagen des (imperativen) Programmierens erlernen und dabei ein wenig Spaß haben möchten

Kenntnisse im Umgang mit Computern sind wünschenswert

Der Hamstersimulator ist kein Lehrbuch, sondern ein Tool, das das Erlernen des Programmierens unterstützt

Kapitel 7 (Programmierliteratur lernen) weist auf gute Lehrbücher zum Erlernen des Programmierens hin.

Das Hamstersimulatorlicht wurde mit dem Tool „Soloist“ erstellt

Solist ist eine spezielle Entwicklungsumgebung für Mini-Programmierwelt-Simulatoren

Solist ist ein Tool aus der Programming Theatre-Toolfamilie, einer Reihe von Tools zum Erlernen des Programmierens

Die Theaterwelt ist eine Metapher für all diese Werkzeuge

Schauspieler (bei Solisten „Solisten“) agieren auf einer Bühne, auf der zusätzliche Requisiten platziert werden können

Eine Performance entspricht der Ausführung eines Programms

Beim Hamstersimulator ist die Bühne das Territorium des Hamsters, auf dem der Hamster als Solist agiert (es gibt nur einen Hamster)

Requisiten sind Wände und Körner

Wer also bei der Nutzung des Hamster-Simulators auf den Begriff „Solist“ stößt, kennt nun den Hintergrund dieser Namenswahl Version 1.0 des Hamster-Simulators Light ist, dass es nun spezielle Menüpunkte zum Erstellen, Laden und Speichern von Hamster-Programmen gibt im Programmmenü oder in der Symbolleiste

Das Benutzerhandbuch ist in 8 Kapitel unterteilt

Nach dieser Einführung beschreibt Kapitel 2 die Installation des Hamstersimulators

Kapitel 3 stellt das Hamstermodell im Detail vor

Kapitel 4 gibt einen Überblick über die Programmierkonzepte der imperativen Programmierung mit dem Hamstermodell bzw

Java

Kapitel 5 gibt Ihnen eine kurze und prägnante Einführung, wie Sie Ihr erstes Hamsterprogramm zum Laufen bringen

Dieses enthält eine kurze Einführung in die Elemente und die Bedienung des Hamstersimulators

Kapitel 6 geht wesentlich detaillierter auf die einzelnen Elemente und die Bedienung des Hamstersimulators ein

Kapitel 7 demonstriert anhand einiger Beispielprogramme das Programmieren mit dem Java-Hamster

Schließlich enthält Kapitel 8 Hinweise auf gute Begleitliteratur zum Erlernen des Programmierens mit Java

Voraussetzung für den Start des Hamstersimulators ist ein Java Development Kit SE (JDK) Version 6 oder höher

Ein Java Runtime Environment SE (JRE) reicht nicht aus

Das aktuelle JDK kann von der Webseite http://java.sun.com/javase/downloads/index.jsp bezogen werden und muss anschließend installiert werden

Der Hamster-Simulator-Light kann von der Website http://www

programmierkurs-java.de/solist oder www.java-hamster-modell.de können kostenlos heruntergeladen werden

Es befindet sich in einer Datei namens hamstersimulator-light-2.0.zip

Diese muss zunächst entpackt werden

Es wird ein Ordner mit dem Namen hamstersimulator-light -2.0 (der sogenannte Simulatorordner) erstellt, in dem sich eine Datei simulator.jar befindet

Durch einen Doppelklick auf diese Datei wird der Hamstersimulator gestartet

Alternativ kann es auch in einer Konsole durch Eingabe des Befehls java -jar simulator.jar gestartet werden

Beim ersten Start sucht der Hamster-Simulator auf Ihrem Rechner nach der JDK-Installation

Wenn dieser nicht gefunden wird, werden Sie aufgefordert, den entsprechenden Pfad einzugeben

Der Pfad wird dann in einer Datei namens solist.properties im Ordner des Simulators gespeichert, wo er später wieder geändert werden kann, falls Sie beispielsweise eine neuere JDK-Version auf Ihrem Rechner installieren sollten

In der Property-Datei können Sie auch die Sprache angeben, mit der der Hamster-Simulator arbeitet

In der aktuellen Version wird allerdings nur Deutsch unterstützt

Computer können heute zur Lösung verschiedenster Aufgaben eingesetzt werden

Die Arbeitsanweisungen zur Bearbeitung der Aufgaben werden Ihnen in Form von Programmen mitgeteilt

Diese von Programmierern entwickelten Programme bestehen aus einer Reihe von Befehlen oder Anweisungen, die der Computer ausführen kann

Die Entwicklung solcher Programme nennt man Programmierung.

Das Hamstermodell ist ein spezielles didaktisches Modell zum Erlernen des Programmierens

Beim Hamstermodell übernimmt ein virtueller Hamster die Rolle des Computers

Ähnlich wie ein Computer können diesem Hamster Befehle gegeben werden, die er ausführt

Dir als Programmierer werden bestimmte Aufgaben gestellt, die du lösen musst, indem du den Hamster steuerst

Solche Tasks werden im Folgenden als Hamster-Tasks bezeichnet

Für diese Aufgaben müssen Sie Programme – sogenannte Hamsterprogramme – in der Hamstersprache – einer Programmiersprache, die fast vollständig der Programmiersprache Java entspricht – entwickeln, die die Aufgaben korrekt und vollständig lösen

Die Aufgaben werden nach und nach komplexer

Zur Lösung der Aufgaben müssen bestimmte Programmierkonzepte verwendet werden, die schrittweise in das Hamstermodell eingeführt werden

Die Grundidee des Hamstermodells ist denkbar einfach: Sie als Programmierer müssen einen (virtuellen) Hamster durch eine (virtuelle) Landschaft steuern und die ihm gestellten Aufgaben lösen lassen

Die Welt, in der der Hamster lebt wird durch eine gekachelte Ebene dargestellt

Abbildung 3.1 zeigt eine typische Hamsterlandschaft – auch Hamsterrevier genannt

Die Größe der Landschaft, also die Anzahl der Kacheln, ist nicht explizit vorgegeben

Die Landschaft ist beliebig, aber nie unendlich groß

Auf einzelnen Kacheln können ein oder mehrere Körner liegen

Kacheln mit Körnungen sind in den Landschaftsskizzen mit einem speziellen Körnungssymbol gekennzeichnet

Hamster-Territorium-Kacheln können immer noch Wände haben, was bedeutet, dass diese Kacheln blockiert sind

Der Hamster kann sie nicht betreten

Es ist nicht möglich, dass eine Fliese sowohl eine Wand als auch Körner hat

Der Hamster kann das Revier nicht verlassen

Stellen Sie sich also vor, dass das Territorium immer vollständig von Mauern umgeben ist

Abb

3.1: Komponenten des Hamstermodells

Im Hamstermodell gibt es immer genau einen Hamster

Der Hamster steht auf einem der Plättchen des Hamsterterritoriums

Dieses Plättchen kann nicht durch eine Wand blockiert werden, aber es kann Samen enthalten

Der Hamster kann in vier verschiedenen Richtungen (Norden, Süden, Westen, Osten) auf den Plättchen stehen

Je nach Blickrichtung wird der Hamster durch unterschiedliche Symbole dargestellt

In Abbildung 3.1 blickt der Hamster nach Osten

Körner finden sich nicht nur auf einzelnen Kacheln, sondern auch im Maul des Hamsters

Der Hamster kennt vier Kommandos und drei Testkommandos, durch deren Aufruf ein Programmierer den Hamster durch ein vorgegebenes Hamsterrevier steuern kann

Man kann sich den Hamster als eine Art virtuellen Prozessor vorstellen, der im Gegensatz zu echten Computerprozessoren (zunächst) keine arithmetischen und logischen Operationen ausführen kann, aber „erkunden“ kann

Diese Befehle sind unten aufgeführt und werden im nächsten Kapitel ausführlicher vorgestellt

void forward() : Der Hamster hüpft in seiner aktuellen Blickrichtung eine Kachel vorwärts.

: Der Hamster hüpft in seiner aktuellen Blickrichtung eine Kachel vorwärts

void turnleft() : Der Hamster dreht sich auf der Kachel, auf der er gerade steht, um 90 Grad gegen den Uhrzeigersinn.

: Der Hamster dreht sich auf der Kachel, auf der er gerade steht, um 90 Grad gegen den Uhrzeigersinn

void take() : Der Hamster frisst genau ein Korn von dem Plättchen, auf dem er sich gerade befindet, d.h

der Hamster hat dann ein Korn mehr im Maul und es ist ein Korn weniger auf dem Plättchen als vorher.

: Der Hamster frisst genau ein Korn von dem Plättchen, auf dem er sich gerade befindet, d.h

der Hamster hat dann ein Korn mehr im Maul und es ist ein Korn weniger auf dem Plättchen als vorher

void get() : Der Hamster legt genau ein Korn aus seinem Maul auf das Plättchen, auf dem er sich gerade befindet, dh er hat danach ein Korn weniger im Maul, und es ist ein Korn mehr auf dem Plättchen als vorher.

: Der Hamster legt auf dem Plättchen, auf dem er gerade steht, genau ein Korn aus seinem Maul, dh er hat danach ein Korn weniger im Maul, und auf dem Plättchen ist ein Korn mehr als vorher

boolean frontFree() : Gibt den Wert true zurück, wenn auf der Kachel vor dem Hamster keine Wand ist

Wenn die Kachel von einer Wand blockiert wird, dann wird der Wert false zurückgegeben.

: Gibt den Wert zurück, wenn keine Wand auf der Kachel in Sichtlinie vor dem Hamster ist

Wenn die Kachel von einer Wand blockiert wird, wird der Wert zurückgegeben

boolean maulLeer() : gibt false zurück, wenn der Hamster ein oder mehrere Körner im Maul hat

Befinden sich keine Körner im Maul des Hamsters, wird der Wert true zurückgegeben

: Gibt den Wert zurück, wenn der Hamster ein oder mehrere Körner im Maul hat

Befinden sich keine Körner im Maul des Hamsters, wird der Wert zurückgegeben

boolean kornDa() : Gibt den Wert true zurück, wenn sich ein oder mehrere Körner auf der Kachel befinden, auf der der Hamster gerade steht

Befindet sich kein Korn auf der Kachel, wird der Wert false zurückgegeben

In diesem Kapitel werden die Kommandos, die der Hamster kennt, genauer erklärt

Außerdem enthält dieses Kapitel eine Zusammenfassung der wichtigsten Programmierkonzepte der imperativen Programmierung mit Java

Diese Konzepte werden in dem im Vieweg-Teubner-Verlag erschienenen Buch „Spielend programmieren mit dem Java-Hamster-Modell“ ausführlich vorgestellt

Wenn Sie völlig neu in der Programmierung sind, empfehle ich Ihnen, sich auf der folgenden Website (Beispiel für das Java-Hamster-Buch) mit den allgemeinen Grundlagen des Programmierens vertraut zu machen: http://www-is.informatik.uni-oldenburg.de/~ dibo/hamster/leseprobe/node3.html.

Der Zeichensatz (das Wörterbuch), den Sie beim Erstellen von Hamster-Programmen verwenden können, entspricht dem 16-Bit-Zeichensatz Unicode

Die Tokens einer Sprache, einschließlich der lexikalischen

Einheiten genannt sind die Wörter, auf denen sie basiert

Wenn Sie Ihr Programm kompilieren, zerlegt der Compiler Ihren Quellcode in Tokens und versucht herauszufinden, welche Anweisungen, Bezeichner und andere Elemente der Quellcode enthält

In Java müssen Token durch Wort-Leerzeichen getrennt werden

Der Wortabstand umfasst Leerzeichen, Tabulatoren, Zeilenumbrüche und Seitenvorschübe

Diese Zeichen, im Folgenden Trennzeichen genannt, haben keine weitere Bedeutung

Bezeichner, die zum Benennen deklarierter Elemente (wie Prozeduren oder Variablen) in Java verwendet werden, müssen mit einem Buchstaben, einem Unterstrich (_) oder einem Dollarzeichen ($) beginnen

, dem weitere Buchstaben, Unterstriche und Ziffern folgen können

Bezeichner können beliebig lang sein

In Java wird streng zwischen Groß- und Kleinschreibung unterschieden, d.h

die Bezeichner „right“ und „right“ sind unterschiedliche Bezeichner

Schlüsselwörter sind reservierte Wörter in einer Programmiersprache

Sie dürfen nicht als Identifikatoren verwendet werden

Programme bestehen aus einer Reihe von Befehlen oder Anweisungen

Die Aufgabe eines Hamsterprogrammierers besteht darin, den Hamster durch eine Landschaft zu steuern, um die gestellten Hamsteraufgaben zu lösen

Um den Hamster zu kontrollieren, müssen ihm Anweisungen in Form von Kommandos gegeben werden

Der Hamster hat die Fähigkeit, vier verschiedene Befehle zu verstehen und auszuführen: in front(); Der Hamster hüpft in seiner aktuellen Blickrichtung eine Kachel vorwärts.

Der Hamster hüpft in seiner aktuellen Blickrichtung eine Kachel vorwärts

leftTom(); Der Hamster dreht sich auf dem Plättchen, auf dem er gerade steht, um 90 Grad gegen den Uhrzeigersinn

Der Hamster dreht sich auf dem Plättchen, auf dem er gerade steht, um 90 Grad gegen den Uhrzeigersinn

nehmen(); Der Hamster frisst genau ein Korn von dem Plättchen, auf dem er sich gerade befindet, dh der Hamster hat dann ein Korn mehr im Maul und es liegt ein Korn weniger auf dem Plättchen als vorher

Der Hamster frisst von dem Plättchen, auf dem es liegt ist genau ein Korn, dh der Hamster hat danach ein Korn mehr im Maul und ein Korn weniger auf der Platte als vorher

geben Sie(); Der Hamster legt genau ein Korn aus seinem Maul auf die Kachel, auf der er sich gerade befindet, dh er hat danach ein Korn weniger im Maul, und es ist ein Korn mehr auf der Kachel als vorher

Wie Sie vielleicht bemerkt haben, kann es zu Problemen kommen mit den Befehlen vor nehmen und geben:

Der Hamster bekommt den Befehl vor(); und das Plättchen vor ihm wird von einer Wand blockiert.

und das Plättchen vor ihm wird von einer Wand blockiert

Der Hamster erhält den Befehl take(); und auf der Fliese, auf der er gerade steht, ist kein einziges Korn..

und auf der Fliese, auf der er gerade steht, ist kein einziges Korn

Der Hamster erhält den Befehl get(); und er hat kein einziges Stück Getreide im Mund

Wenn Sie den Hamster in diese Situationen bringen, die er nicht lösen kann, dann wird der Hamster so enttäuscht von Ihnen sein, dass er keine weiteren Befehle mehr ausführen will

Solche Fehler werden Laufzeitfehler genannt

Laufzeitfehler können im Allgemeinen nicht vom Compiler erkannt werden, sondern treten erst während der Ausführung eines Programms auf

Programme, die zu Laufzeitfehlern führen können, sind fehlerhaft!

In imperativen Programmiersprachen werden Verarbeitungsregeln durch sogenannte Statements ausgedrückt

Aussagen, die nicht weiter zerlegt werden können, nennt man Elementaraussagen

In der Hamstersprache sind die vier Grundkommandos elementare Anweisungen

Eine Folge von Anweisungen, die nacheinander ausgeführt werden, nennt man Anweisungsfolge

Die einzelnen Anweisungen einer Anweisungsfolge werden nacheinander in der angegebenen Reihenfolge ausgeführt

Ein Hamsterprogramm besteht aus dem Schlüsselwort void, gefolgt von main, einem Paar runder Klammern und einem Paar geschweifter Klammern, die eine Anweisungsfolge einschließen

Beim Aufruf bzw

Start des Programms werden die Anweisungen in der Anweisungsfolge innerhalb der geschweiften Klammern nacheinander ausgeführt

Ziel des Programmierens ist es, Programme zu entwickeln, die vorgegebene Aufgaben lösen

Zusätzlich zu ihrer Korrektheit und Vollständigkeit sollten Programme eine weitere Eigenschaft haben; sie sollten leicht verständlich sein

Das bedeutet, dass die Lösungsidee und die Umsetzung auch für andere Programmierer leicht verständlich und nachvollziehbar sein sollten, um beispielsweise das Programm später erweitern oder in anderen Kontexten wiederverwenden zu können

Sogenannte Kommentare dienen dazu, ein Programm zu dokumentieren

Sie haben keinen Einfluss auf die Steuerung des Hamsters

Sie machen das Programm lediglich lesbarer

Es gibt zwei Arten von Kommentaren in Java: Zeilenkommentare und Bereichskommentare

Zeilenkommentare beginnen mit zwei Schrägstrichen (//) und enden am nächsten Zeilenende

Auf die Schrägstriche kann jedes beliebige Zeichen folgen

Bereichskommentare beginnen mit der Zeichenkombination /* und enden mit der Zeichenkombination */

Dazwischen können beliebige Zeichen stehen

Bereichskommentare können sich auch über mehrere Zeilen erstrecken

Das folgende Hamsterprogramm veranlasst den Hamster, zwei Körner in dem in Abbildung 4.2 skizzierten Territorium zu fressen:

void main() {

// erste Körner essen

vor();

vor();

nehmen();

// Zweitkorn essen

leftTog();

vor();

vor();

nehmen();

}

Abb

4.2: Hamsterrevier für das Beispielprogramm

Prozeduren werden verwendet, um neue Befehle zu deklarieren

Dabei sind zwei Aspekte zu beachten: die Definition von Prozeduren und deren Aufruf, also Ausführung

Ein neuer Befehl wird durch eine Prozedurdefinition deklariert

Zum einen muss die Definition angeben, wie der Befehl heißt (Prozedurname) und zum anderen muss festgelegt werden, was der Hamster tun soll, wenn er den neuen Befehl erhält

Ersteres findet im sogenannten Verfahrenskopf statt, letzteres im sogenannten Verfahrensgremium

Das Schlüsselwort void muss zuerst im Prozedurkopf angegeben werden

Danach folgt ein Bezeichner, der Prozedurname oder der Name des neuen Befehls

Auf den Prozedurnamen folgt ein Klammerpaar, das den Prozedurkopf beendet

Der Prozedurrumpf beginnt mit einer öffnenden geschweiften Klammer, gefolgt von einer Folge von Anweisungen

Der Prozedurrumpf und damit die Prozedurdefinition endet mit einer schließenden geschweiften Klammer

Auch das oben vorgestellte Hauptkonstrukt ist im Prinzip ein Verfahren

Es wird automatisch vom Laufzeitsystem aufgerufen, wenn ein Programm gestartet wird

Eine neue Prozedur kann vor oder nach der Definition der Hauptprozedur definiert werden

Eine Prozedurdefinition leitet einen neuen Befehl ein

Ein Aufruf des neuen Befehls wird als Prozeduraufruf bezeichnet

See also  DIGITAL MARKETING BY SANDEEP MAHESHWARI digital marketing by sandeep maheshwari

Ein Prozeduraufruf entspricht syntaktisch dem Aufruf eines der vier Grundkommandos des Hamsters

Es beginnt mit dem Prozedurnamen

Danach folgen eine öffnende und eine schließende Klammer sowie ein Semikolon

Wenn irgendwo in einem Programm eine Prozedur aufgerufen wird, werden die Anweisungen des Prozedurkörpers an dieser Stelle ausgeführt, wenn das Programm ausgeführt wird

Beim Aufruf der Prozedur verzweigt der Kontrollfluss des Programms in den Rumpf der Prozedur, führt dort die Anweisungen aus und kehrt nach Abarbeitung der letzten Anweisung im Rumpf an die Stelle des Prozeduraufrufs zurück

Eine Prozedur kann durch den Aufruf der return-Anweisung (return;) vorzeitig verlassen werden

Im folgenden Hamsterprogramm wird eine Prozedur rightTo definiert und aufgerufen, die bewirkt, dass der Hamster dreimal nach links abbiegt, was einer Rechtsdrehung von 90 Grad entspricht

Der Hamster frisst zwei Körner in dem in Abbildung 4.3 skizzierten Revier:

void rightToggle() { // Prozedurdefinition

leftTog();

leftTog();

leftTog();

}

void main() { // main – Prozedur

// erste Körner essen

rechtsToggle(); // Prozeduraufruf

vor();

vor();

nehmen();

// Zweitkorn essen

rechtsToggle(); // Prozeduraufruf

vor();

vor();

nehmen();

}

Abb

4.3: Hamsterrevier für das Beispielprogramm

Auswahlanweisungen werden verwendet, um zuzulassen, dass bestimmte Anweisungen nur unter bestimmten Bedingungen ausgeführt werden

Um Laufzeitfehler zu vermeiden, die beispielsweise entstehen können, wenn Sie dem Hamster das Kommando geben, obwohl er vor einer Wand steht, gibt es drei sogenannte Testkommandos

Testbefehle geben boolesche Werte zurück, also true (true) oder false (false):

frontFree() : Gibt den Wert true zurück, wenn auf der Kachel vor dem Hamster keine Wand ist

Wenn die Kachel von einer Wand blockiert wird, dann wird der Wert false zurückgegeben.

: Gibt den Wert zurück, wenn keine Wand auf der Kachel in Sichtlinie vor dem Hamster ist

Wenn die Kachel von einer Wand blockiert wird, wird der Wert zurückgegeben

maulEmpty() : Gibt den Wert false zurück, wenn der Hamster ein oder mehrere Körner im Maul hat

Befinden sich keine Körner im Maul des Hamsters, wird der Wert true zurückgegeben

: Gibt den Wert zurück, wenn der Hamster ein oder mehrere Körner im Maul hat

Befinden sich keine Körner im Maul des Hamsters, wird der Wert zurückgegeben

kornDa() : Gibt den Wert true zurück, wenn auf der Kachel, auf der der Hamster gerade steht, ein oder mehrere Körner liegen

Befindet sich kein Korn auf der Kachel, wird der Wert false zurückgegeben.

Die drei Testbefehle repräsentieren einfache boolesche Ausdrücke

Ausdrücke sind Verarbeitungsanweisungen, die einen Wert berechnen und zurückgeben

Boolesche Ausdrücke geben einen booleschen Wert zurück

Kombinierte boolesche Ausdrücke können gebildet werden, indem boolesche Ausdrücke mit booleschen Operatoren verknüpft werden

Die Programmiersprache Java bietet drei boolesche Operatoren:

Der unäre Operator ! (Negation) negiert den Wahrheitswert seines Operanden, d.h

es dreht ihn um

Wenn ein boolescher Ausdruck bA true zurückgibt, dann gibt der boolesche Ausdruck !bA false zurück

Umgekehrt, wenn bA false zurückliefert, dann liefert !bA true.

(Negation) negiert den Wahrheitswert seines Operanden, d.h

es kehrt ihn um

Wenn ein boolescher Ausdruck den Wert zurückgibt, dann gibt der boolesche Ausdruck den Wert zurück

Wenn umgekehrt false zurückgegeben wird, wird

Der binäre Operator && (Konjunktion) konjugiert die Wahrheitswerte seiner beiden Operanden, d

h

er gibt genau dann den Wahrheitswert wahr zurück, wenn beide Operanden den Wert wahr zurückgeben

(Konjunktion) konjugiert die Wahrheitswerte seiner beiden Operanden , dh er gibt genau dann den Wahrheitswert zurück, wenn beide Operanden den Wert liefern

Der binäre Operator || (Disjunktion) disjunkt die Wahrheitswerte ihrer beiden Operanden, d.h

sie liefert genau dann den Wahrheitswert wahr, wenn einer ihrer Operanden oder beide ihrer Operanden den Wert wahr liefern

Der Betreiber! hat einen höheren Vorrang als der &&-Operator, der wiederum einen höheren Vorrang als || hat Betreiber besitzt

Sie können die Abarbeitungsreihenfolge der Operatoren beeinflussen, indem Sie boolesche Ausdrücke in runde Klammern setzen

Mit Hilfe der Blockanweisung können mehrere Anweisungen zu einer Einheit zusammengefasst werden

Syntaktisch ist eine Blockanweisung eine zusammengesetzte Anweisung

Innerhalb der geschweiften Klammern befindet sich eine weitere Anweisung – im Allgemeinen eine Folge von Anweisungen

Wenn eine Blockanweisung ausgeführt wird, werden die Anweisungen innerhalb der geschweiften Klammern ausgeführt

Die Bedingungsanweisung, auch if-Anweisung genannt, ist eine zusammengesetzte Anweisung

Die bedingte Anweisung beginnt mit dem Schlüsselwort if

Darauf folgt ein boolescher Ausdruck und dann eine Anweisung in runden Klammern

Diese Aussage, die im Folgenden wahre Aussage genannt wird, ist im Allgemeinen eine Blockanweisung

Wenn eine bedingte Anweisung ausgeführt wird, wird zuerst der boolesche Ausdruck innerhalb der runden Klammern ausgewertet

Wenn dieser Ausdruck den Wert true zurückgibt, also die Bedingung erfüllt ist, wird die true-Anweisung (daher der Name) ausgeführt

Wenn der boolesche Ausdruck den Wert false zurückgibt, wird die true-Anweisung nicht ausgeführt

Die alternative Anweisung ist eine bedingte Anweisung mit einem angehängten sogenannten else-Teil

Diese besteht aus dem Schlüsselwort else und einer Anweisung (falsche Anweisung) – in der Regel eine Blockanweisung

Wie die Bedingungsanweisung ist auch die Alternativanweisung eine Auswahlanweisung

Wird eine alternative Anweisung ausgeführt, wird zunächst der Wert der Bedingung (boolescher Ausdruck) ermittelt

Wenn die Bedingung erfüllt ist, d.h

der boolesche Ausdruck den Wert true zurückliefert, dann wird die true-Anweisung ausgeführt, die false-Anweisung jedoch nicht

Wenn der boolesche Ausdruck den Wert false zurückgibt, wird die false-Anweisung ausgeführt, aber nicht die true-Anweisung

Im folgenden Beispielprogramm führt der Hamster die Blockanweisung mit den Befehlen forward und leftUm nur aus, wenn keine Wand davor ist

Dann prüft er, ob auf dem aktuellen Plättchen ein Samen liegt und ob das Plättchen vor ihm frei ist

Dann, und nur dann, nimmt er das Getreide und springt ein Plättchen weiter

Andernfalls dreht es sich um 90 Grad nach links

void main() {

if (frontFree()) { // bedingte Anweisung

vor();

leftTog();

}

if (kornDa() && vornFrei()) { // alternative Anweisung

nehmen();

vor();

} anders {

leftTog();

}

}

Iterationsanweisungen – auch Schleifenanweisungen genannt – werden verwendet, um bestimmte Anweisungen mehrmals auszuführen, solange eine bestimmte Bedingung erfüllt ist

Die while-Anweisung ist eine zusammengesetzte Anweisung

Hinter dem Schlüsselwort while steht in runden Klammern ein boolscher Ausdruck, die sogenannte Schleifenbedingung

Darauf folgt die Anweisung, die möglicherweise mehrmals ausgeführt werden muss

Sie wird auch als Iterationsanweisung bezeichnet

Dies ist im Allgemeinen eine Blockanweisung

Bei der Ausführung einer while-Anweisung wird zunächst geprüft, ob die Schleifenbedingung erfüllt ist, also ob der boolesche Ausdruck den Wert wahr zurückgibt

Wenn nicht, endet die while-Anweisung sofort

Wenn die Bedingung erfüllt ist, wird die Iterationsanweisung einmal ausgeführt

Anschließend wird die Schleifenbedingung erneut ausgewertet

Wenn es immer noch erfüllt ist, wird die Iterationsanweisung noch einmal ausgeführt

Dieser Vorgang (Prüfung der Schleifenbedingung und, falls erfüllt, Ausführung der Iterationsanweisung) wird solange wiederholt, bis (hoffentlich) irgendwann die Bedingung nicht mehr erfüllt ist

Bei der Ausführung der while-Anweisung kann es vorkommen, dass die Iterationsanweisung kein einmaliges Ausführen enthält; nämlich genau dann, wenn die Schleifenbedingung beim ersten Test nicht direkt erfüllt ist

Für Fälle, in denen die Iterationsanweisung mindestens einmal ausgeführt werden muss, gibt es eine do-Anweisung – auch Do-Schleife genannt

Die Iterationsanweisung folgt auf das Schlüsselwort do, von dem die Anweisung ihren Namen hat

Der Iterationsanweisung muss das Schlüsselwort while folgen

Darauf folgt ein boolscher Ausdruck in runden Klammern – die Schleifenbedingung

Die do-Anweisung wird durch ein Semikolon abgeschlossen

Wenn eine do-Anweisung ausgeführt wird, wird zuerst die Iterationsanweisung ausgeführt

Dann wird die Schleifenbedingung überprüft

Ist sie nicht erfüllt, d.h

der boolesche Ausdruck liefert den Wert false zurück, dann endet die do-Anweisung

Wenn die Bedingung erfüllt ist, wird die Iterationsanweisung ein zweites Mal ausgeführt und anschließend die Schleifenbedingung erneut ausgewertet

Dieser Vorgang wird solange wiederholt, bis irgendwann die Schleifenbedingung nicht mehr erfüllt ist

Der Hamster steht – wie im Beispiel in Abbildung 4.4 gezeigt – vor einem regelrechten Berg unbekannter Höhe

Es sollte nach oben klettern und dort anhalten

Abb

2.4: Hamsterreviere für das Beispielprogramm

void main() {

runToMountain();

ClimbSummit();

}

void runToMountain() {

while (frontFree()) { // while – Schleife

vor();

}

}

Void Climb Summit () {

do { // do – Schleife

ClimbALevel();

} while (!frontFree());

}

Void ClimbALevel() {

leftTog();

vor();

rightToggle();

vor();

}

void rightToggle() {

leftTog();

leftTog();

leftTog();

}

Während Prozeduren verwendet werden, um den Befehlssatz des Hamsters zu erweitern, werden boolsche Funktionen verwendet, um neue Testbefehle einzuführen

Boolesche Rückgabeanweisungen werden in boolschen Funktionen benötigt, um einen boolschen Wert zu liefern

Die Syntax der boolschen Rückgabeanweisung ist sehr einfach: Dem The Auf das Schlüsselwort return folgt ein boolescher Ausdruck und ein abschließendes Semikolon

Boolesche Rückgabeanweisungen sind spezielle Anweisungen, die nur im Funktionsrumpf von booleschen Funktionen verwendet werden dürfen

Die Ausführung einer booleschen Rückgabeanweisung während der Ausführung einer booleschen Funktion führt zur sofortigen Beendigung der Funktionsausführung

Der Wert des booleschen Ausdrucks wird als sogenannter Funktionswert zurückgegeben.

Die Syntax zum Definieren einer booleschen Funktion unterscheidet sich nur geringfügig von der einer Prozedur

Anstelle von Prozedurkopf, -name und -rumpf sprechen wir hier von Funktionskopf, Funktionsname und Funktionsrumpf

Anstelle des Schlüsselwortes void bei der Definition einer Prozedur muss bei der Definition einer booleschen Funktion das Schlüsselwort boolean am Anfang des Funktionskopfes stehen

Bei der Definition boolescher Funktionen ist jedoch folgende zusätzliche Bedingung sehr wichtig: In jedem möglichen Pfad durch die Funktion muss eine boolesche return-Anweisung vorkommen!

Boolesche Funktionen können überall in einem Hamsterprogramm definiert werden, wo auch Prozeduren definiert werden können

Eine boolesche Funktion kann überall dort aufgerufen werden, wo auch einer der drei vordefinierten Testbefehle aufgerufen werden kann

Daher wird der Aufruf einer booleschen Funktion als spezieller boolescher Ausdruck betrachtet

Die Funktion wird syntaktisch aufgerufen, indem der Funktionsname gefolgt von einem Paar runder Klammern angegeben wird

Wird bei der Berechnung eines booleschen Ausdrucks eine boolesche Funktion aufgerufen, wird in den Funktionsrumpf verzweigt und die dortigen Anweisungen aufgerufen

Wenn eine boolesche return-Anweisung ausgeführt wird, wird der Funktionskörper sofort verlassen und es wird zurückgesprungen, wo die Funktion aufgerufen wurde

Der von der booleschen Rückgabeanweisung gelieferte Wert (d

h

der Funktionswert) wird verwendet, um den booleschen Ausdruck zu berechnen

Im folgenden Programm sucht sich der Hamster auf der rechten Seite eine Nische

Wenn er einen findet, geht er hinein

Bei der Suche verwendet es eine boolesche Funktion rightFree.

void returns() {

leftTog();

leftTog();

}

void rightToggle() {

kehrt zurück();

leftTog();

}

boolean rightFree() { // Definition einer booleschen Funktion

rightToggle();

if (frontFree()) {

leftTog();

gib true zurück; // boolesche Rückgabeanweisung

} anders {

leftTog();

falsch zurückgeben; // boolesche Rückgabeanweisung

}

}

void main() {

while (frontFree() &&

!rightFree()) { // eine boolesche Funktion aufrufen

vor ();

}

if (rightFree()) { // eine boolesche Funktion aufrufen

rightToggle();

vor();

}

}

Durch die Einführung von Variablen und Ausdrücken bekommt der Hamster ein “Gedächtnis” und lernt rechnen

Ein Datentyp repräsentiert Werte eines bestimmten Typs

Im Hamstermodell werden die Datentypen boolean und int verwendet

Der boolesche Datentyp stellt boolesche Werte dar, d

h

wahr und falsch

Der Datentyp int stellt ganze Zahlen zwischen −231 und 231 − 1 dar

Variablen sind Speicherbereiche („Container“), in denen Werte abgelegt werden können

Bevor sie verwendet werden können, müssen sie definiert werden

Wenn eine Variable definiert wird, erhält sie einen Namen – einen beliebigen Bezeichner

Außerdem legt die Angabe eines Datentyps fest, welche Werte die Variable speichern kann

Die folgenden Anweisungen definieren eine Variable frei zum Speichern von Booleschen Werten und eine Variable numberGrains zum Speichern von ganzen Zahlen

Der Variable free wird der Initialwert false zugewiesen, der Variablen number of grains der Wert 13

boolean free = false;

int Anzahl Körner = 13;

Ausdrücke sind spezielle Programmierkonstrukte zum Berechnen und Zurückgeben eines Werts

Sie haben bereits boolesche Ausdrücke gesehen

Sie geben boolesche Werte zurück

Boolesche Variablen können auch zur Berechnung von Booleschen Ausdrücken verwendet werden

Enthält ein boolescher Ausdruck den Namen einer booleschen Variablen, wird der aktuell in der Variablen gespeicherte Wert bei der Auswertung des booleschen Ausdrucks an der entsprechenden Stelle berücksichtigt

Arithmetische Ausdrücke stellen eine andere Art von Ausdrücken dar

Sie berechnen und liefern Werte vom Typ int, also ganze Zahlen

Arithmetische Ausdrücke können auf folgende Weise gebildet werden:

int-Literale: int-Literale werden durch Zeichenfolgen beschrieben, die aus Dezimalziffern (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) bestehen

Es gilt die Einschränkung, dass einer Zahl ungleich 0 keine „0“ vorangestellt werden darf

Gültige int-Literale sind: 0, 2, 4711, 1234560789,. ..

int-Variablenname: Der Name einer int-Variablen in einem arithmetischen Ausdruck repräsentiert den aktuell in der Variablen gespeicherten Wert

Unäre arithmetische Operatoren: Die Zeichen „+“ und „-“ kennzeichnen Vorzeichen von arithmetischen Ausdrücken

Die unären Rechenoperatoren sind rechtsassoziativ und haben die höchste Priorität aller Rechenoperatoren

Binäre Rechenoperatoren: Es gibt insgesamt fünf binäre Rechenoperatoren, mit denen jeweils zwei weitere Rechenausdrücke (die Operanden) verknüpft sind:

„+“: liefert die Summe seiner beiden Operanden (Addition) als Wert

“-“: Gibt die Differenz zwischen seinen beiden Operanden (Subtraktion) als Wert zurück

„*“: gibt das Produkt seiner beiden Operanden (Produkt) als Wert zurück

“/”: Gibt den Quotienten seiner beiden Operanden als Wert zurück; die resultierenden Nachkommastellen werden ignoriert (ganzzahlige Division); z.B

7/3 = 2

“%”: gibt den Rest einer ganzzahligen Division zurück (Modulo-Operator); zB 7%3 = 1

Die Beziehung zwischen ganzzahliger Division und Rest ist wie folgt: Wenn x und y arithmetische Ausdrücke sind, dann ist ((x/y) * y) + (x%y) = x.

Die binären arithmetischen Operatoren sind linksassoziativ

Die Operatoren „*“, „/“ und „%“ haben eine höhere Priorität als die Operatoren „+“ und „-“ („Punkt-vor-Strich-Berechnung“)

Klammern: Zur Bildung von (komplexen) arithmetischen Ausdrücken können arithmetische Ausdrücke in paarweise runde Klammern eingeschlossen werden

Damit können Sie die Priorität von arithmetischen Operatoren beeinflussen

Mit Hilfe einer Zuweisungsanweisung – auch kurz Zuweisung genannt – können Variablen neue Werte zugewiesen werden

Die alten Werte gehen dann verloren

Syntaktisch wird die Zuweisung so gebildet, dass auf den Namen der betroffenen Variablen das Zeichen = – der Zuweisungsoperator – und dann ein Ausdruck folgt

Bei booleschen Variablen muss dies ein boolescher Ausdruck sein, bei int-Variablen ein arithmetischer Ausdruck

Bei einer Zuweisung wird zunächst der Ausdruck ausgewertet und dann der errechnete Wert der Variablen auf der linken Seite des Zuweisungsoperators zugewiesen

Die Zuweisungsanweisung Zahl = Zahl + 1; Erhöht beispielsweise den Wert einer int-Variablenzahl um den Wert 1

Vergleichsausdrücke sind boolesche Ausdrücke, die zum Vergleichen von arithmetischen Ausdrücken verwendet werden

Sie liefern boolesche Werte nach folgenden Gesetzmäßigkeiten: Wenn x und y zwei arithmetische Ausdrücke sind, dann:

x == y gibt true zurück, wenn und nur wenn der von x zurückgegebene Wert gleich dem von y zurückgegebenen Wert ist (Gleichheitsoperator).

x! = y gibt true zurück, wenn und nur wenn der von x zurückgegebene Wert ungleich dem von y zurückgegebenen Wert ist (Ungleichheitsoperator)

x < y gibt true zurück, wenn und nur wenn der von x zurückgegebene Wert kleiner als der von y zurückgegebene Wert ist (Kleiner-als-Operator)

x <= y gibt true zurück, wenn und nur wenn der von x zurückgegebene Wert kleiner oder gleich ist der von y zurückgegebene Wert (Kleiner-als-Operator)

x > y gibt „true“ zurück, wenn und nur wenn der von x zurückgegebene Wert größer ist als der von y (größer-als-Operator) zurückgegebene Wert

x >= y gibt true zurück, wenn und nur wenn der von x zurückgegebene Wert größer oder gleich dem Wert ist, den y zurückgibt (Größer-gleich-Operator)

Die Vergleichsoperatoren sind linksassoziativ

Die Operatoren <, <=, > und >= haben Vorrang vor den Operatoren == und ! =

Außerdem ist zu beachten, dass die Vergleichsoperatoren eine niedrigere Priorität als die arithmetischen Operatoren und eine höhere Priorität als der Zuweisungsoperator haben.

Variablen können innerhalb von Prozeduren und Funktionen definiert werden

In diesem Fall werden sie als lokale Variablen bezeichnet

Variablen, die außerhalb von Prozeduren oder Funktionen definiert sind, werden als globale Variablen bezeichnet

Der Gültigkeitsbereich einer Variablen ist der Teil eines Programms, in dem eine Variable verwendet werden kann, d

h

in dem der Name einer Variablen verwendet werden darf

Der Gültigkeitsbereich einer lokalen Variablen erstreckt sich von der Anweisung nach der Variablendefinition bis zum Ende desselben Blocks und umfasst alle internen Blöcke

Der Gültigkeitsbereich einer globalen Variablen ist das gesamte Hamster-Programm

Innerhalb des Gültigkeitsbereichs einer Variablen darf keine andere Variable mit demselben Namen definiert werden

Während der Geltungsbereich einer booleschen Variablen zur Kompilierzeit wichtig ist, ist die Lebensdauer einer booleschen Variablen eine Größe, die zur Laufzeit relevant ist

Sie ist definiert als die Zeitspanne, die Speicher für eine Variable im Hauptspeicher reserviert ist

Dabei gilt: Die Lebensdauer einer globalen Variablen umfasst die gesamte Ausführungszeit eines Hamsterprogramms

Die Lebensdauer einer lokalen Variablen beginnt mit ihrer Definition und endet, nachdem der Block, in dem sie definiert wurde, vollständig abgearbeitet wurde

Im folgenden Programm läuft der Hamster zur nächsten Wand

Dann dreht er sich um und läuft zurück zum Startfeld

Er notiert die Anzahl der Schritte, die er gegangen ist, in einer globalen Variablen number.

int number = 0; // Globale Variable

void walkToWall() {

während (frontFree()) {

vor();

Zahl = Zahl + 1; // Abtretung

}

}

void returnToStartingPoint() {

while (count > 0) { // Vergleichsausdruck

vor ();

Zahl = Zahl – 1;

}

}

void main() {

walkToWall();

leftTog();

leftTog();

runBackToStartingPoint();

}

Boolesche Funktionen geben einen booleschen Wert zurück

Dementsprechend sind int-Funktionen Funktionen, die einen Wert vom Typ int zurückgeben, also eine ganze Zahl

Die Definition einer int-Funktion unterscheidet sich von der Definition einer booleschen Funktion nur dadurch, dass im Funktionskopf das Schlüsselwort boolean durch das Schlüsselwort int ersetzt wurde und die obligatorischen Return-Anweisungen im Funktionsrumpf einen Wert vom Typ int statt a liefern müssen Boolescher Wert

Der Aufruf von int-Funktionen entspricht einem speziellen arithmetischen Ausdruck

Int-Funktionen können daher überall dort aufgerufen werden, wo arithmetische Ausdrücke verwendet werden können

Wie der Aufruf einer booleschen Funktion wird eine int-Funktion syntaktisch aufgerufen, indem der Funktionsname gefolgt von einem Klammerpaar angegeben wird

Beim Aufruf einer int-Funktion wird in den Funktionskörper verzweigt und die dortigen Anweisungen ausgeführt

Als Wert wird in diesem Fall der Wert des arithmetischen Ausdrucks genommen, den die Funktion berechnet und mit Hilfe einer return-Anweisung zurückgegeben hat

Neben den Datentypen boolean und int gibt es in Java und anderen Programmiersprachen weitere Datentypen, auf deren Einführung im Hamstermodell zunächst verzichtet wird, für die der funktionale Begriff entsprechend gilt

Grundsätzlich können Funktionen wie Prozeduren auch in Form von Statements aufgerufen werden

Der zurückgegebene Funktionswert wird dann einfach ignoriert

Ab sofort werden Prozeduren als Sonderform von Funktionen behandelt

Sie geben keinen Wert zurück, was durch das Schlüsselwort void in ihrer Definition angezeigt wird

Funktionen sind während eines Programms gültig

Insbesondere können Funktionen auch aufgerufen werden, bevor sie definiert sind

Wenn sich nach Ausführung einer Funktion der Programmzustand geändert hat (z

B

die Position oder Blickrichtung des Hamsters), spricht man von einem Nebeneffekt, den die Funktion hervorgebracht hat.

Der Hamster bekommt die Aufgabe, so viele Körner abzulegen, wie es auf seinen vier Nachbarfeldern gibt (natürlich nur, wenn er genug Körner im Maul hat)

Er verwendet eine Funktion koernerVorne, die die Anzahl der Körner auf dem Feld vor dem Hamster ohne Seiteneffekte zurückgibt

// gibt die Anzahl der Körner auf dem Feld vor dem zurück

// Hamster befindet sich; erzeugt keine Nebenwirkungen

int koernerVorne() { // Definition einer int-Funktion

if (!frontFree()) {

Rückgabe 0;

}

vor();

int-Zähler = 0; // lokale Variable

während (kornDa()) {

nehmen();

Zahl = Zahl + 1;

}

// Um ​​Nebenwirkungen zu vermeiden, müssen die Körner jetzt

// wieder hingelegt werden und der Hamster muss aufstehen

// seine alte Kachel zurückgeben

int zurück = Zahl ;

während (zurück > 0) {

geben Sie();

zurück = zurück – 1;

}

kehrt zurück();

vor();

kehrt zurück();

// Jetzt kann die Anzahl der Körner zurückgegeben werden

Rückgabenummer;

}

void gibt zurück () {

leftTog();

leftTog();

}

void main() {

// Erhalte die Anzahl der Körner davor

int benachbarte Körner = Körner davor (); // Aufruf einer int-Funktion

int Umdrehungen = 0;

// rotiert in die anderen Richtungen und fügt die hinzu

// entsprechende Anzahl Körner

während (dreht sich < 3) {

leftTom();

benachbarte Körner = benachbarte Körner +

KörnerBefore (); // Aufruf einer int-Funktion

Umdrehungen = Umdrehungen + 1;

}

// legt so viele Körner ab, wie er noch hat

// was in seinem Mund hat

while (neighborKoerner > 0 && !maulEmpty()) {

geben Sie();

benachbarte Körner = benachbarte Körner – 1;

}

}

Das Parameterkonzept erhöht die Flexibilität von Abläufen und Funktionen

Parameter sind lokale Variablen von Funktionen, die initialisiert werden, indem beim Aufruf der Funktion ein entsprechender Initialisierungswert für die Variable an die Funktion übergeben wird

Parameter werden im Funktionskopf definiert

Zwischen den beiden runden Klammern wird eine sogenannte formale Parameterliste eingefügt

Die Parameterliste besteht aus null, einer oder mehreren durch Kommas getrennten Parameterdefinitionen

Eine Parameterdefinition hat eine ähnliche Form wie die Variablendefinition

Was fehlt, ist ein expliziter Initialisierungsausdruck

Tatsächlich ist ein Parameter auch eine gewöhnliche Variable

Es ist lokal für den Funktionskörper

Ihm können im Funktionskörper entsprechend seines Typs Werte zugewiesen werden und er kann bei der Bildung von typkonformen Ausdrücken innerhalb des Funktionskörpers verwendet werden

Die Parameter innerhalb der Funktionsdefinition werden auch Formalparameter oder Parametervariablen genannt

Der Funktionsaufruf wird um die Angabe einer aktuellen Parameterliste zwischen den runden Klammern erweitert

Die durch Kommas getrennten Elemente in dieser Liste werden als aktuelle Parameter bezeichnet

Das sind Ausdrücke

Hinsichtlich der Definition von Funktionen mit (formalen) Parametern und dem Aufruf von Funktionen mit (aktuellen) Parametern sind folgende zusätzliche Bedingungen zu beachten:

Die Anzahl der Aktualparameter beim Aufruf einer Funktion muss gleich der Anzahl der Formalparameter in der Funktionsdefinition sein

(Ausnahme: sogenannte Varargs-Parameter)

Für alle Parameter in der angegebenen Reihenfolge muss gelten: Der Typ eines Aktualparameters muss dem Typ des entsprechenden Formalparameters entsprechen (boolesche Ausdrücke entsprechen dem Typ boolean , arithmetische Ausdrücke entsprechen dem Typ int ).

See also  Top δημιουργια email στο κινητο Update

Wird eine Funktion mit Parametern aufgerufen, passiert folgendes: Die aktuellen Parameter – das sind Ausdrücke – werden berechnet, bei mehreren Parametern immer von links nach rechts

Für jeden formalen Parameter in der formalen Parameterliste wird im Funktionsrumpf eine lokale Variable angelegt

Diese Variablen werden dann unter Berücksichtigung der Reihenfolge innerhalb der Parameterlisten mit dem Wert des entsprechenden aktuellen Parameters initialisiert

Man spricht in diesem Zusammenhang auch von Parameterübergabe: Beim Aufruf einer Funktion wird der Wert eines aktuellen Parameters als Initialisierungswert an einen Formalparameter der Funktion übergeben

Eigentlich müssen Funktionsnamen in einem Programm eindeutig sein

Zwei oder mehr Funktionen können jedoch den gleichen Namen haben, wenn sich ihre formalen Parameterlisten in der Anzahl der Parameter oder den Typen der Parameter unterscheiden

Dieses Prinzip wird auch als Überladen von Funktionen bezeichnet

Die tatsächlich aufgerufene Funktion wird dann beim Aufruf der Funktion anhand der Nummer bzw

Typen der aktuellen Parameterliste ermittelt

Im folgenden Beispielprogramm wird eine Funktion mit einer formalen Parameternummer vom Typ int definiert

Die Funktion überlädt die Funktion, die den Hamster-Befehl zuvor darstellt

Der Zahlenwert gibt an, wie viele Kacheln der Hamster vorwärts springen soll

Der Wert muss erst zur Laufzeit beim Aufruf der Funktion angegeben werden

In der Hauptfunktion wird die Funktion einmal mit dem Wert 4 aufgerufen, d.h

der Hamster soll vier Kacheln vorwärts springen

Beim zweiten Aufruf wird als Wert die Anzahl der Körner im Hamstermaul übergeben

Entsprechend oft springt der Hamster nach vorne.

// der Hamster springt einige Male nach vorne, aber höchstens bis zur Wand

void before(int number) { // formaler Parameter

while (frontFree() && count > 0) {

vor();

Zahl = Zahl – 1;

}

}

// gibt die Anzahl der Körner im Mund des Hamsters ohne Nebenwirkungen zurück

int koernerImMaul() {

int Zahl = 0;

while (!maulEmpty()) {

geben Sie();

Zahl = Zahl + 1;

}

int Ergebnis = Zahl;

// Iss wieder Körner

während (Zählung > 0) {

nehmen();

Zahl = Zahl – 1;

}

Ergebnis zurückgeben ;

}

void main() {

vor(4); // aktueller Parameter

leftTog();

vorher(koernerImMaul()); // aktueller Parameter

}

Funktionen, die sich selbst aufrufen, heißen rekursive Funktionen

Die rekursive Funktion thereAndBack im folgenden Programm bewirkt, dass der Hamster zur nächsten Wand rennt und dann zurück zum Ausgangspunkt

void thereAndBack() {

if (frontFree()) {

vor();

Hin-und Rückfahrt(); // rekursiver Funktionsaufruf

vor();

} anders {

kehrt zurück();

}

}

void gibt zurück () {

leftTog();

leftTog();

}

void main() {

// Der Hamster rennt zur nächsten Wand und zurück

Hin-und Rückfahrt();

}

Nachdem Sie den Hamstersimulator gestartet haben, öffnet sich ein Fenster, das in etwa dem in Abbildung 5.1 gezeigten Fenster entspricht

Es enthält oben eine Menüleiste mit 5 Menüs, darunter eine Symbolleiste mit einer Reihe von Schaltflächen und unten einen Meldungsbereich, in dem Meldungen ausgegeben werden

Links befindet sich der Editorbereich, rechts der Simulationsbereich

Geben Sie Hamsterprogramme im Editorbereich ein und führen Sie Hamsterprogramme im Simulationsbereich aus

Abb

5.1: Hamstersimulator nach dem Öffnen

Um den Hamster etwas besser kennenzulernen, empfehle ich Ihnen, die Hamsterbefehle zuerst auszuprobieren

Abschnitt 5.1 erklärt, wie das geht

Die folgenden Abschnitte beschreiben dann ausführlich, was Sie tun müssen, um Ihr erstes Hamsterprogramm zu schreiben und auszuführen

Insgesamt fünf Stationen müssen/können durchlaufen werden: Anlegen eines Hamsterreviers

Eintritt in ein Hamsterprogramm

Erstellen eines Hamsterprogramms

Hamsterprogramm betreiben

Debuggen eines Hamsterprogramms

Klicken Sie im Menü “Fenster” auf den Menüpunkt “Befehlsfenster”

Ein Fenster mit dem Titel “Befehlsfenster” wird geöffnet

Alle dem Hamster bekannten Befehle erscheinen in diesem Fenster

Abb

5.2: Kommandofenster

Sie können die jeweiligen Befehle ausführen, indem Sie den Mauszeiger auf die entsprechende Schaltfläche bewegen und darauf klicken

Klickt man beispielsweise auf den „void forward()“-Button, springt der Hamster in seiner aktuellen Blickrichtung eine Kachel vorwärts (oder es erscheint eine Fehlermeldung, wenn der Hamster vor einer Wand steht)

Wenn Sie Programme mit Prozeduren oder Funktionen erfolgreich geschrieben und kompiliert haben, werden die Prozeduren und Funktionen auch im Befehlsfenster angezeigt und können interaktiv ausgeführt werden

Im Simulationsbereich werden keine Zwischenzustände ausgegeben, sondern immer der jeweilige Endzustand nach Abarbeitung der Funktion

Nun wollen wir ein Hamsterrevier einrichten, in dem unser erstes Programm laufen soll

Dies geschieht im Simulationsbereich

Hier wird das Hamsterrevier gezeigt

Um das Gebiet zu gestalten, müssen Sie die Schaltflächen 12 – 17 (von links) in der sogenannten Symbolleiste verwenden

Diese werden auch als Design-Buttons bezeichnet

Bewegen Sie einfach die Maus über die einzelnen Schaltflächen der Symbolleiste und es erscheint ein Tooltip, der beschreibt, wofür diese Schaltfläche verwendet wird

Zuerst werden wir die Größe des Territoriums anpassen

Klicken Sie dazu auf die Schaltfläche „Gebietsgröße ändern“ (12

Schaltfläche von links)

Es erscheint ein Dialogfenster, in dem Sie die gewünschte Anzahl an Zeilen 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 über die Tastatur eingeben

Nach Eingabe der Werte klicken Sie bitte auf die Schaltfläche OK

Das Dialogfeld wird geschlossen und das Gebiet wird in der angegebenen Größe angezeigt

Jetzt werden wir den Hamster umsiedeln, der immer im Revier sitzt

Dazu klicken wir auf den Hamster und ziehen (auch „ziehen“ genannt) ihn mit gedrückter Maustaste auf die gewünschte Kachel

Dann lassen wir die Maustaste los

Standardmäßig schaut der Hamster nach Osten

Sie können jedoch mit der Schaltfläche “nach links drehen” (13

Schaltfläche von links) die Blickrichtung ändern

Jedes Mal, wenn Sie auf die Schaltfläche klicken, dreht sie sich um 90 Grad nach links

Normalerweise hat der Hamster 0 Körner im Maul

Dies kann mit Hilfe des Buttons „Körner in den Mund stecken“ (14

Button von links) geändert werden

Wenn Sie auf die Schaltfläche klicken, wird ein Dialogfeld angezeigt

Sie sehen eine Zahl, die die aktuelle Anzahl der Körner im Maul des Hamsters anzeigt

Wenn Sie diese Nummer ändern möchten, geben Sie einfach die gewünschte Nummer über die Tastatur ein und klicken Sie dann auf die Schaltfläche OK im Dialogfeld

Das Dialogfenster schließt sich dann automatisch

Nun wollen wir Körner auf einige Kacheln legen

Dies geschieht über die Schaltfläche „Korn einstellen“ (15

Schaltfläche von links)

Wenn Sie mit der Maus darauf klicken, erscheint am Mauszeiger ein Kornsymbol

Bewegen Sie nun die Maus über das Plättchen, auf das ein Samen gelegt werden soll, und klicken Sie dort mit der Maus

Auf der Kachel erscheint nun ein Getreidesymbol

Befinden sich bereits ein oder mehrere Körner auf dem Plättchen, wird deren Anzahl um eins erhöht

Aber Achtung: Es werden maximal 12 Körner angezeigt, auch wenn mehr als 12 Körner auf dem Plättchen liegen!

Wenn Sie die Umschalttaste auf Ihrer Tastatur gedrückt halten und dann auf die Schaltfläche „Korn platzieren“ in der Symbolleiste klicken, haben Sie die Möglichkeit, mehrere Körner im Gebiet zu platzieren, ohne jedes Mal erneut auf die Schaltfläche klicken zu müssen

Solange Sie die Umschalttaste gedrückt halten und auf eine Kachel klicken, wird dort eine Körnung hinzugefügt.

Wände werden auf körnchenähnlichen Fliesen platziert

Verwenden Sie dazu die Schaltfläche „Wand setzen“ (16

Schaltfläche von links)

Wände können natürlich nicht auf Kacheln gelegt werden, auf denen bereits eine Wand besteht oder auf denen sich der Hamster befindet

Wenn eine Wand auf eine Kachel mit Körnern gelegt wird, werden diese gelöscht

Wenn Sie bestimmte Kacheln im Territorium wieder leeren möchten, damit weder eine Mauer noch Körner darauf platziert werden, aktivieren Sie die Schaltfläche „Kachel löschen“ (17

Schaltfläche von links)

Klicken Sie dann auf die Kacheln, die geleert werden sollen

Der Button bleibt so lange aktiviert, bis er erneut geklickt oder ein anderer Design-Button gedrückt wird.

Genau wie der Hamster können auch Mauern und Körner durch Klicken und Bewegen der Maus bei gedrückter linker Maustaste im Revier neu positioniert werden

Über die „Bühne“ Menü können Sie Territorien auch in einer Datei speichern und später wieder laden

Nun wissen Sie also eigentlich alles, was nötig ist, um das Hamsterrevier nach Ihren Wünschen zu gestalten

Erstellen Sie als Nächstes, bevor Sie weiterlesen, das in Abbildung 5.3 skizzierte Gebiet

Abbildung 5.3: Beispielgebiet

Nachdem wir im Simulationsbereich unser erstes Hamsterrevier gestaltet haben, gehen wir nun in den Editorbereich

Dort werden wir unser erstes Hamsterprogramm schreiben

Unser erstes Programm sollte den Hamster veranlassen, zwei Körner in dem Gebiet zu fressen, das wir gerade entworfen haben

Wir klicken in den Editorbereich und geben wie in einem normalen Editor oder Textverarbeitungsprogramm wie Microsoft Word die entsprechenden Hamster-Befehle ein, so dass letztendlich im Eingabebereich steht:

void main() {

vor();

vor();

nehmen();

rightToggle();

vor();

vor();

nehmen();

}

void rightToggle() {

leftTog();

leftTog();

leftTog();

}

Dies ist unser erstes Hamsterprogramm

Funktionen, die Sie sicher aus anderen Editoren oder Textverarbeitungsprogrammen kennen, wie „Ausschneiden“, „Kopieren“, „Einfügen“, „Rückgängig“ und „Wiederherstellen“, erreichen Sie über das Menü „Programm“ bzw

„Wiederherstellen“

betätigen Sie die entsprechenden Schaltflächen in der Symbolleiste (vierte bis achte Schaltfläche von links)

Außerdem gibt es im Menü „Programm“ zwei Menüpunkte zum Speichern von Programmen in Dateien und zum erneuten Laden gespeicherter Programme

Wenn Sie es aktivieren, erscheint ein Dateiauswahldialog, in dem Sie die entsprechende Auswahl der jeweiligen Datei treffen müssen

Achtung: Wenn Sie eine gespeicherte Datei laden, geht der aktuell im Editorbereich befindliche Programmtext verloren (sofern er nicht zuvor in einer Datei gespeichert wurde)

Im Menü „Programm“ finden Sie außerdem weitere nützliche Funktionen (Schriftgröße ändern, Drucken,. ..)

Nachdem wir unser Hamsterprogramm geschrieben haben, müssen wir es kompilieren

Der Compiler prüft den Quellcode auf syntaktische Korrektheit und wandelt ihn – wenn er korrekt ist – in ein ausführbares Programm um

Zum Kompilieren drücken Sie einfach die Schaltfläche „Compile“ (erste Toolbar-Schaltfläche von links oder Menüpunkt „Compile“ im Menü „Program“)

Anschließend wird das aktuell im Eingabebereich sichtbare Programm kompiliert

Es wird zuvor automatisch in einer (temporären) Datei (namens Solist.java) gespeichert

Wenn das Programm korrekt ist, erscheint ein Dialogfeld mit der Meldung „Kompilierung erfolgreich“

Anschließend müssen Sie mit der OK-Taste bestätigen

Das Programm kann nun ausgeführt werden

Bitte denken Sie daran: Immer wenn Sie Änderungen am Quellcode Ihres Programms vorgenommen haben, müssen Sie es zunächst neu kompilieren.

Wenn das Programm syntaktische Fehler enthält – zum Beispiel, wenn Sie sich bei der Eingabe des obigen Programms vertippt haben – werden die Fehlermeldungen des Compilers unterhalb des Editorbereichs angezeigt

Diese erscheinen auf Englisch

Außerdem wird die Zeile angegeben, in der der Fehler entdeckt wurde

Wenn Sie mit der Maus auf die Fehlermeldung klicken, springt der Mauszeiger automatisch auf die angegebene Zeile im Editorbereich (siehe Abbildung 5.4)

Abbildung 5.4: Fehlermeldungen des Compilers

Achtung: Die Fehlermeldungen und die Zeilenangabe eines Compilers sind nicht immer wirklich exakt

Das Interpretieren der Meldungen ist für Programmieranfänger oft nicht einfach und erfordert etwas Erfahrung

Machen Sie daher am Anfang 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 dann eine Nachricht überhaupt nicht verstehen, können Sie gerne noch einmal kompilieren

Häufig kommt es (leider) vor, dass der Compiler für einen einzelnen Fehler mehrere Fehlermeldungen ausgibt, was Anfänger leicht verwirren kann

Nachdem Sie die Fehler behoben haben, müssen Sie das Programm erneut kompilieren

Wiederholen Sie dies, bis der Compiler „Kompilierung erfolgreich“ meldet

Erst dann können Sie das Programm ausführen!

Nach erfolgreichem Kompilieren ist es nun endlich soweit: Wir können dem Hamster bei der Arbeit zusehen

Tut er wirklich das, was wir ihm durch unser Programm beigebracht haben? Die Schaltflächen rechts in der Symbolleiste dienen zur Steuerung des Programmablaufs

Durch Klick auf den Button „Simulation starten“ (18

Button von links) starten wir das Programm

Wenn Sie bis hierher alles richtig gemacht haben, sollte der Hamster losrennen und zwei Körner sammeln, wie im Programm beschrieben

Herzlichen Glückwunsch zu Ihrem ersten Hamsterprogramm!

Wenn Sie die Programmausführung anhalten möchten, können Sie dies tun, indem Sie auf die Schaltfläche “Simulation anhalten” (20

Schaltfläche von links) klicken

Der Hamster pausiert, bis Sie erneut auf die Schaltfläche „Simulation starten/fortsetzen“ (18

Schaltfläche von links) klicken

Dann geht der Hamster weiter mit seiner Arbeit

Über die Schaltfläche „Simulation beenden“ (21

Schaltfläche von links) können Sie das Programm vorzeitig komplett abbrechen

Wenn Sie ein Programm mehrmals hintereinander im selben Gebiet ausführen möchten, können Sie die Schaltfläche “Zurücksetzen” (19

Schaltfläche von links) verwenden

Schaltfläche von links) den Zustand des Gebiets wiederherstellen, das vor der letzten Ausführung des Programms bestanden hat

Ein komplettes Zurücksetzen des Reviers auf den Zustand beim Öffnen des Hamstersimulators ist mit der Schaltfläche „Komplett zurücksetzen“ (23

Schaltfläche von links) möglich

Mit dem Schieberegler ganz rechts in der Menüleiste wird die Geschwindigkeit der Programmausführung gesteuert

Je weiter Sie den Knopf nach links bewegen, desto langsamer verrichtet der Hamster seine Arbeit

Je weiter Sie ihn nach rechts bewegen, desto schneller saust der Hamster durchs Revier

Die Steuerelemente zur Steuerung der Programmausführung finden Sie auch im Menü „Simulation“

kann: zusätzliche Steuerungsmöglichkeiten haben und kann in bestimmten Situationen den Status des Programms (welche Zeile des Quellcodes gerade ausgeführt wird, welche Werte die Variablen aktuell haben) anzeigen

Dies ist nützlich, wenn Ihr Programm nicht das tut, was es soll, und Sie herausfinden möchten, was falsch ist.

Klicken Sie zum Debuggen zunächst auf die Schaltfläche „Tracing aktivieren“ in der Symbolleiste (24

Schaltfläche von links)

Es öffnet sich das sogenannte Debugger-Fenster mit dem Titel „Debugger“

Der Prozedur-Stack wird im linken Bereich des Debugger-Fensters angezeigt

Dies ist die aktuelle Prozedur und die Prozeduren, aus denen die Prozedur aufgerufen wurde

Im rechten Bereich werden die gültigen Variablen und deren aktuelle Werte angezeigt (sofern vorhanden) (siehe Abb

5.5)

Abb

5.5: Debugger-Fenster

Nun können Sie über den „Step“-Button (19

Toolbar-Button von links) jeden Befehl einzeln ausführen und es erscheint ein blauer Balken im Editorbereich, welcher Befehl oder Zeile als nächstes ausgeführt wird

Beim Aufruf einer Prozedur wird automatisch in die entsprechende Prozedur verzweigt

Im Debugger-Fenster wird auch der Prozedur-Stack angezeigt, also die aktuelle Prozedur und die Prozeduren, aus denen die Prozedur aufgerufen wurde

Sie können das Programm auch einfach starten und überwachen, indem Sie auf die Schaltfläche “Start” klicken

Wenn Sie dann die Schaltfläche „Pause“ drücken, haben Sie auch die Möglichkeit, von der aktuellen Position aus schrittweise fortzufahren

Das Tracing kann übrigens jederzeit durch erneutes Anklicken des Buttons „Tracing“ deaktiviert bzw

wieder aktiviert werden

Wenn Sie möchten, können Sie vor oder während des Programmlaufs einen Haltepunkt in der entsprechenden Zeile setzen, damit der Programmablauf automatisch angehalten wird, wenn eine bestimmte Zeile erreicht wird

Doppelklicken Sie dazu im Editorbereich auf die entsprechende Zeilennummer

Haltepunkte werden durch die violett hervorgehobene Zeilennummer gekennzeichnet

Ein Breakpoint oder alle Breakpoints können durch erneuten Doppelklick oder über ein aktivierbares Popup-Menü oberhalb der Zeilennummern wieder gelöscht werden

Breakpoints werden oft verwendet, um ein Programm bis zu einem bestimmten Punkt normal laufen zu lassen und von dort aus die Möglichkeit der zeilenweisen Ausführung zu nutzen

Herzlichen Glückwunsch! Wenn Sie so weit gekommen sind, haben Sie Ihr erstes Hamsterprogramm erstellt und ausgeführt

Wie Sie sehen, ist die Bedienung des Hamstersimulators gar nicht so kompliziert

Der Hamstersimulator bietet jedoch noch mehr Möglichkeiten

Dies können Sie nun selbst durch einfaches Ausprobieren erkunden oder im nächsten Abschnitt ausführlich nachlesen

Im letzten Abschnitt haben Sie eine kurze Einführung in die Funktionsweise des Hamstersimulators erhalten

In diesem Abschnitt werden die einzelnen Funktionen des Simulators ausführlich vorgestellt

Natürlich wird sich einiges wiederholen

Wenn Sie den Hamster-Simulator starten, öffnet sich ein Fenster mit dem Titel „Hamster-Simulator Light“

Abbildung 6.1 skizziert die einzelnen Komponenten des Fensters

Abb

6.1: Bestandteile des Simulatorfensters

Die Menüleiste am oberen Rand des Fensters enthält 5 Menüs

Darunter befindet sich eine Symbolleiste mit Schaltflächen, mit denen die wichtigsten Menüfunktionen per Klick auf eine Schaltfläche schneller ausgeführt werden können

Wichtige Nachrichten werden unten im Nachrichtenbereich angezeigt

Hamsterprogramme werden im linken Editorbereich eingegeben und die Ausführung von Hamsterprogrammen im Simulationsbereich (auch „Stage“ genannt) visualisiert

Die Hauptfunktionsbereiche des Hamstersimulators lassen sich identifizieren: Verwaltung und Bearbeitung von Hamsterprogrammen

Kompilieren von Hamsterprogrammen

Verwalten und gestalten Sie Hamstergebiete

Interaktive Ausführung von Hamsterbefehlen

Hamsterprogramme laufen

Hamsterprogramme debuggen

Bevor der Simulator anhand dieser Funktionsbereiche im Detail vorgestellt wird, werden zunächst einige Grundfunktionen grafischer Benutzeroberflächen erläutert.

In diesem Unterabschnitt werden einige wichtige Grundfunktionalitäten grafischer Benutzeroberflächen beschrieben

Dieser Abschnitt richtet sich an diejenigen unter Ihnen, die neu im Umgang mit Computern sind

Diejenigen von Ihnen, die schon lange einen Computer haben und ihn regelmäßig benutzen, können diesen Abschnitt getrost überspringen

Wenn wir im Folgenden von „Klicken auf ein Objekt“ oder „Klicken auf ein Objekt mit der Maus“ sprechen, bedeutet dies, dass Sie den Mauszeiger auf dem Bildschirm platzieren, indem Sie die Maus auf dem Tisch über das Objekt bewegen und dann Drücken der – in der Regel linken – Maustaste

Tooltips sind kleine Rechtecke, die automatisch auf dem Bildschirm erscheinen, wenn Sie mit dem Mauszeiger über entsprechende Objekte platziert werden (siehe Abbildung 6.2)

In den Tooltipps werden bestimmte Informationen ausgegeben

Abb

6.2: Tooltip

Schaltflächen sind Objekte der Benutzeroberfläche, auf die Sie klicken können und die dann eine bestimmte Aktion auslösen (siehe Abbildung 6.3)

Schaltflächen haben eine textuelle Beschreibung (z

B

„OK“) oder eine Grafik, die etwas über die Aktion aussagt

Schaltflächen erkennen Sie an ihrer leicht hervorgehobenen Darstellung

Grafischen Schaltflächen sind in der Regel Tooltips zugeordnet, die die zugeordnete Aktion beschreiben

Abb

6.3: Schaltflächen

Menüs befinden sich am oberen Rand eines Fensters in der sogenannten Menüleiste (siehe Abbildung 6.4)

Sie werden durch einen Text (Programm, Bühne, Simulation,. ..) beschrieben

Wenn Sie auf den Text klicken, öffnet sich eine Box mit sogenannten Menüpunkten

Diese wiederum bestehen aus Texten, die Sie anklicken können

Ähnlich wie Schaltflächen löst das Klicken auf Menüpunkte Aktionen aus, die im Allgemeinen durch den Text beschrieben werden (Speichern, Kopieren,. ..)

Nach Klick auf einen Menüpunkt wird die Aktion gestartet und die Box schließt sich automatisch wieder

Wenn Sie im Fenster irgendwo außerhalb der Box klicken, schließt sich die Box ebenfalls und es wird keine Aktion ausgelöst

Abb

6.4: Menüleiste und Menü

Oft steht hinter den Menüpunkten zusätzlicher Text, wie „Strg-O“ oder „Alt-N“

Diese Texte zeigen Tastenkombinationen an

Das Drücken der entsprechenden Tasten auf der Tastatur löst dieselbe Aktion aus wie das Klicken auf den Menüpunkt

Manchmal erscheinen bestimmte Menüpunkte etwas heller

Sie sollen auch ausgegraut sein

In diesem Fall kann der Menüpunkt nicht angeklickt und die zugeordnete Aktion nicht ausgelöst werden

Das Programm befindet sich in einem Zustand, in dem die Aktion keinen Sinn machen würde

Direkt unterhalb der Menüleiste befindet sich die sogenannte Toolbar (siehe Abbildung 6.5)

Es besteht aus einer Reihe grafischer Schaltflächen, die Alternativen zu den am häufigsten verwendeten Menüpunkten in den Menüs darstellen

Abb

6.5: Symbolleiste

Pop-up-Menüs sind spezielle Menüs, die bestimmten Elementen auf dem Bildschirm zugeordnet sind (siehe Abbildung 6.6)

Sie öffnen es, indem Sie den Mauszeiger auf das entsprechende Element bewegen und dann die rechte Maustaste drücken

Wie bei normalen Menüs erscheint dann eine Box mit Menüpunkten

Abb

6.6: Popup-Menü

Eingabefelder dienen zur Eingabe von Zeichen (siehe Abbildung 6.7)

Positionieren Sie dazu den Mauszeiger auf das Eingabefeld und klicken Sie mit der Maus

Anschließend können Sie die im Eingabefeld erscheinenden Zeichen über die Tastatur eingeben.

Beim Auslösen bestimmter Aktionen erscheinen sogenannte Dialogboxen auf dem Bildschirm (siehe Abbildung 6.7)

Sie enthalten in der Regel viele grafische Objekte, wie Textinformationen, Eingabefelder und Schaltflächen

Wenn ein Dialogfeld auf dem Bildschirm erscheint, werden alle anderen Fenster im Programm für Texteingaben oder Mausklicks gesperrt

Um eine Dialogbox zu schließen, d

h

die Dialogbox vom Bildschirm verschwinden zu lassen, gibt es normalerweise eine Reihe von Schaltflächen, die am unteren Rand der Dialogbox angeordnet sind

Das Klicken auf eine “OK-Schaltfläche” löst die dem Dialogfeld zugewiesene Aktion aus

Durch Klicken auf die Schaltfläche “Abbrechen” wird ein Dialogfeld geschlossen, ohne dass Aktionen ausgelöst werden

Abb

6.7: Dialogfenster mit Eingabefeldern

Dateiauswahldialoge sind spezielle Dialoge zum Speichern und Öffnen von Dateien (siehe Abbildung 6.8)

Sie spiegeln im Prinzip das Dateisystem wider und enthalten Funktionalitäten zur Verwaltung von Dateien und Ordnern

Abb

6.8: Dialog zur Dateiauswahl

Alle Dateien und Unterordner des aktuellen Ordners erscheinen im mittleren Bereich eines Dateiauswahldialogs

Sie werden durch verschiedene Symbole dargestellt

Der eigentliche Zweck von Dateiauswahldialogen ist – wie der Name schon sagt – die Auswahl einer Datei

Wenn Sie auf eine Datei klicken, erscheint der Name automatisch im Eingabefeld „Dateiname“

Dort können Sie auch über die Tastatur einen Dateinamen eingeben

Anschließend wird nach Drücken der OK-Taste die entsprechende Datei geöffnet bzw

gespeichert

Dateiauswahldialoge bieten jedoch zusätzliche Funktionalitäten

Durch einen Doppelklick auf einen Ordner können Sie in den entsprechenden Ordner wechseln

Im mittleren Bereich werden dann die Dateien und Unterordner dieses Ordners angezeigt

Um zu einem übergeordneten Ordner zurückzukehren, verwenden Sie das Menü „Suchen in“, in dem Sie den entsprechenden Ordner auswählen können

Neben dem Menü „Suchen in“ sind fünf grafische Schaltflächen angeordnet

Durch Klicken auf die linke Schaltfläche gelangen Sie im Ordnerbaum eine Ebene nach oben

See also  Top after effects erste schritte New

Durch Klicken auf die zweite Schaltfläche von links gelangen Sie zur Wurzel des Ordnerbaums

Mit der mittleren Taste können Sie im aktuellen Ordner einen neuen Unterordner erstellen

Mit den beiden rechten Tasten können Sie die Anzeige im mittleren Bereich verändern

Wenn Sie einen Ordner oder eine Datei umbenennen möchten, müssen Sie im mittleren Bereich des Dateiauswahldialogs zweimal auf den Namen des Ordners oder der Datei klicken – mit einer Pause dazwischen

Die textuelle Darstellung des Namens wird dann zu einem Eingabefeld, in dem der Name über die Tastatur geändert werden kann

Ein Elementbaum stellt Elemente und strukturelle Beziehungen zwischen ihnen dar, z

die Ordner und Dateien des Dateisystems (siehe Abbildung 6.9)

Abb

6.9: Elementbaum mit Verzeichnissen und Dateien

Unterschiedliche Elementtypen werden durch unterschiedliche Symbole dargestellt, hinter denen entsprechende Bezeichnungen erscheinen

Durch Klicken auf die Symbole links können Strukturen geöffnet und geschlossen werden, d

h

Unterstrukturen sichtbar oder unsichtbar machen

Popup-Menüs sind Ordnern und Dateien zugeordnet

Um diese zu öffnen, müssen Sie zunächst mit der Maus auf den Ordner oder die Datei klicken

Der Name wird dann durch einen blauen Balken hervorgehoben

Dann müssen Sie die rechte Maustaste drücken

Dann öffnet sich das Popup-Menü

Die Popup-Menüs enthalten beispielsweise Menüpunkte zum Löschen und Umbenennen des entsprechenden Ordners oder der Datei.

Eine geteilte Scheibe ist ein Element, das aus zwei Scheiben und einem Träger besteht

(siehe Abbildung 6.10)

Die beiden Bereiche können sich links und rechts oder oberhalb und unterhalb der Leiste befinden

Wenn Sie mit der Maus auf den Balken klicken und ihn bei gedrückter Maustaste nach links oder rechts (bzw

oben oder unten) verschieben, vergrößert sich einer der beiden Bereiche, der andere verkleinert sich

Sie können einen der beiden Bereiche auch ganz verschwinden lassen, indem Sie auf einen der beiden Pfeile auf der Leiste klicken

6.10: Geteiltes Fenster

Das Schreiben von Programmen oder genauer gesagt das Schreiben des Quellcodes von Programmen wird als Editieren bezeichnet

Im Hamstersimulator dient der Editorbereich zum Bearbeiten von Hamsterprogrammen (siehe Abbildung 6.11)

Abb

6.11: Editorbereich des Hamstersimulators

Im Editorbereich können Sie Programme eingeben

Das Menü „Programm“ ist wichtig für die Verwaltung und Bearbeitung von Programmen

Unterhalb der Menüleiste ist eine spezielle Symbolleiste zu sehen, mit der Sie die wichtigsten Menüfunktionen schneller erreichen und ausführen können

Bewegen Sie einfach die Maus über die Schaltflächen

Anschließend erscheint ein Tooltip, der die Funktionalität der Schaltfläche zeigt

Die für Bearbeitungsprogramme wichtigen Schaltflächen der Symbolleiste sind in Abbildung 6.12 skizziert

Abbildung 6.12: Editor-Schaltflächen in der Symbolleiste

Das Schreiben eines neuen Hamsterprogramms ist durch Eintippen des Quellcodes im Editorbereich möglich

Wenn Sie Teile des aktuellen Hamsterprogramms ändern möchten, klicken Sie einfach auf die entsprechende Stelle im Editorbereich und fügen Sie die entsprechenden Wörter ein oder löschen Sie diese.

Sie können das aktuelle Hamsterprogramm im Editorbereich vollständig löschen, indem Sie den gesamten Quellcode auswählen mit der Maus und anschließendes Drücken der Schaltfläche „Ausschneiden“ (7

Schaltfläche von links) in der Symbolleiste

Alternativ können Sie auch auf die Schaltfläche „Neu“ in der Symbolleiste (1

Schaltfläche von links) klicken

Achtung: Beim Löschen oder Neuanlegen geht der aktuelle Inhalt des Editorbereichs verloren! Möglicherweise müssen Sie es zuerst in einer Datei speichern

Normalerweise müssen Sie sich keine Gedanken über das Speichern des aktuellen Programms machen

Es wird vor dem Kompilieren automatisch in einer internen Datei gespeichert

Wenn Sie jedoch ein Programm explizit speichern möchten, können Sie in der Symbolleiste auf die Schaltfläche “Speichern” (3

Schaltfläche von links) klicken

Es öffnet sich ein Dateiauswahldialog, mit dem Sie die gewünschte Datei auswählen können

Wenn Sie ein gespeichertes Hamster-Programm wieder in den Editorbereich laden möchten, können Sie dies über den „Laden“-Button in der Symbolleiste (2

Button von links) tun

Nach Anklicken der Schaltfläche erscheint ein Dateiauswahldialog, über den Sie die gewünschte Datei auswählen können

Achtung: Beim Laden einer gespeicherten Datei geht der aktuelle Inhalt des Editorbereichs verloren! Möglicherweise müssen Sie es zuerst in einer Datei speichern

Über die Schaltfläche „Drucken“ (6

Symbolleistenschaltfläche von links) können Sie das aktuelle Programm im Editorbereich ausdrucken

Es öffnet sich ein Dialogfenster, in dem Sie die entsprechenden Druckeinstellungen vornehmen und den Druck starten können

Im Editorbereich können Sie – wie bei anderen Editoren auch – Zeichen über die Tastatur eingeben oder löschen

Darüber hinaus stellt der Editor einige weitere Funktionalitäten zur Verfügung, die über das Menü „Programm“ oder die entsprechenden Editor-Schaltflächen in der Symbolleiste aktiviert werden können

Schaltfläche “Ausschneiden” (7

Symbolleistenschaltfläche von links): Hiermit können Sie komplette Passagen des Editorbereichs in einem Schritt löschen

Markieren Sie die zu löschende Passage mit der Maus und klicken Sie anschließend auf die Schaltfläche

Der markierte Text verschwindet.

Schaltfläche “Kopieren” (8

Symbolleistenschaltfläche von links): Hiermit können Sie komplette Passagen des Editorbereichs in einen temporären Zwischenspeicher kopieren

Markieren Sie die zu kopierende Passage mit der Maus und klicken Sie dann auf die Schaltfläche

Schaltfläche “Einfügen” (9

Symbolleistenschaltfläche von links): Hiermit fügen Sie den Inhalt des Zwischenpuffers an der aktuellen Cursorposition ein

Wählen Sie zunächst die entsprechende Position aus und klicken Sie dann auf die Schaltfläche

Der Text des Zwischenpuffers wird eingefügt

Schaltfläche „Rückgängig“ (10

Symbolleistenschaltfläche von links): Wenn Sie Änderungen am Quellcode – aus welchen Gründen auch immer – rückgängig machen möchten, können Sie dies durch Klicken auf die Schaltfläche tun

Schaltfläche “Wiederherstellen” (11

Symbolleistenschaltfläche von links): Mit dieser Schaltfläche können Sie rückgängig gemachte Änderungen wiederherstellen

Mit der Kopierfunktion des Betriebssystems ist sogar das Kopieren und Einfügen von Text aus anderen Programmen (z

B

Microsoft Word) möglich

Die eben aufgeführten Funktionen finden Sie auch im Menü „Programm“

Dort werden weitere Funktionalitäten angeboten: Einrücken: Ein Klick auf den Menüpunkt aktiviert bzw

deaktiviert den Einrückmodus

Ist der Einrückungsmodus aktiviert, wird beim Eingeben von Text im Editorbereich automatisch in die entsprechende Spalte eingerückt, wenn Sie die Eingabetaste drücken

Schriftgröße: Hier können Sie die Schriftgröße des Editorbereichs anpassen

Beim Kompilieren von Programmen – genauer gesagt der Quellcode – auf ihre (syntaktische) Korrektheit geprüft und bei Erfolg lauffähige Programme erstellt

Die Schaltfläche „Compile“ (4

Schaltfläche in der Symbolleiste von links) oder der Menüpunkt „Compile“ im Menü „Program“ (siehe Abbildung 6.13) dient im Hamster-Simulator zum Kompilieren von Programmen

An der Farbe der Compiler-Buttons erkennen Sie, ob gerade Compiliert werden muss oder nicht

Immer wenn Sie im Editorbereich Änderungen vorgenommen haben, färbt sich der Button rot und die Änderungen werden erst berücksichtigt, nachdem Sie (erneut) kompiliert haben

Erscheint die Schaltfläche in einer neutralen Farbe, ist keine Zusammenstellung notwendig

Wenn Sie auf die Schaltfläche “Compile” klicken, wird das Programm, das gerade im Editorbereich sichtbar ist, in einer internen Datei (mit dem Namen “Solist.java”) gespeichert und kompiliert

Wenn Ihr Programm syntaktisch korrekt ist, erscheint nach einigen Sekunden ein Dialogfenster mit einer entsprechenden Meldung

Ein (neues) ausführbares Programm wurde erstellt

Wenn Ihr Programm Fehler enthält, öffnet sich in einem Scroll-Fenster unterhalb des Editorbereichs ein neuer Bereich, der die Fehlermeldungen des Compilers anzeigt (siehe Abbildung 6.13)

Es wurde kein (neues) ausführbares Programm erstellt! Jede Fehlermeldung erscheint in einer eigenen Zeile

Jede Zeile enthält eine Beschreibung des (wahrscheinlichen) Fehlers und die entsprechende Zeile der Anweisung im Programm

Wenn Sie auf eine Fehlermeldung klicken, wird die entsprechende Anweisung im Eingabebereich blau hinterlegt und der Mauszeiger an der entsprechenden Stelle positioniert

Sie müssen nun jeden Fehler beheben und dann speichern und erneut kompilieren, bis Ihr Programm fehlerfrei ist

Der Fehlermeldungsbereich schließt sich dann automatisch wieder

Abb

6.13: Fehlermeldungen des Compilers

Achtung: Die Interpretation von Fehlermeldungen des Compilers ist nicht trivial

Die Berichte sind nicht immer besonders präzise und oft irreführend

Häufig gibt der Compiler mehrere Fehlermeldungen aus, obwohl es sich nur um einen einzelnen Fehler handelt

Beherzigen Sie daher vor allem zu Beginn folgende Hinweise: Arbeiten Sie die Fehlermeldungen immer von oben nach unten ab

Wenn der Compiler eine große Anzahl von Fehlermeldungen zurückgibt, beheben Sie zuerst nur eine Teilmenge und kompilieren Sie dann erneut

Wenn Sie ein Anfänger sind, machen Sie Fehler in Ihren Programmen und schauen Sie sich dann die Fehlermeldungen des Compilers an

Das Hamstergebiet besteht standardmäßig aus 10 Zeilen und 10 Spalten

Der Hamster steht auf der linken oberen Kachel, also der Kachel mit den Koordinaten (0/0)

Er hat 0 Körner im Mund und schaut nach Osten

In der Symbolleiste dienen die Schaltflächen 12 – 17 von links dazu, das Revier des Hamsters zu gestalten

Hamsterreviere können über das Menü „Stage“ verwaltet werden (siehe auch Abbildung 6.14)

Abbildung 6.14: Gebietsschaltflächen in der Symbolleiste

Normalerweise sollten Sie ein Gebiet anlegen, bevor Sie ein Programm ausführen

Es ist jedoch auch möglich, Änderungen während des Programmablaufs vorzunehmen

Durch Klicken auf die Schaltfläche “Größe ändern” (12

Symbolleistenschaltfläche von links) können Sie die Größe des Gebiets ändern

Es öffnet sich ein Dialogfenster mit zwei Eingabefeldern, in denen Sie die gewünschte Anzahl an Zeilen und Spalten eingeben können

Nach dem Drücken der Schaltfläche OK schließt sich das Dialogfeld und das Gebiet erscheint in der angegebenen Größe

Achtung: Wenn Sie das Territorium verkleinern, werden Mauern und Körner, die dann außerhalb des Territoriums liegen würden, gelöscht

Befindet sich der Hamster beim Herauszoomen auf einer Kachel außerhalb der neuen Reviergröße, wird er auf die Kachel (0/0) verschoben (eine eventuell vorhandene Mauer wird zuerst gelöscht)

Um den Hamster auf einem anderen Feld im Hamstergebiet zu platzieren, klicke es mit der Maus an und ziehe es bei gedrückter Maustaste auf das gewünschte Feld

Um die Blickrichtung des Hamsters zu ändern, klicken Sie bitte auf die Schaltfläche „Hamster drehen“ (13

Symbolleistenschaltfläche von links)

Jedes Mal, wenn Sie auf diese Schaltfläche klicken, dreht sich der Hamster um 90 Grad nach links

Um die Anzahl der Körner im Maul des Hamsters einzustellen, klicken Sie auf die Schaltfläche „Körner im Maul“ (14

Symbolleistenschaltfläche von links)

Es öffnet sich ein Dialogfenster mit einem Eingabefeld

In diesem Eingabefeld erscheint die aktuelle Anzahl der Körner im Hamstermaul

Sie können nun die gewünschte Nummer in das Eingabefeld eingeben

Klicken Sie anschließend auf die Schaltfläche OK, um Ihre Eingabe zu bestätigen

Die Dialogbox schließt sich und der Hamster hat die eingegebene Anzahl Körner im Maul

Um ein Getreide auf eine Kachel des Hamsterreviers zu legen, klicken Sie auf die Schaltfläche „Getreide platzieren“ in der Symbolleiste (15

Symbolleistenschaltfläche von links )

Klicken Sie dann auf die entsprechende Kachel

Das Getreide wird dort platziert (es sei denn, es gibt dort eine Wand)

Achtung: Auch wenn mehr als 12 Körner auf einer Kachel liegen, werden maximal 12 Körner auf einer Kachel angezeigt

Um nicht jedes Mal auf die Schaltfläche „Körnung festlegen“ klicken zu müssen, wenn Sie eine Körnung platzieren, können Sie auch Folgendes tun: Halten Sie die Umschalttaste auf der Tastatur gedrückt und klicken Sie bei gedrückter Umschalttaste auf die Schaltfläche „Körnung festlegen“

Solange Sie die Shift-Taste gedrückt halten, können Sie dort ein (weiteres) Korn platzieren, indem Sie auf eine Kachel des Hamsterreviers klicken

Getreide kann auch im Gebiet umgelagert werden

Klicken Sie dazu auf die entsprechende Kachel und ziehen Sie dort mit gedrückter Maustaste die Körner auf die gewünschte Kachel

Dabei werden die Körner aller berührten Fliesen gesammelt.

Um eine Mauer auf einer Kachel des Hamsterreviers zu platzieren, klicken Sie auf die Schaltfläche „Mauer setzen“ in der Symbolleiste (16

Symbolleistenschaltfläche von links)

Klicken Sie dann auf die entsprechende Kachel

Die Wand wird dort platziert (es sei denn, der Hamster ist dort)

Achtung: Befinden sich Körner auf der Kachel, werden diese gelöscht

Um nicht jedes Mal auf die Schaltfläche “Wand setzen” klicken zu müssen, wenn Sie eine Wand platzieren, können Sie auch Folgendes tun: Drücken Sie die Umschalttaste auf der Tastatur und klicken Sie auf die Schaltfläche “Wand setzen”, während Sie die Umschalttaste gedrückt halten

Solange Sie die Umschalttaste gedrückt halten, können Sie dort eine Mauer platzieren, indem Sie auf eine Kachel des Hamsterreviers klicken

Mauern können auch im Gebiet verlegt werden

Klicken Sie dazu auf die entsprechende Kachel und ziehen Sie dort mit gedrückter Maustaste die Wand auf die gewünschte Kachel

Körner auf Kacheln, die dabei berührt werden, werden gelöscht

Um einzelne Kacheln des Hamsterreviers zu löschen, also eventuell vorhandene Körner oder Mauern zu entfernen, müssen Sie zunächst auf die Schaltfläche „Kachel löschen“ in der Symbolleiste klicken (17

Klicken Sie auf die Symbolleisten-Schaltfläche von links)

Dadurch wird die Kachellöschfunktion aktiviert

Sie erkennen dies daran, dass der Hintergrund des Buttons nun dunkler erscheint

Solange die Funktion aktiviert ist, können Sie nun diese Kachel durch Anklicken löschen

Die Funktion Kachel löschen kann durch erneutes Klicken auf die Schaltfläche “Kachel löschen” deaktiviert werden

Die Deaktivierung erfolgt automatisch, wenn eine andere der Gebietsdesign-Schaltflächen gedrückt wird

Eine weitere Möglichkeit, Körner oder Mauern im Revier zu löschen, besteht darin, mit der rechten Maustaste ein Popup-Menü über den entsprechenden Elementen zu aktivieren und auf den darin erscheinenden Punkt „Löschen“ zu klicken in einer Datei speichern und später wieder laden

Um das aktuelle Gebiet zu speichern, aktivieren Sie im Menü „Stage“ den Menüpunkt „Speichern unter…“

Ein Dateiauswahldialog öffnet sich

Hier können Sie den Ordner auswählen und den Namen einer Datei eingeben, in der das aktuelle Gebiet gespeichert werden soll

Es ist auch möglich, das aktuelle Gebiet als Bild (gif- oder png-Datei) zu speichern

Eine entsprechende Funktion finden Sie im Menü „Stage“

Gespeicherte Hamsterreviere können mit dem Menüpunkt „Laden“ des Menüs „Stage“ neu geladen werden

Es erscheint ein Dateiauswahldialog, in dem Sie die zu ladende Datei auswählen können

Nachdem Sie auf die Schaltfläche OK geklickt haben, wird das Dialogfeld geschlossen und das entsprechende Hamstergebiet wiederhergestellt

Achtung: Der Zustand des Hamsterterritoriums, der vor Ausführung der Revierladefunktion gültig war, geht verloren

Gegebenenfalls vorher speichern

Sie können auch interaktiv einzelne Hamster-Befehle oder selbst definierte Funktionen und Prozeduren ausführen, beispielsweise zu Testzwecken

Aktivieren Sie dazu im Menü „Fenster“ den Eintrag „Befehlsfenster“

Es öffnet sich das sogenannte Kommandofenster (siehe Abbildung 6.15)

Abb

6.15: Kommandofenster

Das Befehlsfenster zeigt die 7 Hamster-Befehle (mit grünlichem Hintergrund) sowie die Prozeduren und Funktionen, die im aktuellen Hamster-Programm definiert wurden, als es zuletzt erfolgreich kompiliert wurde (mit orangem Hintergrund)

Beim Anklicken mit der Maus werden die entsprechenden Befehle ausgeführt

Die Ausführung erfolgt ohne Anzeige von Zwischenständen

Das heißt, wenn beispielsweise eine Prozedur rightTom durch dreimaliges Aufrufen des Befehls leftTom definiert wird und diese Prozedur rightTom im Kommandofenster aktiviert wird, dreht sich der Hamster eigentlich nur einmal um 90 Grad nach rechts.

Dauert die Ausführung eines Befehls länger als 5 Sekunden (die Funktion enthält dann vermutlich eine Endlosschleife), wird der Befehl abgebrochen und der Hamstersimulator komplett in den Ausgangszustand zurückgesetzt

Verfügt eine Prozedur oder Funktion über Parameter, erscheint im Befehlsfenster nach der Aktivierung ein Dialogfenster, in dem die entsprechenden aktuellen Parameterwerte eingetragen werden müssen

Hinweis: Derzeit wird nur die Eingabe von Werten der Java-Standarddatentypen (int, boolean, float,. ..) und die Eingabe von Zeichenketten (Strings) unterstützt

Beim Ausführen von Funktionen wird der gelieferte Wert in einem Dialogfenster angezeigt

Alternativ zur Verwendung des Befehlsfensters können die Hamster-Befehle auch interaktiv über ein Popup-Menü ausgeführt werden

Sie können dieses Popup-Menü aktivieren, indem Sie die rechte Maustaste über dem Hamster im Revier drücken (siehe Abbildung 6.16)

Abbildung 6.16: Befehls-Popup-Menü

(Erfolgreich kompilierte) Hamsterprogramme können mit Hilfe der in Abbildung 6.17 skizzierten Toolbar-Buttons ausgeführt werden

Alle Funktionen sind auch über das Menü „Simulation“ aufrufbar

Abb

6.17: Simulationsschaltflächen in der Werkzeugleiste

Bevor ein Hamsterprogramm ausgeführt werden kann, muss es erfolgreich kompiliert worden sein

Das aktuelle Hamsterprogramm kann dann durch Klicken auf den “Start/Fortfahren”-Button (18

Toolbar-Button von links) gestartet werden

Nach dem Start eines Hamsterprogramms wird der Hamster im Hamstergebiet aktiv und tut, was ihm das Programm vorschreibt

Während ein Hamsterprogramm läuft, ist der Editorbereich ausgegraut, dh während ein Programm läuft, können keine Änderungen am Quellcode vorgenommen werden

Die Ausführung eines Hamsterprogramms kann durch Anklicken des „Stop“-Buttons (21

Button der Symbolleiste von links) jederzeit abgebrochen werden

Wenn Sie ein laufendes Programm (vorübergehend) anhalten möchten, können Sie dies tun, indem Sie auf die Schaltfläche “Pause” (20

Schaltfläche in der Symbolleiste von links) klicken

Wenn Sie anschließend auf die Schaltfläche „Start/Fortsetzen“ klicken, wird die Programmausführung fortgesetzt

Treten bei der Ausführung eines Programms Laufzeitfehler auf, z

kracht ein Hamster gegen eine Wand, öffnet sich ein Dialogfenster mit einer entsprechenden Fehlermeldung

Nach einem Klick auf die OK-Schaltfläche im Dialogfenster wird das Hamsterprogramm beendet

Außerdem öffnet sich das Konsolenfenster, in dem auch die Fehlermeldung angezeigt wird

Während ein Hamsterprogramm läuft, ist es weiterhin möglich, das Revier neu zu ordnen, z

neue Körner und Wände zu platzieren

Mit dem Schieberegler ganz rechts in der Symbolleiste können Sie die Geschwindigkeit der Programmausführung beeinflussen

Je weiter links der Schieberegler steht, desto langsamer läuft das Programm

Je weiter Sie den Controller nach rechts bewegen, desto schneller flitzt der Hamster durch das Revier

Beim Testen eines Programms ist die Schaltfläche “Zurücksetzen” (19

Schaltfläche in der Symbolleiste von links) sehr hilfreich

Ein Klick darauf bewirkt, dass das Hamsterrevier auf den Zustand zurückgesetzt wird, in dem es sich vor dem letzten Programmstart befand

Die Schaltfläche „Vollständiges Zurücksetzen“ (23

Schaltfläche in der Symbolleiste von links) setzt das Gebiet in den Zustand zurück, der beim Öffnen des Hamstersimulators gültig war, sofern möglich

Sollte es bei der Verwendung des Hamstersimulators einmal zu einem unerklärlichen Fehler kommen, können Sie mit dieser Schaltfläche den Hamstersimulator neu initialisieren

Debugger sind Werkzeuge zum Testen von Programmen

Sie ermöglichen Ihnen, den Status des Programms während des Programmablaufs zu überwachen und bei Bedarf sogar interaktiv zu ändern

Das macht Debugger sehr hilfreich, wenn es darum geht, Laufzeitfehler und logische Programmfehler zu entdecken.

Mit dem Debugger des Hamstersimulators können Sie den Programmstatus überwachen, während ein Hamsterprogramm läuft

Während der Ausführung eines Hamsterprogramms können Sie sich anzeigen lassen, welche Anweisung des Quellcodes gerade ausgeführt wird und welche Werte die Variablen gerade speichern

Das interaktive Ändern von Variablenwerten wird derzeit nicht unterstützt

Die Debugger-Funktionen sind eng mit den Programmausführungsfunktionen verknüpft

Die Funktionen finden Sie im Menü „Simulation“

Es ist jedoch sinnvoll, die entsprechenden Schaltflächen in der Symbolleiste zu verwenden

Zu den Debugger-Funktionen gehören neben den Schaltflächen „Start/Resume“, „Pause“ und „Stop“ die beiden Schaltflächen „Step through“ und „Trace“ (siehe auch Abbildung 6.18)

Abb

6.18: Schaltflächen zum Debuggen in der Symbolleiste

Durch Klicken auf die Schaltfläche „Trace“ (24

Schaltfläche in der Symbolleiste von links) aktivieren bzw

(bei erneutem Klicken) deaktivieren Sie die Ablaufverfolgung des Debuggers

Bei Aktivierung öffnet sich das Debugger-Fenster (siehe Abbildung 6.19)

Sie können dies auch über das Menü “Fenster” sichtbar oder unsichtbar machen

Abb

6.19: Debugger-Fenster

Wenn die Ablaufverfolgung aktiviert ist und das Programm ausgeführt wird, wird der Befehl (oder die Zeile) im Editorbereich, der als nächstes ausgeführt wird, blau hervorgehoben

Beim Aufruf einer Prozedur oder Funktion wird zur entsprechenden Funktion gesprungen

Weiterhin werden im Debugger-Fenster der aktuelle Stack der Funktionsaufrufe (Name der Funktion und aktuelle Position der Funktionsausführung) und die aktuelle Belegung der Variablen angezeigt

Im linken Teil des Debugger-Fensters werden Informationen über die aktiven Funktionen angezeigt, jeweils der Name der Funktion und die aktuelle Ausführungsposition der Funktion

Unten steht die gerade aktive Funktion, darüber die Funktion, die diese Funktion aufgerufen hat usw

Ganz oben steht immer die Hauptfunktion

Im rechten Bereich des Debugger-Fensters werden die aktiven Variablen und ihre aktuellen Werte angezeigt

Die Darstellung erfolgt in einem Elementbaum, dh bei komplexen Variablen wie Arrays können Sie sich die Komponenten ansehen, indem Sie auf das Symbol vor dem Variablennamen klicken

Sie können die Programmausführung auch anhalten, indem Sie bei aktiviertem Trace auf die Schaltfläche „Pause“ klicken und mit der Schaltfläche „Start/Resume“ fortfahren

Auch die Geschwindigkeit der Programmausführung kann mit dem Schieberegler angepasst werden

Mit dem Toolbar-Button „Schritt für Schritt“ (19

Button der Toolbar von links) ist es möglich, ein Programm Schritt für Schritt, also Anweisung für Anweisung, auszuführen

Jedes Mal, wenn Sie auf die Schaltfläche klicken, wird die nächste Anweisung (oder Zeile) ausgeführt

Sie können das Programm mit schrittweiser Ausführung starten

Sie können das Programm jedoch auch zuerst normal starten, dann pausieren und von der aktuellen Anweisung aus weitergehen

Eine normale Fortsetzung des Programms ist jederzeit durch Klicken auf die Schaltfläche „Start“ möglich

EXCEL VBA Die wichtigsten Befehle #22 – On Error GoTo, Laufzeitfehler abfangen Update

Video ansehen

Neues Update zum Thema laufzeitfehler 9 index außerhalb des gültigen bereichs

↓↓ Mein kostenloser EXCEL VBA Grundlagenkurs für Einsteiger ↓↓
Alle Videos \u0026 Codes – KOSTENLOS \u0026 OHNE ANMELDUNG: 💥 https://www.excel-vba-lernen.de/ 💥
Danke an Euch für den tollen Support und das motivierende Feedback! ❤

laufzeitfehler 9 index außerhalb des gültigen bereichs Einige Bilder im Thema

 New EXCEL VBA Die wichtigsten Befehle #22 - On Error GoTo, Laufzeitfehler abfangen
EXCEL VBA Die wichtigsten Befehle #22 – On Error GoTo, Laufzeitfehler abfangen Update

Weitere Informationen zum Thema anzeigen laufzeitfehler 9 index außerhalb des gültigen bereichs

Updating

Suche zum Thema laufzeitfehler 9 index außerhalb des gültigen bereichs

Updating

Sie haben gerade den Thementitel angesehen laufzeitfehler 9 index außerhalb des gültigen bereichs

Articles compiled by Tratamientorosacea.com. See more articles in category: DIGITAL MARKETING

Related Videos

Leave a Comment