Login
Immutable PageDiscussionInfoAttachments
alstamber/Clanguage/for

MMA

処理を繰り返すということ

これまで、条件に応じて処理を分岐させるという事をやってきました。
次に、もう一つ重要な「同じ処理を繰り返す」という処理の書き方について勉強して行きましょう。

同じ事を繰り返すというのは、人間にとってはすごく苦痛なことです。こういうことはコンピュータにやらせるのが一番速いし正確なのです。
そういう意味で、繰り返しは一番コンピュータに向いている作業といえるでしょう。

for文

繰り返しを実現するほうほうとして、まずfor文を覚えましょう。

   1 for (初期設定式; 条件式; 再設定式 ){
   2         〜〜
   3 }

for文はこのような構造になっています。名前とかはどうでもいいので、とりあえず括弧の中に3つ式があるのだということを覚えてください。
ではfor文が実際どのように実行されるのかを順を追って説明します。

  1. for文に差し掛かると、まず初期設定式(一番左の式)が実行される。
  2. 続いて条件式(真ん中の式)をみて、真かどうか調べる。
  3. 条件式が偽ならfor文は終了。
  4. 条件式が真ならfor文の中身を順番に実行。
  5. 中身の実行が終わったら、再設定式(一番右の式)を実行。
  6. 2に戻る。

こうやって条件式が真の間は実行され続けるので、繰り返しができるわけです。
では実際の例を見てみましょう。

   1 int i;
   2 
   3 for (i=0; i<10; i++ ){
   4         printf("繰り返し\n");
   5 }

さて上のプログラムが実行されると、どうなるでしょうか。
答えは、なかのprintfが10回実行される、です。
なぜそうなるのか、さっきのfor文の動作手順に従って考えてみると良いと思います。
この例のように、for分は決まった回数の繰り返しをやるのにすごく便利です。
さて、この例では繰り返しの回数を数える役割の変数としてiというのを使いました。別にこの名前にしなければ死ぬとかいうわけではないんですが、
むかしからこの役割の変数にはiという名前をつけるのが当たり前のようです。
他の人に読んでもらいやすいプログラムにするためにも、iを使うようにしましょう。
もう一つ変数が必要なときは、jを使うといいです。そっからk, l……と増やしていけます。

forの入れ子

ifの時と同じように、forも入れ子に出来ます。

演習

1から順番に2倍、2倍としていって、それぞれの答えを出力するプログラムを作りなさい。ただし10000を超えた時点でプログラムが終了するように作りなさい。

1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384

次のプログラムを実行するとどのような出力が得られるか。計算機上で実行せずに考えなさい。

   1 #include <stdio.h>
   2 
   3 
   4 int main(void){
   5         int i, j;
   6 
   7         for (i=1; i<=9; i++){
   8                 for (j=1; j<=9; j++){
   9                         printf("%d ", i*j);
  10                 }
  11                 printf("\n");
  12         }
  13 
  14         return 0;
  15 
  16 }

alstamber/Clanguage/for (last edited 2011-10-26 06:34:48 by alstamber)