s02 – Bedingungen

 

Häufig soll ein Befehl nicht immer ausgeführt werden, sonder nur, wenn eine bestimmte Bedingung erfüllt ist.

Bedingungen mit if und else

Für solche Anweisungen benutzt man in Java den Operator “if”.
Die Syntax ist:

if ([Boolsche Bedingung])
{
	// Befehle
}

Wenn die Bedingung erfüllt ist, werden alle Befehle in dem { } Block ausgeführt.

Beispiel:

int i1 = 0, i2 = 4;
if (i1 < i2)
{
	++ i1;
}

i1 ist gleich 0 und somit kleiner als i2 (4). Daher wird i1 im Befehlsblock um 1 erhöht.
Nun soll aber nicht nur ein Befehl ausgeführt werden, wenn die Bedingung erfüllt ist, sondern es soll ein anderer ausgeführt werden, wenn er nicht erfüllt ist. Dies wird mit “else” implementiert:

if (i1 < i2)
{
	++ i1;
}
else
{
	-- i1;
}

Wenn nun i1 kleiner ist als i2, wird i1 erhöht. Wenn i1 größer oder gleich i2 ist, wird i1 verkleinert.

Die Anweisungen können auch weiter verschachtelt werden:

if (i1 < i2)
{
	++ i1;
}
else if (i1 == i2)
{
	-- i1;
}
else
{
	i1 -= 2;
}

Es können alle bisher verwendeten Boolschen Operatoren benutzt werden. Anwendungsbeispiel:
Die Nullstellen eines Polynoms sollen berechnet werden. Hierzu kann das folgende Ablaufdiagramm verwendet werden:

[bild ablaufdiagramm]

Das Java-Programm lautet dann:


Die Syntax kann in gewissem Maße vereinfacht werden. So kann zum Beispiel statt

1
boolean b1 = true;
if (b1 == true)
{
	// Befehle
}

auch

boolean b1 = true;
if (b1)
{
	// Befehle
}

Analog kann statt

if (b1 == false)

auch

if (!b1)

schreiben.
Wie schon bei den boolschen Operatoren besprochen, können Bedingungen auch kombiniert werden:

if ((b1 == true) && (i1 > i2))

Nun kommt es aber häufig vor, dass abhängig von dem Inhalt einer Variablen verschiedene Befehle durchgeführt werden müssen, und zwar so, dass je mehr Bedingungen erfüllt sind, umso mehr Befehle ausgeführt werden. Dies kann mit dem switch-Operator implementiert werden.

Der Operator switch

Der Block

if (i1 == 1)
{
	i2 += 5;
	i2 -= 8;
	i2 += 17;
	i2 -= 23;
	i2 += 40;
}
else if (i1 == 2)
{
	i2 -= 8;
	i2 += 17;
	i2 -= 23;
	i2 += 40;
}
else if (i1 == 3)
{
	i2 += 17;
	i2 -= 23;
	i2 += 40;
}
else if (i1 == 4)
{
	i2 -= 23;
	i2 += 40;
}
else if (i1 == 5)
{
	i2 += 40;
}

kann mit switch so geschrieben werden:

switch (i1)
{
	case 1: i2 += 5;
	case 2: i2 -= 8;
	case 3: i2 += 17;
	case 4: i2 -= 23;
	default: i2 += 40;
}

Es wird zuerst überprüft, ob i2 == 1 ist. Wenn diese Bedingung erfüllt ist, werden ab dem Einstiegspunkt alle weiteren Befehle ausgeführt.
Wenn i2 == 3 ist, werden erst alle Befehle ab "i2 += 17" ausgeführt. Der Operator default steht für einen Befehl, der immer ausgeführt wird, unabhängig vom Wert von i2.

Soll nur jeweils der zu dem "case" gehörige Befehl ausgeführt werden, muss ein "break;" dahinter geschrieben werden:

switch (i1)
{
	case 1: i2 += 5;
		break;
	case 2: i2 -= 8;
		break;
	case 3: i2 += 17;
		break;
	case 4: i2 -= 23;
		break;
	default: i2 += 40;
}

Ähnliche Artikel

Kommentar verfassen