Home > Informatik > Stufe EF > Folge 7 (Arrays) > Folge 7.1

Arrays und for-Schleifen

Arrays und for-Schleifen

Wenn man 100 Arrayelementen einen Wert zuweisen will, könnte das in eine ziemlich intensive Tipparbeit ausarten. Falls sich die Werte der 100 Elemente irgendwie aus den Indices berechnen lassen, kann man die Wertzuweisung mithilfe einer for-Schleife in einer Zeile Quelltext automatisch erledigen lassen. Betrachten Sie dazu das folgende Beispiel:

for (int i=0; i<100; i++) 
   zahl[i] = i*i;

Hier wird 100 Arrayelementen je eine Quadratzahl zugewiesen. Das erste Element mit dem Index 0 bekommt den Wert 0, das zweite Element den Wert 1, das dritte Element den Wert 4 und so weiter. Das letzte Element mit dem Index 99 bekommt dann den Wert 992 = 9801 zugewiesen.

Bei der Verwendung von solchen for-Schleifen muss man aber aufpassen, dass man keinen "Array-out-of-bounds"-Fehler programmiert. Betrachten Sie dazu folgenden falschen Quelltext:

for (int i=1; i<=100; i++) 
   zahl[i] = i*i;

So falsch sieht der Quelltext doch gar nicht aus, meinen Sie?

Fehler 1: Das erste Element erhält keinen Wert!

Sehen Sie den Fehler? Dann schauen Sie noch mal genau hin.

Das erste Arrayelement hat immer den Index 0, was man leicht vergisst. Die for-Schleife in dem obigen Beispiel beginnt aber mit dem i = 1 und nicht mit i = 0. Damit wird das erste Element (Index 0) übergangen. Einerseits ist dieser Fehler nicht besonders gravierend; er bringt das Programm zumindest nicht zum Absturz. Andererseits kann ein solcher Fehler natürlich zu einer Fehlfunktion des Programms führen, wenn das erste Element eines Arrays keinen oder einen falschen Wert hat.

Fehler 2: Array out of bounds!

Dieser Fehler ist gravierender als der erste. Angenommen, die for-Schleife ist so oft durchlaufen worden, dass die Laufvariable i jetzt den Wert 100 hat.

Die Bedingung i <= 100 ist dann noch erfüllt, denn i ist ja gleich 100.

Nun hat der Array zwar genau 100 Elemente, das letzte Element hat aber den Index 99. Ein Element mit dem Index 100 existiert nicht.

Es wird also in der for-Schleife versucht, auf ein Arrayelement zuzugreifen, das außerhalb des Arrays liegt. Daher auch der Name dieses Fehlers - "array-out-of-bounds".

Nicht immer eignen sich Schleifen für Arrays

Nicht immer können Schleifen bei der Zuweisung von Werten an Arrays eingesetzt werden. Stellen Sie sich vor, Sie haben ein Programm geschrieben, mit dem Sie Ihre Noten in den einzelnen Schulfächern verwalten wollen. Dann müssen Sie jede Note einzeln eingeben, es sei denn, Sie stehen überall auf 1 (oder 5, was wir nicht hoffen wollen)