すらいむLv1024@wiki

ループ文

最終更新:

slimelv1024

- view
メンバー限定 登録/ログイン

ループ文とは

1から10000までを表示するプログラムを作ろうとすると、ものすごい数のprintfを手打ちすることになります
そういった繰り返し処理を楽にする命令文をループ文、又は反復構造といいます

for文

 for(初期化式;継続条件式;再初期化式){
  文;
 }

継続条件式が真の間ループする
偽になったらループを離脱する

 for(i=1; i<10; i++){
  printf("%d\n",i);
 }

iが1から始まり、iが10より小さい間、iを表示しiをインクリメント(iを1ずつ増加)する


for文の2重ループ

 for (初期化式1; 継続条件式1; 再初期化式1) {
 	文1;
 	for (初期化式2; 継続条件式2; 再初期化式2) {
 		文2;
 	}
 }

ひとつ目のfor文の中にfor文をもうひとつ書くことで、繰り返し処理の中にさらに繰り返し処理を書くことができる

 for(i=0;i<5;i++){  //iが5よりも小さい間ループする
  for(j=0;j<5;j++){ //jが5よりも小さい間ループする
   printf("*");
   }
   printf("\n");
 }

実行結果
 *****
 *****
 *****
 *****
 *****


while文

 while (継続条件式) {  
  文;
 }

継続条件式が真の間ループを繰り返す
継条件式がはじめから偽の場合は一度も実行されない
while文には初期化式と再初期化式を記述する部分がないので、必要な場合は別に記述する必要があります

 int sum=0,data;
 
 printf("整数値を入力してください\n");
 scanf("%d",&data);  //初期化式
 
 while(data!=-1){     //継続式
  sum=sum+date;
  printf("合計=%d\n",sum);
  printf("整数値を入力してください\n");
  scanf("%d",&data); //再初期化式
 }

for文とwhile文の違い

二つの例を見てもらえばわかると思いますが、while文にはfor文と違いループする回数を決める記述がありません
一般的にfor文は○回ループさせるときに使われ、while文は~の間ループするという風に使われることが多いです
が、もちろんwhile文で○回ループさせる処理も可能ですし、for文で~の間ループを繰り返すという処理も可能です
記述上の違いがあるだけで、処理上の違いはないので、どちらを用いるかはプログラマの好みの問題になります


do~while文

 do{
  文;
 }while(継続条件式);

while文は一度も実行されない場合もありますが、do~while文は最低一度は実行され、その後ループするかの判定処理を行います
継続条件式の後のセミコロン(;)はワスレがちなので注意しましょう

 int sum=0,data;
 
 do{
  printf("整数値を入力してください\n");
  scanf("%d",&data);
  sum=sum+date;
  printf("合計=%d\n",sum);
 }while(data!=-1);     //継続式

while文の例と実行結果は同じになりますが、初期化式がなくなっているので綺麗に見えると思います
前判定と後ろ判定という微妙な差ですが、見やすいプログラム作りのためにうまく使い分けられるようになりましょう
目安箱バナー