5.for文(繰り返し)

 人間は繰り返しの作業は飽きてしまいます。しかし、コンピュータは文句言わず何万回でも命令を繰り返します。例えば、CDの音質で1秒間のデータは片チャネルで44200個。このデータを処理すると同じ処理を44200回する必要があります。

(1) for文の形式
 for文では,初期の処理,くり返し条件,くり返し時の処理を指定します。次の構造です。

  for ( 初期の処理; くり返し条件; くり返し時の処理 ) 命令

 または、

  for ( 初期の処理; くり返し条件; くり返し時の処理 ){

    命令…

  }

 です。

初期の処理:for文が始まる際に1度だけ実行される。省略可でその場合には、

  for(;くり返し条件; くり返し時の処理 ){

 という書き方になる。

繰り返し条件:この条件が真の間、命令を繰り返す。

繰り返し時の処理:命令が繰り返す度に行われる処理。

くり返し条件が満足するつまり真(1)の間{ }内をくり返す.

(2) for文の例1
 新しいプロジェクトno8にソースファイルseq1.cを追加して次の内容を入力してください。繰り返す対象の命令は1文なので、11行目の{と13行目の}は省略可。

実行結果 sum = 55

新しく出てきた命令

i++; /*  ++の演算子は変数の右側に書かれている場合には、評価をしてから(式では計算に使ってから)変数の値を一つ増やす。左側についている場合には、変数の値を1増やしてから評価に用いる。ここではiを評価した後にiの値を一つ増やす。ちなみにiを1つ増やすことをインクリメントする、と呼びます。 */

sum+=i; /* +=は左辺の変数の値に右辺の値を足す、という意味。 */

 このプログラムでは、iは1から始まる。i<=10を満足している間(つまり真(1)の間)は{ }内の命令をくり返す。ここで、i++はiを1ずつ増やす命令です。1ずつ減らすにはi--と書きます。まず、i=1のときにsumに1を足す、つまりsumは1になります。次にi++が実行され、i=2になります。そしてsum+=iでは、sumに2を足す、つまりsumは3になります。これを10までくり返し、iが11になると、くり返し条件i<=10に合致しなくなるのでくり返し終了となる。慣れるまではプログラムを読む時、このように1行1行動作を追うようにしましょう。ちなみに、くり返し条件が悪く設定され永久にループし続けることを「無限ループ」と呼ぶ。

 このプログラムでは、sum+=i; (sum=sum+i;と同じ)という形式を使いたいので、最初にsum=0;とゼロを代入しておく。これがないとsumの最初の値がわからないので計算がうまくいかない。

演習1 seq1.cのプログラムでfor文内のi<=10;をi<4; やi<100; としたときに実行結果がどう変わるか試してみましょう。

(3) for文の例2(Nまでの階乗を計算するプログラム)
 新しいプロジェクトno9にソースファイルfact1.cを追加して次の内容を入力してください。

実行結果は次の通り。i=1から始まって、multの最初の値は1、iが1なので14行目の計算はmult=1となる。続いて、iが一つ増えて2。multの値は1*2で2になる。なお、このプログラムでは、mult=mult*i; (mult*=i; と同じ)という命令を繰り返し行いたいため、最初にmult=1;と値を決めておきます。これをしておかないとmult=mult*i;の時にmultの値が決まらないので計算がおかしくなる。先のプログラムではsum=0;としていたがこのプログラムではこのプログラムではmult=0; とすると計算の値が0になってしまうので注意が必要。

演習2 このプログラムで、for文のi++のところをi+=2とすると実行結果はどのようになるでしょう。また、i+=3の時も試してみましょう。

演習3 コンソールから1-9の整数値を一つ入力して、その段の九九を表示するプログラムを作成せよ。例えば、2を入力すると、次の出力をする。

2 4 … 18

演習4 for文によりiを1から15まで変化させ、その1から15の値が偶数か奇数かをif文で判断して表示するプログラムを作成せよ。出力は次のようになるようにすること。
1 奇数です
2 偶数です
  :
14 偶数です
15 奇数です

演習5 コンソールから2つの整数型の値を変数m1, m2に入力し、その小さい方の値をnとする。1からnまでの数値の中でm1とm2の公約数であるものを出力するプログラムを作成せよ。

コンプロI C言語の部屋です。

このサイトは東京電機大学東京千住キャンパスのEJ, EK, EF科の1年次生向けコンピュータプログラミングIの授業内容やお知らせをするページです。プログラムの初歩の初歩を学ぶ人のためのページです。この資料を授業等で共有したいという方もどうぞお使いください。一緒に学習向けコンテンツを作ってくださる方、学習者向けのサンプルプログラムの提案など歓迎いたします。

0コメント

  • 1000 / 1000