プログラミングに出てくるif文の使い方がイマイチよくわかりません。
初心者レベルでわかりやすく解説して欲しいな。
本記事の内容
プログラムは基本、上から下へと順番に実行されていきます。
しかし、状況によっては処理を分けて実行させたい時もあります。
そんな処理を分けたい時に使うものが「if文」です。
この記事では、プログラミングの基本である「if文の基礎知識」や「書き方」などについて初心者でも分かるように図式し解説していきます。
if文を使いこなせるようになると、プログラムの流れを自在に変えることができるようになります!
≫初心者プログラミング|基本構文5つの解説まとめ【図解あり】
1.プログラミングのif文とは?|条件分岐を行う制御文
まず最初に「if文」を書くにあたって「if文」の前提知識を解説していきます。
「if文」とは、条件によって処理を分けたい時に使う制御文のことで「条件分岐」と呼ばれます。
条件とは「Yes」もしくは「No」で答えられる質問のことです。
例えば、テストの点数が70点以上とそれ未満とで異なった処理を行いたい時、
「テストの点数は70点以上か?」
という質問に対し「Yes」または「No」で処理を切り替えます(下図)。
プログラミングでの「if文」は、英単語の「if」と同じ意味を持ち「もし〜だった場合」という処理を組み立てることができます。
次節で実際にif文を使った解説をしていますよ。
2.if文の書き方|基本パターン3つ
ではこれから「if文」の書き方の基本3パターンを解説していきます。
1.条件を満たす場合
以下は、最も簡単なif文です。
条件式を満たす場合に、何らかの実行させたい処理がある場合です。
if(条件式){
条件を満たす場合の処理を記述
}
「if」だけを使って、条件式を満たす場合は{}内の処理を実行しています。
つまり、条件式の答えが「Yes」の場合のみ処理が実行されます(下図)。
例えば「テストの点数が70点以上の場合には"合格!"という文字列を表示する」 といった場合です。
2.条件を満たさない場合
次に、条件を満たす場合に加えて、条件式を満たさなかった場合の処理をさせたい場合の記述の書き方です。
if(条件式){
条件を満たす場合の処理を記述
}else{
条件を満たさなかった場合の処理を記述
}
「if」に加え「else」を使って、条件式を満たさなかった場合の処理を書くことができます。
つまり、条件式の答えが「No」の場合に実行されます(下図)。
例えば「テストの点数が70点以上の場合には"合格!"、それ以外(70点未満)は”不合格”という文字列を表示する」
といった場合ですね。
3.複数条件のいづれかに当てはまる場合
最後に、いずれかの条件に当てはまる場合の書き方です。
if(条件式1){
条件を満たす場合の処理1を記述
}else if(条件式2){
条件1を満たさなかった場合の処理2を記述(条件2のみ満たす)
}else if(条件式3){
条件1も条件2も満たさなかった場合の処理3を記述(条件3のみ満たす)
}else{
条件1、2、3いづれも満たさなかった場合の処理4を記述
}
「if」に続けて「else if」を使って、他の条件は満たさないが、当該条件のみ満たす場合の処理を書くことができます(下図)。
例えば、テストの点数が、
- 70点以上の場合には"合格!"という文字列を表示する。
- 50点以上で70点未満の場合には"再テスト!"という文字列を表示する。
- それ以外(50点未満)は”不合格”という文字列を表示する。
といった条件が複数ある場合です。
ですが、「else if」を続けて書いてしまうことで、コードが読みにくくなったりメンテナンスが難しくなります。
そんな時は次節で解説する「switch文」を使って条件分岐しましょう!
条件が増える場合は「switch文」を使うとスマート
「switch文」は、いくつかの選択肢の「どれに該当するか」をシンプルに記述できるのが特徴です。
以下「switch文」の書き方です。
switch (変数) {
case 値A
処理A...
break
case 値B
処理B...
break
case 値C
処理C...
break
default
処理
}
switchに書かれた変数に合致するcase内の処理を実行し、breakでswitch文を抜けます。
最後のdefaultはどのcaseにも該当しない場合に実行されます。
選択肢が多い条件分岐の場合は「switch文」を使いましょう。
1行での書き方|三項演算子
1行で条件分岐をするこができ「三項演算子」といわれます。
書き方は以下のとおり。
条件式 ? 条件を満たす場合の処理 : 条件を満たさない場合の処理
条件式のあとに「?」を書き、条件を満たす場合の処理と条件を満たさない場合の処理を「:」を挟んで記述します。
以下、if文を1行で書いたJavaの例を書いておきます。
テストの点数を判定(70点以上)し"合格"または"不合格"かの文字列を表示するJavaプログラムです。
Java String evaluation; //評価(合格、不合格) int testPoint; //テストの点数 evaluation = testPoint >= 70 ? "合格" : "不合格"; System.out.println("評価は" + evaluation + "です。");
if文はプログラム中で多く使われ、{}カッコが多くなり行数も増えることから省略して書くことも可能です。
ですが「if」というワードがないので、慣れないとか見辛いなどとコーディング規約で禁止されているプロジェクトもあります。
なので、参考程度に1行でも書けるんだということを覚えておいてくださいね。
次は、ifのあとに書かれる()内の条件式について深掘りし解説します。
3.条件式の組み立て方
if文の条件式には、関係演算子(==、>、<など)を使って記述します。
様々なケースについて関係演算子を使った条件式の組み立て方をご紹介します。
使い方例 | 使用する演算子 | 条件式の記述例 |
点数が90点の場合(等しい) | == | if (point == 90) |
点数が90点以下の場合 | <= | if (point <= 90) |
点数が90点以上の場合 | >= | if (point >= 90) |
点数が90点以外の場合(不一致) | != | if (point != 90) |
点数が90より大きい場合 | < | if (point > 90) |
点数が90点より小さい場合 | > | if (point < 90) |
関係演算子(==、>、<など)は頻繁に使用されるので、必ず覚えておいてくださいね。
条件式を複数設ける場合|論理演算子を使う
ifの()内には「論理演算子(&&や||)」を使って複数の条件式を書くことができます。
条件式に「論理演算子」(&&や||)をつかうことで、以下のような判定ができます。
- AかつB
- AまたはB
1.AかつB
「両方の条件式を評価する場合」の書き方です。
各々の条件を「&&」で挟んで記述します。
if(条件式A && 条件式B){
条件式AもBも満たす場合の処理を記述
}
2.AまたはB
「どちらか一方の条件を評価する場合」の書き方です。
各々の条件を「||」で挟んで記述します。
if(条件式A || 条件式B){
条件式AまたはBを満たす場合の処理を記述
}
条件式の結果を逆にする|not(!)
条件式の前に「!」をつけることで、条件式の結果を逆にした判定方法もあります。
if(!条件式A){
条件式Aを満たさない場合の処理を記述
}
具体例をPHPを使って書いてみます。
以下は1から10までの整数のうち、4で割って割り切れない(余りがある)整数を表示するプログラムです。
PHP $numberList = array(1,2,3,4,5,6,7,8,9,10); for($i=0;$i<10;$i++){ if(!($i%4)==0){ echo "余りがある整数:".$i."\n"; } }
実行結果
余りがある整数:1
余りがある整数:2
余りがある整数:3
余りがある整数:5
余りがある整数:6
余りがある整数:7
余りがある整数:9
4.入れ子になったif文|ネスト
if文の中には、さらにif文を記述することができます。
このような入れ子にすることを「ネスト」と呼びます。
ではネストになったif文の書き方を紹介します。
if(条件式A){
if(条件式B){
処理B1 ...
}else{
処理 B2...
}
}else{
処理C...
}
上記ネストになったif文を解説は以下の図式を見てもらえるとわかりやすいかと。
しかし、ネストができるからといって使いすぎると、読みにくく、メンテナンスもしにくいものとなります。
どのくらいまでのネストが許されるかは一概にいくつとは言えません。
なので、前述したswitch文に書き換えるなど、誰が見ても理解しやすく読みやすいコードを書いていきましょう。
5.様々な言語のif文
ここでは、様々な言語のif文をご紹介します。
- PHP
- Java
- Python
- Ruby
これから、以下の条件でのif文をご紹介していきます。
- 70点以上の場合には"合格!"という文字列を表示する。
- それ以外(70点未満)は”不合格”という文字列を表示する。
PHP $testPoint=90; $result=""; if($testPoint >= 70){ $result="合格" }else{ $result="不合格" } echo $result;
Java int testPoint=90; String result=""; if(testPoint >= 70){ result="合格"; }else{ result="不合格"; } System.out.println("結果は"+result);
Python testPoint=90 result="" if testPoint >= 70: result="合格" else: result="不合格" print(result)
Ruby testPoint = 90 result="" if testPoint >= 70 then result="合格" else result="不合格" end print(result)
言語独自の仕様があるくらいで、どの言語も書き方はあまり変わりません。
まとめ
最後に要点をまとめます。
if文はプログラムの流れを変える「条件分岐」を実現する制御文です。
書き方:ifやelseを使い、条件式の答え(YesかNo)に対する処理を記述していきます。
条件式:関係演算子(==、>、<など)や論理演算子(&&、||)を使って様々な条件式を組み立てます。
if文はプログラムにおいて、頻繁に使う構文です。
この記事でif文の書き方を覚えたら、次は「繰り返し文」を覚えましょう!
関連プログラミングの繰り返しの書き方使い方を図解し解説【初心者】