ディレクターがコードを書く

webディレクターのネトゲ廃人がコード書きたくなってはじめたブログ。

基礎編③//制御構文と比較

どうも、githubのsshのkeyを設定した後で詰んでいるkwsmDです。

難易度高ッ!

プロジェクトdGithubを使っているのですがディレクター職がpush等することはないのでそっから。 いずれはできるようになりたいところですが時間がつぶれすぎてしまったのでとりあえずコードを書くところから

制御構文

  • ifとelseのアレ

サンプル

my $hoge = 15;

if ( $hoge = 15 ) {
    print "OK\n";
} else {
    print "NG\n";
}

もし(if) $hogeの内容が15だった場合{}の中を実行 -> この場合print "OK\n";
結果 -> OK の表示

違った場合(else) $hogeの内容が15じゃなかった場合はこっち(else)の{}の中を実行 -> この場合print "NG\n";
結果 -> NG の表示

となる。

条件が複数の場合は

my $hoge = 15;

if ( $hoge = 15 ) {
    print "OK\n";
}
elsif( $hoge = 20 ) {
    print "+5\n";
}
elsif( $hoge = 10 ) {
    print "-5\n";
}
elsif {
    print "NG\n";
}

elsifでつなげる。

比較

()と()を比較する場合に使用するもの

== // 右辺と左辺が等しいならば真
!= // 右辺と左辺が等しくないならば真
<  // 右辺より左辺が小さいならば真
>  // 右辺より左辺が大きいならば真
<= // 右辺が左辺以上ならば真
>= // 右辺が左辺以下ならば真

ex.

$hoge = 1;
$hage = 1;

if( $hoge == $hage){
  print '$hoge=$hoge\n';
}

# 該当のためprintの内容を表示

みたいな使い方ですね。

エクセルでも似たようなのをよく使っています(震え声)

練習問題

  • 簡単な数当てゲーム question_num.plを作成しよう
  • 端末から数字を一つ入力し, その数字が$answerと一致したらOK, $answerより大きければtoo big, 小さければtoo smallと表示する
  • オプション: 入力した値が, $answerから-5+5の範囲内($answerが10なら, 5~15)の場合, nearと表示するようにしてみよう

※この練習問題はPerl Entranceを参考にしております。

hmhm。なるほど。

エクセルだと

=IF(A1=10,"OK",IF(A1>15,"too big",IF(A1<5,"to small",IF(A1-5>10,"near",IF(A1-5<15,"near","null")))))

こんな感じですかね!(カオス)

冗談さておき実行。

コード

use strict;
use warnings;


my     $input = ;
my    $anser =10;


    if( $input == $anser){
        print "OK\n";
    }
    elsif( $input > $anser + 5){
        print    "too Big\n";
    }
    elsif( $input < $anser - 5 ){
        print    "too small\n";
    }
    elsif( $input  > $anser - 5 ){
        print "near\n";
    }
    elsif(    $input > $anser + 5 ){
        print "near\n";
    }   

実行結果

f:id:kwsmD:20131224213214p:plain

若干違う気もするけども、問題はクリアできている感。

プログラム自体、求められている内容の解は複数あるけど、実用レベルになるとある程度これが良い。みたいのあるんだろーなー。 と思いつつ、経験を積んで行こ。