- Day 14 のゴールと全体イメージ
- break とは何か
- 例1:特定の値が見つかったらループを終了する
- 例2:while で「終了コマンド」を受け取ったら抜ける
- continue とは何か
- 例3:1〜10 のうち、偶数だけ表示する(continue 版)
- break と continue の違いを整理する
- 例4:検索処理で break を使う
- 例5:特定の条件のときだけ処理したい(continue)
- break・continue を使うときの注意
- 練習テンプレート:自分で条件を変えて試す
- Day 14 のまとめ
- Day 14 練習のゴール
- 特定の数値で終了:break の基本練習
- 偶数だけスキップ:continue の基本練習
- break と continue の違いをもう一度整理する
- 応用練習テンプレート:条件を変えて遊ぶ
- Day 14 練習のまとめ
Day 14 のゴールと全体イメージ
Day 14 では、ループの流れを途中でコントロールするためのキーワードである break と continue を学びます。
これまで for / while / foreach を使って「繰り返し」を書いてきましたが、 現実のプログラムでは、
- 途中でループを抜けたい
- 特定の条件のときだけ、その回の処理をスキップしたい
といった場面がよく出てきます。 そのときに使うのが break と continue です。
break とは何か
「ループを途中で抜ける」ための命令
break は、
「今いるループを、途中でもう終わりにして抜ける」
ための命令です。
for / while / foreach の中で break が実行されると、 その瞬間にループを抜けて、ループの外側の処理に進みます。
例1:特定の値が見つかったらループを終了する
1〜100 の中から最初に 50 を見つけたら終わる
次のような仕様を考えてみます。
「1 から 100 までの数字を順番に調べて、 最初に 50 を見つけたら、その時点でループを終了する。」
これを for 文 + break で書いてみます。
using System;
class Program
{
static void Main(string[] args)
{
// 1 から 100 までの数字を順番に調べます
for (int i = 1; i <= 100; i++)
{
Console.WriteLine($"今の値:{i}");
if (i == 50)
{
Console.WriteLine("50 を見つけたので、ループを終了します。");
break; // ここで for ループを抜けます
}
}
Console.WriteLine("ループの外側の処理に来ました。");
Console.ReadLine();
}
}
C#重要ポイント:
if (i == 50)の条件が true になった瞬間に、breakが実行されます。breakが実行されると、そのループは即座に終了します。- その後の処理(ここでは
Console.WriteLine("ループの外側…"))に進みます。
例2:while で「終了コマンド」を受け取ったら抜ける
無限ループ + break の典型パターン
Day 12 でも少し触れましたが、 while (true) の無限ループと break の組み合わせはよく使われます。
「ずっと入力を受け付けるが、『終了』と入力されたらループを抜ける」
というイメージです。
using System;
class Program
{
static void Main(string[] args)
{
while (true) // 無限ループ
{
Console.WriteLine("コマンドを入力してください(終了するには「終了」と入力):");
string command = Console.ReadLine();
if (command == "終了")
{
Console.WriteLine("終了コマンドが入力されたので、ループを抜けます。");
break; // while ループを抜けます
}
Console.WriteLine($"入力されたコマンド:{command}");
Console.WriteLine();
}
Console.WriteLine("プログラムを終了しました。");
Console.ReadLine();
}
}
C#重要ポイント:
- 無限ループを使うときは、必ず「抜ける条件」と
breakをセットで考えることが大切です。 breakは「今いるループを終わらせる」ための安全装置のような役割を持ちます。
continue とは何か
「その回の残りをスキップして、次の回へ進む」
continue は、
「今のループの回の残りの処理をスキップして、 すぐに次の回(次の繰り返し)に進む」
ための命令です。
break が「ループそのものを終わらせる」のに対して、 continue は「その回だけ途中で終わらせて、ループ自体は続ける」という違いがあります。
例3:1〜10 のうち、偶数だけ表示する(continue 版)
条件に合わないものをスキップする
1〜10 の数字のうち、偶数だけを表示したいとします。
「奇数のときは何もしないで、次の数字に進みたい」
というイメージです。
using System;
class Program
{
static void Main(string[] args)
{
// 1 から 10 までの数字を順番に調べます
for (int i = 1; i <= 10; i++)
{
// i が奇数なら、この回の残りをスキップして次へ進みます
if (i % 2 != 0) // 2 で割った余りが 0 でない → 奇数
{
continue; // この下の処理を飛ばして、次の i に進みます
}
// ここに来るのは「偶数」のときだけです
Console.WriteLine($"偶数:{i}");
}
Console.ReadLine();
}
}
C#重要ポイント:
continueが実行されると、その回の残りの処理は実行されません。- すぐに「次の繰り返し」に進みます。
- 条件に合わないものを「飛ばす」イメージで使うと分かりやすいです。
break と continue の違いを整理する
ループの「どこまで」止めるか
- break
- 今いるループそのものを終了します。
- 以降の繰り返しは一切行われません。
- ループの外側の処理に進みます。
- continue
- 今の回の残りの処理だけをスキップします。
- ループ自体は続きます。
- 次の回(次の繰り返し)に進みます。
イメージとしては、
- break:「ここでループ自体を終わりにする」
- continue:「この回はここまでにして、次に進む」
と覚えておくと、直感的に使いやすくなります。
例4:検索処理で break を使う
配列の中から特定の値を探す
配列の中から特定の値を探し、 見つかったらその時点でループを終了する例を見てみます。
using System;
class Program
{
static void Main(string[] args)
{
int[] numbers = { 3, 8, 15, 42, 7, 19 };
int target = 42; // 探したい値
bool found = false; // 見つかったかどうかを表すフラグ
foreach (int n in numbers)
{
Console.WriteLine($"調べている値:{n}");
if (n == target)
{
Console.WriteLine($"{target} を見つけました!");
found = true;
break; // foreach ループを終了します
}
}
if (!found)
{
Console.WriteLine($"{target} は配列の中に見つかりませんでした。");
}
Console.ReadLine();
}
}
C#ポイント:
foundというフラグ変数を使って、「見つかったかどうか」をループの外でも判断しています。- 検索処理では、「見つかった瞬間に break で抜ける」パターンがよく使われます。
例5:特定の条件のときだけ処理したい(continue)
マイナスの値は無視して、プラスだけ合計する
次のような仕様を考えてみます。
「配列の中にプラスとマイナスの値が混ざっている。 マイナスの値は無視して、プラスの値だけ合計したい。」
これを foreach + continue で書いてみます。
using System;
class Program
{
static void Main(string[] args)
{
int[] values = { 10, -5, 20, -3, 15 };
int sum = 0;
foreach (int v in values)
{
// マイナスの値はスキップします
if (v < 0)
{
continue; // この下の処理を飛ばして、次の要素へ
}
// ここに来るのは「0 以上」の値だけです
sum += v;
}
Console.WriteLine($"0 以上の値の合計:{sum}");
Console.ReadLine();
}
}
C#重要ポイント:
- 「無視したい条件」を if + continue で書くと、 残りの処理が「対象にしたい条件だけ」に集中します。
- コードの読みやすさを上げるためにも、continue は有効な手段です。
break・continue を使うときの注意
使いすぎると分かりにくくなることもある
break と continue はとても便利ですが、 あまりに多用すると、ループの流れが複雑になり、 「どこで抜けるのか」「どこでスキップされるのか」が分かりにくくなることがあります。
意識しておきたいポイント:
- 1 つのループの中で、
breakやcontinueを何度も使いすぎない。 - 「この条件のときは必ずここで抜ける」「この条件のときは必ずスキップする」といった ルールを自分で説明できるかを意識する。
- 複雑になりそうなときは、処理をメソッドに分けるなどして整理する。
初心者の方は、まずは「検索で break」「フィルタリングで continue」といった 分かりやすい場面から使い始めると、自然に感覚がつかめていきます。
練習テンプレート:自分で条件を変えて試す
break 練習テンプレート
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1 から 100 までの中で、止めたい数字を入力してください:");
string text = Console.ReadLine();
int stopNumber = int.Parse(text);
for (int i = 1; i <= 100; i++)
{
Console.WriteLine($"今の値:{i}");
if (i == stopNumber)
{
Console.WriteLine($"{stopNumber} に到達したので、ループを終了します。");
break;
}
}
Console.WriteLine("ループが終了しました。");
Console.ReadLine();
}
}
C#continue 練習テンプレート
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1 から 20 までの数字のうち、スキップしたい倍数を入力してください:");
string text = Console.ReadLine();
int skipMultiple = int.Parse(text);
for (int i = 1; i <= 20; i++)
{
// 指定された倍数のときはスキップします
if (i % skipMultiple == 0)
{
continue;
}
Console.WriteLine($"表示する値:{i}");
}
Console.WriteLine("ループが終了しました。");
Console.ReadLine();
}
}
C#これらのテンプレートを使って、
- 止めたい数字やスキップしたい倍数を変えてみる
- 条件を複数にしてみる(例:3 の倍数と 5 の倍数をスキップ)
- break と continue を両方使うパターンを試してみる
といった練習をすると、ループ制御の感覚がぐっと深まります。
Day 14 のまとめ
Day 14 では、
break:ループを途中で終了するcontinue:その回の残りをスキップして次の回へ進む- ループ制御:ループの流れを条件に応じてコントロールする
という 3 つの軸で、ループの動きを細かく制御する方法を学びました。
for / while / foreach と組み合わせることで、
- 「見つかったらすぐ終わる検索」
- 「特定の条件だけを対象にするフィルタリング」
- 「無限ループから安全に抜ける仕組み」
など、現実のプログラムに近いロジックを組み立てられるようになります。
ぜひ、
- 自分で条件を考えて break / continue を使ってみる
- ループの流れを紙に書いて整理してみる
- 「このコードはどんな順番で実行されるか」を説明できるようになる
といった練習を通して、「ループを自分の意図通りにコントロールする力」を育てていってください。
Day 14 練習のゴール
Day 14 の練習では、ループの流れを途中でコントロールするためのキーワードである break と continue を、具体的な2つの題材で身につけていきます。
- 特定の数値で終了(break の練習)
- 偶数だけスキップ(continue の練習)
これらを通して、ループ制御の感覚をステップバイステップで育てていきます。
特定の数値で終了:break の基本練習
仕様を日本語で整理する
まずは、プログラムの動きを日本語で整理します。
「1 から 100 までの数字を順番に表示していく。 ただし、特定の数値に到達したら、その時点でループを終了する。」
ここでのポイントは、「特定の数値に到達したら、そこでループを終わらせる」というところです。 これを break で実現します。
ステップ1:止めたい数値をユーザーに入力してもらう
特定の数値をコードに固定してもよいですが、 練習としてはユーザーに入力してもらう方が面白いです。
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1 から 100 までの中で、止めたい数字を入力してください:");
string text = Console.ReadLine(); // ユーザーの入力を文字列として受け取ります
int stopNumber = int.Parse(text); // 数値に変換します
// ここから break の練習です
for (int i = 1; i <= 100; i++)
{
Console.WriteLine($"今の値:{i}");
// i が止めたい数字に到達したら、ループを終了します
if (i == stopNumber)
{
Console.WriteLine($"{stopNumber} に到達したので、ループを終了します。");
break; // ここで for ループを抜けます
}
}
Console.WriteLine("ループが終了しました。");
Console.ReadLine();
}
}
C#ここで押さえておきたいポイント
- break は「今いるループそのものを終わらせる」命令です。
- 条件が true になった瞬間に break が実行され、そのループは即座に終了します。
- 以降の繰り返しは行われず、ループの外側の処理に進みます。
この練習では、
- 「どの値で止めるか」をユーザー入力で変えられる
- ループの途中で「ここで終わり」と自分で決められる
という感覚を体験できます。
偶数だけスキップ:continue の基本練習
仕様を日本語で整理する
次に、continue の練習として次のような仕様を考えます。
「1 から 20 までの数字を順番に調べる。 偶数のときは何も表示せず、その回の処理をスキップして次に進む。 奇数のときだけ表示する。」
ここでのポイントは、「ループ自体は続けるが、特定の条件のときだけその回を飛ばす」というところです。 これを continue で実現します。
ステップ1:偶数かどうかを判定する条件を決める
偶数の条件は、
「2 で割った余りが 0 の数」
つまり、i % 2 == 0 です。
ステップ2:コード全体を書く
using System;
class Program
{
static void Main(string[] args)
{
// 1 から 20 までの数字を順番に調べます
for (int i = 1; i <= 20; i++)
{
// i が偶数なら、この回の残りの処理をスキップして次へ進みます
if (i % 2 == 0) // 2 で割った余りが 0 → 偶数
{
continue; // この下の処理を飛ばして、次の i に進みます
}
// ここに来るのは「奇数」のときだけです
Console.WriteLine($"奇数:{i}");
}
Console.ReadLine();
}
}
C#ここで押さえておきたいポイント
- continue は「その回の残りの処理だけをスキップする」命令です。
- ループ自体は続きますが、「この回はここまで」と打ち切って次の回に進みます。
- 条件に合わないものを「飛ばす」イメージで使うと分かりやすいです。
この練習では、
- 「表示したくない条件」を continue でスキップする
- 「表示したい条件だけが下の処理に到達する」構造を体験する
ことができます。
break と continue の違いをもう一度整理する
ループの「どこまで」止めるか
- break
- 今いるループそのものを終了します。
- 以降の繰り返しは一切行われません。
- ループの外側の処理に進みます。
- continue
- 今の回の残りの処理だけをスキップします。
- ループ自体は続きます。
- 次の回(次の繰り返し)に進みます。
イメージとしては、
- break:「ここでループ自体を終わりにする」
- continue:「この回はここまでにして、次に進む」
と覚えておくと、直感的に使いやすくなります。
応用練習テンプレート:条件を変えて遊ぶ
特定の数値で終了(応用版)
止めたい数値を変えたり、範囲を変えたりしてみると、 break の感覚がさらに深まります。
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1 から 50 までの中で、止めたい数字を入力してください:");
string text = Console.ReadLine();
int stopNumber = int.Parse(text);
for (int i = 1; i <= 50; i++)
{
if (i == stopNumber)
{
Console.WriteLine($"{stopNumber} に到達したので、ここで終了します。");
break;
}
Console.WriteLine($"現在の値:{i}");
}
Console.WriteLine("ループが終了しました。");
Console.ReadLine();
}
}
C#偶数だけスキップ(応用版:スキップする条件を変える)
スキップする条件を「偶数」から別の条件に変えてみると、 continue の応用力が自然に育っていきます。
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1 から 30 までの数字のうち、スキップしたい倍数を入力してください:");
string text = Console.ReadLine();
int skipMultiple = int.Parse(text);
for (int i = 1; i <= 30; i++)
{
// 指定された倍数のときはスキップします
if (i % skipMultiple == 0)
{
continue;
}
Console.WriteLine($"表示する値:{i}");
}
Console.WriteLine("ループが終了しました。");
Console.ReadLine();
}
}
C#Day 14 練習のまとめ
この練習では、
- 特定の数値で終了:break を使って「ここでループを終わりにする」感覚を体験
- 偶数だけスキップ:continue を使って「この回だけ飛ばして次に進む」感覚を体験
という 2 つの題材を通して、
- break
- continue
- ループ制御
の基本的な使い方を確認しました。
for / while / foreach と組み合わせることで、
- 「見つかったらすぐ終わる検索」
- 「特定の条件だけを対象にするフィルタリング」
- 「無限ループから安全に抜ける仕組み」
など、現実のプログラムに近いロジックを組み立てられるようになります。
ぜひ、
- 止めたい条件やスキップしたい条件を自分で考えて変えてみる
- ループの流れを紙に書いて整理してみる
- 「このコードはどんな順番で実行されるか」を説明できるようになる
といった練習を通して、「ループを自分の意図通りにコントロールする力」を育てていってください。
