728x90
반응형

1. 오염지수 구하기 - IF 문

PROGRAM pollution
    IMPLICIT NONE
    
   INTEGER :: level_1, level_2, level_3, index
   INTEGER, PARAMETER :: cutoff = 50
   
   ! get the 3 pollution readings
   PRINT *, "Enter 3 pollution readings (unit: ppm) :"
   READ *, level_1, level_2, level_3
   
   index = (level_1 + level_2 + level_3)/3
   
   IF (index < cutoff) THEN 
       PRINT *, "SAFE"
       ELSE
       PRINT *, "HAZARDOUS"
   END IF
   
pause
    end program pollution

 

 

2. 오염지수 구하기 - IF-ELSE 문

 

program pollution
    implicit none
    
   integer :: level_1, level_2, level_3, index
   integer, parameter :: lowcutoff = 25, highcutoff = 50
   
   ! get the 3 pollution readings
   print *, "Enter 3 pollution readings (unit: ppm) :"
   read *, level_1, level_2, level_3
   
   ! Calculate the pollution index 
   index = (level_1 + level_2 + level_3)/3
   
   ! classify the pollution index and display air-quality conditions     
   if (index < lowcutoff) then 
       print *, "GOOD"       
   else if (index < highcutoff) then 
           print *, "FAIR"
   else 
           print *, "POOR"
   end if
       
   
   
pause
    end program pollution

 

 

 

 

 

https://aeir.tistory.com/entry/%ED%8F%AC%ED%8A%B8%EB%9E%80-%EB%85%BC%EB%A6%AC%EC%8B%9D?category=940076 

 

포트란 강좌 :: 논리식

논리식 (logical expression) 단순 논리식(simple logical expression) 형식 1. 논리상수 (.TRUE. 또는 .FALSE.) 2. 논리변수 3. 아래 관계식 형태  expr1 관계연산자 expr2 (expr는 수치 또는 문자식) 관계 연산..

aeir.tistory.com

 

https://aeir.tistory.com/entry/%ED%8F%AC%ED%8A%B8%EB%9E%80-IF%EC%99%80-IF-ELSE-%EA%B5%AC%EB%AC%B8?category=940076 

 

포트란 강좌 :: IF와 IF-ELSE 문

단순 논리 IF 구문 IF (논리식) 실행문 (논리식)이 참이면 실행문이 실행되고, 거짓이면 넘어간다. if (2.0 <= x .and. x <= 4.0) print *, x 이는 아래의 블럭 IF 문과 같다. IF (논리식) THEN 문블럭 END IF (..

aeir.tistory.com

과제

화씨와 섭씨를 구분해 변환하는 하나의 코드 작성

 

 

728x90
반응형

728x90
반응형

1. 1251/3 승수 구하기

program ex
    implicit none
    
    real :: x, y1, y2, y3, y4,  y5
    x = 125    
    
    y1 = x ** (1.0/3.0)
    y2 = x ** (1./3.)
    y3 = x ** (1/3.0)
    y4 = x ** (1.0/3)
    y5 = x ** (1/3)
    print *, '12345678901234567890123456789012'
    print *, 'Remind 1.0 x 3.0 = ', 1.0 * 3.0
    print *, 'Remind   1 x   3 = ', 1 * 3
    print *
    
    print *, y1
    print *, y2
    print *, y3
    print *, y4
    print *, y5
    
    print *
pause
end program ex

결과해설

사칙 연산에서 아래와 같은 사실을 알 수 있다. 

실수 ÷ 실수 = 실수

실수 ÷ 정수 = 실수

정수 ÷ 실수 = 실수

정수 ÷ 정수 = 정수

 

y5의 경우 1/3 = 0.333 인데, 정수/정수=정수형이 되므로, 소수점 이하자리는 버림되고 1/3은 0이 된다. 따라서, 결과값이 1이다. 1은 정수가 아니라 1.00000으로 실수형으로 표현되는 이유는 y5가 실수형으로 선언되었기 때문이다. 

 

 

3. e3 구하기

입력설계

키보드로 입력값을 받아들인다. 

내장함수 EXP( )를 사용하여 지수값을 구한다. 

 

의사코드

   read x

   p = EXP(x)

   print p

 

프로그램

program ex
    implicit none
    
    real :: x, p
    
    print *, 'Enter value :'
    read *, x
    
    p = exp(x)
    print *, 'Exponential value is', p
    
    print *
pause
end program ex

결과 해석

원하는 값을 입력받아 프로그램을 실행하고자 할 때, read 문을 사용한다. 

 

 

4. loge2.7 와log102.7구하기

 

처리조건

자연로그 값을 구하기 위해 log( )와 alog( )함수를 사용해서 비교한다. 

상용로그 값을 구하기 위해 log10( )함수를 사용한다. 

 

프로그램

program ex
    implicit none
    
    real :: x, a, b, c
    
    print *, 'Enter value :'
    read *, x
    
    a = log(x)
    b = alog(x)
    c = log10(x)
    print *, ' LOG(x) is ', a
    print *, 'ALOG(x) is ', b
    print *, 'LOG10(x) is ', c
    print *
pause
    end program ex

5. 삼각함수 값 구하기

처리조건

  삼각함수 입력값은 radian 이다. degree를 radian 으로 변환해야 한다. 

program ex
    implicit none
    
    real :: degree, radian
    real :: x, L, M, N, P
    
    print *, 'Enter the angle in degree :'
    read *, degree
    
    radian = 3.141592/180.0
    x = radian * degree
    L = sin(x)
    M = cos(x)
    N = tan(x)
    P = sin(x)/cos(x)
        
    print *, "SIN(X) is ", L
    print *, "COS(X) is ", M
    print *, "TAN(X) is ", N
    print *, "SIN(X)/COS(X) is ", P
        
    
    print *
pause
    end program ex

결과 해설

마지막에 TAN(x)와 SIN(x)/COS(x) 값을 비교해 보면, 맨 마지막 소수자리 숫자가 다르다. 이는 truncation 문제로 인해 발생하는 것이다. 

 

 

 

과제

아래 열거된 내장함수를 모두 사용하여 코딩하여 결과를 발표한다.

처리조건:

입력값은 화면에서 임의로 입력받도록 한다. 

출력은 소수점 3째자리까지 출력되도록 한다. 

발표내용:

코딩 설계 및 구성을 설명한다. 

코딩을 line-by-line 으로 설명한다. 

 

 

 

여러가지 내장함수

Function Meaning Arg. Type Return Type
ABS(x) absolute value of x INTEGER INTEGER
REAL REAL
SQRT(x) square root of x REAL REAL
SIN(x) sine of x radian REAL REAL
COS(x) cosine of x radian REAL REAL
TAN(x) tangent of x radian REAL REAL
ASIN(x) arc sine of x REAL REAL
ACOS(x) arc cosine of x REAL REAL
ATAN(x) arc tangent of x REAL REAL
EXP(x) exp(x) REAL REAL
LOG(x) natural logarithm of x REAL REAL

 

Function Meaning Arg. Type Return Type
INT(x) integer part x REAL INTEGER
NINT(x) nearest integer to x REAL INTEGER
FLOOR(x) greatest integer less than or equal to x REAL INTEGER
FRACTION(x) the fractional part of x REAL REAL
REAL(x) convert x to REAL INTEGER REAL

 

Function Meaning Arg. Type Return Type
MAX(x1, x2, ..., xn) maximum of x1, x2, ... xn INTEGER INTEGER
REAL REAL
MIN(x1, x2, ..., xn) minimum of x1, x2, ... xn INTEGER INTEGER
REAL REAL
MOD(x,y) remainder x - INT(x/y)*y INTEGER INTEGER
REAL REAL
728x90
반응형
728x90
반응형

 

 

포트란 강좌 :: 포트란 소개

FORTRAN (FORmula TRANslator ) 1954년 IBM사에서 개발한 언어 프로그램언어 중 가장 오래된 언어 수리연산, 과학기술 계산용 프로그래밍 언어 실행 효율이 다른 언어보다 우수 포트란의 창시자 존 배커

aeir.tistory.com

 

포트란 - 프로그래밍 일반

프로그래밍 언어 고급언어(high-level language) : 인간 중심 언어 기계어나 어셈블리어에 비해 쉽게 사용 이식성이 뛰어남 예) Fortran, C, Basic, Cobol, Pascal 프로그래머가 갖춰야 될 능력 적절한 프로그

aeir.tistory.com

 

포트란 강좌 :: 프로그램 구조

! 프로시저를 사용한 프로그램의 예 ! 각 프로시저의 프로그램 작성 순서는 아래와 같다. 프로시저의 시작문 (module, program, subroutine, function, block data) 선언문(use 문, implicit none 문, 변수 선언문..

aeir.tistory.com

 

1. "Hello Class." 출력하기

입력설계 

  없음

출력설계

   Hello, World!

의사코드

   print Hello, world

프로그램

program ex
    print *, "12345678901234567890"
    print *, "  Hello, World! "   
    print *, '  Hello, World! ' 
    print *, " 'Hello, World!' "   
    print *, ' "Hello, World!" '   

    print *
   
pause
end program ex

결과해설

프로그램은 반드시 program (코드명)으로 시작하고, 마지막에는 end progrma (코드명)으로 끝낸다. 

맨 첫줄 12345678901234567890 은 출력되는 문자/숫자의 자리수를 편리하게 표시하기 위한 것이다.

출력은 print 문을 사용한다. 

print * 문에서 * 표시는 화면에 자유형식(format)으로 출력한다는 의미이다. * 대신 번호(문번호)가 들어가면 해당 문번호에 format 문을 작성해서 사용자가 원하는 형식(format)으로 출력할 수 있다.

print * 이후 아무 문자나 변수가 없으면 빈 줄을 출력한다. 

 

문자열을 출력할 때는 따옴표( ' ' ) 또는 큰따옴표 ( " " ) 로 싸서 출력한다. 

따옴표( ' ' ) 또는 큰따옴표 ( " " ) 넣어서 출력하고 싶다면, 한번더 따옴표( ' ' ) 또는 큰따옴표 ( " " )을 사용해서 문자열을 감싸주면 된다. 

 

pause를 넣지 않으면, 결과창이 곧바로 사라지므로 반드시 사용한다. 

 

 

 

 

 

728x90
반응형

+ Recent posts