繰り返し計算:繰り返し回数が既知の場合


   繰り返し1 [for](繰り返しの基本:主に繰り返す回数が既知の場合に用いる

   コンピュータのプログラムにおいて最も重要といえるのが繰り返し処理である。この繰り返し処理を用いないコンピュータ・プログラムは存在しないといっても過言ではない。
 以下に繰り返し処理のプログラム例を示す。このプログラムは画面上に1からn(n≦20)までの整数を表示し、最後にnまでの総和 を表示するプログラムである。

  18行目の s=s+i という使い方はコンピュータ特有のもので、次のように解釈する。
        s ← s+i 
    すなわち、現在の変数 s の値に変数 i を加えて、再び変数 s に代入することを意味する。
 (例: s に10が代入されていて、 i が5であれば、計算後の s は15となる。)

    なお、C言語では、この場合 s+=i と表現するのがよいが、使用できない他の言語もあるので、
本授業では汎用性を重視しそのときどきによってこの表現を使用するのに留める。

  [for]の使い方

  for (式1; 式2; 式3) { 文:ここが繰り返し実行される }

    式1:繰り返しに用いる変数(ループ変数)の初期値を代入する
    式2:ループ変数がこの条件を満たしているならば繰り返す
    式3:ループ変数の増減分を示す
           例えば、ループ変数が i のとき
               i++  : 増分が1
               i−−  : 増分が−1(1ずつ減少)
               i+=2 : 増分が2
               i−=2 : 増分が−2
 

  ※プログラムがとまらなくなった状態のひとつに”無限ループ”がある。
   この場合、CTRL+C (CTRLキーとCキーを同時に押す)でプログラムを停止できる。
 
  

  

 ● 繰り返し [for]

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
/*   loop01.c               */
 
#include <stdio.h>
 
int main(void)
{
    int i,n,s;
 
    s=0;
    printf("n=");
    scanf("%d",&n);
 
    if ((n>0) && (n<=20))
    {
         for (i=1; i<=n; i++) {
              printf("i=%d\n",i);
              s=s+i;
         }
         printf("sum=%d\n",s);
     }
     else
     {
         printf("1 <= n <= 20\n");
     }
 
  return 0;
}
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
-
-
-
-
-
-
変数 i,n,sの宣言
-
変数sを0にしておく(初期化)
n=と表示(改行せず)
変数nの入力
-
nが0より大きく20以下であるか判定
-
変数 i が1からnまで1刻みで繰り返す
現在の i の値を表示(改行する)
総和の計算中( s+=i と書くこともできる)
繰り返し文(for)最後の }
nまでの総和の表示
-
-
-
nが 1 <= n <= 20 の範囲でなかったら
"1 <= n <= 20" を表示する 
-
-
-


 


   [問題08] 1から30までの整数のうち、繰り返し処理を用いて奇数のみを順番に画面へ表示するプログラムを作りなさい。

   いろいろなやり方があるので以下の※は参考。

      ※ 整数の割り算の性質を利用すると奇数、偶数の判定ができる。

   ※ a,b,cが全て整数変数である場合(ただし、b≧0、c>0)、
       a=b−b/c*c
     で aには剰余が代入される(なお、C言語には剰余のための演算子”%”も用意されている)。


  演習06 連続した実数を画面に表示する繰り返し

   1.7から5.3まで0.4きざみで実数を順番に画面へ表示するプログラムを作りなさい。
   (1.7,2.1,2.5, ・・・ ,4.5,4.9,5.3)

   まずは、ノーヒントで考えてみよう!!
   


  二重ループ(多重ループ)
  
 二重ループは九九の表示に代表される。以下のプログラムは、九九を表示するプログラムである。
このように [for]ループの中に[for]ループを書くこともできる。さらに三重、四重、・・・、n重にできる。

 

 ● 二重ループ(九九の表示)
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
/*   dloop.c   [ Kuku 9*9 ]   */
 
#include <stdio.h>
 
int main(void)
{
    int i,j;
 
    for (i=1; i<=9; i++)
    {
        for (j=1; j<=9; j++)
        {
            printf("%d * %d = %d \n",i, j, i * j);
        }
    }
 
    return 0;
}
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
-
-
-
-
-
-
-
-
最初のループ開始
-
  2番目のループ開始
-
     画面表示
  2番目のループ終了
最初のループ終了
-
-
-

 

 戻る