Alexander Syndikus 1 CuB – Informatik – Praktikum 08 Informationen Diese Informationen stehen Ihnen für die nachfolgenden Aufgaben zur Verfügung. Es sind weit mehr, als zur Lösung der Aufgaben benötigt werden. 1.1 Anweisungen Anweisung Beschreibung // text Kommentar /* text <Zeilenumbruch> text */ Kommentar { Block-Anweisung : Anweisungen zu einer "Anweisungskette" zusammenfassen anweisung; [anweisung;] } if ( bedingung ) { anweisung; } [ else { anweisung; } ] Wenn-Dann und Wenn-Dann-Sonst Anweisung while (bedingung ) { anweisung; } Schleife: Wiederhole Anweisung solange die Bedingung wahr ist, da die Prüfung am Beginn stattfindet, wird die Schleife evtl. 0 Mal durchlaufen. do { anweisung; } while (bedingung ) ; Schleife: Wiederhole Anweisung solange die Bedingung wahr ist, da die Prüfung am Ende stattfindet, wird die Schleife mindestens 1 Mal durchlaufen. for ( startanweisung ; bedingung ; wiederhol- Schleife: mit Start-Anweisung, Bedingung und anweisung) { anweisung; } - solange die Bedingung wahr ist - zu wiederholende Anweisung Bsp.: for (init i=0; i<5;i++) Seite 1/9 Alexander Syndikus CuB – Informatik – Praktikum 08 1.2 Zuweisung Zuweisung erfolgt durch ein = z.B.: x = 0; x = x + 1; x=y–1; // setze x auf den Wert 0 // erhöhe x um 1 // subtrahiere 1 vom der Zahl, die aktuell in y gespeichert ist // und setze x auf den Wert des Ergebnisses (y wird nicht verändert) x++; ist eine alternative Schreibweise von x = x + 1; x--; ist eine alternative Schreibweise von x = x – 1; auch Ergebniswerte von Funktionen können so (dem gleichen Typ von) Variablen zugewiesen werden. 1.3 Variablen Gültigkeitsbereich von Variablen: Variablen sind innerhalb von einem "BLOCK" { ... } gültig. Es gibt logische (= BOOLSCHE) Variablen: boolean Werte: true (=wahr); false (=falsch) Es gibt ganzzahlige (= INTEGER) Variablen: int Werte: -232 = -2.147.483.648 bis +232 -1 = -2.147.483.647 Es gibt ganzzahlige (= INTEGER) Objekt-Variablen: Integer Werte: -232 = -2.147.483.648 bis +232 -1 = -2.147.483.647 Es gibt Kommazahlen (= reale Zahlen) Variablen: float oder double z.B.: 3,5 ... Es gibt Textvariablen (= STRING) Variablen: String Werte: "... Text..." Hinweis zu "text": Texte und Variablen können mit "+" verbunden werden. 1.4 Konstanten des Objektes Hamster Diese Ausdrücke sind in der Klasse Hamster definiert. Eigenschaft Beschreibung Hamster.BLAU Hamster.ROT Hamster.GRUEN Hamster.GELB Hamster.CYAN Hamster.MAGENTA Hamster.ORANGE Hamster.PINK Hamster.GRAU Hamster.WEISS Farbe Hamster.NORD Blickrichtung Seite 2/9 Alexander Syndikus CuB – Informatik – Praktikum 08 Hamster.OST Hamster.SUED Hamster.WEST 1.5 "Hamster" Klassen-Methoden: Hamster Hamster.getStandardHamster(); Gibt als Objekt den im Territorium definierten Hamster int Hamster.getAnzahlHamster(); Gibt die Anzahl der Hamster zurück 1.6 Hamster Konstruktor: (Hamster) Hamster(); (Hamster) Hamster(int, int, int, int); Reihe, Spalte, Blickrichtung, Anzahl-Körner-imMaul (Hamster) Hamster(int, int, int, int, int); Reihe, Spalte, Blickrichtung, Anzahl-Körner-imMaul, Farbe 1.7 Hamster Methoden Anweisung Beschreibung (void) hamster.vor(); Gehe 1 Schritt vor (void) hamster.linksUm(); Drehe um 90° nach links boolean hamster.vornFrei(); Prüfe ob vor dem Hamster (Blickrichtung) ein freies Feld ist (void) hamster.nimm(); Nimm 1 (genau 1 !) Korn auf dem Platz, auf dem der Hamster sich befindet, auf (void) hamster.gib(); Lege 1 Korn auf dem Platz, auf dem der Hamster sich befindet, ab (void) hamster.schreib( String text ); Halte das Programm an und gib in einem Fenster einen Text aus; nach Eingabe von "ok" wird das Programm fortgesetzt int hamster.liesZahl( String text ); Halte das Programm an, gib in einem Fenster einen Text aus und lies eine Zahl ein; führe das Programm nach Eingabe der Zahl fort String liesZeichenkette(String text) Halte das Programm an, gib in einem Fenster einen Text aus und lies einen Text (String) ein; führe das Programm nach Eingabe der Zahl fort Seite 3/9 Alexander Syndikus CuB – Informatik – Praktikum 08 boolean hamster.kornDa(); Prüfe ob auf dem Platz, auf dem sich der Hamster befindet mindestens 1 Korn liegt boolean hamster.maulLeer(); Prüfe, ob der Hamster mindestens 1 Korn im Maul trägt int hamster.getReihe(); Gibt die Reihe, in der sich der Hamster befindet zurück Achtung: es wird von 0 an gezählt ! int hamster.getSpalte(); Gibt die Spalte, in der sich der Hamster befindet zurück Achtung: es wird von 0 an gezählt ! int hamster.getBlickrichtung(); Integer-Wert der Blickrichtung. Mit z.B.: if (Hamster.NORD == hamster.getBlickrichtung()) {} kann jedoch aussagekräftig verglichen werden! int hamster.getAnzahlKoerner(); Integer-Wert wieviele Körner der Hamster im Maul hat 1.8 "Eigenschaften" des Objektes Territorium Diese Ausdrücke sind in der Klasse Territorium definiert. z.B.: int anzahl_reihen = Territorium.getAnzahlReihen(); for (int i = 0; i < Territorium.getAnzahlReihen(); i++) Territorium.getAnzahlReihen() liefert von 1...X die Reihe selbst wird von 0...(X-1) gezählt Eigenschaft Beschreibung int getAnzahlReihen(); Anzahl Reihen im Territorium (vertikal) int getAnzahlSpalten(); Anzahl Spalten im Territorium (horizontal) int getAnzahlHamster(int reihe, int spalte); Anzahl der Hamster auf einem Feld int getAnzahlKoerner(int reihe, int spalte); Anzahl der Körner auf einem Feld 1.9 Logische Ausdrücke Diese Ausdrücke können Sie bei Bedingungen verwenden, um diese entsprechend zu formulieren. Logische Ausdrücke können in runde Klammern ( ... ) gesetzt werden, die Ausdrücke inerhalb der Klammern werden zuerst ausgewertet. Logische Ausdrücke Beschreibung ! Negation && Logisches UND || Logisches ODER Seite 4/9 Alexander Syndikus CuB – Informatik – Praktikum 08 1.10 Arithmetische Operatoren: + Addition - Subtraktion * Multiplikation / Division 3,00% Modulo (= lefert den Rest einer Ganzzahldivision) 1.11 Vergleichs Operatoren: == gleich != ungleich < kleiner <= kleiner gleich > größer >= größer gleich 1.12 (Eigene) Funktionen / Prozeduren BOOLSCHE Funktionen: [public/private] boolean funktionsname ( [ parameter ] ) { anweisung; return boolean-wert; } INTEGER Funktionen: [public/private] int funktionsname ( [ parameter ] ) { anweisung; return int-wert; } "VOID-Funktionen" = Prozedur: [public/private] void name ( [ parameter ] ) { anweisung; } Rekursive Funktionen: rekursive Funktionen sind möglich. Seite 5/9 Alexander Syndikus CuB – Informatik – Praktikum 08 1.13 Umgebungsvariable CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch wird es möglich, eigene Klassen in einer Klassen-Datei zu speichern und diese dann im "objektorientierten Programm" zu importieren. Bsp.: erstellen Eines Ordners "myutil" um dort als "Package" die Klasse "SammelHamster" bereitzustellen Seite 6/9 Alexander Syndikus 2 CuB – Informatik – Praktikum 08 Aufgaben 2.1 Objektorientiert: Klasse SammelHamster als Package Aufgabe: 5 P– ca. 30 Min. Erstellen Sie unterhalb von "Programme" über das Hamster-Simulator-Menü einen Ordner "myutil". Erzeugen Sie dort eine Package-Klasse "SammelHamster", indem Sie den Programm-Text aus "CuB_07_1" beginnend ab class SammelHamster extends Hamster { bis zur Zeile } // ENDE class SammelHamster kopieren und in der (Klasse-)Datei "SammelHamster" speichern. Achtung: achten Sie auf die Schreibweise! Der Ordner und die Datei müssen vom Namen korrekt – wie angegeben geschrieben werden! Nun modifizieren Sie diese Datei wie folgt: package myutil; public class SammelHamster extends Hamster { Erzeugen Sie nun Sie das "objektorientierte" Programm ("CuB_08_1"), indem Sie den "main"Programmcode aus CuB_07_1 kopieren. Fügen sie vor "void main....." die folgende Zeile ein: import myutil.SammelHamster; Korrigieren Sie (alle) die Konstruktoren in der Klasse-Datei "SammelHamster": bisher wurde kein public/private vor diese verwendet. Hintergrund war, dass bei Klassen, di in der gleichen JAVA-Datei wie main() alle Attribute/Methoden von main() aus immer zugreifbar sind. Schreiben Sie nun vor die Konstruktoren "public" und speichern Sie die "Klasse"-Datei SammelHamster ab. Compilieren Sie diese. Nun Speichern und compilieren Sie CuB_08_1. Seite 7/9 Alexander Syndikus CuB – Informatik – Praktikum 08 Hinweis zur Bewertung: Bewertet wird nicht nur die Funktionalität – auch das Berücksichtigen von public/private, Kommentaren, Einrücken, Übersichtlichkeit des Codes und die Verwendung von geeigneten Methoden, Funktionen. Territorium: wie Praktikum 7 2.1 Ergebnis: wie wie Praktikum 7 2.1 2.2 SammelHamster mit Ausgabe der erkundeten Informationen aus der Abarbeitung Aufgabe: 10 P– ca. 60 Min. Hinweis zur Programmierung: Verwenden Sie als Basis das Programm aus Praktikum 8 2.1 (CuB_08_2). Speichern Sie in geeigneter Form folgende Informationen in einer Matrix ab: • '?' keine Information zu Feld vorhanden • '#' Mauer • '_' leeres Feld • 'k' Feld mit Korn/Körnern Initialisieren Sie die Matrix mit '?' Denken Sie an Überlagerung von Methoden. (boolean vornFrei(), ...) Erstellen Sie eine Methode in der Klasse SammelHamster print_matrix(); Tipp: zu print_matrix(): public void print_matrix() { String feld = new String(); for ... { for ... { feld = feld + this.getMy_territorium(i,j); } feld = feld + "\n"; } ... } Durch ein "\n" wird bei der Ausgabe ein Zeilenumbruch erzeugt. Seite 8/9 Alexander Syndikus CuB – Informatik – Praktikum 08 Tipp: switch-CASE beim Erkennen der Mauer denken Sie daran, dass bei vornFrei() der Hamster nicht auf dem Feld der Mauer steht sondern vor diesem Feld: ... switch (this.getBlickrichtung()) case SammelHamster.NORD : case SammelHamster.SUED : case SammelHamster.WEST : case SammelHamster.OST : } { { { { { reihe_ausgleich reihe_ausgleich spalte_ausgleich spalte_ausgleich = = = = -1; +1; -1; +1; break; break; break; break; } } } } ... Territorium: wie Praktikum 8 2.1 Ergebnis: wie wie Praktikum 8 2.1 plus: Seite 9/9
© Copyright 2024 ExpyDoc