Fortran의 기본적인 5가지 데이터 유형
수치형 상수
- 정수형 integer
- 실수형 real
- 복소수형 complex
비수치형 상수
- 문자형 character
- 논리형 logical
사용 예
|
정수형 |
실수형 |
고정형 |
지수형 |
바른 예 |
0 137 -2315 +17745 |
1.234 -0.01536 +56473. |
3.372E2 0.3372E3 337.2E0 33720E-2 |
잘못된 예 |
9,999 16.0 --5 7- |
12,345 63 |
|
|
문자형 (문자열) |
논리형 |
바른 예 |
“PDQ123-A” ‘C.H. Park “Don’t” |
.TRUE. .FALSE. |
잘못된 예 |
‘PDQ123-A” Don’t
|
.T. .F. True False |
정수형
소수점(.), 콤마(,)를 갖지 않는 십진수
실수형
십진수나 지수표현으로 나타냄.
소수점(.)은 허용되나 콤마(,)는 허용되지 않음.
예) 2.37456E2, 23745.6E-2 모두 2.37456x10^2을 의미
문자열 (또는 문자형 상수)
쌍따옴표(" ") 또는 따옴표(' ')로 둘러싸야함.
상수의 길이는 문자의 갯수이고 공백도 문자로 포함시킴.
예) "C.H. Park", "Don't"
변수 (Variable)
수치형 변수
- 정수형 integer
- 실수형 real
- 복소수형 complex
비수치형 변수
- 문자형 character
- 논리형 logical
형식
형선언 :: 변수명1, 변수명2, ...
형선언 :: 변수명1 = 값1, 변수명2 = 값2, ...
컴파일러는 변수를 메모리 위치와 연결시킨다. 어떤 변수의 값은 연결된 메모리에 저장되어 있는 값이다.
각 변수에 대해서 부여되는 값의 유형을 정하기 위해서 형선언을 사용한다.
변수는 주어진 데이터 유형에 맞게 사용되어야 하고, 그렇지 않으면 프로그램이 올바로 작동하지 않을 수 있다. 따라서, 개개의 변수형을 정확히 지정하는 것은 매우 중요하다. 이렇게 하지 않으면, 서로 다른 유형의 값이 결합(연산)되거나 어떤 변수에 그 변수형과 다른 형의 값이 할당되면 혼합모드 오류(mixed-mode error)를 야기할 수 있다.
변수명 작성 규칙
첫 글자는 반드시 영문자로 시작하고 30개까지의 문자, 숫자, 밑줄(_)로 구성할 수 있으나 나머지 특수문자 사용 불가.
Fortran은 문자형 외에는 상수 대소문자를 구분하지 않는다.
예) Lightening_McQueen
예문
integer :: record_number, ...
real :: temperature_1st, pressure_sfc
character(len = 15) :: first_name, last_name, ...
character(len=15) :: initial*12 이라고 지정하면 변수 initial 의 크기는 20이 아니고 12이다.
logical :: True_or_False
implicit none 문
Fortran은 내부적으로 지정자(또는 변수명)가 i,j,k,l,m,n 으로 시작하면 그 지정자는 자동으로 정수형으로 지정되고, 그 외 문자는 실수형으로 지정된다. 따라서, 이런 내부 명명 규칙을 무력화 시키기 위해서 implicit none 문을 사용한다. Fortran 77 때 부터 지정된 규칙이므로, implicit none 문을 사용해서 명시적으로 형을 선언하겠다고 하고 프로그래밍하도록 한다.
변수 초기화
변수는 초기에 정의되지 않은 상태이므로 초기화가 필요하다. 초기화를 하지 않은 경우 잘 못 된 값이 계산될 수 있다.
예문
integer :: numvalues=1, Sum=0
real :: W=1.0, X=2.5, Y=7.73, Z=-2.956
character(len=9) :: name =“C. H. Park”
logical :: flag = .true.
명명된 상수 : parameter 속성
어떤 상수는 주어진 이름을 가지고 있다. 예를 들어 "pi"는 원주율 상수 3.141592... , "e"는 2.71828... 이다.
아래와 같이 parameter 속성을 부여함으로 명명된 상수로 지정하는 것을 허용할 수 있다.
이는 프로그램 전체에서 사용할 상수를 지정해서 상수명만 불러오면 되므로, 숫자가 바뀌면 모든 값이 자동으로 변하기 때문에 프로그래밍이 간단해 진다.
integer, parameter :: limit = 30
real, parameter :: pi = 3.141592, TwoPi = 2.0 * pi
character(2), parameter :: units = "km"
character(*), parameter :: units= "km"
!여기서 별표(*)는 명명된 문자형 상수(unit)의 길이가 할당된 문자열 상수 ("km") 의 길이인 2라는 뜻이다.
선언문
implicit none 문
Default 형선언 (i,j,k,l,m,n 으로 시작하는 모든 변수는 정수형 변수임)을 사용하지 않고, 사용자 위주의 형선언을 사용하기 위한 명령문
형식
program program_name
implicit none
상수 선언문 - parameter 문
pi = 3.141592 와 같이 항상 동일한 값(상수)로 사용되는 변수를 선언할 때 사용
형식
형선언, parameter :: 변수명 = 값
예문
real, parameter :: pi = 3.14
character(2), parameter :: units = "km"
연습문제
1. 재코딩하기
program reformatting; integer :: degreef &
, degreec ; read *, &
degreef ; degreec &
=5*(degreef-32)/9; print*, &
degreec; end program reformatting
2. 선언문 중 잘못된 부분 수정
1) ReAl :: x
2) CHARACTER :: name
3) CHARACTER(LEN=10) :: name
4) REAL :: var-1
5) integer :: 2a
6) logical :: wibble = .true.
7) logical (len=12) :: frisnet
8)character(len=6) :: you_know = ‘y’know”
9) integer :: ia ib ic id
name |
type |
initial value |
feet miles town home_town in_Busan sin_half |
integer real character (< 20 letters) character ( < 20 letters) logical real |
your home town is your home town in Busan? 0.47942 |