CodeGym /コース /C# SELF /whileループ:はじめましてと使い方のコツ

whileループ:はじめましてと使い方のコツ

C# SELF
レベル 4, レッスン 1
使用可能

1. はじめに

プログラミングでは、同じ処理を何回も繰り返すことがよくあるんだ。例えば:

  • リストの全要素を順番に処理する。
  • ユーザーが正しい値を入力するまでキーボードから値を読み取る。
  • 1から100までの合計を計算する。
  • 正しいパスワードが入力されるまでユーザーにパスワードを聞き続ける。

もしこれをループなしで全部書こうとしたら、めっちゃ長くてダルいし、全然スケールしないよ。例えば、電卓アプリを作ってて、1から10までの数字を手動で足すコードを書いたら:

int sum = 0;
sum += 1;
sum += 2;
sum += 3;
// ... こんな感じで10回。うーん。
ループなしの手作業繰り返し — めっちゃ不便!

絶対途中で飽きるって!解決策はループ。ループを使えば、繰り返し処理をシンプルに書けるんだ。今日は一番基本だけど超便利なループ、whileを紹介するよ。

2. whileループと仲良くなろう

構文と基本パターン

whileループは、プログラミング界の「オウム」みたいなもの。同じコードを、ある条件がtrueの間ずっと繰り返す。条件がfalseになったら、オウムは黙る(ループ終了)。


while (条件)
{
    // ループの本体
}
whileループのコマンドブロックの書き方

ダイアグラム

whileループの動きをイメージしやすい簡単なフローチャートがこれ:

3. 例:whileループを動かしてみよう

クラシックなカウンター

1から5まで数えて表示するシンプルなプログラムを作ってみる:

int i = 1;
while (i <= 5)
{
    Console.WriteLine($"ステップ № {i}");
    i++; // カウンターを増やすのを忘れずに!
}
// 出力:
// ステップ № 1
// ステップ № 2
// ステップ № 3
// ステップ № 4
// ステップ № 5

ポイント:iを増やすのを忘れると、ループが永遠に終わらない(オウムが不死身になって永遠に繰り返す)。これを無限ループって言うんだ。ちょっと怖いよね。

正しい値が入力されるまでキーボード入力

ユーザーが正解を入力するまで「しつこく」聞き続けるのによくループを使う:

string password = "";
while (password != "qwerty")
{
    Console.Write("パスワードを入力してね: ");
    password = Console.ReadLine();
}
Console.WriteLine("ようこそ!");

このプログラムは、君が魔法の"qwerty"を入力するまでパスワードを聞き続ける。password = Console.ReadLine();の行を消しちゃうと、また無限ループになる(パスワードを聞くけど入力を読まないから、壊れたロボットみたいに永遠に止まらない)。

4. whileループの種類と使いどころ

普通のwhileループ

さっきの例みたいに、このループは最初の1回目の前に条件をチェックする。もし最初から条件がfalseなら、ループの本体は一度も実行されない。

例:最初から条件がfalseの場合

int i = 10;
while (i < 5)
{
    Console.WriteLine(i); // これは絶対実行されない!
}

まあ、そりゃそうだよね。ここに書いてある通り。

入れ子のwhileループ

たまにループの中にループが必要なこともある。例えば、全ての行を処理して、その中の全ての文字をチェックしたい時とか。今はちょっと冒険だけど、簡単な例を見てみよう:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        Console.WriteLine($"i = {i}, j = {j}");
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

入れ子ループについてはまた別のレクチャーで詳しくやるから、今はちょっとだけビビらせておくね :)

無限ループ

ループは普通終わるけど、たまに永遠に続くやつもある。

while (true)
{
    Console.WriteLine("俺は永遠だ!");
}

あんまり使わないけど、バックグラウンド処理(例えばサーバーの動作)とかで実際に使うこともあるよ。

5. 変な書き方をしないために:whileでよくあるミス

プログラミングのループは電気みたいなもん。便利だけど、安全ルールを知らないと危ない。

問題1:うっかり無限ループ

初心者がよくやるのは、条件に使う変数を更新し忘れること。そのせいでループが「永遠」に動き続けて、プログラムを強制終了(例えばCtrl + C)しないと止まらなくなる。

int i = 1;
while (i <= 5)
{
    Console.WriteLine(i);
    // i++;  // あっ!iを増やすの忘れた
}

問題2:条件が間違ってる

たまに自分で自分の罠を作っちゃうことも。条件が絶対trueにならない場合、ループは一度も実行されない。

int i = 10;
while (i < 5)
{
    Console.WriteLine(i); // このコードは絶対動かない。
    i++;
}

問題3:データ型のミス

ループの条件は必ずbool式(つまり結果がtrueかfalseになるやつ)じゃないとダメ。

int number = 5;
while (number) // エラー!boolが必要なのにintになってる。
{
    number--;
}
2
タスク
C# SELF, レベル 4, レッスン 1
ロック未解除
1から10までの数字を出力しよう
1から10までの数字を出力しよう
2
タスク
C# SELF, レベル 4, レッスン 1
ロック未解除
指定された上限までの数の合計
指定された上限までの数の合計
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION