1 Week 2 n Organizational matters n Fortran 90 (subset F): Basics n Example programs in detail
2 Top-down programming n 4 basic steps –Specify the problem clearly –Analyse the problem and break it down into its fundamental elements –Code the program according to the plan developed at step 2 –Test the program exhaustively, and repeat steps 2 and 3 as necessary until the program works in all situations that you can envisage
3 Program = Data Types + Algorithms n Data types: what you work on n Algorithms: what you do with them
4 Structure of a program (in Fortran 90) Heading ( program, module, etc.) n specification part n execution part n subprogram part end program statement
5 program Radioactive_Decay ! ! This program calculates the amount of a radioactive substance that ! remains after a specified time, given an initial amount and its ! half-life. Variables used are: ! InitalAmount : initial amount of substance (mg) ! HalfLife : half-life of substance (days) ! Time : time at which the amount remaining is calculated (days) ! AmountRemaining : amount of substance remaining (mg) ! ! Input: InitialAmount, HalfLife, Time ! Output: AmountRemaining ! implicit none real :: InitialAmount, HalfLife, Time, AmountRemaining ! Get values for InitialAmount, HalfLife, and Time. print *, "Enter initial amount (mg) of substance, its half-life (days)" print *, "and time (days) at which to find amount remaining:" read *, InitialAmount, HalfLife, Time ! Compute the amount remaining at the specified time. AmountRemaining = InitialAmount * 0.5 ** (Time / HalfLife) ! Display AmountRemaining. print *, "Amount remaining =", AmountRemaining, "mg" end program Radioactive_Decay
6 Data Types n Five basic types: –integer –real –complex –character –logical n Data types of ‘container’ classes
7 Integers n a whole number (positive, negative or zero) n no decimal point Examples
8 Reals n Numbers with decimal fractions n There has to be decimal point Examples Another representation: 1.952e e e-8
9 Character n Sequence of symbols from the Fortran character set n Enclosed between double quotes Examples "This is a string" "I do, I don't" "1234abc345"
10 Logical n Can take only two values:.TRUE..FALSE.
11 Identifiers n Names used to identify programs, constants, variables, etc. n Identifiers must Begin with a letter n This can be followed by up to 30 letters, digits, undescores n Be careful with the case: lower or upper case letters
12 Identifiers Examples Current Decay_Rate pressure an_identifier_with_a_long_name the_best_program
13 Constants n is an integer constant n is a real constant n "What a nice day!" is a character constant
14 Variables: Variables: It is usual for people to associate a name or phrase with a piece of information. For example, the phrase "today's date" has an associated numeric value which varies day by day. This is similar to the concept of a program variable; a program variable is some object (named by the programmer) which uniquely identifies a piece of data stored in memory. n Variables are value containers n Compiler associates with a variable a memory location n Value of a variable at any time is the value stored in the associated memory location at that time
15 Variables MEMORY Hello World Message Payment
16 Declarations of Variables Form: type-specifier :: list n Declares that the identifiers in the list have the specified type n Type statements must appear in the specification part of the program Examples integer :: number_years, counts, months real :: Mass, Velocity, Acceleration character (len=12) :: MyName, YourName
17 implicit none n It should be placed at the beginning of the specification part n You have to declare all variables you will be using in the program!
18 Variable initialization n All variables are initially undefined Initialization in the declarations Examples: real :: W=1.2, z=5.678, mass=4.56 integer :: year=1998, count=0
19 Named constants Form: type-specifier, parameter :: list Examples integer, parameter :: INITCOUNT = 30 real, parameter :: G = 9.81 n It's a good idea to write named constants in upper case
20 Arithmetic operations n Variables and constants can be processed by using operations and functions appropriated to their types. n Operations
21
22 Operations Examples To calculate B 2 - 4AC B**2 - 4*A*C n Types are important: 9/4 = 2 9.0/4.0 = 2.25 Mixed-mode expressions: /5 /5.0 4.6
23 Priority rules n All exponentiations are performed first; consecutive exponentiations are performed from right to left n All multiplications and divisions are performed next; in the order in which they appear from left to right n Additions and subtractions are performed last, in the order in which they appear from left to right
24 Some examples 2 ** 3 ** 2 = 512 n 10/5 *2 = 2 * 2 = 4 n To calculate 5 1/3 5.0**(1.0/3.0) but not 5.0**(1/3) 5.0**0 1.0
25 Library functions abs(x) Absolute value of x cos(x) Cosine of x radians exp(x) Exponential function int(x) Integer part of x sqrt(x) Square root of x
26 Assignment statement Form: variable = expression Assigns the value of expression to variable Assignment is not a statement of algebraic equality; it is a replacement statement Examples Density = Volume = 3.2 Mass = Density*Volume WeightRatio = log(Mass/90.)
27 Programs need to communicate with users! n Two kinds of I/O (for the moment!): –Formatted I/O –List-directed I/O List-directed output print *, output-list write (unit=*, fmt=*) output-list List-directed input read *, input-list read (unit=*, fmt=*) input-list
28 List-directed I/O Examples print *, "Tell me your birthday" write (unit=*, fmt=*) a, b, c**2 read *, day, month, year
29
30
31
32
33
34
35
36
37
38