Format 없이 자료를 읽고 쓰는 방법

Download Report

Transcript Format 없이 자료를 읽고 쓰는 방법

2. Fortran 2
2.1 자료의 읽기와 쓰기
2.2 조건문
2.3 삼각함수의 사용
1) 자료의 읽기와 쓰기
• Format 없이 자료를 읽고 쓰는 방법
read(10,*) data1
write(20,*) data2
==============
Integer, dimension(3):: idata
Real, dimension(5):: adata
Read(10,*) idata, adata
자료가 100 번 반복되는 경우
Do ii=1,100
Read(10,*) idata, adata
enddo
• Read(10,*) : 한 줄을 건너 띰
• 두 줄을 건너 띠고자 할 때
read(10,*)
read(10,*)
자료의 Format
정수형
rIw
16I6
실수형 rFw.d
6f9.3
read(10,’(4i4,6f9.2)’) idata, adata
실습과제
• nojang2014.dat를 열어 Format을 주고 자료를 읽고 기
온과 상대습도의 연평균 값을 계산하여 화면에 출력하시
오.
2) 조건문
조건을 나타내는 명령문 IF
• 등호와 부등호의 표현
의미
표현 new style
같음
eq
==
같지 않음
ne
/=
크다
gt
>
크거나 같다 ge
>=
작다
lt
<
작거나 같다 le
• 논리식
3<4 : True
3==4 : False
• 조합 논리 연산자
논리식 A 와 B 가 주어진 경우
A
False
False
True
True
B
False
True
False
True
A. and. B
False
False
False
True
A. or. B
False
True
True
True
형식
<형식1>
If(논리식) then
Statement 1
Endif
예) if(ii.gt.10) then
Sum=sum+idata
endif
<형식 2>
If(논리식) then
Statement 1
Elseif
Statement 2
Else
Statement 3
Endif
예)
If(mon.ge.3.and.mon.le.5) then
Isea=1
Elseif(mon.ge.6.and.mon.le.8) then
Isea=2
Elseif(mon.ge.9.and.mon.le.11) then
Isea=3
Else
Isea=4
Endif
<형식 3>
If(논리식) statement
예)
If(mon.ge.3.and.mon.le.5) isea=1
If(mon.ge.6.and.mon.le.8) isea=2
If(mon.ge.9.and.mon.le.11) isea=3
If(mon.ge.12.or.mon.le.2) isea=4
실습과제
• nojang2014.dat를 열어 Format을 주고 자료를 읽고 기
온과 상대습도, 기압의 월평균 값을 계산하여 output.dat
라는 파일에 저장하시오.
• 평균을 계산할 때 결측 (-999.0) 을 제외시키시오.
• Output format (5i5, 3f9.3)
3)삼각함수의 사용
• 사용되는 삼각함수 : sin, cos, tan, cot, asin, acos, atan
asin: sin-1, acos: cos-1 , atan: tan-1
sin-1(0.5)=/6
• 사용법: 삼각함수 안에 들어가는 각은 radian 단위를 사용한다.
예 sin(90* 3.1415/180)
u
• 바람자료의 계산
u와 v 성분으로부터 풍향을 계산하는 방법
wd=atan(u/v)*180./3.1415
v
If(u.le.0..and.v.lt.0.) then
wd=atan(u/v)*180./3.1415
elseif(v.gt.0.) then
wd=atan(u/v)*180./3.1415+180
elseif(u.gt.0..and.v.lt.0.) then
wd=atan(u/v)*180./3.1415+360
elseif(u.gt.0..and.v.eq.0.) then
wd=270
elseif(u.lt.0..and.v.eq.0.) then
wd=90
else
wd=0.
endif
• 풍향 풍속으로 부터 u, v 계산하기
u=-ws*sin(wd*3.1415/180.)
v=-ws*cos(wd*3.1415/180.)
u
v
wd
ws
실습과제
• nojang2014.dat를 열어 Format을 주고 자료를 읽고 기
온과 상대습도, u와 v, 일사량, 기압의 일평균 값을 계산
하여 output.dat라는 파일에 저장하시오.
• 바람의 경우 풍향과 풍속으로 바꾸어 저장하시오.
• 평균을 계산할 때 결측 (-999.0) 을 제외시키시오.
• Output format (3i5, 6f9.3)
• 연도, 월, 일, 기온, 상대습도, 풍향, 풍속, 일사량, 기압
변수의 선언: 1차원 배열
파일 열기
DO ii=1,365
변수의 초기화
DO kk=1,48
read 변수
if 문(-999 가 아닐 때) then
합을 계산; 개수 계산
endif
enddo
평균 계산
U, v를 풍향과 풍속으로 바꿈
Write
Enddo
end
예제
• nojang2014.dat를 열어 Format을 주고 자료를 읽고 기
온과 상대습도, u와 v, 일사량, 기압의 월평균 값을 계산
하여 output.dat라는 파일에 저장하시오.
• 평균을 계산할 때 결측 (-999.0) 을 제외시키시오.
• Output format (2i5, 6f9.3)
• 연도, 월, 기온, 상대습도, u, v, 일사량, 기압
Program 1
변수의 선언: 1차원 배열
파일 열기
DO ii=1,12
변수의 초기화
DO jj=1,Mon(ii)
DO kk=1,48
read 변수
if (-999 가 아닐 때) then
합을 냄; 개수 계산
endif
enddo
enddo
평균
Write
enddo
end
Program 2
변수의 선언 : 2차원 배열
파일 열기
변수의 초기화
DO ii=1, 365
DO kk=1,48
read 변수
if (-999 가 아닐 때) then
합을 냄; 개수 계산
endif
enddo
Enddo
Do jj=1,12
평균
Write
enddo
end
실습과제
• nojang2014.dat를 열어 Format을 주고 자료를 읽고 기
온과 상대습도, u와 v, 일사량, 기압의 연평균 일변화 값
을 계산하여 diurnal.dat라는 파일에 저장하시오.
• 평균을 계산할 때 결측 (-999.0) 을 제외시키시오.
• Output format (i5, 6f9.3)
• 시간, 기온, 상대습도, u, v, 일사량, 기압