インターネット&PC120%活用:インターネット活用編

条件分岐 (IF)

Perlのif文はC言語とほぼ同じですね。あまり注意すべき点はないと思います。
一般的な記述の形式は以下の通りです。言うまでもなく、論理式が真なら、直後の命令文を実行し、
偽ならelse以降の命令文を実効します。

if (論理式) { 命令文 }
else { 命令文 }

分岐がもっと多くなる場合は、以下の形式で記述します。PerlにはSwitch .... Case ...文がないので、
以下のようにelseifを使います。
まず if の後の論理式が評価され、真なら直後の命令文が実行され、偽なら次のelseif の論理式が
評価されます。その結果が真ならその後ろの命令文が実行され、偽ならelse以降の命令文が実行
されます。

if (論理式) { 命令文 }
elseif (論理式) { 命令文 }
else { 命令文 }


また、論理式が偽のときに命令文を実行するunlessという条件分岐命令もあります。
unlsee (論理式) { 命令文 }

今回は悩むことのない部分ですので、if文を使ったプログラム例をあげておわりにします。
まずは、おみくじプログラムです。
# おみくじプログラム
# 乱数にシードを与える
srand;

# rand関数は、0から1までの乱数を与える。
$i = rand;

$i = int($i * 100);

if(0 <= $i && $i <= 20) { $str = '今日はとってもいいことありそう。大吉!'; }
elsif(20 <$i && $i <= 40) { $str = '今日は落ち着いて、ゆっくりと!'; }
elsif(40 <$i && $i <= 60) { $str = '今日は人の話をよく聞こう!'; }
elsif(60 <$i && $i <= 80) { $str = '今日は人にやさしくするといいことあるかも!'; }
elsif(80 <$i && $i <= 100) { $str = '今日はいやなことから片づけると吉!'; }
print <<"END";
****今日の運勢*****
$str
END
exit;

乱数で、0〜100までの数字を作り、その結果をif ... elseif ... で条件分岐させて、おみくじの結果を
表示する簡単なプログラムですね。乱数の作り方も見ればわかると思いますが、乱数については
別の機会に説明したいと思います。

以下実行結果です。
C:\Perl>perl rnd.pl
****今日の運勢*****
今日はとってもいいことありそう。大吉!

C:\Perl>perl rnd.pl
****今日の運勢*****
今日はいやなことから片づけると吉!


次は、簡単なパスワード認証です。
# パスワード認証

START:
print "パスワード? ";
$psw=<stdin>;
chomp($psw);

if ($psw eq "ok") {print "認証に成功しました";}
else {goto START;}

実行結果です。
C:\Perl>perl psw.pl
パスワード? hello
パスワード? no
パスワード? yes
パスワード? ok
認証に成功しました

 

TopPage 

inserted by FC2 system