18. Fortran 프로그램 형식(Fortran programming style)
프로그램 형식으로는 여러 가지 다른 방법이 있지만 여기서는 상당히 많은 사람들이 채택하는 일반적인 지침을 알려주고자 한다.
이식성(Portability)
이식성(다른 컴퓨터 시스템에서도 사용가능한 정도)을 확신하려면 Fortran 77 표준만을 사용하라. 이 tutorial에서 표준 Fortran 77이 아닌 것은 소문자를 사용한 것 뿐이다.
프로그램 구조(Program structure)
전체 프로그램 구조를 모듈화(modular)하라. 각각의 subprogram은 잘 정의된 한 가지 작업을 하여야 한다. 많은 사람들이 각각의 subprogram을 별개의 file로 만들기 좋아 한다.
설명(Comments)
다음을 되풀이하라 : 규칙에 맞는 code를 작성하라 그리고 source에 무슨 일일 하는지 설명하는 말을 더 해라! 각각의 subprogram에 입출력 변수와 프로그램이 하는 일을 설명하는 머릿말을 더하는 것은 매우 중요하다.
들여쓰기(Indentation)
loop와 if 구조는 이 tutorial에서 처럼 항상 알맞게 들여써라.
변수(Variables)
항상 모든 변수를 선언하라. 묵시적 type 선언을 하지마라! 벼누이름을 최대 6자로 하거나 적어도 처음 6자는 서로 다른 것을 획인하라.
부프로그램(Subprograms)
함수에서 부작용 "side effects"이 발생하지 않도록 하라. 즉 input parameter이 값을 바꾸지 말라. 그럼 경우에는 subroutine을 사용하라.
선언문에서 parameters, common blocks, 그리고 local 변수를 분리하라.
common block의 사용을 최소로 하라.
Goto
Minimize the use of goto 사용을 최소로 줄여라. 불행하게도 while이 Fortran 표준이 아니기에 어떤 loop에서는
goto를 사용할 수 밖에 없다.
배열 (Arrays)
많은 경우 모든 큰 배열은 주 프로그램에서 선언라고 여러 subroutine에 argument로 넘겨 주는 것이 최선이다. 이런 방법으로 모든 기억 공간 배정이 한 곳에서 되도록 한다. leading 차원을 넘겨주는 것을 잊지 마라. 쓸데없이 matrix의 모양을 바꾸지 마라.
효율의 관점(Efficiency concerns)
이차원 배열에 관한 이중 loop가 있다면 보통 첫번째 (row) index를 가장 안 쪽 loop에서 사용하는 것이 최선이다. 니것이 Fortran에서의 저장 방식이기 때문이다.
여러가지 조건의 if-then-elseif 문을 사용할 때 가장 확률이 높은 경우를 처음에 둔다.
[Fortran Tutorial]
충남대학교 물리학과 오 병성