3日目のゴールとテーマ
3日目のテーマは「繰り返し(ループ)で、同じ処理を自動化する」です。
1日目は「表示と入力」、2日目は「条件分岐(if)」でした。
今日はそこに「同じことを何回もやる」を足して、アプリに“根性”を持たせます。
目標は次のイメージです。
同じメッセージを 5 回表示する
1〜10 の合計を計算する
ユーザーに複数回入力してもらい、まとめて結果を出す
最終的には「テストの点数を複数入力して、合計と平均を出すミニアプリ」を作ります。
繰り返しが必要になる場面をイメージする
手で書くとつらいコードを想像してみる
例えば「1〜10 までの数字を順番に表示したい」とします。
繰り返しを知らないと、こう書くしかありません。
Console.WriteLine(1);
Console.WriteLine(2);
Console.WriteLine(3);
Console.WriteLine(4);
Console.WriteLine(5);
Console.WriteLine(6);
Console.WriteLine(7);
Console.WriteLine(8);
Console.WriteLine(9);
Console.WriteLine(10);
C#動きはしますが、正直しんどいですよね。
もし「1〜100」だったら、もうやってられません。
こういうときに使うのが「ループ(繰り返し)」です。
コンピュータは「同じことを何回もやる」のが大得意なので、そこは遠慮なく任せましょう。
for 文の基本形を理解する
1〜10 を for 文で書き直す
さっきの「1〜10 を表示する」を for 文で書くと、こうなります。
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
C#この 1 行目を、丁寧に分解してみます。
int i = 1;
最初に i という変数を 1 で初期化する。スタート地点。
i <= 10;
「i が 10 以下の間は、繰り返しを続ける」という条件。
i++
1 回ループが終わるたびに、i を 1 増やす。
つまり、流れはこうです。
i を 1 にする
i が 10 以下かチェックする
10 以下なら、波かっこの中を実行する
終わったら i を 1 増やす
また「10 以下か?」をチェックする
…を、条件が false になるまで繰り返す
この「初期化 → 条件チェック → 本体 → 更新」のサイクルが for 文の基本です。
変数 i の役割をイメージする
i は「カウンター」だと思ってください。
「今、何回目のループか」「今、何番目の数字か」を表す変数です。
例えば、1〜5 まで「こんにちは」を表示したいなら、こう書けます。
for (int i = 1; i <= 5; i++)
{
Console.WriteLine("こんにちは(" + i + " 回目)");
}
C#実行すると、
こんにちは(1 回目)
こんにちは(2 回目)
…
と表示されます。
合計や平均を出すときの「ループ+変数」のパターン
1〜10 の合計を求める
for 文の典型的な使い方の一つが「合計を出す」です。
1〜10 の合計を出してみましょう。
int sum = 0;
for (int i = 1; i <= 10; i++)
{
sum = sum + i;
}
Console.WriteLine("合計は " + sum + " です。");
C#ここでの重要ポイントは「sum の役割」です。
最初に sum = 0; としておく
ループのたびに sum = sum + i; で、今の i を足していく
ループが終わったとき、sum に「全部足した結果」が入っている
sum = sum + i; は、最初は少し違和感があるかもしれません。
「右側の計算結果を、左側の sum に上書きする」と理解してください。
例えば、i が 1 のとき:
sum は 0
sum = sum + i → sum = 0 + 1 → sum は 1
i が 2 のとき:
sum は 1
sum = sum + i → sum = 1 + 2 → sum は 3
…というふうに、どんどん積み上がっていきます。
平均を出すのは「合計 ÷ 個数」
1〜10 の平均を出したい場合、やることはシンプルです。
合計を出す
個数(10)で割る
int sum = 0;
for (int i = 1; i <= 10; i++)
{
sum = sum + i;
}
double average = (double)sum / 10;
Console.WriteLine("平均は " + average + " です。");
C#ここで (double)sum としているのは、「小数で割り算したいから」です。int / int だと整数同士の割り算になり、小数点以下が切り捨てられてしまいます。
ユーザーから複数回入力を受け取るループ
点数を 3 回入力して、合計を出す
今度は「1〜10」ではなく、「ユーザーが入力した値」を合計してみます。
例えば、テストの点数を 3 科目分入力して、合計を出すアプリです。
int sum = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine(i + " 科目目の点数を入力してください:");
string scoreText = Console.ReadLine();
int score = int.Parse(scoreText);
sum = sum + score;
}
Console.WriteLine("3 科目の合計点は " + sum + " 点です。");
C#流れを言葉で追ってみます。
sum を 0 で初期化
i を 1〜3 まで変えながらループ
毎回「何科目目か」を表示
点数を文字列として受け取るint.Parse で整数に変換
sum に足していく
ループが終わったら、sum を表示
ここで大事なのは、「ループの中で入力を受け取っている」ということです。
これで「同じ質問を何回もする」アプリが作れます。
while 文の基本と for 文との違い
while は「条件だけで回す」ループ
for 文は「回数がはっきりしているとき」に向いています。
一方で while 文は、「いつ終わるかは条件次第」というときに使います。
基本形はこうです。
while (条件)
{
// 条件が true の間、ここを繰り返す
}
C#例えば、「0 が入力されるまで数字を足し続ける」アプリを考えてみます。
int sum = 0;
while (true)
{
Console.WriteLine("数字を入力してください(0 で終了):");
string text = Console.ReadLine();
int value = int.Parse(text);
if (value == 0)
{
break;
}
sum = sum + value;
}
Console.WriteLine("合計は " + sum + " です。");
C#ここで新しく出てきたのが break です。break は「今のループを途中で抜ける」という命令です。
for と while の使い分けのイメージ
回数が決まっているとき → for
「いつ終わるかは条件次第」のとき → while
例えば、
3 回だけ入力させたい → for
0 が入力されるまで続けたい → while
という感じです。
3日目の仕上げ:点数の合計と平均を出すアプリ
3 科目の合計と平均を出す
ここまでの内容を全部使って、ミニアプリを作ってみます。
int sum = 0;
int count = 3;
for (int i = 1; i <= count; i++)
{
Console.WriteLine(i + " 科目目の点数を入力してください:");
string scoreText = Console.ReadLine();
int score = int.Parse(scoreText);
sum = sum + score;
}
double average = (double)sum / count;
Console.WriteLine("合計点: " + sum + " 点");
Console.WriteLine("平均点: " + average + " 点");
C#ここでの重要ポイントを整理します。
sum は「合計をためていく箱」
count は「科目数」(あとで平均を出すときにも使う)
for で 1〜count までループ
毎回点数を入力してもらい、int に変換
sum に足していく
ループが終わったら、sum ÷ count で平均
このパターンは、今後いろんな場面で使えます。
売上の合計、体重の平均、ゲームのスコア集計など、何でも応用できます。
もう一歩だけ応用:合格・不合格を判定する
合計点で判定する
例えば、「合計が 180 点以上なら合格」としたい場合、
最後に if 文を足すだけです。
if (sum >= 180)
{
Console.WriteLine("おめでとうございます、合格です!");
}
else
{
Console.WriteLine("残念ながら不合格です。");
}
C#これで、「入力 → 繰り返し → 合計 → 平均 → 判定」という
かなり“アプリっぽい”流れができあがります。
3日目のまとめ
今日出てきたキーワードを振り返ります。
for 文
初期化・条件・更新の 3 つで構成されるループ。回数が決まっているときに便利。
while 文
条件が true の間、ずっと回り続けるループ。終了条件が入力などに依存するときに便利。
sum 変数
合計をためるための箱。最初に 0 にして、ループの中で足していく。
int.Parse
文字列を整数に変換する。入力値を計算に使うときの必須テクニック。
「ループ+if+入力+出力」が組み合わさると、
かなりいろいろなミニアプリが作れるようになります。
次回(4日目)への予告
4日目は、今日の「点数アプリ」を発展させて、
配列(同じ型のデータをまとめて扱う箱)
for と配列の組み合わせ
最大値・最小値を求める
といった「データをまとめて扱う」方向に進みます。
例えば、「5 人分の点数を配列に入れて、合計・平均・最高点を出す」ようなアプリを作っていきます。
