概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C else if文
2006年08月30日 (水) | 編集 |
大分過ごし易くなってきた。もう8月も終わるしな。
が、やる気はあまり回復していない。
もしかして飽きてきたか俺? 別のものを挟んでやった方がいいのかもしらん。

そんな余裕無いが。



今回もswitch caseと同様、複数の分岐を行う構文だな。
が、switch case文で(式)に指定できる型がchar、int、enumだったので、これ以外の型を使いたいときにはこのelse if文を使うとよろしい。
else ifはif else文のelse部分に更にifがついたものだな。

if(式1)
 文1
else if(式2)
 文2
(中略)
else if(式n)
 文n
else
 文


こんな感じか。上から順番に式を評価していき、一致したらそこで文を実行してelse if文を抜ける。switch case文と違ってbreakとかは必要ないようだ。
最後まで条件に一致しなかったら最後のelseの文が実行されるが、if文同様実行するような内容がなければ省略は可能。また、これまたif文と同様に実行する文が複数なら{ }で囲む。

んじゃ実際に組んでみよう。
与えられた点数に対して、優、良、可、不可を判定するプログラムを組んでみる。

80点以上が優、70点以上が良、60点以上が可、それ以下は不可でいいかね。

void main(void)
{
 static int point[]={44,81,95,54,64,72,66,80,-9999};


適当に配列を宣言して初期化する。

 int i=0;
 while(point[i]!=-9999){
  printf("%d番目 %d点 "i+1,point[i]);


ループ変数iを宣言して初期化してwhile文のループ。
そしてelse if文による条件分岐へ。

  if(point[i]>80)
   printf("優\n");
  else if(point[i]>70)
   printf("良\n");
  else if(point[i]>=60)
   printf("可\n");
  else
   printf("不可\n");
  i++;
 }
}


else_if_test.jpgelse_if_test2.jpg
こんな感じ


もう一例。
適性体重を判定するプログラムを作ってみよう。
身長-110の値を体重の適性の基準値として、それの-8以下の値なら痩せ気味、+8以上の値なら太り気味として判定する。

void main(void)
{
 int height,weight,std;
 printf("身長を入力したまえよ\n");
 scanf("%d",&height);
 printf("体重を入力したまえよ\n");
 scanf("%d",&weight);
 std=height-110;


身長を代入するheight、体重を代入するweight、適性値を代入するstdを宣言し、
身長を入力し、
体重を入力し、
適性値stdを入力された身長heightから計算、代入して

 if(weight>std+8)
  printf("太り気味だな\n");
 else if(std-8  printf("適性だ\n");
 else
  printf("痩せ気味だな");
}


else if文で順番に判定する。
weight(体重)が適性値+8よりも大きければ太り気味であり、
weightが適性値-8~適性値+8の範囲であれば適正な体重であり、
weightが適性値-8よりも小さければ痩せ気味として判定し、それぞれ表示。

else_if_test3.jpgelse_if_test4.jpg
こんな感じ

家の体重計の電池切れてるので最近体重量ってないが。
2ヶ月程前の北海道行った時に量ったのが最後で、その時は58kgだったので今はきっと60kgだろう。少し太った感があるし。60kgで済めばいいが。


まとめ。

else if文でchar、int、enum型以外の式でも複数の条件分岐が出来る

以上。
同じ複数分岐でもswitch caseが並列っぽい分岐であるのと比べて、こちらは連続した分岐といった趣がある。直列とは言い難いが。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。