fc2ブログ

Unknown Material

30分で書けること。

2008/07/13   forループ : Unknown式C言語入門


今回はループについてです。
先週の分岐ifとループをマスターすることで、
実用性のあるプログラムを作ることが出来ます。
ループには2つ種類が存在し、forループとwhileループと呼ばれています。
先に活用性の高いforループから説明します。
それではサンプルプログラムを。
今回は1から10までの合計を求めるプログラムです。
#include <stdio.h>
int main(void)
{
     int i,sum;
     sum=0;
     for(i=1;i<=10;i++)
     {
          sum=sum+i;
     }
     printf("%d\n",sum);
     return 0;
}

1+2+3+4+5+6+7+8+9+10=55
ですから、実行結果は
55
となります。
早速この中身を見ていきます。


-- ◇ forループ の続き --

int i,sum;
sum=0;
for(i=1;i<=10;i++)
{
     sum=sum+i;
}

いつもの通り、新しい所だけ抜き出してみます。

まず1、2行目から。
今回、変数はiとsumという変数を使っています。
変数は1文字じゃなくても大丈夫ですから、
分かり易い名前にすることも可能です。
これは決まり事ではないですが、慣例として、
ループ変数(後述)には i や j を使います。
またsumは英語で合計の意味ですので、こうすると分かり易いです。
sum=0;
2行目にはこのような0を代入する操作を行っています。
この1行を入れないと、実行結果が9446983みたいな変な値になってしまいます。
(実験としてやってみてください。値は環境によって色々変わります。)
なぜこうなるかというと、変数を宣言しただけでは初期化が行われないからです。
宣言することで、変数の箱は用意されるのですが、
その変数の値にはてきとーな数字が入れられてしまいます。
(正確には変数用に確保した部分のメモリーにもとから入っていた値が入っています。)
そのため、変数は初期化という操作が必要になるわけです。
この場合、合計値を求めたい訳ですから、
初期化する値としては0になります。
この初期化の操作は、宣言と一緒にまとめることが出来ます。
int i,sum;
sum=0;

をまとめて
int i,sum=0;
と出来ます。

次にforループの説明です。
ループというのは繰り返しのことです。
似た操作を自動で何回も行わせる事ができます。
この繰り返しを用いて総当り的に処理をするのがコンピューターの強みです。
今回の場合、1から10の合計を求めたい訳ですから、
正直にsumの値に1から10を足していきます。
for(i=1;i<=10;i++)
{
     sum=sum+i;
}

先週のifと同じように、丸括弧()にループの条件が書かれ、
直後の大括弧{}にループする中身が書かれている構造になっています。
for( i = 1 ; i <= 10 ; i++ )
まずはループの条件(丸括弧の中身)から説明していきます。
for( 初期化 ; 継続の条件 ; 増分)
意味としてはこのような事です。
最初のセミコロンまでで、ループに使う変数 i を初期化します。
この初期化の意味・理由は先ほどの通りです。
次のセミコロンまででループの「継続」する条件を書きます。
if文のように、この条件を満たしている限り、ループは続きます。
そして最後にループの増分です。
増分というのは、ループが1回行われる度にどれくらい加算をするかということです。
i++とありますが、これは i の値に1を足すという特殊な記号です。
forループの場合、1を足していく場合が多いですから、このような便利な記号が存在します。
(インクリメントと呼ばれます)
i--(デクリメント)とやれば1ずつiから引いていくことも可能です。
増分のところにはセミコロンは入りません。
このあたりの記述は間違い易いので要注意です。
今回の場合、
i を1から始め、i が10になるまで、1ずつ i を足していくということになります。

次にループの中身について。
sum = sum + i ;
i が順番に増えていきますので、意味合いはなんとなく分かってもらえると思います。
しかし、この記述はちょっと奇妙な気がしてくるはずです。
イコールの両辺に変数sumが出てきています。
しかしこれは正しい書き方です。
イコール1つの意味は「右の値を左に代入」でしたから、
このように同じ変数が出てきても問題ありません。
sum=sum+iであれば、今現在のsumの値に i を足して、
その値を再びsumに入れなおしている訳です。
これは sum+=i;
のように省略して書くこともできます。
この方が便利ですし、分かり易いので覚えておいて下さい。

結局のところループの度に1ずつ増加していく i をsumに足していくことで
1から10までの合計を求めている事になります。

スポンサーサイト




コメント

ナビゲーション

カテゴリー
 ライトノベル関連 (54)
 漫画・アニメ関連 (1)
 コンピューター関連 (29)
 テンプレート (5)
 Unknown式C言語入門 (9)
 大学生活・雑記 (35)
 製品レビュー (2)
  →  このブログについて
  → 過去レビュー 一覧
アクセス数
   

プロフィール

  プロフィール画像(レニウム)
 ◇ レニウム
   詳しく見る。

相互リンク

マクロミルへ登録