■=Perl, ■=結果
![]()
標準体重(kg)を求める計算は[身長(m)]×[身長(m)]×[22](BMI指数)だそうです。この標準体重から10%以上多いと要注意とか。そこで画面から身長と体重を入力してもらい、結果をコメントするスクリプトを作ってみました。下の身長と体重を入力して[体重を測る]ボタンを押してください。
上の入力フォームのHTMLは以下のようになっています。
それでは if文の条件式を使って身長と体重から標準体重を計算しましょう。 |
if (条件式) {条件式に当てはまるときの指示}
|
if ($taijyu == 0 or $shincyo == 0) {
print "<h2>体重・身長が入力されていません。<br>\n";
print "入力してください。</h2>\n";
}
|
if (条件式) {条件式に当てはまるときの指示}
elsif (条件式に当てはまらないときの条件式) {elsifの条件式に当てはまるときの指示}
|
if (条件式) {条件式に当てはまるときの指示}
else {条件式に当てはまらないときの指示}
|
下にスクリプトをいくつかに分けて示します
#!/usr/local/bin/perl
$title = "最近太った?";
require 'stdin.txt';# 入力文字処理
$shincyo = $FORM{'shincyo'};
$taijyu = $FORM{'taijyu'};
$shincyo_m = $shincyo / 100; # cmからmへ
$taijyu = int($taijyu *10 + 0.5) / 10; # 入力体重を四捨五入して整数に
$hyojyun = int($shincyo_m ** 2 * 22 *10 + 0.5) / 10; # 標準体重
$jyogen = int($hyojyun * 1.1 * 10) /10; # 体重上限
$jyogen2 = int($hyojyun * 1.05 * 10) /10; # 体重上限
$kagen = int($hyojyun * 0.9 * 10) /10; # 体重下限
$kagen2 = int($hyojyun * 0.95 * 10) /10; # 体重下限
print "Content-type: text/html\n\n";
require 'heder.txt';# ヘッダー読み込み
print "<center>\n";
print "<h1>ココの標準体重計</h1>\n";
print "<table><tr><td>\n";
print "<div class=\"line1\">";
|
$title は cgi で作成されるHTMLのタイトルです。require 'stdin.txt'で文字入力の共通スクリプトを呼び出しています。stdin.txtについては「テキストの色替え」の章を参照してください。
【→Perl Reference: require】
$shincyo = $FORM{'shincyo'} や $taijyu = $FORM{'taijyu'} でフォームデータからの入力数値を代入しています。
$taijyu = int($taijyu *10 + 0.5) / 10; |
$hyojyun = int($shincyo_m ** 2 * 22 *10 + 0.5) / 10; |
$jyogenと$kagenで、標準体重に対し10%の上限と下限を得、$jyogen2と$kagen2は5%の差を求めています。標準体重から5%の差なら殆どベストな体重と考えたからです。
下がメインの条件判断です。
if ($taijyu == 0 or $shincyo == 0) {
print "<h2>体重・身長が入力されていません。<br>\n";
print "入力してください。</h2>\n";
} else {
print "身長<font color='blue'>", $shincyo, "</font>cmのあなたの標準体重は<font color='blue'>";
print $hyojyun;
print "</font>kgとなります。<br>\n";
if ($jyogen2 > $taijyu and $kagen2 < $taijyu) {
print "現在の体重は<font color='blue'>", $taijyu, "</font>kgですから、<font color='red'>標準体重そのものです。</font><br>";
print "あなたの身長では<font color='blue'>";
print $jyogen;
print "</font>kgから<font color='blue'>", $kagen;
print "</font>kgまでが理想体重ですから、<br>今後も体重維持に心掛けてください。";
} elsif ($hyojyun > $taijyu) {
print "現在の体重は<font color='blue'>", $taijyu, "</font>kgですから、";
print "<font color='red'>標準体重より</font><font color='blue'>", int($hyojyun - $taijyu);
print "</font><font color='red'>kgマイナスとなっています。</font></font><br>\n";
print "あなたの身長では<font color='blue'>";
print $kagen;;
print "</font>kgから<font color='blue'>", $jyogen;
print "</font>kgまでが理想体重ですから、";
if ($kagen < $taijyu) {
print "やせすぎの心配はいりません。<br><font color='blue'>\n";
print $kagen - $taijyu;
print "</font>kg減ると注意信号ですので気をつけてください。<br>\n";
}
else {
print "やせすぎです。<br><font color='blue'>\n";
print print int(($kagen - $taijyu) * 10 + 0.5) /10;
print "</font>kg増やすよう頑張ってはどうでしょうか。<br>\n";
}
} else {
print "現在の体重は<font color='blue'>", $taijyu, "</font>kgですから、<font color='red'>標準体重より</font><font color='blue'>", int($taijyu - $hyojyun);
print "</font><font color='red'>kgオーバーとなっています。</font><br>\n";
print "あなたの身長では<font color='blue'>";
print $kagen;
print "</font>kgから<font color='blue'>", $jyogen;
print "</font>kgまでが理想体重ですから、";
if ($jyogen > $taijyu) {
print "太りすぎの心配はいりません。<br><font color='blue'>\n";
print $taijyu - $jyogen;
print "</font>kg増えると注意信号ですので気をつけてください。<br>\n";
}
else {
print "太りすぎです。<br><font color='blue'>\n";
print int(($taijyu - $jyogen) * 10 + 0.5) /10;
print "</font>kg減らすよう頑張ってはどうでしょうか。<br>\n";
}
}
}
|
if ($taijyu == 0 or $shincyo == 0) {
|
print "<hr>再度測るならどうぞ!<br>\n"; print qq| <table border="1" cellpadding="5"><tr><td rowspan="3"><a href="./cocophotodisp.cgi?l=7"><img src="../images/Coco0101_2_l.jpg" width="100" height="85" border="1 alt="Coco" align="left"></a></td><td> <form action="./weight.cgi" method="POST"> あなたの身長は<input type="text" name="shincyo" maxlength="3" size="6">cm</td></tr> <tr><td>あなたの体重は<input type="text" name="taijyu" maxlength="3" size="6">kg</td></tr> <tr><td align="center"><input type="submit" value="体重を測る"> </td></form></tr></table> </td></tr></table> </center> </div> |; require 'fotter.txt';# フッター読み込み exit; |
全てをまとめると以下になります。
#!/usr/local/bin/perl
$title = "最近太った?";
require 'stdin.txt';# 入力文字処理
$shincyo = $FORM{'shincyo'};
$taijyu = $FORM{'taijyu'};
$shincyo_m = $shincyo / 100; # cmからmへ
$taijyu = int($taijyu *10 + 0.5) / 10; # 入力体重を四捨五入して整数に
$hyojyun = int($shincyo_m ** 2 * 22 *10 + 0.5) / 10; # 標準体重
$jyogen = int($hyojyun * 1.1 * 10) /10; # 体重上限
$jyogen2 = int($hyojyun * 1.05 * 10) /10; # 体重上限
$kagen = int($hyojyun * 0.9 * 10) /10; # 体重下限
$kagen2 = int($hyojyun * 0.95 * 10) /10; # 体重下限
print "Content-type: text/html\n\n";
require 'heder.txt';# ヘッダー読み込み
print "<center>\n";
print "<h1>ココの標準体重計</h1>\n";
print "<table><tr><td>\n";
print "<div class=\"line1\">";
if ($taijyu == 0 or $shincyo == 0) {
print "<h2>体重・身長が入力されていません。<br>\n";
print "入力してください。</h2>\n";
} else {
print "身長<font color='blue'>", $shincyo, "</font>cmのあなたの標準体重は<font color='blue'>";
print $hyojyun;
print "</font>kgとなります。<br>\n";
if ($jyogen2 > $taijyu and $kagen2 < $taijyu) {
print "現在の体重は<font color='blue'>", $taijyu, "</font>kgですから、<font color='red'>標準体重そのものです。</font><br>";
print "あなたの身長では<font color='blue'>";
print $jyogen;
print "</font>kgから<font color='blue'>", $kagen;
print "</font>kgまでが理想体重ですから、<br>今後も体重維持に心掛けてください。";
} elsif ($hyojyun > $taijyu) {
print "現在の体重は<font color='blue'>", $taijyu, "</font>kgですから、";
print "<font color='red'>標準体重より</font><font color='blue'>", int($hyojyun - $taijyu);
print "</font><font color='red'>kgマイナスとなっています。</font></font><br>\n";
print "あなたの身長では<font color='blue'>";
print $kagen;
print "</font>kgから<font color='blue'>", $jyogen;
print "</font>kgまでが理想体重ですから、";
if ($kagen < $taijyu) {
print "やせすぎの心配はいりません。<br><font color='blue'>\n";
print $kagen - $taijyu;
print "</font>kg減ると注意信号ですので気をつけてください。<br>\n";
}
else {
print "やせすぎです。<br><font color='blue'>\n";
print int(($kagen - $taijyu) * 10 + 0.5) /10;
print "</font>kg増やすよう頑張ってはどうでしょうか。<br>\n";
}
} else {
print "現在の体重は<font color='blue'>", $taijyu, "</font>kgですから、<font color='red'>標準体重より</font><font color='blue'>", int($taijyu - $hyojyun);
print "</font><font color='red'>kgオーバーとなっています。</font><br>\n";
print "あなたの身長では<font color='blue'>";
print $kagen;
print "</font>kgから<font color='blue'>", $jyogen;
print "</font>kgまでが理想体重ですから、";
if ($jyogen > $taijyu) {
print "太りすぎの心配はいりません。<br><font color='blue'>\n";
print int($hyojyun * 1.1 * 10) /10 - $taijyu;
print "</font>kg増えると注意信号ですので気をつけてください。<br>\n";
}
else {
print "太りすぎです。<br><font color='blue'>\n";
print int(($taijyu - $jyogen) * 10 + 0.5) /10;
print "</font>kg減らすよう頑張ってはどうでしょうか。<br>\n";
}
}
}
print "<hr>再度測るならどうぞ!<br>\n";
print qq|
<table border="1" cellpadding="5"><tr><td rowspan="3"><a href="./cocophotodisp.cgi?l=7"><img src="../images/Coco0101_2_l.jpg" width="100" height="85" border="1 alt="Coco" align="left"></a></td><td>
<form action="./weight.cgi" method="POST">
あなたの身長は<input type="text" name="shincyo" maxlength="3" size="6">cm</td></tr>
<tr><td>あなたの体重は<input type="text" name="taijyu" maxlength="3" size="6">kg</td></tr>
<tr><td align="center"><input type="submit" value="体重を測る">
</td></form></tr></table>
</td></tr></table>
</center>
</div>
|;
require 'fotter.txt';# フッター読み込み
exit;
|
| | Back | Coco's Home | ココとPerlで遊びませんか | |