next up previous contents
Nächste Seite: IF - Konstrukt Aufwärts: DO - Schleifen Vorherige Seite: repeat until   Inhalt

CYCLE und EXIT

Beide wirken auf die Schleife, in der sie stehen bzw. auf die Schleife, die genannt wird;
EXIT [name] verläßt die Schleife,
CYCLE [name] überspringt die Befehle bis zum Schleifenende.

Als Beispiel soll ein Programm geschrieben werden, das auf mehrere Arten n! berechnet:

PROGRAM fakultaet                          ! Programmname

!--------------------------  Deklarationsteil  ----------------------------
 IMPLICIT NONE                             ! fuer Programmsicherheit
 INTEGER :: n, fac                         ! Variablendefinition
!--------------------------   Anweisungsteil   ----------------------------

 WRITE (*, ' (a) ' ,ADVANCE='no') 'n = '   ! kein Zeilenvorschub!
 READ (*,*) n                              ! Wert einlesen

 IF (n <= 0) THEN                          ! Plausibilitaetskontrolle
  WRITE (*,*) 'nicht definiert ! '         ! Meldung
  STOP                                     ! Beende Programm
 ENDIF
 max = HUGE(fac)                           ! Bestimme max. Integerwert
 i = 1                                     ! Bestimme groeszte Zahl, fuer
 DO WHILE (max>1)                          ! die die Fakultaet berechnet
  i = i+1                                  ! werden kann
  max = max/i                              ! Verbesserungswuerdig!
 ENDDO
 IF (n > i) THEN                           ! Zahl ist zu grosz, n!
  WRITE (*,*) 'Ueberlauf ! maximal ' , i   ! waere nicht mehr im Wertebereich
  STOP                                     ! -> Abbruch
 ENDIF

 fac = 1
 i = 0
 DO                                        ! REPEAT
  i = i+1
  fac = fac*i
  if (i == n) EXIT                         ! UNTIL (i == n)
 ENDDO
 WRITE (*,*) 'n! = ' ,fac
 fac = 1
 i = 1
 DO WHILE (i < n)                          ! WHILE (i < n)
  i = i+1
  fac = fac*i
 END DO                                    ! END WHILE
 WRITE (*,*) 'n! = , ,fac
 fac = 1
 i = 1
 DO i = 2, n                               ! FOR i = 2,n,1
  fac = fac*i
 ENDDO                                     ! END FOR
 WRITE (*,*) ,n! = , ,fac
END PROGRAM fakultaet



Reinfried O. Peter 2001-09-07