You can select between blocks of statements by using the selection construct IF statement is used as a selection construct Four types of IF constructs IF-ELSE Construct IF Construct IF-ELSEIF Construct Simple IF Construct SELECTION CONSTRUCTS
IF-ELSE Construct The general form of the IF-ELSE construct is as follows: IF ( condition ) THEN BLOCK1 ELSE BLOCK2 ENDIF Where condition is a logical expression each of block1 and block2 consists of one or more FORTRAN statements condition is.TRUE. ( execute block1 ) condition is.FALSE. ( execute block2 ) the condition should be between parentheses IF condition THEN should be in the same line ELSE should be in a separate line ENDIF should be in a separate line
Example 1: Write a FORTRAN program that reads two integer numbers and prints the maximum. Solution: INTEGER NUM1, NUM2 PRINT*, 'ENTER TWO DIFFERENT INTEGER NUMBERS‘ READ*, NUM1, NUM2 PRINT*, 'INPUT: ', NUM1, NUM2 IF (NUM1.GT. NUM2) THEN PRINT*, 'MAXIMUM IS ', NUM1 ELSE PRINT*, 'MAXIMUM IS ', NUM2 ENDIF END
Example 2 : Write a FORTRAN program that reads an integer number and finds out if the number is even or odd. The program should print a proper message. Solution: INTEGER K PRINT*, 'ENTER AN INTEGER NUMBER' READ*, K PRINT*, 'INPUT: ', K IF (K/2*2.EQ. K) THEN PRINT*, ' THE NUMBER IS EVEN' ELSE PRINT*, ' THE NUMBER IS ODD' ENDIF END
IF Construct The general form of the IF construct is as follows: IF ( condition ) THEN BLOCK ENDIF
Example: Write a FORTRAN program that reads a grade. If the grade is not zero, the program must add 2 points to the grade. Then, the new grade should be printed. Solution: REAL GRADE PRINT*, 'ENTER A GRADE' READ*, GRADE PRINT*, 'ORIGINAL GRADE IS', GRADE IF (GRADE.GT. 0) THEN GRADE = GRADE PRINT*, 'SCALED GRADE IS ', GRADE ENDIF END
REAL A, B, C READ*, A, B, C IF ( A.LT. B ) THEN PRINT*, A + B IF ( B.GT. 4.0 ) THEN PRINT*, B*C ELSE PRINT*, C ENDIF ELSE PRINT*, A*B*C ENDIF END Assume the input for the program is: What is the output of the following program ? Exercises
INTEGER A, B, C READ*, A, B, C IF (A.GT.B) THEN IF (B.LT.C) THEN PRINT*, B ELSE PRINT*, C ENDIF ELSE PRINT*, A ENDIF PRINT*, A, B, C END Assume the input for the program is: What is the output of the following program ?
REAL A, B INTEGER K READ*, A, K, B IF (A.LT. 3.0) THEN PRINT*, A + K IF (B.LT. 2.5) THEN PRINT*, B**K ENDIF ELSE PRINT*, A*B*K ENDIF END Assume the input for the program is:
IF-ELSEIF Construct The general form of the IF- ELSEIF construct is as follows: IF ( condition–1 ) THEN BLOCK1 ELSEIF ( condition–2 ) THEN BLOCK2 ELSEIF ( condition–3 ) THEN BLOCK3... ELSEIF ( condition–n ) THEN BLOCKn ELSE BLOCKn+1 ENDIF
Example 1: Write a FORTRAN program that reads a student ID and his GPA out of 4.0. The program should print a message according to the following: REAL GPA INTEGER ID CHARACTER*10 STATE READ*, ID, GPA PRINT*, 'INPUT:', ID, GPA IF (GPA.GE. 3.5) THEN STATE = 'EXCELLENT' ELSEIF (GPA.GE. 3.0) THEN STATE = 'VERY GOOD' ELSEIF (GPA.GE. 2.5) THEN STATE = 'GOOD' ELSEIF (GPA.GE. 2.0) THEN STATE = 'FAIR' ELSE STATE = 'POOR' ENDIF PRINT*, ID,' ', STATE END ConditionMessage GPA >= 3.5EXCELLENT 3.5 > GPA >= 3.0VERY GOOD 3.0 > GPA >= 2.5GOOD 2.5 > GPA >= 2.0FAIR GPA < 2.0POOR
Example 2: Write a FORTRAN program that reads three integer numbers and finds and prints the maximum. Use IF-ELSEIF construct. Solution: INTEGER X1, X2, X3, MAX PRINT*, 'ENTER THREE DIFFERENT INTEGER NUMBERS' READ*, X1, X2, X3 PRINT*, 'THE NUMBERS ARE', X1, X2, X3 IF (X1.GT. X2. AND. X1.GT. X3) THEN MAX = X1 ELSEIF (X2.GT. X3) THEN MAX = X2 ELSE MAX = X3 ENDIF PRINT*, 'THE MAXIMUM OF THE THREE NUMBERS =', MAX END
Simple IF Construct It has the following general form: IF ( condition ) STATEMENT INTEGER ID REAL GPA CHARACTER*10 STATE READ*, ID, GPA PRINT*, 'INPUT:', ID, GPA IF (GPA.GE. 3.5) STATE = 'EXCELLENT' IF (GPA.GE. 3.0.AND. GPA.LT. 3.5) STATE = 'VERY GOOD' IF (GPA.GE. 2.5.AND. GPA.LT. 3.0) STATE = 'GOOD' IF (GPA.GE. 2.0.AND. GPA.LT. 2.5) STATE = 'FAIR' IF (GPA.LT. 2.0) STATE = 'POOR' PRINT*, ID, ' ', STATE END ConditionMessage GPA >= 3.5EXCELLENT 3.5 > GPA >= 3.0VERY GOOD 3.0 > GPA >= 2.5GOOD 2.5 > GPA >= 2.0FAIR GPA < 2.0POOR Example 1: Use simple IF constructs to write a FORTRAN program that reads a student ID and his GPA out of 4.0. The program should print a message according to the following:
Example 2: Write a FORTRAN program that reads three integer numbers and finds and prints the maximum. Use simple IF construct. Solution: INTEGER X1, X2, X3, MAX PRINT*, 'ENTER THREE DIFFERENT INTEGER NUMBERS' READ*, X1, X2, X3 PRINT*, 'THE NUMBERS ARE', X1, X2, X3 MAX = X1 IF (X2.GT. MAX) MAX = X2 IF (X3.GT. MAX) MAX = X3 PRINT*, 'THE MAXIMUM OF THE THREE NUMBERS IS', MAX END
Exercise What is the output of the following program ? INTEGER N, M N = 15 M = 10 IF (M.GE. N) THEN M = M + 1 IF (N.EQ. M) THEN N = N + 5 ELSEIF (N.GT. 0) THEN N = N + 10 ENDIF M = M - 1 ENDIF M = M - 1 PRINT*, M, N END
Exercise What is the output of the following program ? LOGICAL A, B INTEGER EX1, EX2, EX3 READ*, EX1, EX2, EX3 A = EX1.LE. EX2.OR. EX2.LE. EX3 B = EX2 + 2.GT. EX3*2 IF (B) THEN A =.NOT. A ELSE B =.NOT. B ENDIF PRINT*, A, B END Assume the input for the program is: