プログラム初心者がif文を習得する術

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

プログラム初心者の登竜門であるところの「繰り返し文」と「条件分岐」ですが、以前「for文」を記事に書いたんですが、今回は「if文」です。
プログラム初心者がfor文をうまく使える法則を考える

if文は条件分岐

ifを英語で直訳すると「もしも・・・」なのだが、条件分岐は「もし〜ならば」なので、言語としては同じと考えていい。
条件分岐っていうと難しいので「もし文」って言ったほうが分かりやすいかも。

構文

どの言語でも基本的な構造は同じで下記のような構文になります。
※言語によって書き方や順番が異なる場合がありますが、考え方は同じです。言語事のリファレンスを読んで理解できるようになりましょう。

if (***1) {~~~1}
elseif (***2) {~~~2}
else {~~~3}

これを、言葉で表すと、

もしも、”***1″ ならば “~~~1″ の処理を実行する
上記の条件がマッチせずに、もしも、”***2” ならば “~~~2” の処理を実行する
これまでの条件がマッチしない場合は “~~~3” の処理を実行する。

さらに、お約束を追加すると

elseifは書かなくてもいいし、複数書くことができる。
elseは書かなくてもいい。

条件文である”***1″と”***2″は、結果が”true”と”false”のどちらかを判定するだけの処理である事を理解するだけでいいが、初心者はここが理解しづらいらしい。

使い方

構文は理解できても使えなくては意味がない。
どういう場面で使えばいいかを数多く体感するだけで、プログラムスキル自体が向上するので、是非たくさんのif文を下記、
他人の書いたif文を読んで理解していきましょう。

以下のサンプルはjavascriptで書いています。
ブラウザコンソールに貼り付けるだけで結果が手軽に確認できるようにしています。

サンプル1

変数の値が10より大きい事を判定

サンプル2

変数の値が同じ文字列かどうかの判定

サンプル3

変数に値が入ってるかどうかを判定
値が”0″なのにtrueになる理由は”0″という文字列が1文字入っているという点に注意です。
0は文字列扱いになっているので、値が何かという事は関係なく、文字列が1文字入っているのでtrueになります。
これが数値で0が入っているとfalse扱いになるので、結果が変わる点を注意しておきましょう。

サンプル4

配列の個数が5つ以上入っている事を確認
変数が配列になって、その個数をカウントする.lengthで配列の要素数に対しての条件文を書いている点を理解しましょう。

サンプル5

繰り返し文の中で5回目の処理の場合に別のプログラムを実行
for文との組み合わせで変動するi変数に対して条件文をセットするやり方は頻度の高い使い方なので、必ずマスターすること。

理解を深める

条件文の書き方が分かりにくいという意見が初心者からよく聞く。
if(a == 1){~~}
という構文は理解できるが、変数、配列、式などが同時に使われると途端に理解できなくなるそうだ。
なんとなく言っている事は分かるが、プログラムというのは、比較的構文さえ覚えてしまえば、あとはソレを訳すだけで読み解くこともできる。
もちろん、わかりにくく書かれているプログラムもありますが、他人が読むことを重要視するコーディングルールを設ける事も一般的になりつつあります。

trueとfalseの理解

構文内の条件文が全てにおいて”true”か”false”を判定するのがif文であることは前述してありますが、このtrueとfalseの判定という事を理解する事がif文の習得を早めるポイントではないかと考えられます。
まず以下のプログラムを見た時にtrueかどうかの判断ができるでしょうか?

“a”には”null”が入っているので、”true”でも”false”でもないと考えてしまい勝ちですが、trueとfalseは以下のような特性があるので覚えておきましょう。

・変数の値が入っていると”true”値が入っていないと”false”
・数値の0は”false”でそれ以外の値は”true”
・値が、null , “”(blank)の場合は”false”それ以外は”true”

上記が簡単に理解できるだけでif文の扱いがかなり楽になります。

複雑な条件文

三項演算子

if文と同じ結果を短く書くことができる三項演算子という書き方です。
たまに頻繁に書くプログラマがいるので、書いてある内容を理解できるようにしておきましょう。
“if”って書いていないけど、if文なんですね。
多くの言語では”()”括弧で囲まれると”true”と”false”の扱いになる場合があります。
また、()内が数式の場合は、数値だけで返す場合もあるので、この辺は言語別に勉強しておきましょう。
※読み物が面倒くさい人は、自分でプログラム書いて確かめておきましょう。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です