1 / 35

Chapter 2

Chapter 2. Basic Elements of Fortran Programming. 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.

ordell
Download Presentation

Chapter 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  3. Case insensitive • Example: • Apple • apple • ApPLe • ApplE • Example: • read (*,*) Name • write (*,*) name

  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

  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

  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

  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

  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

  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

  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$

  11. Program styles • A programmer should use a consistent style: • Example 1: PROGRAM example1 REAL :: x, y, z WRITE (*,*) “ Enter x, y “ WRITE (*,*) “ ” READ (*,*) x, y, z z = x + y WRITE (*,*) “x + y = “, z END PROGRAM

  12. Program styles • Another programmer can use a different style: • Example 2: program example1 real :: x, y, z write (*,*) “ Enter x, y “ write (*,*) “ ” read (*,*) x, y, z z = x + y write (*,*) “x + y = “, z end program

  13. Program styles • This style is not acceptable (but it works!): • Example 3: program example1 real :: x, y, z WRITE (*,*) “ Enter x, y “ write (*,*) “ ” READ (*,*) x, y, z z = x + y write (*,*) “x + y = “, z end PROGRAM

  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

  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

  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)

  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)

  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)

  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

  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”

  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

  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.

  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)

  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

  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)

  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

  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

  28. Be careful.. • 3. * (1. / 3.) ≠ 1. • 3. * (0.3333333) = 0.9999999 • 2. * (1. / 2.) = 1. • 2. * (0.5) = 1.

  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 = 256 Multiplication & Division (left to right) 2 * 4 / 6 Additions & Subtractions (left to right) 2 + 6 - 12

  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.

  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

  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 ??

  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

  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)

  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

More Related