補習2 繰り返しの理解を深めよう!!


 
 ループ変数のさまざまな使用法[for]

(1) 単純な繰り返し

   以下は、文字列 Hello を n回繰り返し表示するプログラム部である。 

   for (i=1; i<=n; i++) {
              printf("Hello");
         }
 
   このプログラム部ではループ変数 i は内部的に使用されるのみである。        

   
(2) ループ変数を利用した繰り返し計算

   (a) ループ変数の利用
     ループ変数をそのループ内で用いることは頻繁に行われる。
  以下のプログラム部は偶数を表示するもの(2〜2nまで)である。

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

       (b) 実数の繰り返し
           実数の繰り返しはfor文によって行うことも可能である。
     しかし、本講義では整数のループ変数を利用することを勧める。
           (配列変数を用いる際の添え字が整数であることにも関連する)
   0.3から1.5まで0.1刻みまで表示するプログラム部の例を以下に示す。
      この用い方は重要なので必ず使いこなせるようにしよう。

      st=0.3;
      ed=1.5;
      dx=0.1;
      n=(ed-st)/dx+1.1;   /* 繰り返しの総数(整数)はこの計算で求まる (数値誤差を考慮) */

    for (i=1; i<=n; i++) {
           x=st+dx*(i-1);  /* 現在の値はこの計算で求まる */       
           printf("x=%f\n",x);
         } 

(3) ループ変数と配列
 
   ループ変数と配列(変数)は、密接な関係にある。
  この場合、ループ変数は配列の要素を決める重要な役割を果たす。

   (a) 直接的利用
     以下のプログラム部は、ループ変数 i を用いて配列の要素を順次表示するものである。
     
    for (i=1; i<=n; i++) {
           printf("%f\n",x[i-1]);
         }

   (b) 間接的利用
     以下のプログラム部は、ループ変数 i を利用し、変数 k を用いて配列の要素を逆順に表示するものである。
     
    for (i=1; i<=n; i++) {
           k=n-i+1;
           printf("%f\n",x[k-1]);
         }  

  2重ループ、3重ループ、n重ループについて

   繰り返しは数学の括弧のように何重にもすることができる。
      以下のプログラム部は、2重ループの例である(九九が表示される)。
   3重ループ、n重ループも同様の表現である。
   ループ変数は一般にその都度、違うものを用いる(i,j,kがよく用いられる)必要がある。
   この多重ループは、理工系の計算ではよく用いられるので覚えておこう。
   
      nx=9;
      nk=9;
      for (i=1; i<=nx; i++) {
           for (k=1; k<=nk; k++) {
                printf("%d\n",i*k);
           }
         }  
   

 

 戻る