最初にgfortranを準備する
上の案内でgfortranをインストールしたら、学習用フォルダーを作って確認します。gfortranはFortranのソースコードを、OSで実行できるファイルへ変換するコンパイラーです。
mkdir fortran-study、cd fortran-study、gfortran --versionの順に実行します。バージョン番号は環境で変わります。番号付きコマンドしか使えない場合は、たとえばgfortran-16 --versionで確認し、以降のgfortranをその名前に読み替えます。
Fortranとは
Fortranは、科学技術計算、数値シミュレーション、気象、物理、化学などで長く使われているプログラミング言語です。現代のFortranには配列演算、モジュール、派生型、C言語との連携などがあります。
- 最初から
implicit noneを書き、暗黙の型宣言を避ける - ソース、コンパイルコマンド、実行結果を順番に確認する
- 配列の形、数値型、計算精度を意識する
- エラーと警告を読んで修正する
古い固定形式のコードを読む場面はありますが、新しく書く例では自由形式の.f90ファイルを使います。
最初のプログラム
program hello
implicit none
print *, 'Hello, Fortran!'
end program hellogfortran -std=f2018 -Wall -Wextra hello.f90 -o hello
./hello
Hello, Fortran!programとend programでプログラムの範囲を示し、print *で標準出力へ表示します。詳しい環境構築は環境構築と最初のプログラムで確認できます。
データと計算
整数はinteger、実数はreal、真偽値はlogical、文字列はcharacterで宣言します。宣言と代入を分け、入力値の型を意識することが基本です。
program calculate
implicit none
integer :: count
real :: price, total
count = 3
price = 120.0
total = count * price
print *, '合計:', total
end program calculate 合計: 360.000000配列と数値計算
Fortranの重要な特徴は、配列全体に対して計算を書けることです。sum、minval、maxval、sizeなどの組み込み関数も数値処理で活躍します。
program average
implicit none
real :: values(4) = [10.0, 20.0, 30.0, 40.0]
print *, sum(values) / real(size(values))
end program average 25.0000000配列の添字、スライス、2次元配列、行列計算は配列と数値計算で扱います。
処理を分割する
関数は値を返し、サブルーチンは複数の引数を使った処理をまとめられます。さらにモジュールへ手続きや型を分けると、複数のプログラムから安全に再利用できます。
まず関数の引数と返り値、次にintent(in)などの引数属性、最後にモジュールと複数ファイルのコンパイルへ進みます。
詳しくは関数・サブルーチン・モジュールと派生型・再利用・ビルドを参照してください。
練習と発展
最後に、入力した数値の統計、ファイル集計、行列の計算を練習します。解答を写すだけでなく、入力値や配列の大きさを変え、予想した結果と実際の結果を比べてください。