4日目のゴール
4日目のテーマは
「C# で“同じ処理を何回も繰り返す”感覚をつかむこと」 です。
ここまでで、
値を覚える(変数)
計算する
条件で分ける(if)
はできるようになりました。
今日はそこに、
「同じことを何度もやるなら、まとめて書こう」
という考え方=ループ(繰り返し)を足します。
「繰り返し」がないとどうなるか
まずは“繰り返しナシ”のコードを見てみる
例えば、「1 から 5 までの数字を表示したい」とします。
繰り返しを知らないと、こう書くしかありません。
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine(1);
Console.WriteLine(2);
Console.WriteLine(3);
Console.WriteLine(4);
Console.WriteLine(5);
}
}
C#動きとしては正しいですが、
「6 までにしたい」「10 までにしたい」と思った瞬間、
全部書き直しになります。
「同じパターンを何度も書いている」
こういうときにこそ、ループの出番です。
for 文の基本形を覚える
「回数が決まっている繰り返し」に向いている
C# の for 文は、こんな形をしています。
for (初期化; 条件; 更新)
{
// 繰り返したい処理
}
C#さっきの「1 から 5 まで表示」を for で書くと、こうなります。
using System;
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
}
}
C#ここをじっくり分解します。
int i = 1;
… 繰り返し用の変数 i を 1 でスタートさせる(初期化)
i <= 5;
… 「i が 5 以下のあいだは繰り返す」という条件
i++
… 1 回まわるごとに i を 1 増やす(更新)
中の Console.WriteLine(i); は、
「今の i の値を表示する」という処理です。
流れとしては、
i = 1 でスタート
条件(1 <= 5)は true → 中身を実行 → i++ で i は 2
条件(2 <= 5)は true → 中身 → i は 3
条件(3 <= 5)は true → 中身 → i は 4
条件(4 <= 5)は true → 中身 → i は 5
条件(5 <= 5)は true → 中身 → i は 6
条件(6 <= 5)は false → 繰り返し終了
という感じで進みます。
for 文で「合計」を計算してみる
1 から 10 までの合計を求める
for 文の良さが分かりやすい例として、
「1 から 10 までの合計」を計算してみます。
using System;
class Program
{
static void Main(string[] args)
{
int sum = 0;
for (int i = 1; i <= 10; i++)
{
sum = sum + i;
}
Console.WriteLine("1 から 10 までの合計は " + sum + " です");
}
}
C#ここでのポイントは二つです。
int sum = 0; で「合計を入れておく箱」を用意している
for の中で sum = sum + i; として、i をどんどん足している
ループの中で何が起きているかを追ってみると、
最初:sum = 0
i = 1 のとき:sum = 0 + 1 → 1
i = 2 のとき:sum = 1 + 2 → 3
i = 3 のとき:sum = 3 + 3 → 6
…
i = 10 のとき:sum は最終的に 55
というふうに、少しずつ合計が増えていきます。
「ループの外に置いた変数(sum)が、ループの中で育っていく」
この感覚は、今後あらゆる場面で使います。
while 文で「条件が続く限り」繰り返す
while の基本形
while 文は、こういう形です。
while (条件)
{
// 条件が true のあいだ、ずっと繰り返す
}
C#例えば、「count が 5 未満のあいだ、count を表示して増やす」ならこうです。
using System;
class Program
{
static void Main(string[] args)
{
int count = 0;
while (count < 5)
{
Console.WriteLine("count = " + count);
count++;
}
Console.WriteLine("ループ終了後の count = " + count);
}
}
C#流れはこうです。
最初:count = 0
条件(0 < 5)は true → 中身を実行 → count++ で 1
条件(1 < 5)は true → 中身 → count は 2
条件(2 < 5)は true → 中身 → count は 3
条件(3 < 5)は true → 中身 → count は 4
条件(4 < 5)は true → 中身 → count は 5
条件(5 < 5)は false → ループ終了
for と違うのは、
「回数」ではなく「条件」を中心に書くところです。
for と while の使い分けイメージ
回数が決まっているなら for、条件ベースなら while
ざっくりしたイメージとしては、
「1 から 10 まで」「5 回だけ」など、
回数がはっきりしているときは for が書きやすい。
「ある条件が続く限り」「終わる条件がいつ来るか分からない」
というときは while が向いています。
超初級のうちは、
「まずは for に慣れる」「while は“条件で回す”ときに使う」
くらいの感覚で十分です。
簡単な「カウントダウン」アプリを作る
5 から 1 までカウントダウンして「スタート!」
for 文を使って、カウントダウンをしてみます。
using System;
class Program
{
static void Main(string[] args)
{
for (int i = 5; i >= 1; i--)
{
Console.WriteLine(i);
}
Console.WriteLine("スタート!");
}
}
C#ここでのポイントは、for の「更新」の部分です。
int i = 5; で 5 からスタートi >= 1; で「1 以上のあいだは繰り返す」i-- で「1 回ごとに 1 減らす」
i++ が「1 増やす」だったのに対して、i-- は「1 減らす」です。
ネスト(入れ子)の for 文をチラ見してみる
2 重ループで「九九の一部」を表示
少しだけ背伸びして、
「for の中に for を書く」パターンも見てみます。
using System;
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3; j++)
{
int result = i * j;
Console.WriteLine(i + " × " + j + " = " + result);
}
}
}
}
C#これは、「1〜3 の九九」を全部表示するコードです。
外側の for で i が 1, 2, 3 と変わり、
内側の for で j が 1, 2, 3 と変わる。
i = 1 のとき、j は 1, 2, 3
i = 2 のとき、j は 1, 2, 3
i = 3 のとき、j は 1, 2, 3
というふうに、組み合わせが全部試されます。
今は「こういうこともできるんだな」くらいでOKです。
本格的に使うのは、もう少し先で大丈夫です。
4日目のミニアプリ:1週間の勉強時間を合計する
配列をまだ使わずに「ループ+合計」だけでやってみる
今日はまだ配列は出さず、
「ループと合計」の組み合わせだけでミニアプリを作ります。
「1 日目〜7 日目の勉強時間(分)が決まっている」として、
その合計を出すプログラムです。
using System;
class Program
{
static void Main(string[] args)
{
int day1 = 30;
int day2 = 45;
int day3 = 20;
int day4 = 60;
int day5 = 0;
int day6 = 50;
int day7 = 40;
int total = 0;
total = total + day1;
total = total + day2;
total = total + day3;
total = total + day4;
total = total + day5;
total = total + day6;
total = total + day7;
Console.WriteLine("1週間の合計勉強時間は " + total + " 分です");
}
}
C#ここまでは「繰り返しナシ」の書き方です。
これを for で書き直すには、
本当は配列があるときれいに書けますが、
4日目では「繰り返しの感覚」を優先して、
まずは「同じパターンを何度も書いている」ことに気づければ十分です。
4日目で絶対に押さえておきたいポイント
for と while の“形”を覚える
for 文の基本形:
for (初期化; 条件; 更新)
{
// 繰り返したい処理
}
C#while 文の基本形:
while (条件)
{
// 条件が true のあいだ繰り返す
}
C#そして、ループの中では、
「ループの外にある変数(sum, count など)を少しずつ変えていく」
というパターンがとてもよく出てきます。
sum = sum + i;
count++;
この2つは、今日の主役と言っていいくらい重要です。
もし余裕があればやってみてほしいこと
自分の「腕立て伏せカウンター」を作る
例えば、
1 回目〜10 回目まで「◯回目!」と表示する
最後に「おつかれさまでした!」と出す
というプログラムを for で書いてみてください。
for (int i = 1; i <= 10; i++) の中で、Console.WriteLine(i + " 回目!"); とするだけで作れます。
4日目のまとめ
1日目:表示
2日目:計算
3日目:条件分岐
4日目:繰り返し(ループ)
これで、C# の「基本の動き」はほぼ一周しました。
値を覚える
計算する
条件で分ける
何回も繰り返す
この4つが組み合わさると、
かなりいろいろなことができるようになります。
次のステップでは、
「関連する値をまとめて扱う(配列)」や
「処理をまとめる(メソッド)」に進んでいきますが、
その土台は、今日までに積み上げたこの4つです。
