Title: More Control over
1- More Control over
- INPUT and OUTPUT (I / O)
The interface between the user and the
computer Formats and edit descriptors Input
editing Output editing read, write and print
statements More powerful formats
2More Control over INPUT and OUTPUT (I / O)
The input and output facilities of any
programming language are extremely important,
because it is through these features of the
language that communication between the user and
the program is carried out. F, therefore,
provides facilities for input and output at two
quite different levels. As are given before,
list-directed input and output statements that
provide the capability for straightforward input
from the keyboard and also the output to the
display or printer. These list-directed i/o -
statements, however, allow the user very little
control over the source or layout of the input
data.
3More Control over INPUT and OUTPUT (I / O)
F allows the programmer, to specify exactly
how the data will be presented and interpreted,
from which of the available input units it is to
be read how the results are to be displayed to
which of the available output units the results
are to be sent.
4INTERFACE between the USER and the COMPUTER
- Considering the following 9 digit input data
there are enormous number of possible
interpretations - Data 1 2 3 4 5 6 7 8 9
- 1 2 3 4 5 6 7 8 9
- 1, 2, 3, 4, 5, 6, 7, 8, and 9
- - 123, 456, 789
- 12345 . 6789
- 1.23, 0.45, 67, 8900
- etc.
5FORMATS and EDIT DESCRIPTORS
- An input statement must contain three distinct
types of information - where the data is to be found
- where it is to be stored in the computers
memory - how it is to be interpreted
- Similarly, an output statement must define
- where the results are currently stored
- where they are to be sent
- in what form they are to be displayed.
6INPUT EDITING
EXAMPLES of INPUT DATA 123456789 read (
i 3, i 3, i 3 ) , n1, n2, n3 ! n1
123, n2 456, n5 789 read ( t 5, i 2,
t 6, i 2, t 2, i 4 ) , x, y, z ! x 56,
y 67, z 2345 read ( f 9.4 ) , real_num
! real_num 12345.6789 read ( f 3.1, f
2.2, f 3.0 ) , r1, r2, r3 ! r1 12.3, r2
0.45, r3 678.0
123456789
123456789
123456789
7EXAMPLE for formatting of real numbers using f
edit descriptor depending on the two
different INPUT DATA
read ( f 3.1, f 2.2, f 3.0 ) , s1, s2,
s3 DATA 1 DATA 2
123456789 .23.56.8
---------------------- ----------------- s1
contains 12.3 0.23 s2 contains
0.45 0.5 s3 contains 678.0 6.8
8EXAMPLEs for formatting of an input real number
in different ways using a edit descriptor
- real number is 361.764
-
- 361.764
- 3.617642
- 3617643
- 0.0361764e4
- 3617.64d-1
- 3.61764 E 2
- 361.7640
9EXAMPLEs for formatting of an input character
type using a edit descriptor
- character ( len 10 ) ch1
- character ( len 6 ) ch2
- character ( len 15 ) ch3
- Depending on the above-given declaration the
formats may have the following forms in read
statements - read ( a10, a6, a15 ) , ch1, ch2, ch3
- or
- read ( a, a, a ) , n1, n2, n3
10LOGICAL DATA - INPUT EDITING
The edit descriptor is used with logical data,
and takes the following form, where upper case
L is used to avoid the potential confusion with
the digit 1 that can be caused to human
readers by using the lower-case form L
w w caharacters are used to derive either a
true value, a false value or an error.
11 12LOGICAL DATA - INPUT EDITING
- Any of the following are acceptable as
representing true - t
- true
- .T
- .true.
- truthful
- while the following will all be interpreted as
false -
- F
- False
- .f.
- futile
13OUTPUT EDITING
The following figure shows the main edit
descriptor that are available for
output. EXAMPLE for i edit descriptor tom
23 dick 715 harry -12 print
, ( i 5, i 5, i 5 ), tom, dick,
harry This statement produce following line of
output (where the symbol represents a space
) 23715-12
14OUTPUT EDITING
EXAMPLE for f edit descriptor x
3.14159 y -275.3024 z 12.9999 print ,
( f 10.3, f 10.3, f 10.3 ), x, y,
z This statement produce following line of
output (where the symbol represents a space
) 3.142-275.302-13.000
15OUTPUT EDITING
EXAMPLE program tabular_output real,
parameter third 1.0 / 3.0 real
x integer i do i 1, 10
x i print ( f 15.4, f 15.4, f
15.4 ), x, sqrt (x), xthird end
do end program tabular_output
16OUTPUT EDITING
In the above-given program the same edit
descriptor has been repeated several times. A
number, called a repeat count, may be placed
before the i, f, a or L edit
descriptors to indicate how many times they are
to be repeated. Depending on this, the format
could be written more succinctly and It is
possible to write it more clearly.
EXAMPLE print ( i 5, i 5, i 5, f 6.2,
f 6.2, f 6.2, f 6.2 ), x, y, z, d, e, f, g or
better print ( 3 i 5, 4 f 6.2 ), x,
y, z, d, e, f, g
17Exercise 2
- program test1
- integer a,b
- realc,d
- print,"please enter an integer values which is
more than 6 digit" - read "(i4,t1,i4,t2,f4.1,t1,f4.2)",a,b,c,d
- print "(i4,a,i5,a,i5,a,f6.2,a,f6.2,a,f8.3)",a,
- " minus",b," is",a-b,"",c," minus",d, "
is",c-d - end program test1
18Exercise 3
- program test2
- character(len6)a,b,c
- Print,Please write your name
- read "(a8,t1,a4,t1,a)",a,b,c
- print "(a10,tr12,a4,tr30,a)",a,b,c
- print "(a,t10,a,t52,a)",a,b,c
- end program test2
19- program five_digit_numbers
- integeri
- integer,dimension(12)arr
- arr (/12345, 23456, 34567, 45678,
- 90123, 12340, 24680, 46802,
- 13579, 35791, 57913, 69649/)
- ! output for single column format example
- print,"Single column of numbers"
- do i 1 , 12
- print "(t8,i2,1x,i5)",i,arr(i)
- end do
- ! output for four rows of three numbers
- print "(2/t3,a/)","Four rows of three numbers "
- print "(t8,i2,1x,3(i5,1x))", 1,arr(13)
- print "(t8,i2,1x,3(i5,1x))", 2,arr(46)
- print "(t8,i2,1x,3(i5,1x))", 3,arr(79)
- print "(t8,i2,1x,3(i5,1x))", 4,arr(1012)
- ! a single line of numbers
20- program multi_record_example
- real a,b
- a 12.25
- b 23.50
- write(unit6,fmt"(t10,a,3/,a,f6.2,a,f6.2,a,///,f7
.2,2/,a,f10.3)") - "Multi-record example",
- " The sum of ",a," and",b," is", ab,
- " Their product is",ab
- end program multi_record_example
21- program railway_time_table
- integer,parametern5
- integeri
- real,dimension(n)arrival,departure
- integer,dimension(n)platform
- character(len10),dimension(n)destination
- arrival(/9.23, 9.28, 10.41, 10.48, 11.15/)
- departure(/9.25, 9.32, 10.53, 10.53, 11.18/)
- platform(/2, 1, 3, 2, 1/)
- destination(/"Edinburgh"," London","Sheffield",
- "Newcastle"," London"/)
- write(unit6,fmt"(/a/2x,7(''),3x,9(''),3x,8(''
),3x,11(''))") - " Arrival Departure Platform
Destination" - do i 1 , n
- write(unit6,fmt"(3x,f5.2,6x,f5.2,8x,i1,8x,a10)")
- arrival(i),departure(i),platform(i),desti
nation(i) - end do
- end program railway_time_table
22- program test2
- character(len6)a,b,c
- print , "........................ STEPPER...
Entering PROGRAM. Press Enter" - print,"program test2"
- read
- print , "........................ STEPPER...
Before READ. Press Enter" - print,"read ""(a8,t1,a4,t1,a)"",a,b,c"
- read
- read "(a8,t1,a4,t1,a)",a,b,c
- print , "........................ STEPPER...
After READ. Press Enter" - read
- print "(a8,tr2,a4,tr3,a)",a,b,c
- print,"print ""(a8,tr2,a4,tr3,a)"",a,b,c"
- print , "........................ STEPPER...
After PRINT. Press Enter" - read
- print "(a,t10,a,tr2,a)",a,b,c
- print,"print ""(a,t10,a,tr2,a)"",a,b,c"
- print , "........................ STEPPER...
After PRINT. Press Enter" - read
23- program tabular_output
- real, parameter third 1.0 / 3.0
- real x
- integer i
- do i 1 , 10
- x i
- ! print "(f15.4, f15.4, f15.4)",
x,sqrt(x),xthird - print "(3f15.4)", x,sqrt(x),xthird
- end do
- end program tabular_output
24- program aa
- character (len50) a, b, c, d, e
- integer i, j
- a "aaa bbbb ccccc dddddd eeeeeee"
- print , a
- i index(a," ")1
- b a(i-2)
- print , b
- c a(i)
- print , c
- j index (c," ") 1
- d c(j-2)
- print , d
- e d(j)
- print , e
- end program aa
25 program character_searc_function !examle for
index, you can olso try scan and verify
character (len50) a, b, c, d, e integer
i, j a "bbb cccc ddddd eeeeee"
print , a i index(a,"d") !Calculates how
many chracter before and including "c"
print,"i",i b a(i-2) print , b
c a(i) print , c j index (c," ")
1 d c(j-2) print , d e
d(j) print , e end program
character_searc_function
26! Assignment statements with constant
expressions. program C01 implicit none
integer, parameter NAME_LENGTH 21 real
Avogadros_Number integer Many
complex Z logical Flag character
(len NAME_LENGTH) Name ! start program C01
Many 346021 ! Integer type
Avogadros_Number 6.0221367e23 ! Real type
Z (0.0, 1.75e8) ! Complex type Flag
.true. Name " Mustafa " ! Character type,
length 21 write (unit , fmt ) Many,
Avogadros_Number, Z, Flag, Name stop end
program C01
27! Assignment statements with variable
expressions. module C02M implicit none
public Assign_2 contains subroutine
Assign_2( ) ! Type declarations with
initialization real, save Y 1.23, Pi
3.141592 integer, save Counts 173
character (len 8), save I " Optics "
logical, save Flag .true. ! Type
declarations without initialization real
X, Theta integer Many character
(len 8) K logical Done ! start
subroutine Assign_2 X Y ! Real type
Y X Theta Pi Many Counts !
Integer type K I ! Character type,
length 8 Done Flag ! Logical type
write (unit , fmt ) Y, Pi, X, Theta,
Counts, Many, I, K, Flag, Done return
end subroutine Assign_2 end module C02M
program C02 use C02M implicit none !
start program C02 call Assign_2( ) stop
end program C02
28! Assignment statements with arithmetic
expressions. program C03 implicit none
real, parameter GRAVITY 9.8 real
Old_Vol, Old_Press, Old_Temp, New_Vol, New_Press,
New_Temp real Mass, Velocity,
Kinetic_Energy, Pressure, Density, Height,
Bernoulli integer, parameter J 6
integer I ! start program C03 I J 1
write (unit , fmt ) I read (unit ,
fmt ) Old_Vol, Old_Press, Old_Temp, New_Press,
New_Temp New_Vol Old_Vol (Old_Press /
New_Press) (New_Temp / Old_Temp) write
(unit , fmt ) Old_Vol, Old_Press, Old_Temp,
New_Vol, New_Press, New_Temp read (unit ,
fmt ) Mass, Velocity Kinetic_Energy 0.5
Mass Velocity 2 write (unit , fmt
) Mass, Velocity, Kinetic_Energy read (unit
, fmt ) Pressure, Density, Velocity,
Height Bernoulli Pressure Density (0.5
Velocity 2 GRAVITY Height) write
(unit , fmt ) Pressure, Density, Velocity,
Height, Bernoulli stop end program C03
29program aa character (len50) a, b, c, d, e
integer i, j a "aaa bbbb ccccc dddddd
eeeeeee" print , a i index(a," ")1 b
a(i-2) print , b c a(i) print , c j index
(c," ") 1 d c(j-2) print , d e d(j) print
, e end program aa program 0206 ! Asks the
hour and the minute values of the ! present time
and displays it as a sentence. integer hh,mm
print , " Input the hour, in the 24 hours
format." read , hh print , " Input the minute."
read , mm print , "" print , " THE TIME IS
",mm," MINUTES AFTER ",hh end program 0206 !
Assignment statements with constant expressions.
program C01 implicit none integer, parameter
NAME_LENGTH 21 real Avogadros_Number integer
Many complex Z logical Flag character
(len NAME_LENGTH) Name ! start program C01
Many 346021 ! Integer type Avogadros_Number
6.0221367e23 ! Real type Z (0.0, 1.75e8) !
Complex type Flag .true. Name " Mustafa
Sezer" ! Character type, length 21 write (unit
, fmt ) Many, Avogadros_Number, Z, Flag, Name
stop end program C01
30program C02 use C02M implicit none ! start
program C02 call Assign_2( ) stop end program C02
! Assignment statements with variable
expressions. module C02M implicit none public
Assign_2 contains subroutine Assign_2( ) ! Type
declarations with initialization real, save Y
1.23, Pi 3.141592 integer, save Counts
173 character (len 8), save I " Optics "
logical, save Flag .true. ! Type
declarations without initialization real X,
Theta integer Many character (len 8) K
logical Done ! start subroutine Assign_2 X Y
! Real type Y X Theta Pi Many Counts !
Integer type K I ! Character type, length 8
Done Flag ! Logical type write (unit , fmt
) Y, Pi, X, Theta, Counts, Many, I, K, Flag,
Done return end subroutine Assign_2 end module
C02M ! Assignment statements with arithmetic
expressions. program C03 implicit none real,
parameter GRAVITY 9.8 real Old_Vol,
Old_Press, Old_Temp, New_Vol, New_Press, New_Temp
real Mass, Velocity, Kinetic_Energy, Pressure,
Density, Height, Bernoulli integer, parameter
J 6 integer I ! start program C03 I J 1
write (unit , fmt ) I read (unit , fmt
) Old_Vol, Old_Press, Old_Temp, New_Press,
New_Temp New_Vol Old_Vol (Old_Press /
New_Press) (New_Temp / Old_Temp) write (unit
, fmt ) Old_Vol, Old_Press, Old_Temp,
New_Vol, New_Press, New_Temp read (unit , fmt
) Mass, Velocity Kinetic_Energy 0.5 Mass
Velocity 2 write (unit , fmt ) Mass,
Velocity, Kinetic_Energy read (unit , fmt )
Pressure, Density, Velocity, Height Bernoulli
Pressure Density (0.5 Velocity 2
GRAVITY Height) write (unit , fmt )
Pressure, Density, Velocity, Height, Bernoulli
stop end program C03