Perl初歩の初歩

プログラミング言語Perlの初心者のためのわかりやすい解説ブログ(を目指しています)

わかれ道を作ってこそ…条件の話

2009-05-30 12:05:02 | ルールを覚えよう

プログラムが最初から最後まで1本道だったら、いつも同じ答えが出てしまい、応用がききません。
やっぱり、プログラムにはいろいろな場合場合によって、状況を変えるわかれ道が必要で、そうでなくてはなりません。

Perlでわかれ道を作るには次のようにします。

if ($hour == 6) { print "おはようございます"; }

if は もし~なら という英語で、if の後に条件があって、もし条件に合えば、{ } の中を実行し、もし条件に合わなければ、{ } は無視して次に進むようになっています。

上の例では、もし $hour という変数が 6 だった場合のみ、「おはようございます」と表示され、6 以外だった場合は、何も表示されないという意味になります。

== は 数字を比較するときに使う特殊な記号(比較演算子)で、同じかどうかを調べます。

if ($hour != 6) { print "6時ではありません"; }

!= も 数字を比較するときに使う特殊記号で、違うかどうかを調べます。
上の例では、$hour が 6 ではないときに、{ } の中を実行します。

if ($hour < 6) { print "まだ6時になってません"; }
if ($hour > 6) { print "もう6時は過ぎました"; }
if ($hour <= 6) { print "6時か6時前ですね"; }
if ($hour >= 6) { print "6時以降ですね"; }

不等号を使って比較することもできます。


文字を比較するときには別の記号を使います。

if ($shumi eq 'マラソン') { print "何km走れますか?"; }
if ($shumi ne 'マラソン') { print "走るのは嫌いですか?"; }

eq は 文字が同じかどうかを調べます。英語のイコール(equal)を略したんでしょうね。
ne は 文字が違うかどうかを調べます。not equal の略でしょう。


さらに、2つ以上の条件を使うには次のようにします。

if ($hour >= 6 && $hour <= 9) { print "おはようございます"; }
if ($hour <= 4 || $hour >= 18) { print "こんばんは"; }

$hour が 6時から9時の間のときに、「おはようございます」を表示します。
$hour が 4時より前、あるいは 18時以降のときに、「こんばんは」を表示します。

条件と条件の間に && を入れることで、両方の条件を満たすかどうかを、
同様に間に || を入れることで、どちらかの条件を満たすかどうかを調べます。

これらを使って複雑な条件を作ることができます。

if ($hour >= 6 && $hour <= 8 && ($shumi eq 'マラソン' || $shumi eq 'ジョギング')) { print "さあ、朝のランニングに行きましょう"; }

6時から8時の間で、かつ、趣味がマラソンかジョギングのときに表示されます。

このとき、優先度に注意してください。
>= や <= や eq が最優先で、次に && 最後に || という順番があります
上の場合、2番目の && よりも マラソンとジョギングをつなぐ || を優先したいので、( ) でくくっています。

もし、カッコがなかった場合は、
 6時から8時の間でかつ趣味がマラソン、あるいは、趣味がジョギング
という条件になってしまいます。

 



コメントを投稿