4 if else

プログラム中で,「もし○○ならば,△△する」というような処理をしたい場合, ifという命令を使う.また,「もし,○○ならば△△する,さもなければ□□する」 という場合は,ifelseを使う.ここでは,このifelseの使い方 を示す.

4.1 処理が1つの場合

最初は一番単純な,「もし○○ならば,△△する」という構文を示す(教科書p.112-113). とくに,△△の部分が1つの文で表せる場合である.このような場合は,次のように,書 く.
書式
	if(条件式)文;
条件を表す○○の部分が条件式で,△△の部分を文で表すのである.これは,「条件式が 正しい(真)ならば,文を実行する」となる.もし,条件式が誤り(偽)であれば,この文は 実行されず次の行に移る.図1にこの構文のフローチャートを示す.

以下のようなプログラムが,この構文の使用例である.

	if(a<=10) printf("aは,10以下です\n");
図 1: 条件式が真の場合,1つの処理を実施するif
\includegraphics[keepaspectratio, scale=1.0]{figure/if_0.eps}

4.2 ブロックで処理する場合

先ほどの構文では,実行できる文は1個に限られる.「もし○○ならば,△△し,□□し, $ \cdots$」のように複数の文を実行したい場合がある.このようなときは,次に示すよう に,括弧{ }でくくり,ブロック化して,複数の文を書く.これを複文(教科書 p.113-115)う.このブロック内には,さらにif〜elseなどの制御文を書くこともできる.
書式
	if(条件式){
	   文1;
	   文2;
	   文3;
	}
これは,「条件式が正しい(真)ならば,文1と文2,文3を実行する」となる.もし,条件式が誤り (偽)であれば,これら文は実行されず,ブロックの外側に出る.図2にこの 構文のフローチャートを示す.

以下のプログラムが,この構文の使用例である.

	if(0<=a && a<=10){
	  printf("aは,0以上\n");
	  printf("かつ\n");
	  printf("aは,10以下です\n");
	}
-4pt
図 2: 条件式が真の場合,ブロックで処理を実施するif
\includegraphics[keepaspectratio, scale=1.0]{figure/if_1.eps}

4.3 2分岐の場合

「もし○○ならば△△し,さもなければ□□する」というように,条件により二者択一の 選択処理が必要な場合がある(教科書p.116-117).これは,次のように書く.
書式
	if(条件式){
	   文1;
	   文2;
	   文3;
	}else{
	   文4;
	   文5;
	   文6;
	}
これは,「条件式が正しい(1:真)ならば,文1と文2,文3を実行する.さもなければ,文4と 文5,文6を実行する.」となる.実行される文が複数であるので,ブロックになっている ことに注意.文が1つの場合,,{}でくくり,ブロック化しなくても良い. 図3にこの構文のフローチャートを示す.

以下のようなプログラムが,この構文の使用例である.

	if(0<=a && a<=10){
	  printf("aは,0以上\n");
	  printf("かつ\n");
	  printf("aは,10以下です\n");
	}else{
	  printf("aは,0未満\n");
	  printf("または\n");
	  printf("aは,10より大きい\n");	  
	}
図 3: elseを使って,二者択一の処理をする構文
\includegraphics[keepaspectratio, scale=1.0]{figure/if_2.eps}

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年7月12日


no counter