My Drive

06. Input / Output 본문

programming

06. Input / Output

sunnyeo.park 2014. 10. 27. 00:08

1. 간단한 입출력 ( terminal에서 )

◦ example :

real :: a

print*,'Enter a real number'

read*,a

print*,'input was ',a


2. 일반적인 입출력

read (*,*)    /    write (*,*)        →        write (unit=*, fmt=*)

• Units    입출력 유닛, 어디서 데이터를 읽어오고 어디에 데이터를 쓸지

( *은 read에서는 키보드, write에서는 스크린을 의미 )

◦ example :

open(1,file='output')

write(1,*) 'Hello, world!'

close(1)

• Error handling (end=n, err=m)

◦ example :

open (77,file='numbers')

i=0

do

read(77,*,end=200,err=100) t        ! 끝나면 end(200)로 에러가 나면 err(100)으로

i=i+1

if(i.gt.m) then

write(*,*) 'array too small.', ' increase m and recompile.'

close(77)

stop

endif

a(i)=t

enddo

100 continue

write(*,*) ’read error in line’,i+1

close(77)

stop

200 continue

write(*,*) i,’ numbers read’

close(77)

write(*,*) a(1:i)

end

• character 변수에 Input/output

◦ example :

character (len=20) :: a

write(a,*) "Hello, world!"

• format

◦ example :

write(*,700) 1,1.23,(7.,8.),'Hello',.true.      ! 700 번 label의 format을 적용하여 출력

write(*,701)                                             701 번 label의 format을 적용하여 출력

write(*,702)                                             702 번 label의 format을 적용하여 출력

700 format(i5,e12.4e3,2f8.2,1x,a3,l7)

701 format('12345678901234567890123456789012345678901234567890')

702 format('         1         2         3         4         5')

write(*,'(i5,e12.4e3,2f8.2,1x,a3,l7)') 1,1.23,(7.,8.),'Hello',.true.

◦ 출력 결과 :

1     0.1230E+001     7.00     8.00 Hel     T

12345678901234567890123456789012345678901234567890

1         2         3         4         5

1     0.1230E+001     7.00     8.00 Hel     T

만약에 format이 인자 수보다 적으면, 다음 줄로 가서 첫 포맷부터 다시 출력

◦ example :

write(*,700) 1,1.23,(7.,8.),’Hello’,.true.,3,4.

700 format(i5,e12.4e3,2f8.2,1x,a3,l7)

◦ 출력 결과 :

1     0.1230E+001     7.00     8.00     Hel     T

3     0.4000E+001

포맷은 다음과 같이 3가지 방법으로 표현할 수 있음

◦ example :        다른 줄에 라벨로 따로 명시

real :: x

character (len=8) :: a

...

write(*,123) x

123 format(es10.2)

◦ example :        직접적으로 명시

write(*,’(es10.2)’) x

◦ example :        변수에 명시

a=’(es10.2)’

write(*,a) x

   integer : i, b, o, z

  real : d, e, f, g, es, en

character : a

    logical : l

      other : n (number)     repeat following descriptor n times

    x                   space

          /                   new line

 ' . . . '                    literal text

( . . . )                    group

   p                   scale

◦ example : 











'programming' 카테고리의 다른 글

python colored output  (0) 2015.07.26
07. Arrays  (0) 2014.10.27
05. Decisions  (0) 2014.10.25
04. Loops  (0) 2014.10.25
03. Expressions  (0) 2014.10.25
Comments