# preface

Fortran77 expressions and assignments

# 1, Expression

## 1. Constant expression

Constants are the simplest expressions. There are six constants, corresponding to six data types.

constant | data type |
---|---|

Integer | 1， 0， -100， 32767， +15( ± 2 ∗ 1 0 9 \pm2*10^9 ±2∗109) |

Real (real 32-bit) | 1.0, - 0.25, 2.0E6, 3.33E-1 (E6 is multiplied by 1 0 6 10^6 106) |

Double precision (64 bit double precision floating point number) | 2.0D-1, 1D99, (D99, i.e ∗ 1 0 99 *10^{99} ∗1099) |

Complex (complex) | (2, - 3), (1., 9.9E-1) (only Integer or real in parentheses) (real part, imaginary part) |

Logical constant | .TRUE. .FALSE. (there are only two values and they should be enclosed by two...) |

Character (symbol constant) | ‘ABC’, ‘Anything goes!’, ‘ It's a nice day |

## 2. Non constant expression

The simplest non constant expression is:

operand operator operand

x + y

**It's power 2 * * 3, which is the third power of 2

In addition, you should pay attention to the division operation, If two integers are divided, it is integer division, removing the decimal. For example: 3 / 2 = 1 But if it's 3/ 2 = 1.5 (because 3. Is a decimal)

# 2, Assignment

Assignment consists of the following types:

variable_name = expression

area = pi * r**2

# 3, Type conversion

When different types of data types appear in an expression, type conversion occurs, implicit or explicit.

For example:

real x x=x+1

This program will increase x by 1 and turn 1 into a decimal. This is implicit conversion.

However, it is recommended to use cast in key computing parts. Fortran provides the following cast functions.

int real dble ichar char

ichar converts a character to an integer, while char converts an integer to a character

# 4, Logical expression operator

.LT. // < .LE. // <= .GT. // > .GE. // >= .EQ. // = .NE. // NOT Equal

# 5, Logical variables and assignment

Commonly used in IF statement

.AND. .OR. .NOT. Logical a, b a=.TRUE. b = a .AND 3 .LT. 5/2

# 6, if statement

Conditional statements play an important role in any programming language. The most common conditional statement in Fortran is the IF statement. IF statements take several forms.

## 1. Form 1

There is only one expression statement after if. This needs to be written on one line, which is in the position of columns 7-72 (each space is a column)

if (logical expression) executable statement if (X .LT. 0) X=-X

## 2. Form 2

If you need to execute many statements after if, you have to use the following if expression statement.

if (logical expression) then executable statement endif

if (logical expression) then statements elseif (logical expression) then statements : : else statements endif

## 3,Nested if statements. Nested IF statement

if statements can be nested at several levels. In order to ensure readability, you need to use appropriate indentation.

if (x .GT. 0) then if (x .GE. y) then write(*,*) 'x is positive and x >= y' else write(*,*) 'x is positive and x <= y'

IF statements can be nested, but you should avoid using a lot of nesting.

# 7, Circular statement

There is only one do loop statement in Fortran, which is similar to for loop. There is another one that looks very low, that is, if and go to statements.

## 1.do-loop

Do loop can be used for simple counting.

c2345678 integer i, n, sum sum = 0 do 10 i = 1, n sum = sum +i write(*,*) 'i = ', i write(*,*) 'sum = ', sum 10 continue

This 10 is the statement label, which is generally an integer multiple of 10

The general do loop template is:

c2345678 do label var = expr1(start), expr2(end), expr3(step) statements label continue

The VaR of do loop is generally increasing by 1. This loop variable var should not be changed by other statements in the loop, otherwise there will be great misunderstanding. Many Fortran compilers allow the use of enddo statements. The advantage is that do and enddo are a closed loop.

Unlike other loops, Fortran loop loops evaluate, start, end, and step only once. For example, the following loop is not an infinite loop.

c2345678 integer i,j read (*,*) j do 20 i = 1, j j = j + 1 20 continue write (*,*) j

## 2.while-loop

c2345678 while (ligical exp) do statements enddo

c2345678 do while (ligical expr) statements enddo

Still, the above program still needs to become an if and goto statement

label if (logical expr) then statements goto label endif

## 3.if and goto loop

c2345678 label if (logical expr) then statements goto label endif

c2345678 Integer n n=1 10 if (n .le. 100) then write (*,*) n n = n*2 goto 10 endif

## 4.until-loops

c2345678 do statements until (logical expr)

The above program is the combination of if and goto

c2345678 label continue statements if (logical expr) goto label