第8回 . 条件分岐( if 文)


プログラムは、制御文などを使用する事によって一本道だった物を途中で分岐させる事ができます。

RPGでしたら、「お金が
ある場合は、このアイテムが買える」「無ければ買えない」といった分岐があるでしょう。
アクションの場合は「敵に
当たったらライフが減る」「敵に当たらなかったらライフは減らない」。

このように条件によってプログラムの流れを制御する命令の一つとして「
if文」があります。


★1 . if 文の使い方

if 文の使い方は以下のようになります。。

if(式) 文 ;


if文は「式」の内容が成立した場合(真の時)にだけ、次の「文」が実行されます。
「式」が成立しなかった場合(偽の時)、文は飛び越されてその次の文から実行されます。

if 文を実際に記述するとこうなります。

if( a>5 ) pceFontPrintf("aの値はは5より上です") ;


この場合は「変数aが5より大きかった時に、次のpceFontPrintfが実行される」という事です。
変数aの値が5より小さかったらpceFontPrintfは実行されずに次の文から実行されます。

この書き方だと条件が成立した時に1つの文しか実行できません。

複数の文を実行したい場合は中括弧(
{ } )で囲む事によって、条件成立時に囲まれた範囲(コードブロック)を実行できます。

if(a>0){
 pceFontPrintf("このように");
 pceFontPrintf("複数の文も");
 pceFontPrintf("実行できます");
 a=3;
}



★2 . else文の使い方

else文というのはif文とセットで使う物で、if文の式が成立しなかった時にのみ実行される文です。

if(式) 文 ;
else 文;

if文が成立した時は、ifの文が実行されますがelseの文は実行されません。
if文が成立しない時は、ifの文が実行されない代わりにelseの文が実行されます。

これによって二者択一の分岐を作る事ができます。

pceFontPrintf("店員「メモ●ーカードは1800ガバスです\n」");

if(money>=1800){
   money = money -1800; /*変数moneyから1800を減算*/
   pceFontPrintf("1800ガバス払いました\n");
}
else{
   pceFontPrintf("店員「ガバスが足りません」\n");
}

pceFontPrintf("残り%dガバス\n",money); /*所持金を表示*/

pceFontPrintfに渡す文字列の中にある「\n」は改行するための物です。
「\n」を入れた場所で文字が改行されます。


★3 . 関係演算子

if文の式には数字や変数を関係演算子(=とか>とか)の種類は以下の通りです。

演算子 意味
< 「小さい」  a<b は aがbより小さい時に真
<= 「以下」   a<=b は aがb以下の時に真
> 「大きい」  a>b は aがより大きい時に真
>= 「以上」   a>=b は aがb以上の時に真
== 「等しい」  a==bは aとbが等しい時に真
!= 「等しくない」 a!=bは aとbが等しくない時に真

注意すべきは「==」です。
「=」だと「代入」になってしまいますので、「==」と2つ書く事で「等しい」という意味になります。

式の部分には演算子を書かずに「数字」や「変数」のみを書く事もできます。
その場合「0」は「偽」、「0以外」は真となります。
つまり「if (1) 」は0以外なので実行されます。
「if(0)」なら実行されません。


★4 . 実際に打ってみよう

下のサンプルを用意しましたので、赤字で書いた部分を雛形に追加して実行してみましょう。

void pceAppInit( void )
{
int money=1800;

pceLCDDispStop();
pceLCDSetBuffer( vbuff );
pceAppSetProcPeriod( 80 );
memset( vbuff, 0, 128*88 );

pceFontSetPos(0,16);
pceFontPrintf("店員「●●は1800ガバスです」\n");

if(money >= 1800){
  money = money-1800;
  pceFontPrintf("1800ガバス払いました\n");
}
else{
  pceFontPrintf("ガバスが足りません\n");
}
pceFontPrintf("残り%dガバス",money);


draw = 1;

pceLCDDispStart();
}

■実行結果


「int money = 1800」の変数に代入する値を1800より少ない値にすればif文が実行されずにelse文が実行されます。
ためしに1800より小さい値に変更してみてください。

■変更した時の実行結果





戻る