繰り返し文はこれまでにfor文を習ってきました。for文は条件に応じて繰り返す回数などを制限できるので、とても便利な構文だと紹介してきましたね。ここでは、もう一つの構文であるwhile文を紹介していきます。
こちらも条件などを指定して、柔軟に繰り返しを制御できるので、覚えておく必要があります。エンジニアとして働き始めると、アプリケーションの構成やその場の条件、保有している値からfor文とwhile文を判断して使い分ける場面がありますので、どちらもしっかりと使いこなせるようになる必要があります。
while文の基礎知識
この記事で紹介していくwhile文には2つの書き方があります。それらの書き方を、以下のように定義しておきます。
- while ~ 文(前判定)
- do ~ while ~ 文(後判定)
具体的な記述方法は後述しますので、ここでは簡単に特徴だけ説明します。while ~ 文は一般的に前判定と呼ばれ、次のループに入る前に「繰り返すかどうか?」を判定するような動作をします。逆にdo ~ while ~ 文は、現在地点のループで「繰り返すかどうか?」を判定します。
前判定では条件によって繰り返しを1回も行わない(繰り返しに入らない)場合もありますが、あと判定では最低1回は処理を行うようになります。説明だけではわからないと思いますので、それぞれをサンプルを作成しながらみていきます。
while文を書く方法
2種類のwhile文の書き方について紹介していきます。それぞれの書き方をきちんと覚えておきましょう。個人的な経験では前判定をよく使い、後判定はあまり使わないような印象です。
while ~ 文を書く方法
前判定である「while ~ 文」はその名の通り、繰り返しの前側で処理を継続するかどうかを判定します。構文は以下のように記述して、条件式がtrueの場合に繰り返しの処理を実行するようになります。
while(条件式)
{
//繰り返し内部の処理
}
では、新しいコンソールアプリケーションを作成して、以下のソースコードを記載してみてください。実行してみると繰り返しの条件がよくわかるかと思います。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace App01
{
class Program
{
static void Main(string[] args)
{
int index = 1;
while (index <= 10)
{
Console.Write("if文の中:");
Console.WriteLine(index.ToString());
Console.WriteLine();
index++;
}
Console.Write("処理終了:");
Console.WriteLine("i = " + index.ToString());
Console.ReadLine();
}
}
}
この繰り返しでは、繰り返しの外側で継続条件(int index)を配置して、その値によって前側で繰り返すかどうかを判定しています。宣言時点ではindexの値は、1になっているので、「index <= 10」を満たすので繰り返しを実行します。
あとは内部でindexの値をインクリメントしているので、indexの値が10より大きくなった(11)の時点で繰り返しを行わないようになっています。したがって10までしか、画面には表示されていないのです。
do ~ while ~ 文を書く方法
では後判定について紹介します。後判定は処理の後側で繰り返しの継続を判定します。do ~ while ~ と記述します。構文は以下のようになります。
do
{
//繰り返し内部の処理
}
while(条件式)
doは「~する」の意味なので、なんとなく意味として通じますよね。なおwhileは「~の間」という意味ですので、これも英語の通りのような感じがします。こうして考えてみると、意外と覚えやすいかもしれません。
では、実際のサンプルを作ってみたいと思います。新規のアプリケーションを作成して、以下を記載して実行してみてください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace App02
{
class Program
{
static void Main(string[] args)
{
int index = 1;
do
{
Console.Write("if文の中:");
Console.WriteLine(index.ToString());
Console.WriteLine();
index++;
}
while (index <= 10);
Console.Write("処理終了:");
Console.WriteLine("i = " + index.ToString());
Console.ReadLine();
}
}
}
継続条件を外側で宣言し、繰り返しの最後のwhlileで継続を判定しています。最初は1からスタートし、内部でインクリメントされていきます。最終的にindexが11になったタイミングで、継続条件がfalseとなり繰り返し文から抜けます。ですので、画面には1から10までしか表示されていないのです。
以上、繰り返し文として、知っておくべきもう一つの構文であるwhile文を紹介しました。for文よりも使用頻度は少ないですが、こちらの構文も必ず使うので、覚えておくべき内容になりますので、しっかりと復習をしておいてくださいね。
この繰り返しでは、繰り返しの外側で継続条件(int index)を配置して、その値によって前側で繰り返すかどうかを判定しています。宣言時点ではindexの値は、1になっているので、「index <= 10」を満たすので繰り返しを実行します。
あとは内部でindexの値をインクリメントしているので、indexの値が10より大きくなった(11)の時点で繰り返しを行わないようになっています。したがって10までしか、画面には表示されていないのです。
do ~ while ~ 文を書く方法
では後判定について紹介します。後判定は処理の後側で繰り返しの継続を判定します。do ~ while ~ と記述します。構文は以下のようになります。
do
{
//繰り返し内部の処理
}
while(条件式)
doは「~する」の意味なので、なんとなく意味として通じますよね。なおwhileは「~の間」という意味ですので、これも英語の通りのような感じがします。こうして考えてみると、意外と覚えやすいかもしれません。
繰り返し文として、知っておくべきもう一つの構文であるwhile文を紹介しました。for文よりも使用頻度は少ないですが、こちらの構文も必ず使うので、覚えておくべき内容になりますので、しっかりと復習をしておいてくださいね。