ものづくりBLOG blog page

第7章 何もしない(6):制御文−if文

2011-01-01 (Sat) 07:00
H8+C言語入門:第7章 何もしない(6):制御文−if文
 
 第7章でも、まだまだ何もしないプログラムの作成が続きます。
 第5章、第6章では、繰り返し処理の制御文を学習しました。第7章では、一つの評価の結
 果から二つの選択をするというものを学習します。それは、if文です。この制御文は、場
 合によって(評価の結果)、実行する文を変えるという機能(二つの選択)を持っています。
 
 if文は、次の様な基本的な構文を持っています。
  if( 式 )
   文1
  else
   文2
 これが基本形です。英語の表記そのまま読めば、この機能を理解することができます。
 もし、「式」が「真」ならば、「文1」を実行し、「偽」ならば(「真」ではなく:else)
 「文2」を実行します。また、else以下は省略することができます。つまり、「式」の
 結果、「文1」のみの実行でよいということになれば、下記の様な構成になります。
  if( 式 )
   文1
 
<サンプル7-1>
void main(void)
{ /* main関数の始まり */
int i, j; //変数iとjの宣言
i = j = 0; //変数i、jの初期化:0をセットする。
for(;;){ //無限ループ:ブロック始端
if( i >= 10 ) break; //iが10以上になったら、for文を抜ける。
j++; //jをインクリメントする。
i++; //iをインクリメントする。
} //無限ループ:ブロック終端
} /* main関数の終わり */
 
 サンプル7-1を見て、あれって思いませんか。for文をちゃんと使って書き換えると・・
  for( i = 0 ; i < 10 ; i++ ) j++;
 となります。ちょっとまどろっこしかったですね。
 
 では、実際にH8を動かして、またまた「何も動かないこと」 を確認してください。
 
 
−まとめ−
 1. if〜else文を使えば、条件によって実行する文を変えることができます。
 2. else以降は省略可能です。
 3. if文の中に、if文を書く事もできるけど、処理をさせるところで思わぬ落とし穴がある
  ので注意します。コンパイルはエラーなく通るけど、実行結果が思う様な処理に切り替
  わらないなど。処理の単位をブロック({と}で挟む)で、きちんと分け、明示的にも処理
  の範囲を分かりやすくしておくとよいでしょう。
  できれば、if文の中にif文を入れ子(ネスト)にする様なプログラムは避けるべきだと思い
  ます。
 

ものづくりBLOG

Blog Category

Blog Calendar

RSS 2.0