7章 コンピュータに判断させる

今回は、コンピュータに色々判断させる方法を紹介します。

世の中には、判断にせまられる状況ばかり。


洗濯物は乾いたあとじゃないと取り込めないし(僕はいつでも部屋干しですが)。
会社についたら自分の席にすわるし(誰かの席に座ったら大変だ)。
電源を入れて、コンピュータの画面がログイン画面になってからユーザー名とパスワードを入力するし(電源が立ち上がっていなかったらキーボードを打っても悲しいだけだ)。


こんな風に毎日色んな場面で状況を判断してからなにか行動を起こしています。


これをコンピュータ(プログラム)の場合で考えてみると、


シューティングゲームで、弾が機体にあたったら機体を爆発させる。
将棋のゲームで、駒を動かしたい先に移動できるなら、駒を動かす。
などがあります。


車の自動運転なんかでは、白線を感知して状況を判断し、勝手にハンドルをきってくれます。

どんどん科学が進めば、ロボットにプログラムを組み込んで、おなかがすいたら、勝ってに判断して、ごはんを運んできてくれるようになるかもしれません。夢は広がるばかりです。



さあ、この「判断」を実現するのが「if」です! 「if」を紹介しましょう。

でも、ちょっと待ってください。僕らはここまで数字を扱ってきました。数字にはちょっと飽きてきたところではないでしょうか?

文字!文字列!を扱いましょう!プログラムでは、文字も扱えます。変数に、ユーザー名を入れて、ユーザーによって処理を分けたら楽しくありませんか?

bingo_nakanishiというユーザ名なら、このブログを更新できるとか! おお!なんかWebアプリケーションが作れそうな気がしてきたぁああああああ!

は、しまった興奮してしまいました。
とまあ、こんな風に、「判断」できることによって、プログラムの幅がぐぐっと広がります。


さあ、プログラムを書いてみましょう

use strict;
my $user = 'bingo_nakanishi';

if($user eq 'bingo_nakanishi'){
  print 'ブログを更新できます';
}

ブログを更新できます
と表示されれば大成功です。

「ああー if も学ばなきゃいけないのに、 eq とか新しいのも出てきた〜」
本当に覚えることが多いですが、ゆっくりいきますね。

今まで、変数には、数字しか代入していませんでしたが、こんな風に文字列も代入できます。


あ、文字列の「列」というのが気になるかもしれませんが、これは複数文字で出来上がっているという感覚で今のところOKです。'bingo_nakanishi'は、複数の文字で出来上がっていますよね(15文字)。

さあ、ifのところです。仕組みは次のようになっています。

わかりにくいので、うそっこプログラムで、雰囲気をつかんでもらいましょう。

if ( おなかがすいた ){
  ごはんをお持ちしました。
}
if ( 蛍光灯のスイッチON ){
  蛍光灯の明かりがつく
}
if ( 弾が機体にあたる ){
  機体爆発
}


こいう風に書く決まりなんです。プログラムというのは、文字を理解してコンピュータが「なにかを起こしてくれる」わけです。コンピュータはこういう風に書いてもらえると「判断」ができるわけですね。


さてさて、本当のプログラム

use strict;
my $user = 'bingo_nakanishi';

if($user eq 'bingo_nakanishi'){
  print 'ブログを更新できます';
}

に戻りましょう。 「eq」の説明です。
「eq」 は、 「+」 とかと同じ演算子なんです(真ん中に置く、中間演算子ですね)。 左と右が同じ文字列なら「同じですよ〜」という結果を返してくれます。これを if の ( ) の部分が受け取れば、 { } で囲まれた部分を処理してくれるのです。




試しに、 'other_nakanishi' というのを、$user変数に代入してみましょう。

use strict;
my $user = 'other_nakanishi';

if($user eq 'bingo_nakanishi'){
  print 'ブログを更新できます';
}

なにも表示されなくなれば大成功です。
こんな風に、ifを使えば、いろいろな場合によって処理を変えることができます。わくわくしてきますね。


今回は、文字列を扱いましたので、次回は、また数字をつかって「if」を見ていきましょう。