Top Banner
1 Chapter 2 Basic Elements of Fortran Programming
35
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Chapter 2 Basic Elements of Fortran Programming.

1

Chapter 2

Basic Elements of

Fortran Programming

Page 2: 1 Chapter 2 Basic Elements of Fortran Programming.

2

Character set (Table 2-1)

26: UPPER CASE A – Z 26: lower case a – z 10: Digits 0 – 9 1: Underscore _ 5: Arithmetic symbols + - * / ** 17: Other symbols ( ) . = , ‘ $ : ! “ % & ; < > ? and blank

Page 3: 1 Chapter 2 Basic Elements of Fortran Programming.

3

Case insensitive Example:

Apple apple ApPLe ApplE

Example: read (*,*) Name write (*,*) name

Page 4: 1 Chapter 2 Basic Elements of Fortran Programming.

4

Fortran Statements Executable statements:

Actions taken by program Examples: Read (*,*) x, y Z = x + y Write (*,*) “The result = “, z

Nonexecutable statements information for proper operation of program

Examples: Program name ! This is a comment End program

Page 5: 1 Chapter 2 Basic Elements of Fortran Programming.

5

Fortran Statements Each line is 132 characters long If it does not fit, use & to split a statement

Example: Output = input1 + input2 Output = input1 & + input2 Output = input1 & & + input2

A statement can be split up to 40 lines

Page 6: 1 Chapter 2 Basic Elements of Fortran Programming.

6

Fortran Statements Statements can be named using a label Example: program counter 10 integer :: count = 5 20 write (*,*) “count = “, count end program A label should be unique It does not indicate line numbers It can be used more than once It does not indicate the program sequence/order Not used in modern Fortran 90/95

Page 7: 1 Chapter 2 Basic Elements of Fortran Programming.

7

Fortran Statements Comments: Ignored by Fortran compiler can appear any where in a line start with ! to the end of the line Examples: ! This is a counting program a = b + 1 ! This statement adds one ! Can I put a comment here? a = b + 1

Page 8: 1 Chapter 2 Basic Elements of Fortran Programming.

8

Fortran Program Structure Declaration section

Program’s name Types of variables and constants

Execution section Actions to be performed by program

Termination section Stopping (ending) program execution

Page 9: 1 Chapter 2 Basic Elements of Fortran Programming.

9

Fortran Program Structure Example: program first_program ! This is my first program integer, parameter :: x = 3, y=4 integer :: z z = x + y write (*,*) “ x + y = “ , z end program

Page 10: 1 Chapter 2 Basic Elements of Fortran Programming.

10

Rules of NAMES Any name (program/variable/constant) can be used only once

program counter integer :: counter = 5 write (*,*) “counter = “, counter end program

Names <= 31 characters this_is_a_very_long_variable_name

Spaces not allowed Alphabets + digits + _ Must start with alphabet

The following is not acceptable: Program 1st_user

Exercise: What’s wrong with this name: A$

Page 11: 1 Chapter 2 Basic Elements of Fortran Programming.

11

Program styles A programmer should use a consistent style:

Example 1:

PROGRAM example1REAL :: x, y, z

WRITE (*,*) “ Enter x, y “

WRITE (*,*) “ ”

READ (*,*) x, y, z

z = x + y

WRITE (*,*) “x + y = “, z

END PROGRAM

Page 12: 1 Chapter 2 Basic Elements of Fortran Programming.

12

Program styles Another programmer can use a different style:

Example 2:

program example1real :: x, y, z

write (*,*) “ Enter x, y “

write (*,*) “ ”

read (*,*) x, y, z

z = x + y

write (*,*) “x + y = “, z

end program

Page 13: 1 Chapter 2 Basic Elements of Fortran Programming.

13

Program styles This style is not acceptable (but it works!):

Example 3:

program example1real :: x, y, z

WRITE (*,*) “ Enter x, y “

write (*,*) “ ”

READ (*,*) x, y, z

z = x + y

write (*,*) “x + y = “, z

end PROGRAM

Page 14: 1 Chapter 2 Basic Elements of Fortran Programming.

14

Variable vs. Constant Constant:

Once declared, cannot be changed during execution If you try to change it, you get an error Example:

REAL, PARAMETER :: GRADE = 88 GRADE = GRADE / 100

Variable: Can change value during execution Example

REAL :: GRADE = 88 GRADE = GRADE / 100

Page 15: 1 Chapter 2 Basic Elements of Fortran Programming.

15

Data dictionary In the header of the program Example: program converter ! This program converts US Dollars to Omani Rials. ! We use the variables: ! USD: US Dollars ! OR: Omani Rials … … end program

Page 16: 1 Chapter 2 Basic Elements of Fortran Programming.

16

More about data types 3 Numeric:

INTEGER REAL COMPLEX (not covered)

1 Strings of Characters: CHARACTER

1 Logical: LOGICAL

Others: Chapter 12: derived data types (not covered in this course)

Page 17: 1 Chapter 2 Basic Elements of Fortran Programming.

17

More about data types INTEGER:

Either constant or variable +ve, -ve, zero 1,000,000 (error: commas not allowed) -100. (error: decimal point not allowed)

Page 18: 1 Chapter 2 Basic Elements of Fortran Programming.

18

More about data types REAL:

Constants must have a decimal points ( 300.) 10,000,000. (error: commas not allowed) 105 (error: decimal point missing) 123E5 (error: decimal point missing in mantissa) -34E2.5 (error: decimal point not allowed in exponents)

Page 19: 1 Chapter 2 Basic Elements of Fortran Programming.

19

More about data types CHARACTER: Example1

Character :: name name = ‘Ramadhan’ Write (*,*) name

Example2 Character (len=8) :: name name = ‘Ramadhan’ Write (*,*) name

Example3 Character (len=14) :: word1 Character (len=6) :: word2 word1 = ‘Ramadhan’ Word2 = ‘kareem’ Write (*,*) word1, word2

Page 20: 1 Chapter 2 Basic Elements of Fortran Programming.

20

More about data types CHARACTER:

Using single/double quotes Example1:

Name = Abdullah Name = ‘Abdullah‘ Name = “Abdullah” Name = ‘Abdullah” Write (*,*) ‘I read qura’n daily’ Write (*,*) ‘I read qura’’n daily’ Write (*,*) “I read qura’n daily”

Each one surrounds the other: ‘ “Solar energy is a clean source of energy” ‘ “He’s wasting time watching useless TV programs”

Page 21: 1 Chapter 2 Basic Elements of Fortran Programming.

21

Implicit none It checks that variables’ types are declared Without it:

Any undeclared variable starting with I, J, K, L, M, N are integers (default typing)

Other variables are real (default typing) Examples:

Program checking read (*,*) monthly_income annual_income = monthly_income * 12 write (*,*) “Annual income = “, annual_income End program

Page 22: 1 Chapter 2 Basic Elements of Fortran Programming.

22

Initializing Variables Three ways to initialize

Initialize at declaration section Using assignment statement at execution section Using READ to initialize from input device

Non-initialized variables might or might not produce an error. Program might work in some machines and fail in others or at the same machine might work some times and fail other times depending on the values stored at the memory location.

Rule: All variables must be initialized before using them.

Page 23: 1 Chapter 2 Basic Elements of Fortran Programming.

23

Input/output statments READ (*,*)

Standard input device (keyboard) Free input format (decided by variable type) e.g: (try inputting more values for each statement)

READ i READ i, j READ i, j, x, char(Note: character with specific length will be left justified with all others filled with

blank if not entered) WRITE(*,*)

Standard output device (screen) Free output format E.g:

WRITE(*,*) x WRITE(*,*) ‘Result is: ’, x WRITE(*,*) ‘Result is: ’, COS(x) WRITE(*,*) ‘Result is: ’, x, ‘ And cosine will be: ’, cos(x)

Page 24: 1 Chapter 2 Basic Elements of Fortran Programming.

24

Arithmetic operators Assignment:

Variable_name = expression Example:

Days = months * 30 = is called assignment operator

Binary arithmetic operators (e.g. a + b): + Addition - Subtraction * Multiplication / Division ** Exponentiation

Unary arithmetic operators (e.g. –b) + 34 - a

Page 25: 1 Chapter 2 Basic Elements of Fortran Programming.

25

Rules No two operators may occur side by side

A * - b A ** -2 A ** (-2)

Implied multiplication is illegal x ( y + z ) x * ( y + z )

Use parentheses to group terms 2 ** ((8+2)/5)

Page 26: 1 Chapter 2 Basic Elements of Fortran Programming.

26

Real Arithmetic (const. & var.) 3. / 4. = 0.75 4. / 4. = 1. 5. / 4. = 1.25 6. / 4. = 1.5 7. / 4. = 1.75 8. / 4. = 2. 9. / 4. = 2.25 1. / 3. = 0.3333333

Page 27: 1 Chapter 2 Basic Elements of Fortran Programming.

27

Integer Arithmetic (const. & var.) 3 / 4 = 0 4 / 4 = 1 5 / 4 = 1 6 / 4 = 1 7 / 4 = 1 8 / 4 = 2 9 / 4 = 2 Truncation of fractions

Page 28: 1 Chapter 2 Basic Elements of Fortran Programming.

28

Be careful..

3. * (1. / 3.) ≠ 1. 3. * (0.3333333) = 0.9999999 2. * (1. / 2.) = 1. 2. * (0.5) = 1.

Page 29: 1 Chapter 2 Basic Elements of Fortran Programming.

29

Evaluating expressions Example:

Distance = 0.5 * accel * time **2 Distance = (0.5 * accel * time) **2

Rules:Parentheses first ( innermost)

2 * ( 3 + ( 4 – 2 ) – 2 )Exponentials (right to left)

2 **2 **3 = 2 **8 = 256Multiplication & Division (left to right)

2 * 4 / 6Additions & Subtractions (left to right)

2 + 6 - 12

Page 30: 1 Chapter 2 Basic Elements of Fortran Programming.

30

Evaluating expressions Exercise: Power = (2 – 6) + ( 2 – 1 * (5+5) **2 **0) – 8 = (2 – 6) + ( 2 – 1 * (10) **2 **0) – 8 = (2 – 6) + ( 2 – 1 * (10) **1) – 8 = (2 – 6) + ( 2 – 1 * 10) – 8 = (2 – 6) + ( 2 – 10) – 8 = – 4 + ( – 8) – 8 = – 4 – 8 – 8 = – 20 Note: parentheses must be balanced.

Page 31: 1 Chapter 2 Basic Elements of Fortran Programming.

31

Mixed-Mode expressions

1 + 1 /4 = 1

1. + 1 / 4 = 1.

1 + 1. / 4 = 1.25

Rule: An integer is automatically converted into real in case of

mixed arithmetic

Page 32: 1 Chapter 2 Basic Elements of Fortran Programming.

32

Mixed-Mode expressions 1 + 1 /4 = 1

1. + 1 / 4 = 1.

1 + 1. / 4 = 1.25

Rule: An integer is automatically converted into real in case of mixed arithmetic Raising a negative number to real power is not possible

2 ** 2 = 4 -2 ** 2 = 4 4 ** 0.5 = 2 -2 ** 0.5 ??

Page 33: 1 Chapter 2 Basic Elements of Fortran Programming.

33

Data conversion To convert real to integer, use INT

Anything after the decimal point is truncated Example: INT(3.3) = 3 INT(3.) = 3 INT(0.3) = 0

To convert integer to real, use REAL A decimal point is added Example: REAL(3) = 3.

Be careful: NINT ≠ INT NINT is used to round to the nearest integer Example: NINT(3.2) = 3 NINT(3.5) = 4 INT(3.5) = 3

Page 34: 1 Chapter 2 Basic Elements of Fortran Programming.

34

INTRINSIC FUNCTIONS Functions:

Generic functions (accept more than one type of inputs) Specific functions (accept one data type only)

Examples: SQRT(X) ABS(X) SIN(X), COS(X), TAN(X) [X in radian] ASIN(X), ACOS(X), ATAN(X) [result in radian] EXP(X) LOG(X), LOG10(X) MAX(A,B), MIN(A,B) MOD (A,B)

More (Table 2-4)

Page 35: 1 Chapter 2 Basic Elements of Fortran Programming.

35

Debugging Fortran Program Errors (bugs) Eliminating error (debugging) Types of errors:

Syntax errors Run-time errors Logical errors

Good practice: Use IMPLICIT NONE Echo all inputs Initialize all variables Use parentheses properly If statement is very long break it into multiple lines Make sure all function and variables in same units