どうもサンチョです!
前回は配列を学びましたね。
今回は配列を便利つえる「ループ(繰り返し)処理」について触れていきましょう。
前回の練習問題の解答例
まずは前回の練習問題の解答例から説明していきます。
※前回の記事はこちら ⇒ C言語入門(配列の考え方)
【問1】はテストの点数を配列に登録して、全体の平均点を計算するプログラムでしたね。
解答例は以下のとおりです。
#include<stdio.h>
int main() {
int array[5] = {92, 83, 71, 40, 57};
double average = (array[0] + array[1] + array[2] + array[3] + array[4])/5.0;
printf("平均点は%0.2f\n", average);
}
配列の宣言とデータの代入について、イメージはつかめたでしょうか?
基本的な考え方は変数と同じなのですが、要素番号で混乱する方も多いので
慣れるまではコピペ⇒実行の繰り返して変化を観察すると良いと思います。
オマケ
解答例の10行目で平均点を計算していますが、「5.0」で割っていることに気づいたでしょうか?
実は式に実数が含まれる場合、その結果はdouble型として処理されるのです。
そのため小数点以下の値が失われないまま代入されているんですね。
確実にdouble型として処理させたいときは、式に「(double)」とつけるべきですが、
こんなやり方があるんだなと感じていただけたら幸いです。
小数点以下の値をもつdouble型の使い方が不明な場合は、
前々回のC言語入門(double型の変数)を参照してください。
ループ(繰り返し)処理とは
ループ(繰り返し)処理とは、その名のとおり同じ処理を繰り返し実行するための仕組みです。
C言語では、for文とwhile文という2つのループを主に使用します。
とても重要な部分ですので、2回に分けて紹介していこうと思います。
というワケで、今回はfor文について触れていきます。
for文とは
以下のサンプルは処理を10回繰り返すループ処理になっています。
イメージをつかむために、まずはコピペして実行してみてください。
#include<stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("iの値は %d です。\n", i);
}
}
何となくfor文の特徴が見えたのではないでしょうか?
このように繰り返す回数が決まっている処理を行うときにfor文を用います。
では、もう少し詳しく説明していきます。
for文の構成要素
for文は次の要素で構成されています。
カウント変数
for( カウント変数の初期化; 条件式; カウント変数の更新){
処理内容
}
カウント変数
for文の中で処理が何回実行されたかを数えるための変数です。
カウンタと呼ぶことも多いです。
サンプルでは「int i;」がカウント変数となります。
カウント変数の初期化
for文が実行される際、最初に一度だけ実行される部分です。
サンプルでは0に9に向けてカウントアップさせるために0を代入しています。
条件式
for文が終了するための条件式を記載する部分です。
ここに書かれた条件が満たされている(条件式が真である)間は、
処理内容に記載されている処理が繰り返し実行されます。
サンプルでは「i < 10」と記述しているので、
i の値が 10 よりも小さいうちは処理内容が繰り返し実行されます。
カウント変数の更新
処理内容が実行されたあとに実行されます。
サンプルを実行した際に「i」の値が1ずつ増えていったのは、
ここに記載された「i++」が実行されたためです。
「i++」は「i = i + 1」と同じ意味をもちます。
もしこれを「i–」と記述した場合は、
「i = i – 1」と同じ意味になります。
ちなみに「i++」という記述方法をインクリメント、
「i–」という記述方法をデクリメントと呼びます。
無限ループにご注意を!
条件式に到達しないプログラムを作成してしまうと
いつまでも処理が終わらない無限ループになるので気を付けてください。
例えば次のようにfor文を記述すると無限ループになって処理が終了しなくなります。
#include<stdio.h>
int main() {
int i;
for (i = 0; i < 10; i--) {
printf("iの値は %d です。\n", i);
}
}
これプログラムが無限ループになるのは何度処理を繰り返しても
「i」の値が10を超えることがないためです。
もし無限ループに陥ってしまった場合は「ctrl」と「c」を同時に押すと処理が解除されます。
練習問題
【問1】
前回の練習問題で作成したプログラムを修正します。
※前回の練習問題はこちら⇒C言語入門(配列の考え方)の練習問題
ループ処理を用いて平均点を計算するよう修正してください。
ヒント:カウント変数と配列の要素番号
まとめ
今回はfor文について学びました。
for文は
①「繰り返す回数が決まっている」場合に使用するループ処理。
②カウント変数を用いて処理の回数を制御している。
③無限ループに注意!
次回はwhile文について触れていきます。
では、今回もお疲れ様でした!
コメント