섭씨 온도를 화씨온도로 변환하기

계속 반복하여 계산할 지 결정

-40도씨 이상만 변환

PROGRAM Temp

IMPLICIT NONE

REAL :: Celsius, Fahrenheit
CHARACTER :: Response

DO

PRINT *, "-40도씨 이상의 섭씨 온도를 입력하시오(ex:36)"
READ *, Celsius

IF (Celsius < -40) THEN
PRINT *,"-40도씨 이상의 섭씨 온도만 처리합니다."
CYCLE ! DO loop의 처음으로 이동
END IF

Fahrenheit = 1.8 * Celsius + 32.0

PRINT *,"섭씨온도 ", Celsius, " = 화씨온도 ", Fahrenheit

PRINT *
PRINT *, "온도 변환을 더 하시겠습니까 (Y or N)?"

READ *, Response

IF (Response == "N" .OR. Response == "n") EXIT ! N라고 하면 DO loop 종료

END DO

END PROGRAM Temp


위 소스를 04_03_Temp.f95로 저장

컴파일 및 프로그램 테스트



'Programming > Fortran' 카테고리의 다른 글

출력 서식 지정  (0) 2008.08.29
온도 변환(DO WHILE, END DO)  (0) 2008.08.28
감가상각 (DO, END DO)  (0) 2008.08.27
곱셈표 (DO, END DO)  (0) 2008.08.27
반가수기(.OR. .AND. .NOT)  (0) 2008.08.27

감가상각표 구하기

초기 구입가, 사용 연한 연도, 사용후 잔여가치를 입력

총 감가되는 가치 = 초기 구입가 - 잔여가치

총 사용 연한 = 1 + 2 + ... + 사용 연한 연도 = 연도 * (연도 + 1) /2

1개년 가치 = 총 감가상각 가치 / 총 사용연한

초년도에 가장 많은 감가상각 : (사용연한 - 구하려는 연도 + 1) * 1개년 가치

PROGRAM Depre

IMPLICIT NONE

REAL :: Price, SalvageValue, Amount, ValuePerYear
INTEGER :: UsefulLife, Year, Sum

PRINT *,"초기 구입 가격, 사용 연한, 사용후 잔여가치를 입력하시오(ex:20000, 5, 5000)"
READ *, Price, UsefulLife, SalvageValue

Amount = Price - SalvageValue

Sum = UsefulLife * (UsefulLife + 1) / 2

ValuePerYear = Amount / Sum

Print *,
Print *," Year Depreciation"
Print *,"=========================="

DO Year = 1, UsefulLife

PRINT *, Year, ValuePerYear * (UsefulLife - Year + 1)

END DO

END PROGRAM Depre

위 소스를 04_02_Depre.f95로 저장

컴파일 및 프로그램 테스트



'Programming > Fortran' 카테고리의 다른 글

온도 변환(DO WHILE, END DO)  (0) 2008.08.28
온도변환(DO, EXIT, CYCLE, END DO)  (0) 2008.08.28
곱셈표 (DO, END DO)  (0) 2008.08.27
반가수기(.OR. .AND. .NOT)  (0) 2008.08.27
오염지수 구하기 3(SELECT CASE)  (0) 2008.08.27

곱셈표 출력하기

출력할 곱셈표 단 입력

DO 루프를 이용하여 곱셈표 출력

PROGRAM Multi

IMPLICIT NONE

INTEGER :: M, N, Last_M, Last_N

PRINT *, "출력할 곱셈표 단을 입력하시오(ex:9, 9)"
READ *, Last_M, Last_N

PRINT *," M N M * N"
PRINT *,"==========================="

DO M = 1, Last_M

DO N = 1, Last_N

PRINT *, M, N, M * N

END DO

END DO

END PROGRAM Multi


위 소스를 04_01_Multi.f95로 저장

컴파일 및 프로그램 테스트

DO I = v1, v2, v3
Print *, I
END DO

I의 값을 v1에서 v2까지 출력하는데 v3씩 증가



반가수기

논리형 값 A, B를 입력하고 Sum과 Carry를 계산

PROGRAM Half_Adder

IMPLICIT NONE

LOGICAL :: A, B, Sum, Carry ! 논리형 변수 선언

PRINT *, "논리형 값 A와 B를 입력하시오(ex: T F)"

READ *, A, B

Sum = (A .OR. B) .AND. (.NOT. (A .AND. B))
Carry = A .AND. B

PRINT *, "Carry, Sum = ", Carry, Sum

END PROGRAM Half_Adder

위 소스를 03_05_Haf.f95로 저장

컴파일 및 프로그램 테스트



오염지수 구하기

세 곳의 오염지수를 입력받고 평균을 계산

평균과 기준치와 비교하여 상태 표시

PROGRAM Pollution_3

IMPLICIT NONE

INTEGER :: Level_1, Level_2, Level_3, Index !세 곳의 오염지수와 오염지수 정수 평균

INTEGER, PARAMETER :: LowCutoff = 25, HighCutoff = 50 !기준치 상수

PRINT *, "세 곳의 오염지수를 입력하시오(ex: 1, 2, 3)"

READ *, Level_1, Level_2, Level_3 !세 곳의 오염지수 입력받기

INDEX = (Level_1 + Level_2 + Level_3) / 3 !세 곳의 오염지수의 정수 평균 구하기

SELECT CASE (Index)

CASE (:LowCutoff -1)
PRINT *, "Good Condition"
CASE (LowCutoff : HighCutoff -1)

PRINT *, "Fair Condition"
CASE (HighCutoff:)
PRINT *, "Poor Condition"


END SELECT

END PROGRAM Pollution_3

위 소스를 03_04_Poll_3.f95로 저장

컴파일 및 프로그램 테스트

CASE 사용방법

1)

SELECT CASE (INDEX)

CASE(25)

PRINT *, "INDEX is 25"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 25이면 출력

2)


SELECT CASE (INDEX)

CASE(:25)

PRINT *, "INDEX is equal or less than 25"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 25이하이면 출력

3)

SELECT CASE (INDEX)

CASE(25 : 50)

PRINT *, "INDEX is equal or more than 25 and equal or less than 50"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 25 이상, 50 이하이면 출력


4)

SELECT CASE (INDEX)

CASE(50:)

PRINT *, "INDEX is equal or more than 50"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 50 이상이면 출력

+ Recent posts