6.1 What is the ELF90 Language
6.2 Constructs for Structured Programming
6.3 Variations of the IF-THEN-ELSE Statement
THE ELF90 LANGUAGE
Philosophy of ELF90 - A More
Disciplined FORTRAN
Enforce structured, Fortran-90-standard
coding. Remove redundant features. Keep all the power of the Fortran
language.
STRUCTURED CODING PRACTICE
ENFORCED BY ELF90
The four main constructs used in structured programming are:-
1. Sequence of operations
VARIATIONS OF THE IF-THEN-ELSE
1) Omitting ELSE block :
IF ( logical expression ) THEN
2) Only one instruction to
execute IF condition is met :
IF ( logical expression ) statement
3) Need IF-THEN-ELSE structure
:
4) Need to imbed several IF-THEN-ELSE
structures :
On to the next lecture
CONSTRUCTS FOR STRUCTURED PROGRAMMING
statements
.
.
.
END IF
IF ( logical expression ) THEN
statements
.
.
ELSE IF ( logical expression ) THEN
statements
.
.
ELSE
statements
.
.
END IF
!
PROGRAM P33
!
! Simple loop with IF-THEN-ELSE
!
IMPLICIT NONE
INTEGER :: I,J
REAL :: SUM,COUNT,AVE
!
PRINT *, 'This is Program >>P33 - IF-THEN-ELSE'
!
! READ DATA
!
READ *,I
!
DO J=1,I
READ *,SUM ,COUNT
IF(COUNT == 0.0) THEN
PRINT *,'COUNT ZERO'
STOP
ELSE
AVE=SUM/COUNT
PRINT *,'SUM=', SUM
PRINT *,'COUNT=', COUNT
PRINT *,'AVERAGE=', AVE
END IF
END DO
STOP
END PROGRAM P33
PROGRAM P36
!
! Nested IF blocks
!
IMPLICIT NONE
LOGICAL :: SINGLE
CHARACTER (LEN=20) :: NAME
INTEGER :: I,J,AGE,N,TAGE
REAL :: AVE
!
!
PRINT *, 'This is Program >> P36 - Nested IF blocks'
!
! READ DATA
!
READ *,I
!
N=0
TAGE=0.0
L1: DO J=1,I
READ * ,NAME,SINGLE,AGE
PRINT * ,NAME,SINGLE,AGE
IF(SINGLE)THEN
N=N+1
TAGE=TAGE+AGE
IF(N == 5)THEN
AVE=TAGE/5.0
PRINT * ,'AVERAGE AGE OF FIRST FIVE SINGLES IS'
PRINT * ,AVE
STOP
END IF
END IF
END DO L1
STOP
END PROGRAM P36
PROGRAM P37
!
! DECLARATIONS
!
IMPLICIT NONE
INTEGER :: AGE,WEIGHT,MARRGS
CHARACTER (LEN=15) :: GROUP,NAME
LOGICAL :: SINGLE,HEAVY
!
PRINT *, 'This is Program >>P37 - Classification program'
!
! Tell program where data for READ * is coming from
OPEN(UNIT=5, FILE='P37.DAT') ! UNIT=5 is the default input
!
! MAIN STATEMENTS
!
PRINT *,'CLASSIFICATION PROGRAM'
!
Loop1: DO
PRINT * ,' '
READ * ,AGE,WEIGHT
!
IF(AGE == 99)STOP ! Yes == for testing in an IF
HEAVY = .FALSE. ! One = for an assignment statement
IF(WEIGHT > 70) HEAVY=.TRUE.
!
IF(AGE < 18)THEN
GROUP='MINOR'
ELSE IF(AGE < 35)THEN
GROUP='PRIME YEARS'
ELSE
GROUP='MATURE'
END IF
!
READ * ,NAME
READ *,SINGLE
!
IF(SINGLE)THEN
PRINT * ,NAME,' IS SINGLE'
ELSE
READ * ,MARRGS
PRINT * ,NAME,'WAS MARRIED',&
MARRGS,'TIMES'
END IF
!
PRINT * ,'SHE IS',AGE,'YEARS OLD'
PRINT * ,'AND WEIGHS',WEIGHT,'KILOGRAMS'
IF(HEAVY)PRINT * , &
'AND SHOULD JOIN WEIGHT WATCHERS'
PRINT * ,'AGE GROUP: ',GROUP
END DO Loop1
STOP
END PROGRAM P37
PROGRAM P38
!
! This program will find the perimeter and the area of a triangle
!
IMPLICIT NONE
REAL :: A,B,C,PERI,SEMI,AREA
INTEGER :: N
!
! Tell program where data for READ * is coming from
OPEN(UNIT=5, FILE='P38.DAT')
! UNIT=5 is the default input
!
! READ DATA
!
DO N=1,20
READ *,A,B,C
IF( A == -90.0 ) STOP
IF( A <= 0 .OR. B <= 0 .OR. C <= 0 ) THEN
PRINT 5,A,B,C
PRINT *,'ALL THE VALUES MUST BE POSITIVE.'
5 FORMAT(' A=',F8.3,' B=',F8.3,' C=',F8.3)
ELSE
PERI = A+B+C
SEMI = PERI/2
AREA = SEMI * (SEMI-A) * (SEMI-B) * (SEMI-C)
IF (AREA .LT. 0) THEN
PRINT 5,A,B,C
PRINT *,'TWO SIDES SHORTER THAN THIRD'
ELSE
PRINT 8,A,B,C,PERI,SQRT(AREA)
8 FORMAT(' A=',F8.3,' B=',F8.3,' C=',F8.3,' PERIMETER =', &
F8.3,' AREA=',F8.3)
END IF
END IF
END DO
STOP
END PROGRAM P38
PROGRAM GRADE
!
IMPLICIT NONE
CHARACTER (LEN=2) :: GRADE
REAL :: FINAL
CHARACTER (LEN=20) :: NAME
!
.
.
.
IF(FINAL > 85.0) THEN
GRADE='A'
ELSE IF (FINAL > 80.0) THEN
GRADE='A-'
ELSE IF (FINAL > 75.0) THEN
GRADE='B+'
ELSE IF (FINAL > 70.0) THEN
GRADE='B'
.
.
.
ELSE IF (FINAL > 50.0) THEN
GRADE='D'
ELSE
GRADE='F'
END IF
PRINT *, NAME, FINAL, GRADE
STOP
END PROGRAM GRADE
Go back to lecture menu