C# whileの使い方

この記事のポイント

C#プログラミングにおいて、同じ処理を繰り返し実行する際に使用するwhile文について詳しく解説します。

  • 条件が真(true)の間、指定した処理を繰り返し実行する基本構文
  • さまざまな場面で活用できる実践的なプログラミング手法
  • 初心者でも理解しやすい具体的なコード例とその動作原理

この記事を読むことで、while文の仕組みから実際の使用方法まで、段階的に習得できます。

目次

whileとは?

C#のwhile文とは、指定した条件が真(true)である限り、特定の処理を繰り返し実行するプログラミング構文です。

条件式を評価し、その結果がtrueの間はブロック内のコードを継続して実行します。条件がfalseになった時点で繰り返し処理を終了し、while文の次の処理に移るという仕組みです。この仕組みにより、事前に繰り返し回数が分からない場合でも、柔軟に反復処理を実装できます。プログラムの効率性を高め、コードの冗長性を削減する重要な制御構文の一つです。

【関連】
C#をもっと詳しく学ぶならpaizaラーニング

基本構文

C#のwhile文の基本的な書き方を具体的なコード例で説明します。while文は「while」キーワードに続いて条件式を括弧内に記述し、その後のブロック内に繰り返し実行したい処理を記述します。

using System; public class Program { public static void Main(string[] args) { int count = 1; while (count <= 3) { // countが3以下である間、ループを繰り返す Console.WriteLine("ネコが" + count + "匹います"); count++;// countを1増やす (インクリメント) } } }

出力結果

ネコが1匹います
ネコが2匹います
ネコが3匹います

次のコード例では、条件が満たされなくなるまで処理を続ける様子を確認できます。

using System; public class Program { public static void Main(string[] args) { int energy = 5; // 体力の初期値 // energyが0より大きい間、ループを繰り返す while (energy > 0) { Console.WriteLine("イヌが走っています(体力:" + energy + ")"); energy -= 2; } Console.WriteLine("イヌが疲れて止まりました"); } }

出力結果

イヌが走っています(体力:5)
イヌが走っています(体力:3)
イヌが走っています(体力:1)
イヌが疲れて止まりました

実用例

ここからは、C#のwhile文を実際のプログラムでどのように活用するかを、具体的なサンプルコードで紹介します。各例では実践的な場面を想定し、while文の柔軟性と有用性を示しています。

コード例を通じて、while文の使用パターンと、それぞれの特徴や適用場面について学べます。これらの基本的なパターンを覚えることで、より複雑なプログラムでもwhile文を効果的に使いこなせるようになります。

数値のカウントアップ

数値を順番に増加させながら処理を行う基本的なパターンです。カウンタ変数を使って繰り返し回数を制御します。

using System; public class Program { public static void Main(string[] args) { int rabbit_count = 1; // ジャンプするウサギの初期値 // rabbit_countが4以下の間、ループを繰り返す while (rabbit_count <= 4) { // 現在のウサギの番号を出力 Console.WriteLine(rabbit_count + "番目のウサギが跳んでいます"); rabbit_count++; } } }

出力結果

1番目のウサギが跳んでいます
2番目のウサギが跳んでいます
3番目のウサギが跳んでいます
4番目のウサギが跳んでいます

条件に基づく繰り返し処理

特定の条件が満たされる間だけ処理を継続する実用的なパターンです。動的に変化する値に基づいて制御します。

using System; public class Program { public static void Main(string[] args) { int fish_size = 2; // サカナの初期サイズ // fish_sizeが10未満である間、ループを繰り返す while (fish_size < 10) { Console.WriteLine("サカナのサイズ: " + fish_size + "cm"); fish_size *= 2; } Console.WriteLine("サカナが大きくなりました"); } }

出力結果

サカナのサイズ: 2cm
サカナのサイズ: 4cm
サカナのサイズ: 8cm
サカナが大きくなりました

配列の要素処理

配列やリストの要素を順番に処理する際のwhile文の使用例です。インデックスを使って要素にアクセスします。

using System; public class Program { public static void Main(string[] args) { // 文字列の配列を初期化 string[] animals = {"ライオン", "トラ", "ヒョウ"}; int index = 0; // 配列のインデックス(添え字)を0で初期化 while (index < animals.Length) { Console.WriteLine("動物園にいる動物: " + animals[index]); index++; } } }

出力結果

動物園にいる動物: ライオン
動物園にいる動物: トラ
動物園にいる動物: ヒョウ

条件付きデータ検索

特定の条件に合致するデータを見つけるまで検索を続けるパターンです。データ処理でよく使われる手法です。

using System; public class Program { public static void Main() { // 配列の定義 int[] bird_ages = {1, 3, 8, 12, 15}; // ループ制御変数の初期化 int i = 0; while (i < bird_ages.Length && bird_ages[i] < 10) { Console.WriteLine("若いトリ: " + bird_ages[i] + "歳"); i++; } } }

出力結果

若いトリ: 1歳
若いトリ: 3歳
若いトリ: 8歳

ゲームループの実装

ゲームやシミュレーションでよく使われる、条件が満たされる間処理を継続するパターンです。

using System; public class Program { public static void Main(string[] args) { int mouse_health = 100; // ネズミの初期体力 int day = 1; // 日付の初期化 // ループ条件: 体力が0より大きい又は、経過日数が5日以下 while (mouse_health > 0 && day <= 5) { Console.WriteLine("Day " + day + ": ネズミの体力 " + mouse_health); mouse_health -= 15; // 体力を15減らす day++;// 日数を1日進める } if (mouse_health <= 0) // ねずみの体力が尽きた { Console.WriteLine("Day " + (day - 1) + "でネズミは倒れました。"); } else { Console.WriteLine("5日間を乗り切りました。最終体力: " + mouse_health); } } }

出力結果

Day 1: ネズミの体力 100
Day 2: ネズミの体力 85
Day 3: ネズミの体力 70
Day 4: ネズミの体力 55
Day 5: ネズミの体力 40
5日間を乗り切りました。最終体力: 25

計算処理の繰り返し

数学的な計算を条件に基づいて繰り返し実行するパターンです。累積計算や近似値の算出に使用されます。

using System; public class Program { public static void Main(string[] args) { double turtle_speed = 1.0; // カメの初期速度 (1.0 m/h) int hour = 0; // 経過時間(時間)の初期化 // ループ条件: 速度が5.0m/h未満である間、繰り返す while (turtle_speed < 5.0) { Console.WriteLine(hour + "時間後: カメの速度 " + turtle_speed + "m/h"); turtle_speed *= 1.5; hour++; } Console.WriteLine(hour + "時間目:目標速度を超えました!(カメの速度: " + turtle_speed + "m/h)"); } }

出力結果

0時間後: カメの速度 1m/h
1時間後: カメの速度 1.5m/h
2時間後: カメの速度 2.25m/h
3時間後: カメの速度 3.375m/h
4時間目:目標速度を超えました!(カメの速度: 5.0625m/h)

リスト操作の自動化

リストやコレクションの要素を条件に基づいて自動的に処理するパターンです。データ管理で頻繁に使用されます。

using System; using System.Collections.Generic; // List<T>を使用するために必要 public class Program { public static void Main(string[] args) { var zoo_animals = new List<string> {"パンダ", "キリン", "シマウマ"}; int animal_index = 0; // animal_indexがリストの要素数未満である間、ループを繰り返す while (animal_index < zoo_animals.Count) { Console.WriteLine("見学中: " + zoo_animals[animal_index]); animal_index++; } Console.WriteLine("動物の見学が完了しました。"); } }

出力結果

見学中: パンダ
見学中: キリン
見学中: シマウマ
動物の見学が完了しました。

まとめ

この記事では、C#のwhile文について、基本的な概念から実践的な活用方法まで解説しました。while文はプログラミングにおける重要な反復処理の構文で、条件に応じた柔軟な繰り返し処理を実現できます。

基本的な数値のカウントアップから、条件に基づく処理、ユーザーとのインタラクション、データ処理、ゲーム開発まで、さまざまな場面で活用可能です。特に、繰り返し回数が事前に決まっていない状況では、while文は他の反復処理よりも適している場合が多くあります。

whileの活躍する場面

  • データ処理において特定の条件を満たすまで要素を順次処理する、大量データの自動処理
  • ユーザーからの入力を受け付け適切な値が入力されるまで処理を継続する、対話型プログラム開発
  • ゲームやシミュレーションで状態が変化する間継続的に処理を実行する、動的なアプリケーション構築

重要なポイント

  • 条件式を適切に設定し、無限ループを避けるために終了条件を明確に定義すること
  • ループ内で条件を変化させる処理を必ず設定し、適切なタイミングでループが終了するように設計する
  • ループの目的や動作がひと目で分かるような、可読性が高く保守しやすいコードを心がける

プログラムを学ぶ際には、実際にコードを書いて動かしてみることが理解への近道です。特にwhile文は、使い方をしっかり身につけることで、効率的で保守しやすいプログラムを作れるようになります。さらに、他の制御構文と組み合わせれば、より複雑で高度な処理も実現可能です。学習と実践を重ねながら、while文を自分の武器にしていきましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. C#のリファレンス記事一覧
  4. C# whileの使い方