FORTRANプログラミング入門 3回の演習

木村拓馬
FORTRAN プログラミング入門
–第 3 回の演習–
木村拓馬
2014 年 4 月 22 日 14:36
FORTRAN プログラミング入門,–第 3 回の演習–
1/9
木村拓馬
演習 3.1(pr3.1.f90)
.
5 つの実数値をキーボードから入力すると,それらの相加平均,相乗平均,調和
平均を計算し,計算結果を画面に出力するプログラムを作成しなさい.
.
.
n 個のデータ x1 , · · · , xn に対し, x1 , · · · , xn の相加平均,相乗平均,調和平均は,
それぞれ
x1 + · · · + xn
n
√
F = n x1 · · · xn
n
S = 1
+
·
· · + x1n
x1
V=
(1)
(2)
(3)
.で表される.
FORTRAN プログラミング入門,–第 3 回の演習–
2/9
木村拓馬
演習 3.2(pr3.2.f90)
.
直円錐の半径と高さをキーボードから入力すると,体積,側面積,表面積を計
算し,計算結果を画面に出力するプログラムを作成しなさい.
.
.
半径 r,高さ h の直円錐の体積 (V ) と側面積 (F ) および表面積 (S ) は,以下のよ
うに記述できる.
1 2
πr h
3
√
F = πr r2 + h2
(5)
S = F + πr
(6)
V=
.
FORTRAN プログラミング入門,–第 3 回の演習–
2
(4)
3/9
木村拓馬
演習 3.3(pr3.3.f90)
.
三角形の三辺の長さをキーボードから入力すると,その面積を計算し,画面に
出力するプログラムを作成しなさい.
.
.
三角形の三辺の長さを a, b, c とすると,面積 S は,
S =
√
p(p − a)(p − b)(p − c)
ただし,
p=
a+b+c
2
で求める事ができる.
.
FORTRAN プログラミング入門,–第 3 回の演習–
4/9
木村拓馬
Appndix
FORTRAN プログラミング入門,–第 3 回の演習–
5/9
木村拓馬
全て終わって暇な人は試してみよう(パイプライン)
準備)次の様な単純な四則演算のプログラムをいくつか用意(plus,minus,times,divide)
.
.
2つの実数を入力したら和を出力 (plus.f90). 2つの実数を入力したら差を出力 (minus.f90).
.
.
program plus
read(*,*) x,y
write(*,*) x+y
end
program minus
read(*,*) x,y
write(*,*) x-y
end
.
.
2つの実数を入力したら積を出力 (times.f90).
.
.
.
2つの実数を入力したら商を出力 (div.f90).
.
.
.
program times
read(*,*) x,y
write(*,*) x*y
end
program divide
read(*,*) x,y
write(*,*) x/y
end
わかりやすい実行ファイル名(plus,minus,times,div など)でコンパイルしておく
.
[user@host␣˜/FPR1]$g95␣-o␣plus␣plus.f90
[user@host␣˜/FPR1]$g95␣-o␣minus␣minus.f90
[user@host␣˜/FPR1]$g95␣-o␣times␣times.f90
[user@host␣˜/FPR1]$g95␣-o␣div␣div.f90
.
FORTRAN プログラミング入門,–第 3 回の演習–
6/9
木村拓馬
全て終わって暇な人は試してみよう(パイプライン)
パイプライン
パイプ演算子“ | ”を含むコマンド行で指定し,これの左側のコマンドの
標準出力を右側のコマンドの標準入力として使うことを表す.
要は,あるコマンドの出力を他のコマンドの入力として使用できる.
パイプを使えば,複数のコマンドを組み合わせることができる.
echo
このコマンドは,引数として与えらえれた文字列等をそのまま並べて出力する.
.
echo の使用例)
.
[user@host␣˜/FPR1]$echo␣1␣2
1␣2
[user@host␣˜/FPR1]$echo␣˜
/home/tkimura
[user@host␣˜/FPR1]$echo␣$shell
/usr/bin/csh
.
”echo␣1␣2”で”1␣2”を出力,これをパイプで足し算のプログラム”plus”に入力してみる
.
echo+パイプの使用例)1+2=3
.
[user@host␣˜/FPR1]$echo␣1␣2|␣./plus
␣3.
.
FORTRAN プログラミング入門,–第 3 回の演習–
7/9
木村拓馬
全て終わって暇な人は試してみよう(パイプライン)
カッコとセミコロン ( ; ) で,2 つの出力をまとめることができる
.
echo+パイプの使用例)3+1=4
.
[user@host␣˜/FPR1]$(echo␣3;␣echo␣1)
␣3.
␣1.
[user@host␣˜/FPR1]$(echo␣3;␣echo␣1)|␣./plus
.␣4.
これらを組み合わせて,逆ポーランド記法の電卓っぽい計算ができる
.
echo+パイプの使用例)(1+2)/(3-5)=-1.5
.
[user@host␣˜/FPR1]$(echo␣3;␣echo␣1)
␣3.
␣1.
[user@host␣˜/FPR1]$(echo␣3;␣echo␣1)|␣./plus
␣4.
[user@host␣˜/FPR1]$(echo␣1␣2|./plus;␣echo␣3␣5|./minus)
␣3.
␣-2.
[user@host␣˜/FPR1]$(echo␣1␣2|./plus;␣echo␣3␣5|./minus)|./div
.␣-1.5
※もっとスマートな書き方があれば木村に知らせてください
FORTRAN プログラミング入門,–第 3 回の演習–
8/9
木村拓馬
参考文献
[1]
斎藤 信男 編:ユーザーズ UNIX,岩波書店(1988)
FORTRAN プログラミング入門,–第 3 回の演習–
9/9