Sie sind auf Seite 1von 4

TECHNISCHE UNIVERSITAT MUNCHEN

FAKULTAT FUR INFORMATIK


Lehrstuhl fur Sprachen und Beschreibungsstrukturen WS 12/13
Einfuhrung in die Informatik I Ubungsblatt 1
Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz, A. Reu 26.10.2012

Abgabe: 04.11.2012 (vor 24 Uhr)

Hinweis: Die Klasse MiniJava In der Klasse MiniJava sind einige Details versteckt,
damit Sie sich in den ersten Wochen ganz auf das Wesentliche konzentrieren konnen. Die
Klasse bietet folgende Methoden zur vereinfachten Ein- bzw. Ausgabe:
read() und readInt() zum Einlesen eines ganzzahligen Werts,
readString() zum Einlesen einer textuellen Eingabe sowie
write(...) zur vereinfachten Ausgabe.

Um die Klasse benutzen zu konnen,

laden Sie die Klasse MiniJava.java von der Webseite


https://www.moodle.tum.de/course/view.php?id=7514
herunter,
speichern Sie MiniJava.java im selben Verzeichnis wie Ihre eigenen Java-Dateien und
erweitern Sie ihre Klassendefinition(en) um extends MiniJava .

Verwenden Sie zur Losung der folgenden Aufgaben nur MiniJava - Sprachkonstrukte!

Aufgabe 1.1 (P) Erste Schritte

a) Starten Sie die Entwicklungsumgebung NetBeans. Erstellen Sie ein neues Projekt na-
mens Info1 in NetBeans. Offnen Sie die Datei MiniJava.java in NetBeans und spei-
chern Sie diese in Ihrem Projekt unter Info1/src/info1/MiniJava.java ab. NetBe-
ans weist Sie daraufhin, dass die package declaration geandert werden muss. Fugen
Sie dazu die Zeile package info1; am Anfang der Klasse MiniJava ein.
b) Erstellen Sie nun die Klasse HelloWorld im Package info1 in NetBeans. Diskutieren
Sie mit Ihrem Tutor die automatisch erstellten Elemente des Programms. Erganzen
Sie Ihr Programm folgendermaen:
public c l a s s HelloWorld extends MiniJava {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
w r i t e ( H e l l o World ! ) ;
}
}

Am Ende sollte Ihr NetBeans in etwa so aussehen:


2

Machen Sie sich mit den grundlegenden Funktionen wie dem Erstellen und Ausfuhren
des Programms vertraut.
c) Machen Sie den Ordner in Ihrem Benutzerverzeichnis ausfindig, an dem NetBeans Ihre
Java-Dateien ablegt ubertragen Sie den Ordner mit den Java-Quellcode-Dateien
als Ihre Losung auf den Abgabeserver. (Auf diese Weise geben Sie in Zukunft Ihre
Hausaufgaben ab, wie auf dem 1. Merkblatt ausfuhrlich beschrieben.)
Sie finden diese Dateien unter Unix normalerweise unter
/home/username/NetBeansProjects/Info1/src
bzw. unter Windows im Ordner
%HOMEPATH%\Eigene Dokumente\NetBeansProjects\Info1\src

Aufgabe 1.2 (P) Ein- und Ausgabe

a) Bart muss schon wieder nachsitzen. Als Strafaufgabe muss er ein Programm schreiben,
das auf dem Bildschirm 100 mal den Satz
Ich darf wahrend der Vorlesung nicht Computer spielen!

ausgibt. Helfen Sie ihm dabei, dies moglichst effizient umzusetzen.
Hinweis: Erstellen Sie dazu im Package info1 eine neue Klasse namens Bart.java.
b) Leider muss Bart des Ofteren nachsitzen und verschiedene Satze verschieden oft als
Strafaufgabe ausgeben lassen. Modifizieren Sie das obige Programm so, dass es nach
einem Satz und dessen Anzahl von Wiederholungen fragt und diesen anschliessend
entsprechend oft am Bildschirm ausgibt.

Aufgabe 1.3 (P) Summe

Schreiben Sie ein Java-Programm namens Sum.java, welches solange Zahlen einliest und
summiert, bis die Zahl 0 eingegeben wird. Anschlieend soll die berechnete Gesamtsumme
ausgegeben werden.
3

Aufgabe 1.4 (P) 17 und 4

In dieser Aufgabe wollen wir das Kartenspiel 17 und 4 programmieren, das wie folgt funk-
tioniert:

Zwei Spieler spielen gegeneinander.


Ziel des Spiels ist es, mit zwei oder mehr Karten naher an 21 Punkte heranzukommen
als der andere Spieler, ohne dabei den Wert von 21 Punkten zu uberschreiten.
Eine Karte kann einen Wert zwischen 2 und 11 Punkten haben.
Jeder Spieler hat am Anfang zwei Spielkarten.
Er kann entscheiden, ob er weitere Karten ziehen mochte oder nicht.
Glaubt er, nahe genug an 21 Punkte herangekommen zu sein, so lehnt er weitere
Karten ab.
Wenn er durch einen Zug 22 oder mehr Punkte erreicht, verliert er sofort.
Es gewinnt der Spieler, der als erstes am nachsten an 21 Punkte herankommt.

Schreiben Sie ein Mini-Java Programm SuV.java, mit dem man 17 und 4 zu zweit spielen
kann. Jeder Spieler soll uber Dialogboxen gefragt werden, ob er weitere Karten ziehen will:
1 fur Ja, 0 fur Nein. Verwenden Sie dazu die statische Methode int drawCard() der Klasse
MiniJava, um Karten zu ziehen.
Hinweis: Achten Sie darauf, Eingaben auf Ihre Gultigkeit hin zu uberprufen!

Aufgabe 1.5 [2 Punkte] (H) Wodka-Martini Roboter


Schreiben Sie ein Programm, das nach Aktivierung dreimal fragt, ob das auf dem Roboter

abgestellte Getrank geschuttelt (Eingabe 0) oder geruhrt (Eingabe 1) werden soll und dann
jedes mal die entsprechende Aktion als Text ausgibt (z.B. schuttele).

Sobald der Benutzer eine unsinnige Eingabe macht, soll das Program nach einer Fehleraus-
gabe (z.B. Falsche Eingabe) beendet werden.

Aufgabe 1.6 [3 Punkte] (H) Getranke-Automat

In dieser Aufgabe soll ein Getranke-Automat programmiert werden. Der Automat funktio-
niert so:

a) Der Automat erfragt vom Benutzer, wieviel Geld er einwirft. Dabei ist der Betrag in
Cent, also als ganze positive Zahl einzugeben. Wird stattdessen eine negative Zahl oder
die Zahl 0 eingegeben, dann soll das Programm an dieser Stelle abgebrochen werden.
b) Dann werden dem Benutzer das aktuelle Guthaben sowie die Auswahlliste mit Preisen
mitgeteilt:

Ihr Guthaben: ... Auswahlliste:


(1) Orangensaft f\"ur 2 Euro
(2) Apfelsaft f\"ur 2 Euro
(3) Tomatensaft f\"ur 3 Euro
(0) Abbruch
4

c) Die Wahl des Benutzers wird als ganze positive Zahl eingelesen. Bei Eingabe der Zahl
0 soll das Programm sofort beendet werden.
d) Wahlt der Benutzer eine ungultige Option, d.h. wird nicht eine Zahl zwischen 0 und 3
eingegeben, dann gibt der Automat einen Fehlertext aus, das eingeworfene Guthaben
verfallt und der Automat begibt sich wieder in den Anfangszustand a.
e) Wahlt der Benutzer eine gultige Option zwischen 1 und 3 und hat er zuvor genug
Geld eingegeben, dann werden das eingegebene Geld um den entsprechenden Betrag
verringert und Produkt sowie Ruckgeld als Text ausgegeben.
Hat der Benutzer jedoch zuwenig Geld eingeworfen, wird stattdessen eine entspre-
chende Fehlermeldung angezeigt und der Automat begibt sich in den Anfangszustand
a.
f) Nach jeder erfolgreichen Ausfuhrung startet der Automat wieder von vorne im An-
fangszustand a.

Hilfestellung: Implementieren Sie die Aufgabenstellung in kleinen Schritten soweit wie


moglich und testen Sie dann Ihr Programm:
a) Lassen Sie den Benutzer zuerst nur einmal ein Produkt wahlen.
b) Implementieren Sie zunachst nur eine Auswahl (z.B. Apfelsaft).
c) Erweitern Sie den Automaten danach um weitere Auswahlmoglichkeiten.
d) Ermoglichen Sie zum Schluss das wiederholte Kaufen von Produkten sowie den Ab-
bruch bei Eingabe der Zahl 0.

Hinweis: Hinweise zu Lerntechniken und Selbstorganisation (Lerngruppen)


Haben Sie schon eine Lerngruppe fur Vorlesung/Programmierpraktikum? Haben Sie sich
Gedanken gemacht, wie Sie Ihre Arbeit in der Lerngruppe organisieren wollen? Hier sind
ein paar Punkte, uber die Sie nachdenken konnten:
Gibt es feste Termine mit Anfangs- und Endzeit?
Treffen Sie sich an einem festen Ort?
Stimmt die Groe und Zusammensetzung der Lerngruppe?
Welche Regeln geben Sie sich? Beispiele:
Vorbereitung: Zu Beginn eines Treffens werden die Themen gesammelt, die be-
sprochen werden sollen.
Ein Mitglied der Lerngruppe leitet das Treffen; d.h. strukturiert die vorgeschla-
genen Themen, stellt einen Zeitplan auf, sorgt fur die Einhaltung. Die Leitung
rotiert von Treffen zu Treffen.
Welche Themen sind prinzipiell fur die Lerngruppe geeignet, welche nicht?
Im Moodle-Bereich zum Praktikum ist ein Forum angelegt, mit dessen Hilfe Sie sich in Lern-
gruppen organisieren konnen. Dort ist auch Raum, um uber Ihre Erfahrungen zu berichten.