「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
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円です。";