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
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 문제로 인해 발생하는 것이다.