Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
gp Kapitel 2 Sprachbeschreibung
gp 2.1 Anweisungen und Programme
gp 2.2 Elemente der Programmiersprache Java
gp 2.2.1 Textkodierung durch Unicode-Zeichen
gp 2.2.2 Unicode-Tabellen unter Windows
gp 2.2.3 Literale
gp 2.2.4 Bezeichner
gp 2.2.5 Reservierte Schlüsselwörter
gp 2.2.6 Token
gp 2.2.7 Semantik
gp 2.2.8 Kommentare
gp 2.2.9 Funktionsaufrufe als Anweisungen
gp 2.2.10 Die leere Anweisung
gp 2.2.11 Der Block
gp 2.3 Datentypen
gp 2.3.1 Primitive Datentypen
gp 2.3.2 Wahrheitswerte
gp 2.3.3 Variablendeklarationen
gp 2.3.4 Ganzzahlige Datentypen
gp 2.3.5 Die Fließkommazahlen
gp 2.3.6 Alphanumerische Zeichen
gp 2.3.7 Die Typanpassung (das Casting)
gp 2.3.8 Lokale Variablen, Blöcke und Sichtbarkeit
gp 2.3.9 Initialisierung von lokalen Variablen
gp 2.4 Ausdrücke, Operanden und Operatoren
gp 2.4.1 Zuweisungsoperator und Verbundoperator
gp 2.4.2 Präfix- oder Postfix-Inkrement und -Dekrement
gp 2.4.3 Unäres Minus und Plus
gp 2.4.4 Arithmetische Operatoren
gp 2.4.5 Die relationalen Operatoren
gp 2.4.6 Logische Operatoren
gp 2.4.7 Reihenfolge und Rang der Operatoren in der Auswertungsreihenfolge
gp 2.4.8 Überladenes Plus für Strings
gp 2.4.9 Was C(++)-Programmierer vermissen könnten
gp 2.5 Bedingte Anweisungen oder Fallunterscheidungen
gp 2.5.1 Die if-Anweisung
gp 2.5.2 Die Alternative wählen mit einer if/else-Anweisung
gp 2.5.3 Die switch-Anweisung bietet die Alternative
gp 2.6 Schleifen
gp 2.6.1 Die while-Schleife
gp 2.6.2 Schleifenbedingungen und Vergleiche mit ==
gp 2.6.3 Die do/while-Schleife
gp 2.6.4 Die for-Schleife
gp 2.6.5 Ausbruch planen mit break und Wiedereinstieg mit continue
gp 2.6.6 break und continue mit Sprungmarken
gp 2.7 Methoden einer Klasse
gp 2.7.1 Bestandteil einer Funktion
gp 2.7.2 Aufruf
gp 2.7.3 Methoden ohne Parameter
gp 2.7.4 Statische Methoden (Klassenmethoden)
gp 2.7.5 Parameter und Wertübergabe
gp 2.7.6 Methoden vorzeitig mit return beenden
gp 2.7.7 Nicht erreichbarer Quellcode bei Funktionen
gp 2.7.8 Rückgabewerte
gp 2.7.9 Methoden überladen
gp 2.7.10 Vorinitialisierte Parameter bei Funktionen
gp 2.7.11 Finale lokale Variablen
gp 2.7.12 Finale Referenzen in Objekten und das fehlende const
gp 2.7.13 Rekursive Funktionen
gp 2.7.14 Die Ackermann-Funktion
gp 2.7.15 Die Türme von Hanoi
gp 2.8 Weitere Operatoren
gp 2.8.1 Bitoperationen
gp 2.8.2 Vorzeichenlose Bytes in ein Integer und Char konvertieren
gp 2.8.3 Variablen mit Xor vertauschen
gp 2.8.4 Die Verschiebeoperatoren
gp 2.8.5 Setzen, Löschen, Umdrehen und Testen von Bits
gp 2.8.6 Der Bedingungsoperator
gp 2.9 Einfache Benutzereingaben


Galileo Computing

2.1 Anweisungen und Programmetoptop

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.

gp 500 g Weißmehl
gp 40 g Hefe, frisch
gp EL Milch
gp 1 TL Zucker
gp 1 TL Wasser
gp 1 TL Salz
gp 1 EL Öl
gp 200 g Speck, je nach Gusto mehr oder weniger
gp Zwiebeln, in feine Ringe geschnitten
gp 3 dl Crème fraîche
gp 200 g Käse, gerieben
gp Pfeffer, frisch gemahlen
gp Salz
gp 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.





Copyright (c) Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de