본문 바로가기
학부 강의 노트/포트란 프로그래밍 (보충예제)

포트란 강좌 :: 데이터 유형, 상수, 변수

by Dr. STEAM 2022. 6. 14.
반응형

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
Dont
.TRUE.
.FALSE.
잘못된 예 PDQ123-A
Dont

.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 = yknow

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

 

 

 

 

 

 

728x90
반응형