制御構文など
○if
…と、ここで説明する前に既にサンプルで使いまくってますが。
そこはまぁ、何と言うか。
HSPびとの直感力に賭けたというか、まぁ、わかるか。みたいな。ねぇ
「ねぇ」とか言われても困ります。
if(式){
(ブロック内の処理)
}
式が真であれば、ブロック内の処理が行われます。
if(式){
(初めのブロックの処理)
}
else{
(elseのブロックの処理)
}
式が真であれば、初めのブロックの処理が行われます。
真でなければ、elseのブロックの処理が行われます。
if(式1){
(初めのブロックの処理)
}
else if(式2){
(2番目のブロックの処理)
}
else if(式3){
(3番目のブロックの処理)
}
else{
(最後のブロックの処理)
}
式1が真であれば、初めのブロックの処理が行われます。
そうでなくて、でも式2が真であれば、2番目のブロックの処理が行われます。
それでもなくて、式2が真であれば、2番目のブロックの処理が行われます。
どれにも引っかからなかったら、最後のブロックの処理が行われます。
うん、簡単だね。
ちなみに、「もし」の処理が1文だけなら、こういう書き方もできます。
if(siki == TRUE) printf("真でした");
else printf("偽でした");
このまま覚えてしまってもいいですが、
理屈も知っていると、人に教える時に尊敬されるかもしれないので、御拝聴なさるがよい。
中カッコのブロック:
{
…
}
これは、複数の文を1文として読みかえる作用があります。
うん、意味がようわからんな。
そもそもif文
if(式) 文
とは、式の内容が真であれば、次の文を実行するというものです。
しかし、多くの場合は、「もしアレだったらナニをする」のナニの部分は、
1文ですむような処理ではないわけです。
だから、中カッコのブロックで一つにまとめる、中カッコのブロックは1文として解釈される。
たしか、そんな話だったはずです。たぶん。
さらに言うと、
if(式) 文
else 文
if文の原理はこれだけです。else ifというキーワードが用意されているワケでわなく。
if(式) 文
else if(式) 文
else if(式) 文
else if(式) 文
else ...
実は、ばれないようにネストを掘っている構文なんですね。
○break
HSPにもありますが、強制的にブロックから抜ける事を指定する文です。
for,while,switch内で有効です。
これ以上の説明はかんべんして著。
○continue
ほとんど使わん。検索すれ。
○for
繰り返し文です。
#include <stdio.h>
int main(){
int i;
for(i=0;i<5;i++){
printf("\nうまい");
}
printf("どんぶり");
return 0;
}
(出力)
うまい
うまい
うまい
うまい
うまいどんぶり
for(式1;式2;式3) 文
の構文で、
1.ループに入る前に式1を評価する。
2.式2を評価し、真ならば「文」の処理を行う、偽ならばfor文を終了する。
3.式3を評価する。
4.2にもどる
原理的にはそうなのですが、
for(i=0;i<繰り返し回数;i++) 文
の構文を丸暗記で、まずは問題無いでせう。
○while
繰り返し文ですが。
while(式) 文
と書くと、かなり違和感がありますね。
while(式){
…
}
1.式を評価し、真ならば「…」の処理を行う、偽ならばwhileを終了する。
2.1にもどる。
感覚的には無限ループで、「式が真になっている間はループを続ける」というものです。
で、もうひとつdo-whileという書き方があります。
do{
…
}while(式)
1.「…」の処理を行う
2.式を評価し、真ならば1にもどる。偽ならばwhileを終了する。
チャートをよく睨んでみると判ると思いますが、前者との違いは、
ループの中身が必ず1度は処理される、ということです。
○switch
処理の振り分けです。
switch(式){
case 値1:
(処理)
break;
case 値2:
(処理)
break;
case 値3:
(処理)
break;
case 値4:
(処理)
break;
default:
(処理)
break;
}
式の値によって、それと等しい値を持つcaseラベルにgotoします。
該当caseが無い場合はdefaultラベルにgotoしますが、
defaultが定義されていない場合はswitch処理を抜けます。
breakがうるさいですが、breakを挿入しなかった場合、
そのまま処理が次のcaseまで流れて行ってしまいます。
○goto
一般に、C言語ではgotoをむやみに使わないことが良いとされています。
その理由は、
「不用意にgotoを使うと処理の入りくんだプログラムになりやすいこと。」
で、主に可読性に問題があるため、でしょう。
絶対に使ってはいけないという訳ではなく、むしろ可読性安全性が向上するのであれば
積極的に使うべきでしょうが、
普通の人間はgoto使いまくりの処理を読むのに慣れていない。
ので、まぁ、使いどころはかなり難しいです。
goto ラベル名;
で、
ラベル名:
というラベルにジャンプします。