演習 (2) タテヨコ計算

ファイルを読みこんで成長量と集計計算

# 標準入力から読みこんだファイルの書式が
# 「樹種   直径2001年   直径2002年」と仮定する.
# 読みこんだ行に成長量 (= 直径2002 - 直径2001) を加えて出力し,
# 断面積合計もいっしょに計算していって最後に表示する.

# BA とかいう指標計算専用のサブルーチン (C 言語でいう関数)
sub calc_ba {
	my ($dbh) = @_;
	$ba = $dbh * $dbh * 3.1416 * 0.25;
	return $ba;
}

# まとめて初期化
($total_ba_2001, $total_ba_2002) = (0.0, 0.0);

# ファイル読みこんで計算するループ
while (<>) { # 入力が続いてるかぎり繰りかえす
	chomp;         # 行末の改行マークを削除
	next if m/^#/; # 行頭が # だったらその行はとばす
	($species, $dbh2001, $dbh2002) = split; # 行の分割・代入
	$growth = $dbh2002 - $dbh2001; # 成長量の計算
	# 表示
        print  "$species  $dbh2001\t$dbh2002\t";
	printf "%.2f\n", $growth;            # 書式つき出力
	# BA なる指標の計算していく
	$total_ba_2001 += calc_ba($dbh2001); # サブルーチン calc_ba
	$total_ba_2002 += calc_ba($dbh2002); # を呼び出している
}
# 書式つき出力 printf を用いる
print  "----------------------------\n";
printf "TBA  %.2e   %.2e\n", $total_ba_2001, $total_ba_2002;

(関連ファイル)


[prev] [index] [next]