if (arg2==1) - users.etech.haw

Werbung
Inhaltsverzeichnis
 Die leere Anweisung
 Anweisungsblöcke
 Variablendeklarationen und die Bedeutung lokaler








Variablen
Ausdrucksanweisungen
Die if-Anweisung
Die switch-Anweisung
Die while-, do- und for-Schleifen
Die erweiterte for-Schleife
Die Anweisungen break und continue
gelabelte Schleifen
Die assert-Anweisung
2
Die leere Anweisung
Syntax:
;
 Leere Anweisungen haben keine Auswirkungen
 Wird dort verwendet, wo eine Anweisung nur durch
die Syntax erforderlich ist
3
Anweisungsblöcke
Syntax:
{
<Anweisung 1>;
<Anweisung 2>;
}
 Ein Block umfasst mehrere einzelne Anweisungen
 Ein Block zählt als nur eine Anweisung
 Im Block deklarierte Variablen gelten nur für diesen
Block
4
Variablendeklarationen im Block
Syntax:
<Typname> <VariablenName>;
//oder
<Typname> <VariablenName> = <Initialwert>;
 Deklarierte Variablen dürfen nicht in einem
verschachteltem Block erneut deklariert werden
 Verdecken von Klassen- oder Instanzvariablen ist
zulässig
5
Verdecken von Variablen
Bsp: Initialisierung von Instanzvariablen
class Punkt
{
int x;
int y;
Punkt(int x, int y)
{
this.x = x;
this.y = y;
}
}
6
Ausdrucksanweisungen
Syntax:
<Ausdruck>;
Ausdrucksanweisungen sind:
 Zuweisungen
 Inkrement und Dekrement
 Instanzerzeugung
 Methodenaufruf
x=3;
x++;
my_picture=new graph();
my_picture.draw();
Andere Ausdrücke sind nicht erlaubt
7
Die if-Anweisung
Syntax:
if (<Ausdruck>)
<Anweisung 1>;
else
<Anweisung 2>;
 Ausdruck muss vom Typ boolean sein, z.B.
if (true) oder if (1==1)
 else bezieht sich immer auf das letzte if
8
Die switch-Anweisung
Syntax:
switch (<Ausdruck>)
{
case <Konstante> :
<Anweisung>;
...
default:
}
 <Ausdruck> muss vom Typ char, byte, short oder int sein
 <Ausdruck> muss kompatibel zu <Konstante> sein
 Nach dem Sprung werden alle folgenden Anweisungen
ausgeführt  break verwenden;
9
Die while-Schleife
Syntax:
while (<Ausdruck>)
<Anweisung>;
 <Ausdruck> muss vom Typ boolean sein
10
Die do-Schleife
Syntax:
do
<Anweisung>;
while (<Ausdruck>);
 Schleife wird mindestens einmal ausgeführt
 <Ausdruck> muss vom Typ boolean sein
11
Die for-Schleife
Syntax:
for (<init>; <test>; <update>)
<Anweisung>;
 <init>, <test> und <update> sind optional
 <init> darf aus Deklaration und Initialisierung bestehen
 Variablen müssen bei der Deklaration initialisiert werden
 Wenn <test> fehlt, wird es durch „true“ ersetzt
 <init> und <update> dürfen aus mehreren Ausdrücken
bestehen
12
Die erweiterte for-Schleife
Syntax:
for (<Parameter> : <Ausdruck>)
<Anweisung>
 <Parameter> ist eine Deklaration von Datentyp und
Variablenname
 <Ausdruck> ist eine Instanz, ein Array oder ein
Ausdruck vom Typ java.lang.iterable
 Durchlauf von allen Elementen von vorne nach hinten
13
Bsp. Erweiterte for-Schleife
// Ausgabe aller Elemente des Arrays my_array
for (int i = 0; i < my_array.length; ++i) {
System.out.println(my_array[i]);
}
for (int a : my_array) {
System.out.println(a);
}
14
break und continue
Syntax:
break;
continue;
 break verlässt die aktuelle Schleife
 continue springt zum nächsten Schleifendurchlauf
 Verwendbar in do-, while-, und for-Schleifen
15
Gelabelte Schleifen
Syntax:
<Label>:
for ( int i=1; i<10; i++ ) {
{
break <Label>;
// oder
continue <Label>;
}
}
 break und continue verlassen die Schleife mit dem
<Label>
16
Beispiel
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
data[i][j] = i * j;
}
}
for (int i = 0, j = 0; i < 10; i++,j++) {
data[i][j] = i * j;
}
//Produkt größer 43 suchen
loop1:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (data[i][j] > 43) {
System.out.println("Ergebnis: "+i + "*" + j + "=" + data[i][j]);
if (arg2==1) break loop1;
else break;
}
}
}
17
Die assert Anweisung
Syntax:
assert <Ausdruck1> ;
// oder
assert <Ausdruck 1> : <Ausdruck2> ;
 Eine Assertion ist eine logische Anweisung im
Programm
 Ist die Bedingung erfüllt, läuft das Programm weiter
 Ist die Bedingung nicht erfüllt, bricht das Programm
mit einem AssertionError ab.
18
Die assert Anweisung
Syntax:
assert <Ausdruck1> ;
// oder
assert <Ausdruck 1> : <Ausdruck2> ;
 <Ausdruck 1> muss vom Typ boolean sein
 <Ausdruck 2> ist optional
 <Ausdruck 2> dient als Ausgabe im Fehlerfall
19
Die assert Anweisung
Vorteile:
 Kurzer Quellcode
 Der Grund ist sofort erkennbar
 Assertions lassen sich an- und ausschalten
Nachteile:
 Kompatibilitätsprobleme
 Können auch ungewollt ausgeschaltet werden
20
Die assert Anweisung
Anwendungen:
 Debuggen und testen
 Precondition und Postcondition einer Methode
 Überprüfung von Schleifendurchläufen
 Markierung von Zweigen, die normalerweise nicht
erreicht werden sollen
21
Die assert Anweisung
An- und Ausschalten, Kompatibilität:
 Assertions benötigen mindestens Java 1.4
 java [ -enableassertions | -ea ] [:PaketName... |
:KlassenName ]
 java [ -disableassertions | -da ] [:PaketName... |
:KlassenName ]
22
Beispiel
public class assertion_test {
public static void main(String[] args) {
assert args.length >= 2;
int i1 = Integer.parseInt(args[0]);
int i2 = Integer.parseInt(args[1]);
assert i2 != 0 : "Teilen durch 0 nicht
moeglich";
System.out.println(i1 + "/" + i2 + "=" +
(i1/i2));
}
}
23
Zugehörige Unterlagen
Herunterladen