Aufbau des Java Skripts
Im Skript wird im Wesentlichen nur auf die grundlegenden Java Konstruktionen und die in der Vorlesung vorgestellten Programmcodes mit kurzen Erläuterungen eingegangen.
Darüber hinaus beachten Sie bitte die Literaturempfehlungen. Insbesondere verweise ich bei den einzelnen Kapiteln immer wieder auf das online verfügbare Buch Java ist auch eine Insel, derzeit in Version 10, von Christian Ullenboom.
Java Version
In der Lehrveranstaltung Strukturierte und objektorientierte Programmierung wird derzeit Java in Version 8 verwendet. Darauf bezieht sich auch dieses Skript. Externe Verlinkungen zur API oder zu Downloads führen ebenfalls zur Java Version 8. Für die Teilnahme an der Lehrveranstaltung ist mindestens die Version 7 erforderlich, falls für Ihre Plattform Version 8 nicht verfügbar sein sollte.
Im Skript finden Sie weitere Hinweise zur Einrichtung Ihrer Arbeitsumgebung.
Algorithmen und Programme
Computer führen Programme aus, die aus Anweisungen und Strukturelementen zusammengebaut werden. Solche Sammlungen von Anweisungen und Strukturelementen nennt man Algorithmen:
- Algorithmus
- Ein Algorithmus ist eine endliche Folge von Einzelanweisungen.
Aus der realen Welt sind uns eine Vielzahl von Algorithmen bekannt. Tatsächlich sind die allermeisten Vorgänge des täglichen Lebens Algorithmen, wobei nach bestimmten, oft zuvor festgelegten Regeln, wiederkehrende Aktivitäten ausgeführt werden. Beispiele dafür sind Rezepte in Kochbüchern, das Autofahren, die Montage von Möbeln oder Verwaltungsvorgänge.
Ein Beispiel für einen einfachen, informatiknahen Algorithmus, der aber eine hohe Dynamik aufweist, ist die Collatz-Funktion:
1: Lies x ein 2: Setze z auf Null 3: 4: Solange x ungleich Eins ist führe aus: 5: 6: Falls x gerade ist führe aus: 7: Halbiere x 8: 9: Sonst (falls x nicht gerade ist) führe aus: 10: Verdreifache x und erhöhe es um Eins 11: 12: Erhöhe z um Eins 13: 14: Gib z aus
Für einen solchen Algorithmus lässt sich ein Trace angeben, das ist das Protokoll eines kompletten Durchlaufs durch den Algorithmus für einen bestimmten Eingabewert. Dabei wird jede Änderung von Werten, die in Variablen gespeichert sind, in einer Zeile erfasst. Wird beispielsweise am Anfang der Wert 3 in die Variable x eingelesen, ergibt sich für die Collatz-Funktion der folgende Trace:
Zeile | Wert von x | Wert von z |
---|---|---|
Anfang | undefiniert | undefiniert |
1 | 3 | undefiniert |
2 | 3 | 0 |
10 | 10 | 0 |
12 | 10 | 1 |
7 | 5 | 1 |
12 | 5 | 2 |
10 | 16 | 2 |
12 | 16 | 3 |
7 | 8 | 3 |
12 | 8 | 4 |
7 | 4 | 4 |
12 | 4 | 5 |
7 | 2 | 5 |
12 | 2 | 6 |
7 | 1 | 6 |
12 | 1 | 7 |
Ende | 1 | 7 |
Aus den Überlegungen zu Algorithmen lässt sich die Definition eines Programms ableiten:
- Programm
- Ein Programm ist ein Algorithmus, der von einem Computer ausgeführt werden kann.
Grundstruktur eines Java-Programms
Schlüsselworte
Die Sprache Java besteht aus einem begrenzten Satz von Worten, die man Schlüsselworte nennt. Aus diesem Wortschatz lassen sich alle Programme aufbauen. Die Schlüsselworte sind sogenannte reservierte Worte mit fester Bedeutung. Sie dürfen nicht als Namen (Bezeichner) für Variable, Klassen, Methoden usw. verwendet werden. Die vollständige Liste der Schlüsselworte findet sich in der Java Sprachspezifikation.
HelloWorld
Java-Programme bestehen aus mindestens einer Klasse, die eine Methode namens main enthält. Das folgende Programm HelloWorld ist das einfachste denkbare Java-Programm. Es hat keinerlei Funktion (es tut nichts):
public class HelloWorld { public static void main(String[] args) { } }
Später werden wir die Details und Strukturelemente vertieft betrachten, hier nur kurz zur Erläuterung:
- public: Schlüsselwort, das festlegt, dass das Strukturelement öffentlich ist, ohne Einschränkung im Rest des Java-Programms verwendet werden kann.
- class: Schlüsselwort, das festlegt, dass das Strukturelement eine Klasse ist
- HelloWorld: Name der Klasse und damit in diesem Fall auch Name des Programms.
- static: Schlüsselwort, das festlegt, dass das Strukturelement (hier die Methode main) statisch zur Klasse HelloWorld gehört. Die Methode kann dadurch Attribute der Klasse nicht verändern.
- String[] args: definiert ein Array von Zeichenketten (Strings) unter dem Namen args, das die Kommandozeilenparameter des Java-Programms enthält, falls es mit Parametern von der Kommandozeile gestartet wurde.
Dateinamen
Eine Java Klasse muss in einer Datei liegen, die denselben Namen wie die Klasse mit der Dateiendung .java trägt. Die Klasse HelloWorld muss also in der Datei HelloWorld.java liegen.
Ausgaben auf der Konsole
Ausgaben auf die Konsole können mit den Methoden print und println der Standardausgabe (System.out) erfolgen. Das folgende Programm gibt die Zeichenkette Hello World auf der Kommandozeile aus:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
System.out.println erzeugt nach der Ausgabe noch einen Zeilenumbruch, bei der Verwendung von System.out.print wird der Zeilenumbruch weggelassen.
Eingaben von der Tastatur
Für Eingaben von der Tastatur verwenden wir ein Objekt der Klasse Scanner. Die Klasse Scanner gehört zum Lieferumfang der Java-Programmierschnittstelle (Java API) und liegt dort im Paket java.util. Das folgende Programm gibt eine Meldung aus, nimmt dann eine Integerzahl von der Tastatur entgegen und gibt diese Zahl auf der Konsole aus:
// Klasse Scanner importieren import java.util.Scanner; // Klasse HelloWorld definieren public class HelloWorld { public static void main(String[] args) { // Scanner initialisieren Scanner scan = new Scanner(System.in); // Meldung ausgeben System.out.print("Bitte geben Sie eine Zahl ein: "); // Variable für die Zahl deklarieren int zahl; // Zahl von der Tastatur einlesen zahl = scan.nextInt(); // Zahl wieder ausgeben System.out.println(zahl); } }
Weitere Möglichkeiten, mit der Klasse Scanner Daten einzulesen, finden Sie im Kapitel Anweisungen, Variable und Datentypen.