0% found this document useful (0 votes)
44 views14 pages

Computer Programming in Fortran 77: Lecture 5 - Repetition (WHILE LOOP)

The program prints the values TRUE and FALSE. The function PRIME determines if a number is prime by checking if it is divisible by any numbers from 2 to half its value. It returns TRUE if no divisors are found, FALSE otherwise. For the inputs 5 and 8, it correctly determines that 5 is prime but 8 is not.

Uploaded by

armanimams
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views14 pages

Computer Programming in Fortran 77: Lecture 5 - Repetition (WHILE LOOP)

The program prints the values TRUE and FALSE. The function PRIME determines if a number is prime by checking if it is divisible by any numbers from 2 to half its value. It returns TRUE if no divisors are found, FALSE otherwise. For the inputs 5 and 8, it correctly determines that 5 is prime but 8 is not.

Uploaded by

armanimams
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

Computer Programming

in Fortran 77

Lecture 5 Repetition (WHILE LOOP)


The WHILE LOOP Structure
DO WHILE ( condition )

block of statements

END DO
Examples on The While Loop
Example 1: Write a FORTRAN program that reads the grades of
100 students in a course. The program then computes and prints
the average of the grades.

Solution:

REAL GRADE, SUM, AVG


INTEGER K
K=0
SUM = 0.0
DO WHILE (K .LT. 100)
K=K+1
PRINT*, ENTER GRADE NUMBER , K
READ*, GRADE
SUM = SUM + GRADE
END DO
AVG = SUM / K
PRINT*, AVERAGE = , AVG
END
Example 2:

A class has a certain number of students


Read the grades of students, the last input would include a negative grade
Compute and print the average, the number of students in the class

Solution:

REAL GRADE , SUM, AVG


INTEGER NUM
SUM = 0.0
NUM = 0
PRINT*, ENTER A GRADE
READ*, GRADE
DO WHILE (GRADE .GE. 0)
NUM = NUM + 1
SUM = SUM + GRADE
PRINT*, ENTER A GRADE
READ*, GRADE
END DO
AVG = SUM / NUM
PRINT*, AVERAGE = , AVG
PRINT*, NUMBER OF STUDENTS IN THE CLASS = , NUM
END
Example 3: Series Summation using a DO loop:
Question: Write a FORTRAN program which calculates the sum of the
following series :
1/2 + 2/3 + 3/4 + 4/5 + + 99/100

Solution:

REAL N, SUM
SUM = 0
DO 100 N = 1 , 99
SUM = SUM + N / (N + 1)
100 CONTINUE
PRINT*, SUM = , SUM
END
Example 4: Series Summation using a WHILE loop:
Question: Write a FORTRAN program which calculates
the sum of the following series :

1/2 + 2/3 + 3/4 + 4/5 + + 99/100

Solution:

REAL N, SUM
N=1
SUM = 0
DO WHILE(N .LE. 99)
SUM = SUM + N / (N + 1)
N=N+1
END DO
PRINT*, SUM = , SUM
END
Example 5: Write a FORTRAN program that reads an integer
number M . The program Then computes and prints the
factorial of M using a DO loop.
Solution:

INTEGER M ,TERM , FACT


PRINT*, ENTER AN INTEGER NUMBER'
READ*, M
PRINT*, INPUT: , M
IF (M .GE. 0) THEN
FACT = 1
DO 100 TERM = M , 2 , -1
FACT = FACT *TERM
100 CONTINUE
PRINT*, FACTORIAL OF , M , IS, FACT
ELSE
PRINT*, NO FACTORIAL FOR NEGATIVES
ENDIF
END
Example 6: Write a FORTRAN program that reads an integer number
M. The program Then computes and prints the factorial of M using
a WHILE loop.

Solution:

INTEGER M , FACT
PRINT*, ENTER AN INTEGER NUMBER'
READ*, M
PRINT*, INPUT: ', M
IF (M .GE. 0) THEN
FACT = 1
DO WHILE (M .GT. 1)
FACT = FACT *M
M=M-1
END DO
PRINT*, FACTORIAL IS ', FACT
ELSE
PRINT*, NO FACTORIAL FOR NEGATIVES'
ENDIF
END
Example 7: Alternating Sequences/ Series: Alternating sequences, or series,
are those which have terms alternating their signs from positive to negative.
In this example, we find the sum of an alternating series.

Question: Write a FORTRAN program that evaluates the following series to


the 100th term.

1 - 3 + 5 - 7 + 9 - 11 + 13 - 15 + 17 - 19 + ...

Solution:

It is obvious that the terms differ by 2 and start at the value of 1.

INTEGER SUM , TERM , N


SUM = 0
TERM = 1
DO 10 N = 1, 100
SUM = SUM + (-1) ** (N + 1) * TERM
TERM = TERM + 2
10 CONTINUE
PRINT*, SUM = , SUM
END
Nested WHILE Loops
Example: Consider the following program.

INTEGER M , J
INTEGER M, J
M=1
DO 111 M = 1 , 2
DO WHILE ( M .LE. 2)
DO 122 J = 1 , 6 , 2
J=1
PRINT*, M , J
DO WHILE (J .LE. 6)
122 CONTINUE
PRINT*, M, J
111 CONTINUE
J=J+2
END
END DO
M=M+1
END DO
The output of the above program is:
END
1 1
1 3
1 5
2 1
2 3
2 5
Infinite Loop
INTEGER X
X=5
DO WHILE ( X .GT. 0)
PRINT*, X
X=X+1
END DO
END
Implied Loop
Implied loops are only used in READ and PRINT statements.

READ*, (list of variables, index = initial, limit, increment)


PRINT*, (list of expressions, index = initial, limit, increment)

Example 1: Printing values from 100 to 87: The following segment prints the
integer values from 100 down to 87 in a single line.

PRINT*, (K , K = 100 , 87 , -1)

Output:

100 99 98 97 96 95 94 93 92 91 90 89 88 87
Exercise
PRINT*, ((K , M , M = 1 , 4 , 2) , K , M , K = 2 , 3) , K , M

PRINT*, ((K , M , M = 1 , 4 , -2) , K , M , K = 2 , 3) , K , M

PRINT*, ((K , M , M = 1 , 4 , 2) , K , M , K = 2 , 3 , -1) , K , M


Repetition Constructs in Subprograms
Exercise

What will be printed by the following program?

C FUNCTION SUBPROGRAM
LOGICAL FUNCTION PRIME(K)
INTEGER N, K
PRIME = . TRUE .
DO 10 N = 2, K / 2
IF (MOD(K , N) .EQ. 0) THEN
PRIME = . FALSE .
RETURN
ENDIF
10 CONTINUE
RETURN
END

C MAIN PROGRAM
LOGICAL PRIME
PRINT*, PRIME (5), PRIME (8)
END

You might also like