if文を使ってみよう
9.3 if文を使ってみよう
条件分岐文の一番基本となるのが、「if(イフ)文」です。if文の書き方は何通りかあります。
・ if文
・ if~else文
・ if~elseif~else文
それぞれの書き方について説明していきます。
9.3.1 if文の使い方
if文では、指定した条件式を満たす場合に、「{ }(波括弧)」内の処理を実行します。
「{ }」で囲まれた範囲を「ブロック」と呼び、ひとまとまりの処理を示すために使われます。
書式:if文
if文の条件式の判定結果は必ず「trueかfalseの真偽値」になり、if文では条件を満たして(true)ならば、ifブロック内の処理を行います。if文の処理の流れをフローチャートで表すと以下の図9.3.1になります。
図 9.3.1 if文のフローチャート
◉ポイント・ ある条件が成立する時だけ処理を実行させたい場合、if文を使う。
・ if文の条件式を判定した結果は、必ずtrueかfalseのどちらかの真偽値になる。
if文の条件式には「比較演算子」を使うことで、様々な条件を設定することができます。比較演算子の種類については次の項で詳しく紹介していきます。まずは条件式で最もよく使われる「等しい(同じ)」かどうかを判定するプログラムを確認してみましょう。
if文を利用して条件に応じた処理を行わせるプログラム
if文を利用して、条件を満たす場合と満たさない場合で、条件分岐が正しく行われるかどうかをWebブラウザにメッセージを表示して確認してみましょう。
ソース・フォルダ:myproj_super_intro/ch09
ファイル名 :ifStatement1.php
アクセスURL :http://localhost/myproj_super_intro/ch09/ifStatement1.php
➢ ifStatement1.java
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php $num1 = 8; $num2 = 8; echo '$num1 = ' , $num1 , '<br>'; echo '$num2 = ' , $num2 , '<br>'; //$num1と$num2の値を比較 if($num1 == $num2){ echo '◆変数$num1と$num2の値は等しいです。<br><br>'; } //$num2の値を7に変更 $num2 = 7; echo '$num1 = ' , $num1 , '<br>'; echo '$num2 = ' , $num2 , '<br>'; //$num1と$num2の値をもう一度比較 if($num1 == $num2){ echo '●変数$num1と$num2の値は等しいです。<br>'; } ?> </body> </html>
実行結果
解説
今回のプログラムのフローチャートを以下の図9.3.2に示します。図の点線がこのプログラムの処理の実行ルートになります。
ポイントは、1つ目のif文は条件式を満たしているのでメッセージを出力しますが、2つ目のif文は条件式を満たしていないのでメッセージを出力しないところです。
図 9.3.2 ifStatement1のフローチャート
7、8行目で条件分岐の比較に使う変数を、2つとも同じ値の「8」として用意しています。10、11行目は1回目の比較をする前に、変数の値を確認するために画面に表示を行っています。$num1=8、$num2=8が画面に表示されます。
14~16行目が条件分岐の判定を行う、1つ目のifブロックです。
14行目のifの括弧の中に記述された「$num1 == $num2」が条件式で、$num1と$num2の値が等しいかどうかを判定しています。プログラムで「等しい」かどうかを判定するための比較演算子は「==(半角イコール2つ)」を利用します。※イコールが1つだと代入演算子になってしまうので注意が必要です。
$num1=8、$num2=8の値は同じなので、条件式「$num1 == $num2」が満たされます。その結果ifブロック内の15行目のメッセージを出力する処理が実行され、画面に「◆変数$num1と$num2の値は等しいです。」と表示されます。
図 9.3.3 1つ目のifブロックのフローチャート
19行目で変数$num2の値を8から「7」へ変更しています。21、22行目で変更後の変数の値を確認するために、もう1度2つの変数の値を画面に表示させます。$num1=8、$num2=7が画面に表示されます。
25~27行目が2つ目のif文になりますが、処理内容は1つ目のif文と同じです。
今回は$num1=8、$num2=7(19行目の処理で変更)で値が異なるので、条件式「$num1 == $num2」が満たされません。したがって、ifブロック内の処理は行われずメッセージは表示されません。
図 9.3.4 2つ目のifブロックのフローチャート
今回は、2つの値が同じかどうかを判定するために、比較演算子「==」を利用しました。条件式に利用できる比較演算子には他にも種類があります。次項でその種類について説明を行っていきます。
9.3.2 条件式に使える比較演算子
前項で目にした比較演算子は、「左辺と右辺の値を比較する」演算子です。条件式でよく使う代表的な比較演算子の一覧を以下の表に示します。
表 9.3. 代表的な比較演算子の一覧
上記の比較演算子はどれも、2つの値を比較して条件を満たせば「真:true」を、満たさなければ「偽:false」を返すという動作を行います。この動作の性質を利用してif文などの条件判定を行うことができます。
条件分岐文の条件式には、ほとんどの場合比較演算子を利用します。たくさんあるのですぐには頭に入らないと思いますが、使いながら徐々に覚えていけば大丈夫です。さまざまな比較演算子を使った条件分岐文が書けるようになることを目指しましょう。