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

포트란 강좌 :: 연산과 함수

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

연산(Operation)과 함수(Function)

연산자

  • 산술연산자  ( **, *, /, +, -  )
  • 관계연산자  ( ==, /=, >=, <=, > , < )
  • 논리연산자   (.not. , .and. , .or. , .eqv. , .neqv.  )
  • 문자연산자  ( // )
* 연산자들의 계산 우선 순위: 산술연산자, 관계연산자, 논리연산자
 
산술식: 산술연산자 ( **, *, /, +, - ) 와 결합된 표현식
관계식: 관계연산자(==, /=, >=, <=, > , < ) 와 결합된 표현식
논리식: 논리연산자 (.not. , .and. , .or. , .eqv. , .neqv.  ) 와 결합된 표현식
문자식: 문자연산자(//)와 결합된 표현식

 

기호 우선순위 이름 사용법
수학식 Fortran 표기
( ) 1 괄호 a+b(x+y) a+b*(x+y)
** 2 거듭제곱 xa x**a
* 3 곱셈 a x b a * b
/ 나눗셈 a a/b
b
+ 4 덧셈 a+b a+b
- 뺄셈 a-b a-b

 

수치연산

주의: 

산술연산을 하면 결과는 피연산자의 유형과 같아진다.

3 + 4    => 7

3.0 + 4.0  => 7.0

 

9.0 / 4.0    => 2.25

9/4    => 2

 

1.0 / 2.0    => 0.5

1/2.0    => 0

 

정수와 실수를 혼합해서 사용하면, 정수는 실수로 전환되고 결과도 실수형이 된다. 

아래는 같은 연산이지만 결과가 다른 예이다. 

3.0 + 8 / 5    =>    3.0 + 1            =>    3.0 + 1.0    =>   4.0

3 + 8.5 / 5    =>    3 + 8.0 / 5.0    =>    3 + 1.6       =>   3.0 + 1.6      =>   4.6

 

2.0 ** 3       =>    2.0 * 2.0 * 2.0    => 8.0

(-4.0) ** 2   =>    (-4.0) * (-4.0)       => 16.0

(7.0) ** (1/2) 는 (7.0) ** 0 = 1.0 으로 계산될 수 있다. 주의!

 

산술 표현의 우선순위 규칙

1. 모든 지수계산은 제일 먼저 실행된다. 연속적인 지수항은 오른쪽에서 왼쪽 순서로 실행

2. 그 다음으로 곱셈과 나뭇셈이 왼쪽에서 오른쪽으로 실행된다.

3. 마지막으로 덧셈, 뺄셈이 왼쪽에서 오른쪽으로 실행된다. 

 

 

 

문자연산 (Character operation)

두개의 문자열을 결합하려면 연결연산자 (//)를 사용한다. 

예) "Kilo" // "meters" => "Kilometers"

 

문자열에서 특정 문자를 추출하는 경우, 

   character(4) :: last_name = "Park"

   character(11) :: first_name = "Chang-Hyoun"

   print *, first_name//" "//last_name

 

   source = "sugar"

   source(:3) => "sug" 값을 가짐

   source(4:) => "ar฿฿" 값을 가짐 (฿은 공백을 의미)

 

내장함수 또는 수치함수(Numerical Functions)

포트란 내장함수

  • abs(x) x의 절대값
  • cos(x) x 라디안의 코사인 함수 값
  • sin(x)
  • tan(x)
  • exp(x) 지수함수
  • int(x) x의 정수부
  • fraction(x) x의 소수부
  • floor(x) x보다 작거나 같은 가장 큰 정수
  • log(x) x의 자연로그
  • mod(x,y)  int(x/y) * y
  • nint(x) x에 가장 가까운 정수
  • real(x) x를 실수형으로 변환
  • float(x) x를 실수형으로 변환
  • sqrt(x) x의 제곱근
  • max(x1, x2, x3, ...) 최대값
  • min(x1, x2, x3, ...) 최소값

 

연습문제

1. 주어진 표현식의 결과를 구하여라
  • 2+3/5
  • (2+3)**2
  • 25.01**1/2
  • (2.0 + 3**2 ) /( 8-2+1)
  • abs (1-2-4)
  • int (5.0 + 4.0/ 3.0 )
  • “one”//”two”

2. 다음과 같이 변수가 주어졌을 때, 다음 표현식의 결과?

    TWO=2.0

    THREE=3.0

    FOUR=4.0

    IntEight=8

    IntFive=5

    Str_1 = For

    Str_2 = tran

    Label_1=foot

    Label_2=lbs

 

1)    TWO+THREE * THREE

2)    IntFive/3

3)    (THREE+TWO/ FOUR )**2

4)    IntFive**2 / TWO**2

5)    Str_1//Str_2//-90

6)    Label_1// //Label_2

7)    Str_2(2:3)//ndom

 

 

3. 다음 식을 fortran 표현식으로 써라

1) 10+5B-4AC
2) A2 + B2 – 2AB cos T
 
4. 다음 식의 계산값을 구하는 프로그램을 작성하라. 
   Y=7x4 + 3x3 + 4x2 + 2x + 1

   x=40, y=?

 
 
728x90
반응형