c言語のループを学びましょう。
ループをすると繰り返しデータを
処理することが可能となります。
今まで、
int a[3]={0,5,2};
if(a[0]==0)
{
printf("a[0]は%dです。\n",a[0]);
}
if(a[1]==0)
{
printf("a[1]は%dです。\n",a[1]);
}
if(a[2]==0)
{
printf("a[2]は%dです。\n",a[2]);
}
とやっていた処理がループを使うと
for(int i=0;i<3;i++)
{
if(a[i]==0)
{
printf("a[%d]は%dです。\n",i,a[i]);
}
}
と出来ます。
c言語にはループが3種類存在します。が、
自分はforかwhileしか使いません。
whileを使う場合は、ループ内変数を初期値にセットしないと
多くの場合、バグの元となります。
例えば、
int loopV;
while(loopV)
{
loopV++;
}
こんな事をしてしまうと、これだけでバグが出ます。
恐らくc言語で代入されずに計算されるような変数は
初期化するか、変数の宣言後に初期値を代入しないと
バグになってしまいます。
ループにおいて、重要な事を忘れていました。
それが、continue;とbreak;です。
continue;はループをスキップしつつ続けて、
break;はループの一番内側の{}を抜けます。
なので、break;で2重ループを抜ける際は、
あまり好まれませんがbreakの代わりに、gotoか、フラグという変数を
使ってbreak;を2回行う必要があります。
以下がcontinue;とbreak;の使い方です。
ちなみに、switch文でもbreak;は使われますのでそのサンプルも
書いておきます。
for(int scanline=0;scanline<SCREEN_HEIGHT;scanline++)
{
if(Left[scanline]==65816 || Right[scanline]==-65816)
continue;
LINE(Left[scanline],scanline,Right[scanline],scanline,color);
}
すぐ上はポリゴンを描くループです。
for(int i=0;i<5;i++)
{
if(i==3) continue;
printf("i=%d\n",i);
}
すぐ上は変数iが3ならループをスキップして続ける処理です。
#define MAIN 1000
#define MENU 1001
#define OPTION 1002
int Mode=MENU;
switch(Mode)
{
case MENU:
menu();
break;
case OPTION:
option();
break;
case MAIN:
main();
break;
default:
break;
}
すぐ上はswitch文です。それぞれのcaseにおいて変数Modeが
#defineで指定した値ならばそれぞれの処理を行うような
感じになっています。