2.1 Anweisungen und Programme
Java zählt zu den imperativen Programmiersprachen, in denen der Programmierer die Abarbeitungsschritte seiner Algorithmen durch Anweisungen (engl. statements) vorgibt. Diese Befehlsform ist für Programmiersprachen gar nicht selbstverständlich, da es Sprachen gibt, die zu einer Problembeschreibung selbstständig eine Lösung finden. Die Schwierigkeit hierbei liegt darin, die Aufgabe so präzise zu beschreiben, dass das System eine Lösung finden kann. Ein Vertreter dieser Art Sprachen ist Prolog. Auch die Datenbanksprache SQL ist keine imperative Programmiersprache. Denn wie die Datenbank zu unserer Anfrage die Ergebnisse ermittelt, müssen und können wir weder vorgeben noch sehen.
Bleiben wir bei imperativen Sprachen. Um eine Aufgabe zu lösen, müssen wir jeden Abarbeitungsschritt angeben. Abarbeitungsfolgen befinden sich in jedem Kochbuch. Betrachten wir ein ...
Rezept für Flammkuchen
Aus der Hefe, der Milch (lauwarm) und dem Zucker einen dünnflüssigen homogenen Vorteig anrühren. Diesen mit allen anderen Zutaten außer dem Wasser vermischen (am besten mit einem Knethaken oder der Küchenmaschine). So lange Wasser (ca. 2 bis 2 1/2 dl für 500 g Mehl) hinzugeben, bis sich der Teig von der Schüssel (und von den Fingern) löst und sich trotzdem noch feucht anfühlt. Teig zu einem Klumpen formen, mit Mehl bestreuen und mit einem Handtuch abgedeckt ca. 1 Stunde gehen lassen.
Diese Gehzeit ist temperaturabhängig. Wenn der Teig in der geheizten Küche auf einen hohen Schrank gestellt wird, reichen manchmal auch nur 30-40 Minuten. Das Teigvolumen sollte sich danach verdoppelt haben. Generell gilt, dass der Teig eher länger als zu kurz gehen sollte.
In der Zwischenzeit wird der Speck gewürfelt, die Zwiebeln werden in feine Ringe geschnitten und der Käse gerieben. Die Crème fraîche wird flüssig gerührt und mit Pfeffer, Muskatnuss und nicht zu viel Salz (da ja schon in Speck, Käse und Teig enthalten) gewürzt. Mit dem Pfeffer und der Muskatnuss nicht zu sparsam sein, die Crème sollte hinterher schon recht würzig sein.
Wenn der Teig gegangen ist, kann man schon mal den Ofen einschalten. Der Teig wird nun in zwei Teile aufgeteilt (einen Teil wieder zurücklegen). Den Teigklumpen nochmals kurz von Hand durchkneten (vorher die Hände und den Teig leicht bemehlen) und dann auf einer bemehlten Fläche auf Blechgröße ausrollen. Dabei wird der Teig sehr dünn, je dünner umso besser. Den Teig auf das bemehlte Blech legen und mit der Hälfte der Crème bestreichen. Danach den Speck und die Zwiebeln und zum Schluss den Käse darauf geben und den Kuchen im Ofen garen. Nach ca. 10 Minuten, wenn eine leichte Bräunung eintritt, ist der Flammkuchen fertig.
|
500 g Weißmehl |
|
40 g Hefe, frisch |
|
EL Milch |
|
1 TL Zucker |
|
1 TL Wasser |
|
1 TL Salz |
|
1 EL Öl |
|
200 g Speck, je nach Gusto mehr oder weniger |
|
Zwiebeln, in feine Ringe geschnitten |
|
3 dl Crème fraîche |
|
200 g Käse, gerieben |
|
Pfeffer, frisch gemahlen |
|
Salz |
|
Muskatnuss, frisch gerieben |
Die Vorschriften kennzeichnen eine klare Sequenz der Tätigkeiten. Dies ist eine wichtige Eigenschaft von Java. Zusätzlich erkennen wir an dieser Arbeitsfolge weitere wichtige Eigenschaften, die sich auf imperative Programmiersprachen übertragen lassen: Eine Folge von Anweisungen bildet einen Block. Später werden wir diese Operationen zur Vereinfachung des Programms in einen extra Programmblock setzen und »Unterprogramm« nennen.
Des Weiteren lässt sich ein Flammkuchen nicht ohne Kontrolle von Ereignissen zubereiten. Betrachten wir dazu den letzten Satz der Anleitung:
Wenn eine leichte Bräunung eintritt, ist der Flammkuchen fertig.
Die Abfrage von Gegebenheiten ist sehr wichtig für imperative Sprachen. Genauso Wiederholungen wie
So lange Wasser hinzugeben, bis sich der Teig von der Schüssel löst.
Hier ist eine Anweisung so lange auszuführen, bis etwas gilt oder nicht mehr gilt. Interessant ist auch folgende Anweisung:
Wenn der Teig gegangen ist, kann man schon mal den Ofen einschalten.
Dies ist eine Nebenläufigkeit, die in herkömmlichen Sprachen nicht unterstützt wird. Während der Ofen heiß wird, können wir weiterkneten. Java unterstützt ein paralleles Abarbeiten von Programmteilen.
Elementare Anweisungen
Atomare, also unteilbare Anweisungen, werden auch elementare Anweisungen genannt. Programme bestehen in der Regel aus mehreren Anweisungen, die dann eine Anweisungssequenz ergeben. Die Laufzeitumgebung von Java führt jede einzelne Anweisung der Sequenz in der angegebenen Reihenfolge hintereinander aus.
|