while文は繰り返しです。
メイン関数の中で、
while(1){
…
}
とやると、…のところに書いてある命令を無限に繰り返してくれます。1というのは「眞」であって、0というのが「僞」です。本当は値の意味を示してくれる型があるべきですが、無いことになっています。 眞ならば繰り返して僞ならばwhileの中の文を実行しないという意味です。
さて、まともに使うときは変数を使ってこんなことをします。
int i=0;
while(i<5){
printf("%d\n",i);
i++;
}
これを実行するとまず、i=0だから、i<3なので、0を表示します。
i++を実行すると、iが1になって、また、whileの判定を行います。
…とやってiが4のときにi++をすると次の繰り返しではwhileの()内の条件を満たさなくなります。
するとやっとここのwhile(){…}という全体が終わります。
<に関する補足をします。i<jとかi>jとかi<=jとかi>=jとかあります。
それぞれ<、>、≦、≧に対応して、この不等号が成り立てば眞(1)成り立たなければ僞(0)となります。
等号もあります。==です。
=に対応し成り立てば眞(1)成り立たなければ僞(0)です。
!=というのもあります。これは≠に対応して以下同文です。
あと&&と||と!にも触れておきますと、
1 && 1 : 1 1 && 0 : 0 0 && 1 : 0 0 && 0 : 0 1 || 1 : 1 1 || 0 : 1 0 || 1 : 1 0 || 0 : 0 !1 : 0 !0 : 1という規則です。つまりandとorとnotです。
whileをもっと使いやすくしたものです。たとえばさっきのwhile文は、
int i;
for(i=0;i<5;i++){
printf("%d\n",i);
}
とかけます。これだけなので、単純です。
for(変数のリセット;繰り返す条件;一回実行後に行う動作)ということです。forはこのような使いかた以外の使い方はあまりしないです。
#include<stdio.h>
int main(int argc, char** argv) //main関数の引数というのはコマンドラインで入力されます。
{
int i;
for(i=0;i<10;i++){
if(i<3){
printf("%d",i);
}
else if(i>6){
printf("%d",i);
}
else{
printf("*");
}
}
}
とすれば、このように表示されます。
012*****789
ifよりも限定されるが結構使いやすい方法です。
ifが「上から順に実行して範囲を絞っていく」という雰囲気をもつのに対し
switch-caseは一つの変数について何のときはこっち何のときはこっちとスイッチする雰囲気です。
あるint型やchar型の変数(または値)に対して対してその数が指定した値をとるかどうかを調べます
#include<stdio.h>
int main(int argc, char** argv)
{
int i;
for(i=0;i<10;i++){
switch(i){
case 3:
printf("*");
break;
printf("$");
case 4:
printf("\\"); //\\は\そのものをあらわしています。
break;
case 5:
printf("%");
break;
case 6:
printf("#");
break;
default:
printf("%d",i);
break;
}
}
}
とすればこうなります。
012*\%#789