さて、手始めにフォートランで簡単な四則演算をやってみましょう。フォートランのルールや関数は知らなくても、できるかな。 やりたい計算はこんな感じです。
a+b÷a-c
a-b×a
a×b÷c
a÷b÷b÷b
数値解析では√の計算も良く用います。
√a
√a×√a
プログラミング言語で書くとどうなるか。
フォートランを始めとするプログラミング言語では「÷」や「×」という記号は使いません。「÷」→「/」や「×」→「*」よって、以上の数式をプログラミング言語に落とし込むと以下のようになるのでしょうか。
「a+b÷a-c」→「a+b/a-c」
「a-b×a」→「a-b*a」
「a×b÷c」→「a*b/c」
「a÷b÷b÷b」→「a/b/b/b」
√の計算はFortranではどのように計算するのでしょうか?例えばVBAの場合では「sqrt」という関数があります。フォートランでは、そんな便利な関数は用意されていないと思います(※訂正!数学関数が用意されていました;後のページでは普通に使用しています)。 しかし、初歩的な数学を考えれば√aとはa^0.5であることを思い出しますね。ということは、「べき乗」の表現が上手くできれば大丈夫ですね。VBAでは、べき乗の表現は「a^0.5」と書くことができます。 フォートランで試してみるとダメでした…。ネットで少し調べてみると、どうやらべき乗は「**」とするみたいですね。よって、
「√a」→「a**0.5」
「a^4」→「a**4」
早速、Fortranで書いてみる。
さて、ダウンロードしたエディタ(僕はTerapad)を開いてプログラムを書いてみます。 まだコンパイラしていません。とりあえず、「Terapad」を利用している方は
「名前をつけて保存」→保存形式を「全てのファイル」として→「○○.f90」と保存してください。
そうすると、F90ファイルが生成されます。書いたプログラムはこんな感じ。
sisokuenzan.f90のソースコード
!四則演算()
program sisoku
implicit none
!データ型の宣言
real a,b,c,d,e,f,g,h
integer i
!キーボードから入力する関数
print *, "数値を入力してください"
read *, a
print *, "数値を入力してください"
read *, b
print *, "数値を入力してください"
read *, c
!変数の設定
d=a*b/c
e=a-b*a
f=a+b/a-c
g=a/b/b/b
h=a**0.5
i=a**0.5
!計算結果の書き出し
Write(*,*) ' d =',d,' e =',e
Write(*,*) ' f =',f,' g =',g
Write(*,*) ' h =',h,' i =',i
stop
end program sisoku
sisokuenzan.f90の説明
1行目フォートランで「!」はコメントを書くときに利用できます。「c」でも出来るみたいですが、こちらを多用しています。コメントアウトしたいときに便利。
2行目「program sisoku」ではプログラムの名前を書いています。ファイル名と混同しないように気をつけて下さい。
3行目の「implicit none」は、いわゆるおまじないです。この宣言が無くても計算は出来ますが、あった方がいいようです。
5行目の「real a,b,c,d,e,f,g,h」では、データ型の宣言をしています。この宣言が無くても自動で型は決められ計算は出来ますが、数値解析などのように数値の桁数にこだわる場合は必須です。 「real」は単精度実数と呼ばれているデータ型です。
6行目の「integer i」も同様にデータ型の宣言をしています。「integer」は整数の宣言です。
8行目の「print *, "数値を入力してください"」で、日本語を表示させています。print *,でコメントをプログラムの結果に書き込みが表示できるようです。
9行目の「read *, a」で、変数「a」に対して、キーボードから数値を入力することができます。
15~20行目の「d=a*b/c」等では、変数を用いた計算を行っています。9行目などで、書いたread文から数値が入力されこの変数に入るわけですね。
22行目の「Write(*,*) ' d =',d,' e =',e」等では、結果の表示を行っています。「' d =',d」の「' d ='」は文字列なので、そのまま表示され、「,d」の部分の変数が結果として表示されます。
25行目の「stop」で計算を止めます。
25行目の「end program sisoku」で、プログラムの終了を宣言します。
Fortranプログラムの一通りの流れを説明しました。これは、本当に簡単な計算の流れですが慣れるまで理解しましょう。
sisokuenzan.f90をコンパイラしてみる
さて、コンパイラしてみましょう。デスクトップにある「Fortran」フォルダを開いてください。開いたらコマンドプロンプトのショートカットをクリックします。 コマンドプロンプトの画面に「g95.exe ○○○.f90」と入力してEnterキ―を押します。 お!何のエラーもなくコンパイラできました!すると、フォルダ内に「a.exe」という実行ファイルが生成されます。コマンドプロンプトに「a.exe」と入力すると、
コマンドプロンプトに「数値を入力してください」と表示されました。それぞれが、a,b,cの値になるわけですが、試しに
a=12
b=0.5487
c=1.454
と入力してみます。どうやら、上手く結果が表示されたようです。ところで、変数hとiの式はプログラム上では、式が全く一緒なのに結果が違うことに気が付きましたか? これが、データ型の影響です。変数hは「real」で宣言したので小数点の7ケタまで表示されています。あとは誤差として丸められてしまうんですね。一方、変数iは 「integer」で宣言したので整数で表示されています。工学では小数点3ケタ以上まで考えることが多いので精密に計算したい場合は特に注意しましょう。次は→「If文について」
有料メルマガを無料で見てみませんか?⇒ 忙しい社会人、学生のためのビルディング・アップデート