Chapter 5 Input / Output. 2 Control over input & output The input and output are basically...

33
Chapter 5 Input / Output
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    234
  • download

    0

Transcript of Chapter 5 Input / Output. 2 Control over input & output The input and output are basically...

Page 1: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

Chapter 5

Input / Output

Page 2: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

2

Control over input & output The input and output are basically facilitates a

communication between the user and the program.

KeyboardDisk fileMagnetic typeetc.

DisplayPrinterDisk fileMagnetic typeetc.

Convert to internal form

Convert to external form

Real

Integer

Character

etc.

Input:

Output:

Computer’s memory

External media

Input and output editingInput and output editing

Page 3: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

3

Types of I/O Statements

There are two basic types of I/O statements

in Fortran 90

1) List-directed (Without Formatted)

2) Formatted (Programmer Formatted)

Page 4: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

4

Formatted Output

The simpler of two output statements in Fortran isprint statement print format-specifier, output-listwhere format-specifier is one of the following:1) * (an asterisk)2) A character constant or a character variable (or

expression or array) whose value specifies the format for the output.

3) The label of a format statementprint statement displays the values of the items in the

output-list on a new line.

Page 5: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

5

Formatted Output

The format-specifier specifies the format in which values of the expressions in the output list are to be displayed.

In the second type of format-specifier, the formatting information is given as a character string that consists of format descriptors, separated by commas and enclosed in parentheses:

‘(list of format descriptors) ‘ or “(list of format descriptors) “

In the third case, the formatting information is supplied by a format statement whose label is specified. This statement has the form

label format (list of format descriptors)where label is an integer in the range 1 through 99999.

Page 6: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

6

Formatted Output

For some Fortran compilers, the first character of each line of output directed to a printer is used to control the vertical spacing.

black Normal spacing: advance to the next line before printing0 Double spacing: skip one line before printing1 Advance to top of next page before printing+ Overprint the last line printed

There are many format descriptors that may be used in format specifiers. A list is presented in the following table.

Page 7: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

7

Format Descriptors

Forms Use

iw Next w characters as an integer data

aw Next w characters as characters

a A character string

Lw Next w characters as the representation of a logical value

fw.d Next w characters as a real number with d digits after thedecimal point

tc Read or output the next item starting at character position c

Page 8: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

8

Format Descriptors

Forms Use

Esw.d Real data in scientific notation

Enw.d Real data in engineering notation

tln Read or output the next item starting n characterpositions before (tl) or

trn after (tr) the current position

nX Horizontal spacing

/ Vertical spacing

Page 9: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

9

Formatted Output

Example:

print ‘ (I3) ‘, N

The format descriptor I3 specifies that the value to be printed is an integer and is to be printed in the first three positions of a line. If the value of N is 15, the three positions are filled with _15 (where _ denotes a blank).

Page 10: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

10

Integer Output- The I descriptor

Integer values that are output using an I descriptor are right-justified in fields of the specified sizes; that is each value is displayed so that its last digit appears in the rightmost position of the field. For example, if the values of the integer variables

Number, L, and Kappa are

Integer :: Number = 3, L = 5378, Kappa = -12345then the statements

print `(1X, 2I5, I7, I10)` , Number, Number -3, L, Kappaprint `(1X, 2I5.5, I7, I10.7)` , Number, Number -3, L, Kappaprint `(1X, 2I5.0, I7, I10)` , Number, Number -3, L, Kappaor

Page 11: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

11

Integer Output- The I descriptor

Print 30, Number, Number -3, L, KappaPrint 31, Number, Number -3, L, KappaPrint 32, Number, Number -3, L, Kappa30 format (1X, 2I5, I7, I10)31 format (1X, 2I5.2, I7, I10.7)32 format (1X, 2I5.0, I7, I10)produce the following output:

|_ _ _ _ _ 3 _ _ _ _ 0 _ _ _ 5378 _ _ _ _ -12345|_ _ _ _ 0 3 _ _ _ 0 0 _ _ _ 5378 _ _ - 0 012345|_ _ _ _ _ 3 _ _ _ _ _ _ _ _ 5378 _ _ _ _ -12345

Page 12: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

12

Real Output- The F, E, ES and EN Descriptors

Integer and real outputs are right-justified in their fields. In a Fw.d descriptor, w specifies the total width of the field in which to display a real value, and d is the number of digits to the right of the decimal point.

Example:integer :: In = 625, Out = -19real :: A = 7.5, B = 0.182, C = 625.327using the statementprint `(1X, 2I4, 2F6.3, F8,3)`, In, Out, A, B, C

The resulting output is|_ _ 6 2 5 _ - 1 9 _ 7 . 5 0 0 _ 0 . 1 8 2 _ 6 2 5 . 3 2 7

Page 13: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

13

Real Output- The F, E, ES and EN Descriptors

For a descriptor Fw.d, one should have w >= d+3 to allow for the sign of the number, the first digit, and the decimal point (-,0.).

Let’s see the E descriptor with an example: The values of real variables A, B, C and D are given by real :: A=0.12345E8, B=0.0237, C=4.6E-12, D=-76.1684E12 the statement print ‘(1X, 2E15.5, E15.4, E14.4)’, A, B, C, D produces output like the following

_ _ _ _ _0.12345E+08_ _ _ _0.23700E-01_ _ _ _ _0.4600E-11_ _ _-0.7617E+14

As with the F descriptor, a field is asterisk-filled if it is not large enough for the value.

Page 14: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

14

Real Output- The F, E, ES and EN Descriptors

The scientific descriptor ES is used in the same manner as the E descriptor. Only difference is that the values are normalized.

The engineering descriptor EN also is used in the same manner as the E descriptor. Only difference is that exponent is constrained to be a multiple of 3.

Page 15: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

15

Character Output

Character data may also be displayed by using an A format descriptor of the form rA or rAw. In the first form, the field width is determined by the length of the character value being displayed.

In the second form, if the field width exceeds the length of the character value, that value is right-justified in the field.

Page 16: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

16

Positional descriptors - X and T

A descriptor of the form nX can be used to insert n blanks in an output line. A tab descriptor of the form Tc causes the next output field to begin at the specified position c on the current line.

For example:print 75, “John Q. Doe”, “CPSC”, Number75 format (1X, A11, 3X, A4, 2X, I3)or 75 format (1X, A11, T16, A4, 2X, I3)will produce the output

_ John_Q._Doe_ _ _CPSC_ _141

Page 17: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

17

Repeating Groups and The Slash (/) Descriptor

It is possible to repeat some format descriptors by preceding them with a repetition indicator.For example 3F10.2 is equivalent to F10.2, F10.2, F10.2.

A single output statement can be used to display values on more than one line, with different formats, by using a slash (/) descriptor.

Consider the following statement:

print (fmt=88) “Values”, N, A, M, B, C, D88 format (1X, A, 3/ 1X, 2(I10, F10.2) // 1X, 2E15.7)

Page 18: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

18

Formatted Input

read statement has two forms: the simpler form is,read format-specifier, input-list

For example: read 5, I, J, KINTEGER INPUT

Integer data can be read using the I descriptor of the form rIw, where w indicates the width of the field.

For example: integer :: I, J, K read ‘(I6, I4, I7)’, I, J, Kor read 5, I, J, K 5 format (I6, I4, I7)

Page 19: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

19

Formatted Input

REAL INPUTWe can enter a real number in 2 ways:1) Enter the numbers without decimal points. For example: enter the following values for real variables A, B, C, D

and E. A=6.25, B=-1.9, C=75.0, D=.182, E=625.327 read ‘(F3.2, 2F3.1, F3.3, F6.3)’, A, B, C, D, Eenter the data in the form 625-19750182625327

2) Enter the decimal point as part of the input value read ‘(4F5.0, F8.0)’, A, B, C, D, Eenter the data in the following form _6.25_-1.9_ _75._.182_625.327

Page 20: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

20

Formatted Input

CHARACTER INPUT When a read statement whose input list contains a

character variable is executed, all characters in the field associated with the corresponding A descriptor are read.

For example: Assume the line of data is: Fourscore_and_seven_years_agoand read by statementscharacter(6) :: Speech1,Speech2read ‘ (2A) ‘, Speech1, Speech2the values assigned to Speech1 and Speech2 are:Speech1: FourscSpeech2: ore_an

Page 21: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

21

Reading & Exercises

ELLIS BOOK

Do example 3.2 and self-test exercise 3.2 on pages 60 and 63.

Read pages between 56 and 60.

Page 22: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

22

Write Statement

The write statement has the following form write (control-list) output-listwhere control-list may include items selected from the following:1) A unit specifier, which is a integer expression whose value

designates the output device unit = unit-specifier or simply unit-specifier2) A format specifier that may be any of the forms allowed in

the print statement. fmt = format-specifier or simply format-specifier3) An ADVANCE=clause of the form advance =character-expressionwhere the value of character-expression is either “no” or “yes”.4) Any other items that are especially useful in file processing.

Page 23: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

23

Read Statement

The read statement has the following form read (control-list) input-listwhere control-list may include items selected from the following:1) A unit specifier, which is a integer expression whose value

designates the input device unit = unit-specifier or simply unit-specifier2) A format specifier that may be any of the forms allowed in

the print statement. fmt = format-specifier or simply format-specifier3) An ADVANCE=clause of the form advance =character-expressionwhere the value of character-expression is either “no” or “yes”.4) An iostat=clause to detect an input error or end-of-file

condition.

Page 24: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

24

Reading & Exercise

ELLIS BOOK

Read pages between 230 and 258.

Study self-test exercises 9.2 and summary.

Page 25: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

25

File Processing

Storing/reading large data sets in/from a file are more convenient for data processing.

OPENING FILES In order to open a file in Fortran a unit number must be

connected to it and several items of information about the file must be supplied.

Open statement is the following form: open (open_specifier_list)where open-list includes:1) unit = indicating a unit number.2) file = (character-expression ) indicating the name of the file.3) status = (character-expression ) where the value of

character-expression is one of

Page 26: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

26

File Processing (Opening files)

“old”“new”“replace”(or unknown). And “scratch”4) action= allowed_actionswhere allowed_actions are a character expression whose value is

one of“read”“write”“readwrite” (default) (status=scratch)5) position=character-expression where the value of character-

expression is one of“rewind” (The file at its initial point)“append” (The file at its end)

Page 27: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

27

File Processing (Opening files)

“asis” (Leave its position unchanged)

6) IOSTAT=status-variable where status-variable is an integer variable to which the value zero is assigned if the file is opened successfully and a positive value is assigned otherwise.

NOTE: If file name is not presented then status=“scratch” must be specified

EXAMPLE:

open (unit = 12, File = “INFO.DAT”, status = “old”, action = “read”, position = “rewind”, iostat = OpenStatus)

where OpenStatus is an integer variable.

Sometimes it is convenient to declare a character variable to store the name of file in a way that the user input the name.

Page 28: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

28

File Processing (Opening files)

EXAMPLE:Character (12) :: FileNamewrite (unit=*, ‘(1X, A)’, advance =‘no’) “Enter the name of data

file:”read (unit=*, fmt=*) FileNameand then use the following open statement:

open (unit = 12, file = FileName, status =“old”, action = “read”, &

position = “rewind”, iostat = OpenStatus)

if the file is successfully opened, the status variable OpenStatus will be set to 0.

If (OpenStatus > 0) stop “ *** cannot open file *** “

Page 29: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

29

File Processing (Closing files)

The close statement has a function opposite that of the open statement and it is used to disconnect a file from its unit number.

Close (close-specifier-list)where close-specifier-list must include a unit specifier and may

include other items such as iostat and status. status may take character expressions such as keep or delete.

FILE INPUT/OUTPUTOnce a file has been disconnected to a unit number, data can be

read from or written to that file using the general forms of the read and write statements. During this process iostat can be positive negative or zero.

1) A positive value; in case of an input error occurs2) A negative value; if the end of data is encountered but no input

error occurs

Page 30: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

30

File Processing (File Input/Output)

3) Zero value; if neither an input error nor the end of data occurs.Example:

do read (12, fmt=*, iostat = InputStatus) Code, Temperature,

Pressure! If end of data, terminate repetition if (InputStatus < 0) exit! If input error, stop execution if (InputStatus >0) stop “ *** Input error ***”! Otherwise continue processing data Count = Count + 1

.. SumOfPressures+Pressureend do

Page 31: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

31

File Processing (rewind/backspace)

Sometimes it is necessary to reposition a file so that data values that have already been read can be read again.

To reposition a file at its beginning use a rewind statement rewind (auxlist)

To reposition a file at the beginning of the proceeding line use backspace statement

backspace (auxlist)

auxlist consist of a unit specifier and, optionally, an iostat specifier.

Page 32: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

32

End of File To permit detection of the end-of-file mark, an exeption specifier

of the form iostat=Integer variable may be included in the Control list of the read statement:

read (unit = *, fmt = *, iostat = Integer_variable) Input listThe designated Integer variable will be zero after a normal read

operation; it will have a negative value if an end-of-file mark is read.

Example:integer :: E_O_Fdoread (unit=*, fmt=*, iostat=E_O_F) Next_Datum ! Set E_O_Fif (E_O_F < 0) exit ! Test E_O_F...enddo

Page 33: Chapter 5 Input / Output. 2 Control over input & output  The input and output are basically facilitates a communication between the user and the program.

33

Exercises on I/O operations

ELLIS BOOKRead pages between 230-260.Do self exercises 9.1 and 9.2 on

pages 248 and 254.

Exercises on File processingRead pages between 264-288.