1 Informationen

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