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の論理演算子はドットで囲む点に注意してください。
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
Weekenddoで繰り返す
回数が決まった繰り返しは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を使う方法もあります。
練習
1から100までの数のうち、3の倍数だけを合計してください。mod(i, 3)が0かどうかをifで判定し、実行結果が1683になることを確認しましょう。