Loops
FORTRAN also has a way to repeat a portion of the program statements. For this lesson, we will discuss a variety of common loop syntaxes used in FORTRAN. A common operation that requires a loop, is how to perform some operation on each element of an array. Review the Arrays lesson first to get the most out of this lesson.
The most basic loop uses a GOTO label
statement and has the meaning, "if condtion
condition is true, execute statements, then GOTO label
to repeat the test and statements.
Label is the label number of the IF () THEN line of code.
When the condition is false, program execution skips
to the ENDIF line and continues with the rest of the program.
c23456789012345678901234567890123456789012345678901234567890123456789012
10 IF (condition)
statement x % body of while loop
statement y
statement z
GOTO 10
ENDIF
CAUTION: Poor use of GOTO statements, like using a GOTO
statement that goes to a different place in the program
can lead to much confusion. Code that has many GOTO statements
that are hard to follow is known as "spaghetti code" because it is extremely
hard to follow any path of execution through the program.
If we know how many times a loop is going to execute,
it is preferred that we write it as a DO loop.
The DO loop allows us to specify an initial value
for the loop counter, and end value for the loop counter, and
an increment value for the loop counter.
A simple DO loop that repeats 10 times might look like this:
c23456789012345678901234567890123456789012345678901234567890123456789012
DO 10 i = 1, 10
statement x % body of while loop
statement y
statement z
10 CONTINUE
A more general form for the DO is:
c23456789012345678901234567890123456789012345678901234567890123456789012
integer i, initval, endval, incrval
intival = 1
endval = 20
incrval = 2
DO 100 i = initval, endval, incrval
statement x % body of while loop
statement y
statement z
100 CONTINUE
Some FORTRAN compilers also support a WHILE loop syntax with this form:
c23456789012345678901234567890123456789012345678901234567890123456789012
WHILE (condition) DO
statement x % body of while loop
statement y
statement z
update condition variable(s) in some way
ENDDO
or a DO WHILE loop with this syntax:
c23456789012345678901234567890123456789012345678901234567890123456789012
DO WHILE (condition)
statement x % body of while loop
statement y
statement z
update condition variable(s) in some way
ENDDO
CAUTION: The above syntax can often lead to infinite loops, should the programmer forget to update one of the condition variables within the loop statements.