430 likes | 575 Views
Fundamentals of Fortran 90. Basic Building Blocks. Identifiers. An identifier is a name that a programmer creates for items within a program including: variables, constants, and subprograms. Rules for Identifiers. The first character must be a letter.
E N D
Fundamentals of Fortran 90 Basic Building Blocks
Identifiers An identifier is a name that a programmer creates for items within a program including: variables, constants, and subprograms.
Rules 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.
Guidelines 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
Identifiers • Valid:TaxRate Last_Page Radius • Not ValidTime-secs 3rdYear
Variables 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
Data 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.
Syntax type_name :: list of identifiers separated by commas Declarations • 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
Examples of Declarations REAL :: A, B INTEGER :: K INTEGER :: N LOGICAL :: IsThere CHARACTER (6) :: W, T, H*17 • W, T and H are character variables • W and T will hold exactly 6 characters • H will hold exactly 17 characters
Default 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 ==> INTEGER • otherwise ==> REAL
The IMPLICIT Statement • The IMPLICIT statement can be used to override Fortran’s 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
Writing an INTEGER Value • String of digits • No commas • Optional + or - sign • Examples: 21856 -89 0
Valid 234 +236 -225 0 Not Valid 5- --5 17.0 14,555 Integers: Valid & Invalid
Writing 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
Writing 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 f*10n • Examples: 6.57E-3 for 0.00657 -45.6E4 for -456000.0 0.7206E+3 for 720.6
Writing a Character Value • Two forms • ‘string’ • “string” • Either form can be used • Examples • “This is easy” • ‘What is your name?’ • “That’s all folks”
Syntax type_name, PARAMETER :: name = value Declaring 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
Examples Using PARAMETER INTEGER, PARAMETER :: NumStates = 50 REAL, PARAMETER :: PI = 3.14159 CHARACTER (*), PARAMETER :: Prompt = “next>“
Syntax target_variable = expression Assignment 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
Assignment Statement Uses • Store a specific value in a variableN = 32 ; X = -3.5 ; W = ‘cat’ • Copy a value from one variable to anotherT = N • Store a computed value in a variable X = 3.5 + W
Numeric 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
Character 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
Numeric 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.
Arithmetic Operators + add - subtract * multiply / divide ** exponentiationA**B means AB
Result 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
Precedence Rules • Evaluate subexpressions in parentheses • Determine the value returned by any function call • Evaluate ** (right to left)2**3**5 is the same as 2**(3**5) • Evaluate * and / from left to right • Evaluate + and - from left to right
Precedence 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
Precedence 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 / 22 + 810
Characteristics 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
Characteristics of the ** Operator • If B is a nonnegative integer, Fortran uses repeated multiplication to evaluate A**B • If B is a real number, Fortran uses the expression eB*ln(A) to approximate A**B. • Ex. (-4.0) ** 2.0 is undefined, because the logarithms of negative values are not defined. Consider A**B
Type 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.
Type Conversion Examples INTEGER ==> REAL REAL ==> 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
A 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
Form 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
Structure 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.
Syntax ! comment Comments • 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
Syntax PROGRAM program_name The 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
Syntax END PROGRAM program_name The 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
Syntax STOP or STOP n !n is an integer value The 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
Syntax READ *, input_list Simple 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
Syntax PRINT *, output_list Simple 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