Title: Fundamentals of Fortran 90
1Fundamentals of Fortran 90
2Identifiers
An identifier is a name that a programmer creates
for items within a program including variables,
constants, and subprograms.
3Rules for Identifiers
- The first character must be a letter.
- The remaining characters may be letters, digits,
or the underscore. - There may be no more than 31 characters in an
identifier.
4Guidelines for Identifiers
- Capitalize the first letter
- If the identifier is composed of two words which
have been concatenated (run together) - Capitalize the first letter of each word
- Optionally, place an underscore between the words
- Select identifiers that have some significance to
the problem being solved
5Identifiers
- Valid TaxRate Last_Page Radius
- Not Valid Time-secs 3rdYear
6Variables
A variable is a memory location in the primary
memory of a computer.
- Each variable can store a single value
- Since computers use several different internal
representations for various types of data, a
specific data type must be associated with each
variable - The value can be changed while the program is
running, but the data type cannot be changed
7Data Types
Fortran 90 supports five basic data types
INTEGER REAL CHARACTER LOGICAL COMPLEX
Fortran 90 allows a programmer to define
additional data types to fit a specific
application.
8Declarations
- A declaration reserves variables (memory
locations) for each of the identifiers and
associates a data type with each variable - A declaration DOES NOT provide an initial value
for any variable
9Examples of Declarations
REAL A, B INTEGER K INTEGER
N LOGICAL IsThere CHARACTER (6) W, T, H17
- W, T and H are character variables
- W and T will hold exactly 6 characters
- H will hold exactly 17 characters
10Default Types
- Fortran does not require that variables be
declared - If a variable is referenced without being
declared, Fortran will give that variable a data
type based on the first letter of its identifier - I through N gt INTEGER
- otherwise gt REAL
11The IMPLICIT Statement
- The IMPLICIT statement can be used to override
Fortrans rules for assigning data types to
undeclared variables - Good programming style is to declare all
variables in a program - If the statement IMPLICIT NONE precedes the
first declaration, the Fortran 90 compiler will
ensure that every variable which is used in the
program has been explicitly declared
12Writing an INTEGER Value
- String of digits
- No commas
- Optional or - sign
- Examples 21856 -89 0
13Integers Valid Invalid
- Not Valid
- 5-
- --5
- 17.0
- 14,555
14Writing a REAL Value (1)
- Fixed Point Form ( xxx.xx )
- String of digits with decimal point
- No commas
- Optional or - sign
- Valid Real Values -54.873 0.0 6.5 18.0
0.56 - NOT Valid Reals
- 12,345.67 12
15Writing a REAL Value (2)
- Floating Point Form
- Analogous to scientific notation
- Basic form fEn
- Fixed point real ( f ) Mantissa
- letter E
- integer exponent ( n )
- Interpretation f10n
- Examples 6.57E-3 for 0.00657 -45.6E4
for -456000.0 0.7206E3 for 720.6
16Writing a Character Value
- Two forms
- string
- string
- Either form can be used
- Examples
- This is easy
- What is your name?
- Thats all folks
17Declaring a Constant
- This variant on the basic declaration is used to
give a symbolic name to a constant - The use of declared constants is considered to be
a better programming practice than writing the
value of the constant in the code itself unless
the constant is an integral part of a formula and
will never change value or precision
18Examples Using PARAMETER
INTEGER, PARAMETER NumStates 50 REAL,
PARAMETER PI 3.14159 CHARACTER (),
PARAMETER Prompt nextgt
19Assignment Statement Syntax
The value represented by the expression on the
right hand side of the equal sign is stored in
the target variable, replacing its previous value
20Assignment Statement Uses
- Store a specific value in a variable N 32
X -3.5 W cat - Copy a value from one variable to another T
N - Store a computed value in a variable X 3.5
W
21Numeric Conversions on Assignment
INTEGER K, N, M REAL W, C, Y N
6.8 X 53 K -6 W K Y 7.8 M N
Integer value 6 will be stored in N
(truncation rather than rounding)
Real value 53.0 will be stored in X
Integer value -6 will be stored in K Real value
-6.0 will be stored in W
Real value 7.8 will be stored in Y Integer value
6 will be stored in M
22Character Padding and Truncation on Assignment
CHARACTER (5) A, B CHARACTER (8) C A
frog B elephant C B
frog will be stored in A (padded out to five
characters with blank at end)
eleph will be stored in B (extra characters
are truncated from the right end)
eleph will be stored in C (B contained
eleph which must be padded to 8 characters)
Note The symbol represents a blank space
23Numeric Expressions
A numeric expression is any mathematically valid
sequence of operators, operands, and parentheses.
An operand is a constant, variable, or value
returned by a function.
24Arithmetic Operators
add - subtract multiply /
divide exponentiation AB means AB
25Result Types
- The result type is determined for each
mathematical operation - The type is based on the type of the operands
- If both operands are INTEGER, the result is an
integer - If at least one operand is REAL, the result is a
real number
26Precedence Rules
- Evaluate subexpressions in parentheses
- Determine the value returned by any function call
- Evaluate (right to left)235 is the same
as 2(35) - Evaluate and / from left to right
- Evaluate and - from left to right
27Precedence Rules
- All exponentiations are performed first
consecutive exponentiations are performed from
right to left - 2 3 2 2 9 512
- All multiplications and divisions are performed
next, in the order in which they appear from left
to right. - 10 / 5 2 2 2 4
28Precedence Rules
- The additions and subtractions are performed
last, in the order in which they appear from left
to right - 10 8 2 3 19
- Another example
- 2 4 2 / 2 2 16 / 2 2 8 10
29Characteristics of the / Operator
- If numerator and denominator are integers, the
quotient is truncated to an integer - 23/5 is 4 rather than 4.6
- If either the numerator or denominator is a real
number, the quotient is a real number - 12/9.0 is 1.3333
- 3.6/1.2 is 3.0
- 8.6/2 is 4.3
- 23.0/5.0 is 4.6
30Characteristics of the Operator
Consider AB
- If B is a nonnegative integer, Fortran uses
repeated multiplication to evaluate AB - If B is a real number, Fortran uses the
expression eBln(A) to approximate AB. - Ex. (-4.0) 2.0 is undefined, because the
logarithms of negative values are not defined.
31Type Conversions
- Using both integers and reals in a computation is
a poor programming practice. - Fortran provides some type conversion functions
to convert a value to a different data type. - Type conversions should be used to avoid mixed
data types in an expression. - The original value is not changed, but the
converted value is placed in a temporary
(unnamed) variable.
32Type Conversion Examples
INTEGER gt REAL
REAL gt INTEGER
INTEGER N REAL X N 15 X 3.7 REAL(N)
INTEGER K REAL Y Y 2.8 K INT(Y) 5
X 3.7 15.0 N is unchanged
K 2 5 Y is unchanged
33A Few Functions
A good programmer makes use of functions that are
provided as part of the programming language.
Fortran 90 has an extensive collection of
intrinsic functions. (See Appendix D)
SQRT(X) Preferred to
X(0.5) ABS(X)
Absolute value SIN(X), COS(X), TAN(X) Angles
must be in radians EXP(X)
eX LOG(X)
ln X LOG10(X)
log10X MOD(A,B) A mod B
34Form of a Program
------------ Header portion -------------
Initial comment block PROGRAM statement
--------- Specification portion ---------
IMPLICIT NONE Type specification
statements -------- Execution portion
------------ READ, PRINT, and assignments
-------- Ending portion --------------- END
PROGRAM statement
35Structure of a Line of Source Code
- Maximum of 132 characters.
- Can begin anywhere on the line.
- Two or more statements can appear on a single
line if they are separated by semicolons. - Blanks can be inserted to improve comprehension.
- A comment can appear at the end of the line.
- If a statement label is used, it must appear
first.A label is an unsigned integer with at
most 5 digits. - If a statement is too long, place an ampersand,
, at the end and continue on the next line.
36Comments
- Everything from the exclamation mark (!), to the
end of the line is a comment - A comment can appear on a line by itself or at
the end of some other line - Comments are included in a program to provide a
person with information about the program - Comments are ignored by the compiler
37The PROGRAM Statement
- Provides a name (identifier) for the program
- Optional but strongly recommended
- Required by most programming standards
- Must be the first statement, but can be preceded
by comments
38The END PROGRAM Statement
- This is the only required statement
- Must be the last line in the source code file
- program_name must match that on the PROGRAM
statement - Omit the program-name if there is no program
statement
39The STOP Statement
- Causes the program to stop its execution at that
point - More than one STOP statement can be included
- This statement is not required, but is
recommended by some coding standards
40Simple Input (list-directed)
- input_list is a list of variables which will
receive the values that are read - Each READ statement begins reading a new line of
data - A READ statement can read more than one line of
data
41Simple Output (list-directed)
- output_list is a list of items to be printed
- character string literals will be printed exactly
- variables will have their values printed
- Each PRINT statement starts a new line of output
- Fortran will use its internal rules to determine
the location and appearance of values on each line