next up previous contents
Nächste Seite: Schleifen mit Eintrittsbedingung Aufwärts: Schleifen Vorherige Seite: Schleifen   Inhalt

Zählschleifen

Zählschleifen sind Schleifen, bei denen zu Beginn der Ausführung festgestellt wird, wie oft die Schleife durchlaufen wird; die Anzahl der Schleifendurchläufe steht also zu Beginn fest und wird während der Ausführung nicht mehr verändert. Das Struktogrammsymbol für Zählschleifen lautet:


\begin{picture}(90.00,40.00)
\put(0.00,0.00){\line(1,0){90.00}}
\put(90.00,0.00)...
...nanweisungen}}}
\put(47.00,15.00){\makebox(0,0)[cc]{{\it . . . }}}
\end{picture}

Für die Programmierung von Zählschleifen verwendet man unter Fortran95 die DO-Schleifen mit Laufvariable. Die Anweisung dann lautet

DO $v = e_1,\ e_2\ [, e_3\ ]$

Schleifenanweisungen

ENDDO

Die Laufvariable ist $v$, und der von ihr zu durchlaufende Wertebereich geht von $e_1 $ (Startwert) bis $e_2 $ (Endwert). Die Laufvariable wird in jedem Schleifendurchlauf um das Inkrement $e_3 $ erhöht. Wird das (optionale) Inkrement weggelassen, wird $e_3 = 1 $ angenommen. Die Größen $e_1 $, $e_2 $ und $e_3 $ sind nicht-komplexe arithmetische Ausdrücke, und $v$ muß eine ganzzahlige Variable sein.

Zähl-Schleifen sind eigentlich spezielle Schleifen mit Eintrittsbedingung. Die Schleife wird je nach Vorzeichen des Inkrements $e_3 $ aufwärts $(e_3 >
0)$ oder abwärts $(e_3 < 0)$ durchlaufen bis $v > e_2 $ bzw. $v < e_2 $ ist. Die Schleife wird keinmal durchlaufen, wenn $e_1 > e_2 $ bei $e_3 > 0$ oder wenn $e_1 < e_2 $ bei $e_3 < 0$ ist. Die einzelnen Schritte bei der Ausführung einer Zählschleife sind wie folgt:

1.
Die Laufvariable erhält den Startwert.
2.
Aus Startwert, Endwert und Inkrement wird die Zahl der erforderlichen Schleifendurchläufe ermittelt nach der Formel:
$ Durchlaufzahl =
(Endwert-Startwert+Inkrement)/Inkrement $
3.
Ist die Durchlaufzahl kleiner oder gleich Null, wird die Schleife nicht ausgeführt (sie wird übersprungen).
4.
Am Ende jedes Schleifendurchlaufs wird die Laufvariable um den Wert des Inkrements erhöht.

Beispiele: Das Programmstück


\begin{picture}(90.00,80.00)
\put(0.00,0.00){\line(1,0){90.00}}
\put(90.00,0.00)...
...j = 10,0,-3$}}
\put(15.00,15.00){\makebox(0,0)[lc]{{\it A(B): j}}}
\end{picture}

sollte in FORTRAN folgendermaßen aussehen (i und j sind ganzzahlig, sum, a und b sind reell):

       ! --- ZaehlSchleife mit Vorwaertszaehlung
       ! ---
       sum = 0.0
       DO i = 1, 3
          sum = sum + a(i)*b(i)
       ENDDO
              :
              :
       ! --- ZaehlSchleife mit Rueckwaertszaehlung
       ! ---
       DO j = 10, 0, -3
          PRINT*, j
       ENDDO

Die letzte Schleife würde die Ausgabe 10, 7, 4, 1 erzeugen.

Zählschleifen können wie IF-Blöcke geschachtelt werden. Dabei muß die innere Schleife vollständig im Schleifenbereich der äußeren enthalten sein. Zählschleifen können, wenn es sein muß, durch einen Sprung aus dem Bereich verlassen werden. Sprünge in einen Schleifenbereich hinein sind verboten.

Beispiel für zulässige Schachtelung:


\begin{picture}(90.00,80.00)
\put(0.00,0.00){\line(1,0){90.00}}
\put(90.00,0.00)...
...A(k,j,i) = 0$}}
\put(25.00,25.00){\makebox(0,0)[lc]{$B(i,j) = 0$}}
\end{picture}

Die Umsetzung in FORTRAN sollte wie folgt aussehen:

         INTEGER :: i, j, k
         REAL    :: a(5,4,4), b(4,4)
         DO i = 1, 4
            DO j = 1, 4
               DO k = 1, 5
                  a(k,j,i) = 0.0
               ENDDO
               b(j,i) = 0.0
            ENDDO
         ENDDO

In dieser Schleifenkonstruktion werden die beiden Felder a und b auf Null gesetzt.

Innerhalb des Wiederholungsbereichs einer Zählschleife dürfen weder die Laufvariable noch die Parameter $e_1 $, $e_2 $ und $e_3 $ geändert werden. Sie können aber sonst in beliebiger Weise, z.B. als Operanden in arithmetischen Ausdrücken, verwendet werden. Nach dem Ende der Schleife hat die Laufvariable den Wert $Endwert + Inkrement $.


next up previous contents
Nächste Seite: Schleifen mit Eintrittsbedingung Aufwärts: Schleifen Vorherige Seite: Schleifen   Inhalt
Lars Tornow 2003-03-31