Fortran

Fortranの条件分岐と繰り返し

条件によって処理を選び、計算を繰り返す方法を学びます。

Fortran入門の講座一覧

01

ifで条件分岐する

if ... then、else if、else、end ifで分岐の範囲を明示します。比較演算子は==、/=、>、<などを使います。

合否を判定するFORTRAN
program judge
    implicit none
    integer :: score
    read *, score
    if (score >= 80) then
        print *, 'A'
    else if (score >= 60) then
        print *, 'B'
    else
        print *, 'C'
    end if
end program judge
実行例OUTPUT
72
 B

複数条件は.and.、.or.、否定は.not.で書きます。Fortranの論理演算子はドットで囲む点に注意してください。

02

select caseで選択する

同じ変数の値によって処理を分ける場合は、select caseが読みやすくなります。範囲は1:3、複数値は1, 3のように書けます。

曜日番号を表示するFORTRAN
program weekday
    implicit none
    integer :: day
    read *, day
    select case (day)
    case (1)
        print *, 'Monday'
    case (2:5)
        print *, 'Weekday'
    case (6, 7)
        print *, 'Weekend'
    case default
        print *, 'Invalid'
    end select
end program weekday
実行例COMMAND / OUTPUT
gfortran -std=f2018 -Wall -Wextra weekday.f90 -o weekday
./weekday
6
 Weekend
03

doで繰り返す

回数が決まった繰り返しはdo i = 1, 5、条件で終える繰り返しはdoとexitを使います。cycleは現在の回だけを飛ばします。

1から5までの合計FORTRAN
program total
    implicit none
    integer :: i, answer
    answer = 0
    do i = 1, 5
        answer = answer + i
    end do
    print *, answer
end program total
実行結果OUTPUT
          15

ループ変数の値を1ずつ変え、終了値を含めて繰り返します。配列処理では、範囲外の添字にならないようにlboundとuboundを使う方法もあります。

04

練習

1から100までの数のうち、3の倍数だけを合計してください。mod(i, 3)が0かどうかをifで判定し、実行結果が1683になることを確認しましょう。