Fortran
は教科書には記載されていません。練習問題のサンプルプログラムとその解説が教科書代わりです。これらを熟読すれば提出課題はできます。必ずよく読んで実行し、理解するようにしなさい。また以下のサイトが参考になるので、必要に応じて参照しなさい。
今日の演習
01から12までの行番号がついている行が入力するプログラム(ソースコード)である。 行番号および桁目盛は説明と見やすさを考慮してつけているので入力する必要はない。枠線で囲まれている部分の中だけを入力すること。
【Fortran の決まりごと】プログラムは大文字、小文字を区別しない。(サンプルプログラムでは予約語(大文字)と変数(小文字)等を区別するためにあえて混ぜて記載してある。)
【Fortran の決まりごと】プログラムの実行文は7桁目から書き、1行は72桁以内である。また、1行には1つの文しか書けない。(固定形式)
1: 1桁目が C で始まる行はコメント行であり、実行されない(LaTeX の% と同じ)。 3: 暗黙の型宣言を無効にする。 i,j,k,l,m,n で始まる変数は型宣言しない場合,整数型として扱われる(暗黙の型宣言)。 しかし,宣言無しで変数を多用することはつまらないプログラムミスの原因となる上、 Fortran90の処理系によっては暗黙の型宣言を無効にすることを義務付けていることもある。 4: 実数型 (REAL) である3つの変数 teihen,takasa,menseki を宣言する。 teihen,takasa,menseki で表される数値が実数であるということ。 他に例えば、整数型は INTEGER、倍精度実数型は DOUBLE PRECISION で定義する。 整数 INTEGER 1, 6543, -156 実数 REAL 1.0, -23.88, 0.576E+02 (×10の2乗を表す) 文字型 CHARACTER 'Happy Birthday' 整数型の変数に実数を代入すると小数点以下が切り捨てられて整数になる。 【Fortran の決まりごと】変数の名前は自由に決められる。ただし、1文字目は必ず英文字の 必要があり、31文字以内とする。また、Fortranであらかじめ決められている命令文(予 約語という。たとえば WRITE や READ など。)は使用しない方がよい。 6: teihen,takasa の入力要求の Input teihen & takasa ! を出力する。 7: teihen,takasa の変数の値を READ文 を用いて標準入力((*,*) で表されている。 通常は端末)から読み込む。 8: 演算処理 右辺の演算結果(三角形の面積)を左辺の変数 menseki に代入する。 = 代入 (等式記号ではないことに注意する。) + 加算 - 減算 * 乗算 / 除算 ** べき乗 9: teihen,takasa,menseki の3つの変数の値を WRITE文 を用いて標準出力((*,*) で 表されている。通常は端末)に書く。 11: 処理を終了する (STOP)。 12: プログラムの終わり (END) を示す。簡単ですが、これも立派なプログラムです。
-bash- 3.00 $ emacs fortran101.f &
gfortran [-o 作成する実行形式のファイル名] ソースコードのファイル名である。したがって、
-bash- 3.00 $ gfortran -o fortran101 fortran101.fと入力し、コンパイルに成功すると、新しく fortran101 という名前の実行形式のファイルができる。
-bash- 3.00 $ ls -lFと入力して、fortran101* というファイルがあるか確認する。(後ろに* がついているのが実行ファイル。)
エラーが出た場合は、絶対にプログラムが間違っているので、emacs に戻ってプログラムを修正・保存して、GNOME 端末上でコンパイルをやり直す。
実行ファイルは絶対にプリントアウトしない!
-bash- 3.00 $ ./fortran101 (上で実行形式のファイル名を fortran101 としたので、その名前で実行する。)なお、./ はカレントディレクトリ(自分の今いるディレクトリ)を意味する。 つけないと
fortran101: Command not found.とエラーが返されるので,以後自分で作成したプログラムを実行するときには必ずつけること。
Input teihen & takasa ! 25.0 30.0とすると、その下に結果(変数teihen, takasa, menseki の値)が表示される(9行目の WRITE文)。
練習問題を踏まえて以下のプログラムを作成せよ。プログラム、コンパイルのコマンドとシステムからのメッセージおよび実行結果を印刷して提出せよ。
(問題) 球の半径を読み込んで表面積と体積を計算し、読み込んだ半径、計算した表面積と体積をこの順に一行で出力するプログラムを作成しなさい。円周率は 3.1416 とせよ。そのプログラムを用いて、半径が 6378 km と1738 km の球の表面積と体積とを計算せよ。 |
-bash- 3.00 $ ./fortran102 ? 6378.0 6378.00000 0.?????????E+?? ?????????.
GNOME 端末に残っている記録からマウスの操作でコピーして文書中に挿入する。
LaTeX でプログラムのソースコードを整形する際の注意:LaTeX は文書を自動で整形してしまいます。ソースコードなどを改行を含めてそのまま出力したい場合は、verbatim 環境を用います。(教科書121ページも参照のこと)
すなわち、\begin{verbatim} と\end{verbatim} の間に記述された内容はそのまま出力されます。
課題が終わった人は、トライしよう。 提出する際は氏名、学生番号を書いて「今日の提出課題」とは別紙にしなさい(1つだけでも、両方でもよい)。期限は次回の演習時限が終わるまでとする。必ずプログラム(ソースコード)と実行結果の出力が含まれること。なお、演習時の質問は、「今日の提出課題」についての質問を優先する。
Fortran では、四則演算の他、数学で使う初等的な関数は標準で用意されています。
たとえば、sin 関数は、sin(r) とすればプログラム中で利用することができます。ただし、使用にはいくつかの注意点があります。引数r は、実数型(次回の演習で詳述します)である必要があるとか、ラジアンで指定する必要があります。
FORTRANプログラミング初級編の「初歩の文法→算術演算」などを参照して下さい。
(問題) 元金、年利率(複利)、預金年数を読み込んで元利合計を計算して出力するプログラムを作成し、そのプログラムを用いて、元金 100万円を年利率1分2厘5毛と年利率5分7厘5毛で預金した場合の10年後の元利合計はいくらになるか計算しなさい。 |
(問題) 半径1の円に内接する正n角形の周長(辺の長さの総和)と面積を計算するプログラムを作成し,正6角形と正60角形の周長と面積を求めなさい。 |