拙著「個人投資家は低位株で儲けなさい」が発売されました。
株価が安い「低位株」に投資する方法を解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
MTでPerlを学ぶ(その7・ifによる条件判断3)
「MTでPerlを学ぶ」の第7回をお送りします。
今回は、ifのネストについて解説します。
1.ifのネストとは
if文を使って条件に応じて処理を分ける場合、条件に対応する処理の中で、さらに条件を判断することが必要になることもあります。
このような処理をif文で書く場合、以下のリストのように、条件に対応する処理の中に、さらにif文を入れる、という形になります。
if (条件1)
else {
条件2を満たしていないときの処理
}
}
else {
・・・
}
上のリストのように、if文の中にさらにif文があるような書き方のことを、「ネスト」または「入れ子」と呼びます。
2.例
例えば、年齢と性別によって、以下の表のように料金がかかるサービスがあるとします。
このサービスの料金を、Perlで求めることを考えてみます。
| 性別 | |||
|---|---|---|---|
| 男 | 女 | ||
| 年齢 | 12歳以下 | 500円 | 400円 |
| 18際以下 | 1,000円 | 800円 | |
| 上記以外 | 2,000円 | 1,600円 | |
このサービスの料金は、年齢と性別の2つの条件で決まります。
また、個々の年齢にって、性別で料金を判断するような形になります。
料金を求める処理を流れ図で表すと、以下のようになります。
図中の点線で囲んだ部分は、「年齢が12歳以下」の条件を満たしたときの処理です。
この処理の中には条件判断があり、ネストした状態になっています。
同様に、「年齢が18歳以下」の条件を満たしたときの処理や、「年齢が18歳以下」を満たさなかったときの処理にも、条件判断が含まれていて、ネストの形になっています。
年齢と性別が変数$age/$sexに代入されているとし、また料金を変数$feeに代入するとします。
この場合、上記の図に対応するプログラムは、以下のリストのようになります。
# 年齢が12歳以下かどうかを調べる
if ($age <= 12) {
# 年齢が12歳以下なら、性別によって料金を求める
if ($sex eq '男') {
$fee = 500;
}
else {
$fee = 400;
}
}
# 年齢が18歳以下かどうかを調べる
elsif ($age <= 18) {
# 年齢が18歳以下なら、性別によって料金を求める
if ($sex eq '男') {
$fee = 1000;
}
else {
$fee = 800;
}
}
else {
# 年齢が18歳以下でないなら、性別によって料金を求める
if ($sex eq '男') {
$fee = 2000;
}
else {
$fee = 1600;
}
}
print "年齢は$age歳で、性別は$sexです。<br />";
print "料金は$fee円です。";
