もう少し丁寧にc言語の入門記事を書いてみました4

記事
IT・テクノロジー
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]);
     }
}
と出来ます。
loop.png
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で指定した値ならばそれぞれの処理を行うような
感じになっています。


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す