数値計算入門【1. Fortran の説明】

  1. 事前準備
  2. 微分方程式の数値解法
  3. [付録]gnuplot について

[1.1] 事前準備

[1.1.1] X を立ち上げる

環境変数 LC_ALL を ja_JP.UTF-8 に変更する.

$ export LC_ALL=ja_JP.UTF-8

X を立ち上げる.

$ startx

[1.1.2] GFortran のインストール

apt コマンドを用いて,GFortran をインストールします.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install gfortran

終わったら,GFortran が正常にインストールされているかを確かめるために GFortran のバージョンを見てみましょう.

$ gfortran --version

以下のような表示が返ってくれば OK です.

GNU Fortran (Debian 14.2.0-19) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[1.2] Fortran サンプルプログラムの実行

ここでは,Fortran というプログラム言語を使います.Fortran は最も歴史が長い高級言語であり,科学技術分野では現在でも広く用いられています.
Fortran プログラムを実行するためには,プログラムとコンパイラを用意し,プログラムをコンパイルして実行ファイルを作る必要があります.今回の実習では,GNU で開発が続けられている GFortran という Fortran コンパイラを使い,Fortran による数値計算を体験してみましょう.

[1.2.1] サンプルプログラムの取得

本日使うサンプルプログラムと gnuplot のバッチファイルをダウンロードしましょう.データ解凍については,第 3 回実技資料付録 を参照してください.

$ mkdir work
$ cd work
$ wget https://www.ep.sci.hokudai.ac.jp/~inex/y2026/0703/practical/prog/program.tar.gz
$ tar -xvf program.tar.gz

[1.2.2] GFortran によるコンパイルとプログラムの実行

最初に使うプログラム hello.f90 は 3 つの処理を行います. はじめに, 1 から 1000 までの整数の和を求めます. 次に, "Hello World!" という文字列を表示します. 最後に, 最初に求めた 1 から 1000 までの整数の和が奇数か偶数かを判定し, 和を表示するのに続けて判定結果を表示します.

hello.f90 の中身を見てみましょう.

$ less -N hello.f90

1  program hello
2      implicit none
3  
4      integer :: Sum = 0
5      integer :: n
6  
7      do n=1, 1000
8          Sum = Sum+n
9      end do
10 
11     print "(a)", "Hello World!"
12     print "('1から1000までの整数の和は ',i0)", Sum
13 
14     if (mod(Sum, 2) == 0) then
15         print "('1から1000までの整数の和は偶数')"
16     else
17         print "('1から1000までの整数の和は奇数')"
18     end if
19
20 end program hello

プログラムの大まかな意味を以下に記します:

2 行目 (implicit none)
「暗黙的型宣言 (Fortran の場合, データ型を指定していない変数の頭文字が i~n だった場合は整数型, a~h, o~z の場合は実数型になります) を行わない」ことを宣言する構文です.
4, 5 行目
Sum と n という変数を定義し,その変数のデータ型が整数 (integer) であることを宣言しています.特に 4 行目では,Sum を定義した後に 0 を代入していることがわかります.
7 ~ 9 行目
do 構文と呼ばれる繰り返し構造です. ここでは, 1 ~ 1000 までの整数の和を求めるために, 変数 n を 1 から 1000 まで変化させ, 変数 Sum へ次々と加算していきます. この do 構文は, シェルスクリプトの for 文とよく似た働きをします. また, 計算には, + (加法),- (減法),* (乗法), / (除法),** (累乗) を利用できます.
11, 12 行目
print 文と呼ばれるものです. print 文は,画面への出力を担います. ここでは, "Hello World!" という文字列と整数の総和を求めた計算結果 (変数 Sum の最終的な値) を表示させています. hello.f90 では省略していますが, print 文は, print 書式, 出力したいもの という文法で表します. 書式についての詳細は,例えば nAG ウェブページ などを参照してみてください.
14 ~ 18 行目
if 文と呼ばれる制御構造です. この if 文は, シェルスクリプトの if と同様に条件にしたがって行う処理を変化させることが出来ます. ここでは 14 行目の if に続く () の中の条件式に従い, その条件が真ならばthenに続く処理 (15 行目) が実行され, 偽の時には else に続く処理 (17 行目) が実行されます. ここでの条件式は 'mod(Sum, 2) == 0' であり, 変数 Sum の値を 2 で割ったあまりが 0 であれば真, 0 で無ければ偽を返します.

それでは,このプログラムを GFortran でコンパイルしてみましょう.

$ gfortran hello.f90

すると,実行ファイル (a.out) が新たに生成されます.
$ ls

a.out  hello.f90

この a.out を実行することによって, hello.f90 に書かれていたプログラムが実際に処理されます.
$ ./a.out

Hello World!
1から1000までの整数の和は 500500
1から1000までの整数の和は偶数


>> 次ページへ
情報実験第 10 回のページへ戻る

最終更新日: 2026/06/25 吉川 颯真 修正
Copyright © 2000-2026 inex