前回のつづきです。
1から100までの和を求める、その3。
BEGIN{for(;;){
if(i<=100){
sum=sum+i;
i++}
else{
print sum;
break}
}
}
for(;;){ }はforの特殊な使い方で、このように式の部分を省略すると無限ループになります。ループから出るには breakを使います。内部に条件式を書いて条件に合ったらbreakという構造にするのが基本的です。
ループを使った例として複利計算をしてみます。つまりは等比数列の和を求める問題です。
3000万円を年利3%で25年借りた場合の元利合計・毎年の返済額を計算します。このスクリプトを進化させて借入額、年利、借入年数を実行時に入力できるようにすることもできますが、jgawkでは # 以下文末まではコメントとして実行時には無視されますから、適宜コメントを入れて自分で直して使えるようにするのも一法です。
BEGIN{gankin=30000000; #借入額(単位 円)
kinri=0.03; #年利(小数) 例えば 3%ならば 0.03
nensu=25; #借入年数(単位 年)
for(i=1;i<=nensu;i++){
if(i==1){sum=gankin;
}else{
sum=sum+sum*kinri;
}
};
printf("借入額 %d円\n",gankin);
printf("年利 %.4f%\n",kinri);
printf("返済年数 %d年\n",nensu);
printf("元利合計 %d円\n",sum);
printf("年返済額 %d円\n",sum/i);
}
借入額 30000000円 年利 0.0300% 返済年数 25年 元利合計 60983823円 年返済額 2345531円
初出 NIFTY-Serve「みんみんネット」1996/09/16 (Mon) 09:44:38