728x90
반응형
Fortran 프로그램의 일반적인 형식
형식
program 프로그램명
선언 부분
실행 부분
부프로그램 부분
end program 프로그램명
예문
program Example
implicit none
real :: distance, velocity, &
time
real :: list
integer :: list
character(len = n ) :: list ! 또는
character( n ) :: list
형선언자 :: v_1 = e_1, .... , v_n = c_n
형선언자, parameter :: n_1 = c1, ... n_n = c_n
read *, input-list
print *, output-list
stop
end program Example
포트란95 기본 코딩 방법
- 포트란은 영문 대소문자 구분하지 않음.
- 사용가능한 특수문자 (= + - * / ( ) , . ’ ” ! $ : ; % & < > ? \ _)
- 하나의 프로그래밍 line은 최대 132 문자까지 작성가능. 1~132 컬럼 사이에서 자유롭게 작성
- line과 line을 연결하기 위해서는 앰퍼샌드( & )를 첫 줄 맨앞과 다음 줄 맨 뒤에 사용. 최대 39개 줄까지 연결 가능
- 하나의 line에 하나 이상의 명령문을 포함하려면 세미콜론( ; )으로 구분한다.
- 느낌표( ! ) 뒤의 내용은 주석이다.
- 문번호가 필요하면 모든 문장의 맨 먼저 나와야 하고, 1~99999 정수를 사용할 수 있다.
- 문법적 오류 감소를 위해서 각 변수 하나하나를 변수명, 변수형, 변수의 기억 장소 크기 등을 사용자가 철저히 명시적으로 정의할 것. implicit none 을 사용하면, 명시적 선언이 우선하게 됨.
- 다층화 및 블록화 시킨 변수구조형 선언 (do순환구조나 블록 if 구조를 사용하여 프로그램의 블록화 또는 구조화 가능)
- 철저한 구조화 프로그램 작성
- 문번호의 사용 제한 (문번호 사용하지 말것!)
프로시저를 이용한 포트란 코딩 법
- 프로시저의 시작문 (module, program, subroutine, function, block data)
- 선언문(use 문, implicit none 문, 변수 선언문, ...)
- 실행문 (표현식, 선택구조, 순환구조, ...)
- 프로시저의 종료문 (end 문)
- 내부 프로시저는 반드시 상위 프로시저에서만 사용가능
- 외부 프로시저는 별도로 컴파일되는 독립 프로시저. 반드시 주프로시저 밖에서 작성함.
- 프로시저 종료는 반드시 end 문 사용
- 각 프로시저에서 모듈을 호출할때는 use 문 사용하고, 프로시저 시작문 바로 다음 줄에 작성해야 함.
- 사용자가 변수 형과 속성을 정의하고 사용하겠다는 의미로 반드시 implicit none 문을 사용
- 변수선언은 변수형 :: 변수명들 로 표기한다. 이중 콜론(::)은 변수형과 변수명을 구분하는 용도
예문
!모듈 프로시저 (반드시 주프로그램 앞에 위치해야)
module variablegroup
implicit none
integer :: i, j
real(kind=16) :: a, b
end module variablegroup
! 주 프로시저 (모든 연산과정을 제어하는 기능)
program mainprocedure
use variablegroup
implicit none
integer :: k
real(kind=16) :: c
i=1; j=2; a=3; b=4
call internalprocedure(c)
call externalprocedure(k)
write(*, "(' a+b = ', f10.2)") c
write(*, "(' +j=', i10)") k
contains ! 이하 프로그램이 내부 프로시저임을 나타내는 명령어
! 내부 프로시저 (주 프로시저의 일부분에 해당하는 프로시저)
subroutine internalprocedure(d)
use variablegroup !주 프로시저와 공유하므로 생략 가능
implicit none !주 프로시저와 공유하므로 생략 가능
real(kind=16) :: d
d=a+b
end subroutine internalprocedure
end program mainprocedure
! 외부 프로시저
subroutine externalprocedure(p)
use variablegroup
implicit none
integer :: p
p=i+j
end subroutine externalprocedure
728x90
반응형