[1.1]Fortran プログラムの実行
ここでは,Fortran というプログラミング言語を使います.Fortran は最も歴史が長い高級プログラミング言語であり,科学技術分野では現在でも広く用いられています. Fortran プログラムを実行するためには,プログラム本体とコンパイラを用意し,プログラムをコンパイルして実行ファイルを作る必要があります.今回の実習では,GNU で開発が続けられている GFortran という Fortran コンパイラを使い,Fortran による数値計算を体験してもらいます.
[1.1.1] Gfortran のインストール
※2020 年度 : [1.1.1] 節ではコマンドを実行する必要はありませんが, 目を通してください.apt コマンドを用いて,GFortran をインストールします.
$ sudo apt update $ sudo apt upgrade $ sudo apt install gfortran
終わったら,GFortran が正常にインストールされているかを確かめるために GFortran のバージョンを見てみましょう.
$ gfortran --version
以下のような表示が返ってくれば OK です.
GNU Fortran (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 Copyright (C) 2016 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.1.2] サンプルプログラムの取得
※2020 年度 : [1.1.2] 節は一通りコマンドを実行してください.サンプルプログラム hello.f90 をダウンロードします.
$ wget www.ep.sci.hokudai.ac.jp/~inex/y2020/0717/practical/prog/hello.f90
hello.f90 は "Hello World!" という文字列と,1 から 1000 までの整数の和を表示するプログラムです.
hello.f90 の中身を見てみましょう.hello.f90 は文字コードを UTF-8 にすることで閲覧できます.
$ export LC_ALL=ja_JP.UTF-8 $ less 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 end program hello
先頭の行番号は説明を分かりやすくするためにつけているだけで,実際には表示されません.プログラムの大まかな意味を以下に記します:
- 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 の最終的な値) を表示させています.print 文は, print 書式, 出力したいもの という文法で表します.書式についての詳細は,例えば nag ウェブページ などを参照してみてください.
[1.1.3] GFortran によるコンパイルとプログラムの実行
※2020 年度 : [1.1.3] 節は一通りコマンドを実行してください.それでは,このプログラムを GFortran でコンパイルしてみましょう.
$ gfortran hello.f90
すると,実行ファイル (a.out) が新たに生成されます.
$ ls a.out hello.f90
この a.out の実行によって,プログラムが実行が成されます.
$ ./a.out Hello World! 1から1000までの整数の和は 500500
>> 次ページへ