My Drive

02. Data types (자료형) 본문

programming

02. Data types (자료형)

sunnyeo.park 2014. 10. 24. 23:58

1. 기본 자료형

integer    real    complex    character    logical


2. 유도 자료형

◦ example :

type person    type [type 이름]

character (len=20) :: name

integer :: age

end type       ! end type

type(person) :: myself

myself%age=17


3. 속성

dimension    allocatable    parameter    intent    kind    len

save    pointer    public    private    optional

parameter : 컴파일 타임에 정의되기 때문에, 프로그램 실행 줄 바뀔 수 없음 (배열 크기 선언 시 유용)

◦ example :

integer, parameter :: np=3

real, dimension(np) :: b         길이가 3인 벡터

real, dimension(np,np) :: x     3x3 매트릭스

integer :: i

do i=1,np

b(i)=sqrt(i)

enddo

kind : 크기 / 정확도 

- 컴파일러에 따라 결과가 다를 수 있음 ( 숫자 자체에 사용하지 말고, parameter를 이용, 아래 예제 참고 )

- 모든 변수와 상수를 kind로 선언하면 정확성이 높아짐

- 사용하고자 하는 숫자가 몇 바이트를 요구하는지 체크하는 함수 ( 범위를 벗어나면 음수를 반환 )

selected_real_kind(mantissa_digits,exponent_range)

selected_int_kind(digits)

◦ Example for correct use :

integer, parameter :: sp = selected_real_kind(6,37)

or

integer, parameter :: sp = kind(1.)

integer, parameter :: dp = selected_real_kind(15,307)

or

integer, parameter :: dp = kind(1.d0)

integer, parameter :: qp = selected_real_kind(33,4931)

integer, parameter :: i4 = selected_int_kind(9)

integer, parameter :: i8 = selected_int_kind(16)

real (kind=sp) :: x,y         ! or, real (sp) :: x, y  

real (kind=dp) :: a,b        ! ("double precision")


4. 상수

◦ Examples :

integer : 1, 7890, 1_i8

real : 1., 1.0, 1.e7, 1.23e-8, 4.356d-15, 1._dp, 2.7e11_sp

complex : (0.,-1.), (2e-3,77._dp)

character : ’Hello’, "I’m a character constant",

    ’xx’’yy’ → xx’yy

    "xx’yy" → xx’yy

logical : .true., .false.

“derived” : person("Meier",27)










'programming' 카테고리의 다른 글

06. Input / Output  (0) 2014.10.27
05. Decisions  (0) 2014.10.25
04. Loops  (0) 2014.10.25
03. Expressions  (0) 2014.10.25
01. Fortran Syntax  (0) 2014.10.24
Comments