KAIHATSUGIKEN GROUP

PERL PROGRAMMING LANGUAGE



*************************************************************************************
4 入力


では
元金(最初の残高)、利率、年数を入力できるようにしてみましょう。

print"zandaka?";
$zandaka = <stdin>
print"riritsu?";
$riritsu = <stdin>
print "nen?";
$nen = <stdin>
for ($i = 0; $i < $nen; $i++){
	$zandaka *= (1+ $riritsu/100);
}
print"zandaka = $zandaka\n"

となります。
まず 画面に
zandaka?
と出ます。
残高をキーボード入力します。
その入力した値は<stdin>に返されます。(しまう事ね)
その後
riritsu?
と画面表示されます。
同じようにキーボード入力します。
その値は$riritsuの中の<stdin>にしまわれます。
次に
nen?
と表示されてまたまたキーボード入力します。
その値は$nenの<stdin>にしまわれます。

for ($i = 0; $i < $nen; $i++)
の部分でiの値を0に初期化して$i++でインクリメントします。

計算結果は例えば
zandaka? 10000
riritsu? 0.5
nen? 10
zandaka = 10511.4013204079

となります。
10年たっても511円しか増えません。
使ってしまいましょう。<笑>

ここで解るように$rirtsuの中には文字列もしくは数が入っています。
どっちなんでしょう?
画面入力された文字列が後になって計算式の中に組み込まれています。
Cの時なら
scanf() atoi()などで文字列から数に変換して
printf()などで数から文字列に変換すると言う処理をいちいち書かないといけませんでした。
perlはみんな自動的にやってくれます。
便利だねー
perlは必要に応じて変換してくれます。

でも 比較するときはどうするのでしょうか?

$x ="0.0";
$y ="0";

と言う文字列は同じではありません。
でも数としては同じ0です。

== と eq を使います。
例えば

$x == $y  は同じですが、
$x eq $y は偽となります。

== は 数を比較するときに
eq は  文字列を比較するときに使います。


こんなプログラムの意味は解りますか?

$one = 1;
$two = 2;
$x = "$one$two.$one";
$y = $x * 2;
print"$y\n";

$xには12.1が代入されます。
$yには12.1 * 2の計算結果が代入されます。
よって
$yには24.2が代入され表示されます。
なんだそりゃ・・・