Lektion 1 - Der Hamster lernt laufen
Aufgabe 1: Der Hamster-Simulator
Mit dem
Hamster-Simulator werden wir lange und intensiv arbeiten. Er wird uns die Programmiersprache Java beibringen! Ihr werdet den Großteil eures Wissens über dieses Wiki erwerben. Das
Hamster-eBook wird uns immer wieder begegnen, um euch Hintergrundwissen zu vermitteln, das den Rahmen des "normalen" Unterrichts sprengen würde. Ihr werdet im Wiki immer wieder Verweise auf das eBook finden, die ihr freiwillig lesen könnt. Sie sind nicht notwendig, um dem Unterricht zu folgen.
-
Wenn Ihr den Hamster-Simulator auf eurem PC zuhause benutzen wollt, benötigt ihr noch Java. Das könnt ihr über
Java OpenJDK installieren.
Ladet euch das
Hamster-eBook herunter und speichert es auf eurem Stick.
Startet den Hamstersimulator über die Datei hamstersimulator.jar (funktioniert zuhause nur, wenn ihr vorher Java installiert habt, siehe oben!).
Der Hamster funktioniert nicht?
Genauere Hinweise zur Installation findet ihr
hier und im 2. Kapitel im
eBook!
Es muss auf jeden Fall das JDK 8 verwendet werden!
Aufgabe 2: Die ersten Fachkonzepte
In dieser Aufgabe werdet ihr die ersten Fachkonzepte der Programmiersprache Java kennen lernen. Dies ist die Sprache, mit der der Hamster gesteuert werden kann.
Um dies zu tun, muss man dem Hamster Befehle geben können. Eine Abfolge von Befehlen nennt man Programm.
-
Notiert euch wichtige Begriffe und die Syntax-Diagramme in eurem Ordner.
Aufgabe 3: Der erste Kontakt
Baut das Territorium links (
Wie geht das?) und schreibt ein Programm, das dem Hamster befiehlt:
alle Körner zu sammeln und
diese unten rechts in der Ecke „einzulagern“
Testet euer Programm! Nachdem ihr das Programm einmal getestet habt, setzt den Simulator zurück, damit der Hamster immer von der gleichen Position startet!
Speichert das Programm und das Territorium auf eurem Stick unter dem Namen Lektion1_ErsterKontakt ab.
Lösung
void main() {
vor();
vor();
linksUm();
linksUm();
linksUm();
vor();
vor();
nimm();
linksUm();
vor();
vor();
vor();
linksUm();
linksUm();
linksUm();
vor();
vor();
nimm();
linksUm();
vor();
vor();
linksUm();
linksUm();
linksUm();
vor();
vor();
vor();
gib();
gib();
}
Aufgabe 4: Wächter-Hamster
Schreibt ein Programm, das dem Hamster befiehlt, seinen Kornvorrat einzusammeln und zu bewachen.
Speichert das Programm und das Territorium auf eurem Stick unter dem Namen Lektion1_Waechter ab.
Lösung
void main() {
vor();
vor();
vor();
vor();
vor();
vor();
vor();
nimm();
nimm();
nimm();
linksUm();
linksUm();
vor();
vor();
vor();
vor();
linksUm();
vor();
vor();
vor();
vor();
nimm();
nimm();
linksUm();
vor();
vor();
vor();
linksUm();
linksUm();
linksUm();
vor();
vor();
vor();
gib();
gib();
gib();
gib();
gib();
linksUm();
linksUm();
vor();
}
Aufgabe 5: Weitere Fachkonzepte
Diskutiert, warum das Hamster-Programm aus Aufgabe 4 eigentlich ziemlich ineffizient ist. Wenn ihr eine Idee habt, lest euch das Fachkonzept: Methode durch.
Doch wie funktioniert das eigentlich genau? Warum kann der Hamster diesen komischen Text, den wir ein Programm nennen, eigentlich verstehen? Lest euch zur Beantwortung dieser Frage das Fachkonzept: Kompilierung durch.
Notiert euch wichtige Begriffe und die Syntax-Diagramme in eurem Ordner.
Aufgabe 6: Effizienterer Wächter
Bearbeitet euren Wächter-Hamster aus Aufgabe 4, indem ihr:
sich wiederholende Befehle zu Methoden zusammenfasst
diese Methoden statt der Wiederholungen im Hauptprogramm verwendet
Speichert das Programm und das Territorium auf eurem Stick unter dem Namen Lektion1_EffizienterWaechter ab.
Lösung
void kehrt() {
linksUm();
linksUm();
}
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
void nimm2() {
nimm();
nimm();
}
void vor4() {
vor();
vor();
vor();
vor();
}
void vor3() {
vor();
vor();
vor();
}
void gib5() {
gib();
gib();
gib();
gib();
gib();
}
void main() {
vor4();
vor3();
nimm2();
nimm();
kehrt();
vor4();
linksUm();
vor4();
nimm2();
linksUm();
vor3();
rechtsUm();
vor3();
gib5();
kehrt();
vor();
}
Aufgabe 7: Dumm gelaufen...
Baut das Territorium rechts nach und schreibt das Programm rechts GENAU ab. Testet das Programm anschließend!
Es gibt in diesem Programm
zwei verschiedene Fehler! Lest das
Fachkonzept: Fehlermeldung und notiert euch wichtige Infos in eurem Ordner
Korrigiert die beiden Fehler im Programm!
Lösung
Kompilierungs- / Syntax-Fehler: VOR();
ist falsch geschrieben, richtig muss es vor();
(Kleinbuchstaben) lauten.
Laufzeit- / Logikfehler: Der Hamster würde gegen die Wand rennen. Also muss er sich zuerst nach rechts drehen.
void main() {
linksUm();
linksUm();
linksUm();
vor();
}
Aufgabe 8: Slalom
Der Hamster soll Slalom laufen und alle Körner sammeln!
Benutzt selbst gebaute Methoden, um den Code lesbarer zu machen!
Auf der Kachel mit dem Hamster liegt auch ein Korn!
Speichert das Programm und das Territorium auf eurem Stick unter dem Namen Lektion1_Slalom ab!
Lösung
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
void vor2nimm2() {
vor();
nimm();
vor();
nimm();
}
void linksKurve() {
vor2nimm2();
linksUm();
vor2nimm2();
linksUm();
}
void rechtsKurve() {
vor2nimm2();
rechtsUm();
vor2nimm2();
rechtsUm();
}
void main() {
nimm();
vor();
nimm();
rechtsUm();
linksKurve();
rechtsKurve();
linksKurve();
rechtsKurve();
vor2nimm2();
}
Abschluss & Quiz