포트란에는 두가지 subprogram이 있다. 이는 1. function과 2. subroutine이다.
1. function
1.1 built in function: 포트란 프로그램이 이미 보유하고 있어서 그냥 써도 되는 function
예를 들면, sin, cos, tan...등등이 있다.
1.2 user defined function: 포트란 프로그램이 보유하고 있지 않은 말그대로 사용자인 우리가 직접 정의해주는 function이다.
(user defined function을 사용하는 예시)
program test6
real a, b, c
a=2.
b=4.
c=sum(a,b)
write(*,*) c
pause
stop
end
real function sum(a,b)
sum=a+b
return
end
prgram test6부터 pause/stop/end까지가 메인 프로그램이다. (여기서 pause는 안써도 되는데 간혹가다가 내 컴퓨터처럼 stop/end만 치면 입력창이 안뜨는 경우가 간혹 있다. 이런경우에는 stop/end 이전에 pause를 써주면 오류가 해결된다.)
function은 메인 프로그램이 다 끝난 이후에 작성해준다.
function name(변수1, 변수2, 변수3...) 이런식으로 작성하면 된다. function은 그 자체가 변수에 해당한다. 그래서 function을 또 다른 상수(real number) c로 정의해줘야한다. function은 변수1, 2, 3의 함수로 나타난다.
그리고 메인 프로그램이 아니라 서브 프로그램이므로 stop/end가 아니라 return/end이다.
2. subroutine
subroutine name (변수1, 변수2, 변수3...)
declaration
statements
return
end
위와 같은 형태를 띈다.
function과는 다르게, subroutine 자체는 변수가 아니다. 변수1, 변수2, 변수3 사이의 관계를 정의해준다. 그래서 function처럼 따로 또 정의를 해줄 필요가 없다.
예를 들면 '변수 1= 변수 2와 변수 3'과의 함수로 나타내질수 있다.
subroutine을 사용한 예시는 아래와 같다.(function과 subroutine은 모두 메인 프로그램이 끝난후 그 뒤에 써줘야한다.)
program test
real a,b,sum_answer
a=3.
b=4.
call sum_routine(a,b,sum_answer)
write(*,*) sum_answer
pause
stop
end
subroutine sum_routine(a,b,sum_anwer)
real a,b,sum_answer
sum_answer=a+b
return
end
function과 subroutine의 사용법 및 차이점을 이제는 헷갈려하지 말자!
'재료공학 > 포트란(Fortran)' 카테고리의 다른 글
Fortran(포트란): Pi값 정확하게 정의하는 방법 (2) | 2020.04.05 |
---|