Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I René Lamour Wintersemester 2009/2010 Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java My first JAVA code public class <name> { public static void main(String[] args){ <programmtext> } } Die “normalen” Klammern sind { und }. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen, die in { . . . } eingeschlossen werden. I Die if-else-Anweisung I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen, die in { . . . } eingeschlossen werden. Die Anweisungen werden nacheinander ausgeführt. { Anweisung 1; Anweisung 2; .. . Anweisung n; } I Die if-else-Anweisung I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen Ein Block wirkt nach außen wie eine Anweisung (Achtung: ohne ;). I Die if-else-Anweisung I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen Ein Block wirkt nach außen wie eine Anweisung. Blöcke können geschachtelt werden. I Die if-else-Anweisung I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen Ein Block wirkt nach außen wie eine Anweisung. Blöcke können geschachtelt werden. In einem Block definierte Objekte sind nur in diesem Block bekannt! I Die if-else-Anweisung I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung hat die Struktur if (boolescher Ausdruck) Anweisung 1 else Anweisung 2 I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung if (boolescher Ausdruck) Anweisung 1 else Anweisung 2 Die Abarbeitung wird durch den booleschen Ausdruck gesteuert. Ist der booleschen Ausdruck = true wird Anweisung 1 ausgeführt, sonst Anweisung 2. I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung I Die Abarbeitung wird durch den booleschen Ausdruck gesteuert. Ist der booleschen Ausdruck = true wird Anweisung 1 ausgeführt, sonst Anweisung 2. Beispiel: if (student > 0) System.out.println(”\u00dcbung findet statt!”); else System.out.println(”Keine \u00dcbung!”); | {z } Ü Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung if (boolescher Ausdruck) Anweisung 1 else Anweisung 2 Merke: Der else-Zweig kann fehlen! I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung I Die for- oder Zählschleife Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung I Die for- oder Zählschleife hat die Struktur for(Initializierungsanw.; boolescher Ausdruck; Inkrementanw.) Anweisung(sblock) Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung I Die for- oder Zählschleife for(Initializierungsanw.; boolescher Ausdruck; Inkrementanw.) Anweisung(sblock) Die Abarbeitung ist: 1. Ausführen der Initializierungsanweisung 2. if ( boolescher Ausdruck ) Ausführen der Anweisung, der Inkrementanweisung, weiter bei 3. else for-Schleife wird beendet. 3. weiter bei 2. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Blöcke und Kontrollstrukturen I Ein Block enthält eine Folge von Anweisungen I Die if-else-Anweisung I Die for- oder Zählschleife Die Abarbeitung ist: 1. Ausführen der Initializierungsanweisung 2. if ( boolescher Ausdruck ) Ausführen der Anweisung, der Inkrementanweisung, weiter bei 3. else for-Schleife wird beendet. 3. weiter bei 2. Beispiel: int j=0; for( int i=1; i < 11; i=i+1) j=j+i; Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Sehr viele nützliche Programme liegen schon vor und wir wollen sie benutzen. Dazu gibt es Bibliotheken. BZQ-I-Homepage → Bibliotheken für Java → JAVA 5 → links oben java.lang → links unten Math I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Alles in java.lang kann direkt benutzt werden. Nur wie? I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Alles in java.lang kann direkt benutzt werden. Nur wie? Die ausgewählte Klasse heisst Math und wir wollen eine statische Methode (Unterprogramm) benutzen. I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Die ausgewählte Klasse heisst Math und wir wollen eine statische Methode (Unterprogramm) benutzen. → Methode sqrt im Method Summary ansehen. I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden An der ersten Spalte erkennt man, dass alle diese Methoden static sind. (Was das genau ist, folgt später.) I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden An der ersten Spalte erkennt man, dass alle diese Methoden static sind. (Was das genau ist, folgt später.) √ Funktionalität von sqrt - square root oder . I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Funktionalität von sqrt - square root oder √ . Die erste Spalte gibt auch den Rückgabetyp an - double Hinter dem Namen steht in Klammern die Parameterliste double a I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Funktionalität von sqrt - square root oder √ . Die erste Spalte gibt auch den Rückgabetyp an - double Hinter dem Namen steht in Klammern die Parameterliste double a Die statische Methode methode mit dem Rückgabetyp typ in der Klasse klasse wird unter Berücksichtigung ihrer Parameterliste folgendermaßen aufgerufen: typ erg=klasse.methode(<Var. entsp. der Parameterliste>); I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Die statische Methode methode mit dem Rückgabetyp typ in der Klasse klasse wird unter Berücksichtigung ihrer Parameterliste folgendermaßen aufgerufen: typ erg=klasse.methode(<Var. entsp. der Parameterliste>); Beispiel: double rad=2.0; double wurzel=Math.sqrt(rad); I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Analog sind auch Konstanten einer Klasse (→ Field Summary) zu benutzen: Beispiel: double pi=Math.PI; I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Die Potenzfunktion - x i I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Die Potenzfunktion - x i Für i = 2 schreiben wir x ∗ x, sonst nutzen wir Sfun.pow(double x, int i) = ˆ xi aus der Biliothek (package) HUMath.Numerik. I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden Die Potenzfunktion - x i Für i = 2 schreiben wir x ∗ x, sonst nutzen wir Sfun.pow(double x, int i) = ˆ xi aus der Biliothek (package) HUMath.Numerik. Die Java.lang-Methode Math.pow(double x, double y) = ˆ x y = e y ln x ist für ganzes y uneffektiv. I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken → Bibliotheken für Java → HUMath → HUMath.InOut→ ReadWin Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken Über der Klassenbezeichnung ReadWin sehen wir den package-Namen HUMath.InOut. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken Über der Klassenbezeichnung ReadWin sehen wir den package-Namen HUMath.InOut. Wenn wir Methoden aus dieser Klasse in unserem Programm benutzen wollen, müssen wir sie importieren. Wir schreiben am Anfang unseres java-Programmes <name>.java die Zeile(n): import HUMath.InOut.ReadWin; bzw. import HUMath.InOut.*; - zum Importieren aller Klassen Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken Dann können wir die (statischen) Methoden (z.B. getDouble) aus der Klasse ReadWin zum Einlesen von Daten benutzen: Beispiel: double rad = ReadWin.getDouble(”Radius = ”); Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken Sehen Sie sich auch die anderen Klassen dieses Paketes an! Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Nutzung von Bibliotheken I Benutzen statischer Methoden I Import von Bibliotheken I Bemerkung: Beenden Sie Ihr Programm (bei der Nutzung graphischer Elemente) mit System.exit(0); oder per Hand mit ˆC. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Bereitstellen von (externen) Bibliotheken I Der import von Bibliotheken wurde schon besprochen. Damit zusätzliche Bibliotheken verwendet werden können, müssen sie für Java erreichbar sein. Man sagt: Die Bibliotheken müssen im Pfad stehen. Überprüfung: echo $CLASSPATH Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Bereitstellen von (externen) Bibliotheken I Der import von Bibliotheken wurde schon besprochen. Damit zusätzliche Bibliotheken verwendet werden können, müssen sie für Java erreichbar sein. Man sagt: Die Bibliotheken müssen im Pfad stehen. Überprüfung: echo $CLASSPATH .:/usr/math/java/lib/:/usr/math/java/lib/LAPACK/jlapack0.3a/classes.zip:/usr/math/java/lib/JNL/Classes/jnlmod.zip:/usr/math/java/lib/HUMath/HUMath.zip: /usr/math/java/lib/OR-Objects/or124cp.jar: /usr/math/java/lib/J Spline/jspline.jar: /usr/math/java/lib/Jama/Jama-1.0.1.zip: /usr/math/java/lib/ODE/odeToJava.jar: /usr/math/jmsl/jmsl5.0/imsl/jmsl500/lib/jmsl.jar Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Grundelemente von Java Bereitstellen von (externen) Bibliotheken I Der import von Bibliotheken wurde schon besprochen. Damit zusätzliche Bibliotheken verwendet werden können, müssen sie für Java erreichbar sein. Man sagt: Die Bibliotheken müssen im Pfad stehen. Überprüfung: echo $CLASSPATH I Merke: Was man lesen kann, kann man auch kopieren! Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen Manchmal benötigt man eine Variable in einem anderen Typ. Schreibt man: double x = 47.11; int i = x; I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen Manchmal benötigt man eine Variable in einem anderen Typ. Schreibt man: double x = 47.11; int i = x; bekommt man folgende Fehlermeldung: I I format.java:12: possible loss of precision found : double required: int int i = x; ˆ 1 error Kompakte Schreibweisen sind hilfreich. ”Überschreiben” von Variablen Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen Daher ist eine Typumwandlung nötig. Man wendet den cast-Operator an: (neuerTyp) Objekt Beispiel: int i = (int) x; I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. Mehrfacher Zuweisungsoperator: a = b = c; bedeutet I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. Mehrfacher Zuweisungsoperator: a = b = c; bedeutet b = c; a = b; I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. Mehrfacher Zuweisungsoperator: a = (b = c); bedeutet b = c; a = b; (rechts assoziativ) I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen Oft haben Anweisungen die Form x = x op y; I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen Oft haben Anweisungen die Form x = x op y; Beispiel: x = x + y; Kurzform: x += y; oder allgemein I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen Typ objekt op = Ausdruck; was bedeutet: Typ objekt = (Typ)(objekt op Ausdruck); I Inkrement (++) und Dekrement (--) Operator Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator erhöht bzw. erniedrigt die Variable um 1. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator erhöht bzw. erniedrigt die Variable um 1. In der Form x ++ (auch x++ ) nachdem er benutzt wird und in der Form ++ x bevor er benutzt wird. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator erhöht bzw. erniedrigt die Variable um 1. In der Form x ++ (auch x++ ) nachdem er benutzt wird und in der Form ++ x bevor er benutzt wird. Beispiel: int x = 0; int y = x++ +2; Nach der Ausführung ist x = 1 und y = 2. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator erhöht bzw. erniedrigt die Variable um 1. In der Form x ++ (auch x++ ) nachdem er benutzt wird und in der Form ++ x bevor er benutzt wird. Beispiel: int x = 0; int y = x++ +2; Nach der Ausführung ist x = 1 und y = 2. int x = 0; int y = ++x +2; Nach der Ausführung ist x = 1 und y = 3. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Typumwandlungen Typumwandlungen und Kurzformen I Typumwandlungen I Kompakte Schreibweisen sind hilfreich. I ”Überschreiben” von Variablen I Inkrement (++) und Dekrement (--) Operator erhöht bzw. erniedrigt die Variable um 1. Oft wird nur der Befehl x++; benutzt. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die while-Anweisung Häufig sollen Anweisungen abhängig von einer Bedingung abgearbeitet werden. while ( boolescher Ausdruck ) Anweisung Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die while-Anweisung Häufig sollen Anweisungen abhängig von einer Bedingung abgearbeitet werden. while ( boolescher Ausdruck ) Anweisung Die Anweisung wird ausgeführt, solange der boolescher Ausdruck = true ist. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die while-Anweisung Häufig sollen Anweisungen abhängig von einer Bedingung abgearbeitet werden. while ( boolescher Ausdruck ) Anweisung Zweite Variante (nicht abweisende while-Schleife): do Anweisung while ( boolescher Ausdruck ); Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die while-Anweisung Häufig sollen Anweisungen abhängig von einer Bedingung abgearbeitet werden. while ( boolescher Ausdruck ) Anweisung do Anweisung while ( boolescher Ausdruck ); Die Anweisung wird mindestens einmal ausgeführt und, solange der boolescher Ausdruck = true ist, fortgefahren. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die switch-Anweisung dient der Ausführung von Anweisungen, wenn mehrere Fälle berücksichtigt werden sollen. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die switch-Anweisung switch ( Ausdruck ) { case Konstante 1 : Anweisung 1 break; case Konstante 2 : Anweisung 2 break; .. . default: DefaultAnweisung } Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die switch-Anweisung switch ( Ausdruck ) { case Konstante 1 : Anweisung 1 break; case Konstante 2 : Anweisung 2 break; .. . default: DefaultAnweisung } Typ: byte, char, short, int, long Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die switch-Anweisung switch ( Ausdruck ) { case Konstante 1 : Anweisung 1 break; case Konstante 2 : Anweisung 2 break; .. . default: DefaultAnweisung } Typ: byte, char, short, int, long vom Typ des Ausdrucks Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die switch-Anweisung switch ( Ausdruck ) { case Konstante 1 : Anweisung 1 break; case Konstante 2 : Anweisung 2 break; .. . default: DefaultAnweisung } Typ: byte, char, short, int, long vom Typ des Ausdrucks falls break fehlt, fall through Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Die switch-Anweisung switch ( Ausdruck ) { case Konstante 1 : Anweisung 1 break; case Konstante 2 : Anweisung 2 break; .. . default: DefaultAnweisung } Typ: byte, char, short, int, long vom Typ des Ausdrucks falls break fehlt, fall through falls Ausdruck 6= Konstante i, ∀i Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Weitere Sprachelemente Beispiel int i, erg; .. . switch (i){ case 1: erg=1; break; case 6: erg=2; break; default: erg=0; } Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-Operators gleich die Dimension zugewiesen werden Typ[] feldname= new Typ[<ganze Zahl >]; Beispiel: double[] vektor = new double[5]; auch eine Initialisierung ist möglich. Beispiel: double[] vektor = {1.9, 1e-6, 9.9}; Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Felder Benutzung von Feldern, mehrdimensionale Felder I Um auf ein einzelnes Feldelement zuzugreifen wird feldname[<index>] geschrieben. <index> ist dabei ein ganzzahliger Ausdruck vom Typ int. Beispiel: feldname[4] I Der Index beginnt stets bei 0. I Jedem Feld ist die Variable length zugeordnet, die mit feldname.length abgefragt werden kann. I Mehrdimensionale Felder (z.B. Matrizen, Tensoren) werden durch Felder von Feldern realisiert. Beispiel: double[][] feldname = new double[3][7]; Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Felder Kopieren von Feldern Sollen die Inhalte eines Feldes feld 1 in ein Feld feld 2 kopiert werden gibt es zwei Möglichkeiten: 1. Es wird elementweise gemacht for(int i=0; i < feld 1.length; i++) feld 2[i] = feld 1[i]; 2. Es wird die Systemroutine System.arraycopy benutzt: arraycopy(Object quelle, int quellindex, Object ziel, int zielindex, int laenge); Beispiel: System.arraycopy(feld 1, 0, feld 2, 0, feld 1.length); Die Variante feld 2 = feld 1; ist falsch, weil damit das Objekt feld 2 mit dem Objekt feld 1 identifiziert wird. Beide bezeichnen jetzt das selbe Objekt. Ändere ich feld 1, so ändert sich automatisch feld 2 mit. Vorlesung ”Einführung Wissenschaftliches Rechnen”-BZQ I Vorlesung 2 Nun frisch ans Werk! Jetzt können die ersten anspruchsvollen Java-Programme entstehen. Viel Spaß dabei!