[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
プログラムの大まかな意味を以下に記します:
- 変数にはデータ型というものが存在します. データ型とはその変数が扱う値の特性を表すものです. 整数を扱う変数は整数型といい, integer という宣言を行います. 次ページで出てくる double precision という型宣言は実数を扱うことを宣言しています (正確には倍精度浮動小数点数という型です). そのほかにも複素数や文字を扱える型もありますが, 今回は省略します.
- 条件式を詳しく説明します. 条件式とは, 計算結果として真または偽を返す式のことです. 式内で用いている mod は剰余を求めるための関数です. 'mod(A, B)' というように () の中に 2 つの引数 (ひきすう) を取り, 第一引数 A を第二引数 B で割ったあまりを返します. また, 条件式で用いられている '==' という演算子は '==' の前後の値が一致しているかどうかを判定する演算子です. 一致している場合は真を, 一致していない場合は偽を返します. ここでは 'Sum' を 2 で割った余りが 0 と一致する (偶数である) 場合に真を, 0 と一致しない場合 (奇数) である場合に偽を返します. 例えば, 'mod(3, 2)' とすれば, 3 を 2 で割った余りは 1 なので, 1を返します. そのため, 'mod(3, 2) == 0' は '==' の前が 1 , 後が 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までの整数の和は偶数
>> 次ページへ