Fortran(フォートラン)は、科学技術計算や数値解析に適したプログラミング言語です。本記事では、Fortranの基本的な書き方について説明します。
Fortranプログラムの基本構造
Fortranのプログラムは、基本的に次のような構造になっています。
program main
implicit none ! 変数の型を明示的に宣言することを強制
! 変数の宣言
integer :: a, b, sum
! 値の代入
a = 10
b = 20
! 計算
sum = a + b
! 結果の出力
print *, "Sum of a and b is", sum
end program main
プログラムのポイント
program main
でプログラムの開始を宣言します。implicit none
は、すべての変数を明示的に宣言することを強制します(バグを防ぐために推奨)。integer :: a, b, sum
で整数型変数を宣言します。print *,
を使って標準出力に表示します。end program main
でプログラムを終了します。
変数とデータ型
Fortranの基本的なデータ型は以下の通りです。
データ型 | 説明 | 例 |
---|---|---|
integer | 整数型 | integer :: n = 10 |
real | 実数型(小数) | real :: x = 3.14 |
double precision | 高精度の実数型 | double precision :: y = 3.1415926535 |
complex | 複素数型 | complex :: z = (1.0, -2.0) |
logical | 論理型(.true. / .false.) | logical :: flag = .true. |
character | 文字列型 | character(len=10) :: name = "Fortran" |
変数の宣言の例
integer :: i
real :: x
double precision :: y
logical :: flag
character(len=20) :: str
条件分岐(IF文)
条件分岐には if
文を使います。
program if_example
implicit none
integer :: num
print *, "Enter a number:"
read *, num ! ユーザー入力
if (num > 0) then
print *, "The number is positive."
else if (num < 0) then
print *, "The number is negative."
else
print *, "The number is zero."
end if
end program if_example
繰り返し処理(DOループ)
繰り返し処理には do
文を使います。
program loop_example
implicit none
integer :: i
do i = 1, 5
print *, "Iteration:", i
end do
end program loop_example
繰り返しの終了(EXIT, CYCLE)
exit
:ループを途中で抜けるcycle
:現在の繰り返しをスキップして次へ進む
program loop_control
implicit none
integer :: i
do i = 1, 10
if (i == 5) then
exit ! 5でループを終了
end if
print *, "i =", i
end do
do i = 1, 10
if (mod(i,2) == 0) then
cycle ! 偶数はスキップ
end if
print *, "Odd i =", i
end do
end program loop_control
配列の使い方
Fortranは数値計算に強いため、配列が重要です。
program array_example
implicit none
integer, dimension(5) :: numbers
integer :: i
! 配列に値を代入
numbers = (/1, 2, 3, 4, 5/)
! 配列の要素を出力
do i = 1, 5
print *, "Element ", i, ":", numbers(i)
end do
end program array_example
動的配列(ALLOCATE)
Fortranでは動的に配列を確保することも可能です。
program dynamic_array
implicit none
integer, allocatable :: arr(:)
integer :: n, i
print *, "Enter array size:"
read *, n
allocate(arr(n)) ! 配列を動的に確保
do i = 1, n
arr(i) = i * 2
end do
print *, "Array elements:"
print *, arr
deallocate(arr) ! メモリを解放
end program dynamic_array
サブルーチンと関数
サブルーチン(SUBROUTINE)
サブルーチンは処理を分割するための機能です。
program subroutine_example
implicit none
call greet()
contains
subroutine greet()
print *, "Hello, Fortran!"
end subroutine greet
end program subroutine_example
関数(FUNCTION)
関数を使って計算結果を返すこともできます。
program function_example
implicit none
integer :: result
result = square(5)
print *, "5 squared is", result
contains
function square(x) result(y)
integer, intent(in) :: x
integer :: y
y = x * x
end function square
end program function_example
Fortranプログラムのコンパイルと実行
Fortranのコードをコンパイルして実行するには、以下のコマンドを使います(GFortranの場合)。
gfortran program.f90 -o program
./program
Fortran 77の場合:
gfortran program.f -o program
./program
まとめ
本記事では、Fortranの基本的な書き方を紹介しました。ポイントは以下の通りです。
✅ Fortranプログラムは program ... end program
で構成される
✅ 変数の宣言には implicit none
を使う(型を明示)
✅ if
文で条件分岐、do
文で繰り返し処理を行う
✅ 配列を使ってデータを格納・操作できる
✅ サブルーチン・関数を活用してプログラムを整理できる
Fortranは今でも科学技術計算で広く使われています。ぜひ、実際にプログラムを書いて試してみてください! 🚀
コメント