はじめてのFortranプログラミング:基本の書き方

デジタルとコンピューター

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

プログラムのポイント

  1. program main でプログラムの開始を宣言します。
  2. implicit none は、すべての変数を明示的に宣言することを強制します(バグを防ぐために推奨)。
  3. integer :: a, b, sum で整数型変数を宣言します。
  4. print *, を使って標準出力に表示します。
  5. 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は今でも科学技術計算で広く使われています。ぜひ、実際にプログラムを書いて試してみてください! 🚀

コメント