.net column

.NET開発者のためのブログメディア

【初心者向け】while文とは?C#でのWhile文の書き方を紹介!

2020年06月24日

SE
while文とは、どのようなものなのでしょうか?

PM
回数に依存しない様々な繰り返し処理を簡単に書くことができます。

while文とは?

while文とは、条件を指定し、その条件が真である限り文章を繰り返し実行する処理を指します。while文を使うことで、回数に依存しない様々な繰り返し処理を簡単に書くことができます。この記事では、C#言語を用いたwhile文の書き方について説明していきます。while文に相当する処理は大抵の言語に存在し頻繁に利用される構文のため、C#をあまり使わないという方も読んでみてください。

参考:do-while文

do-while文とは、指定した条件が偽であっても、中の文章を一度は必ず実行する処理を指します。この記事では、while文とともにこのdo-while文についても取り扱っていきます。といってもwhile文と書き方はほとんど変わらないため、より処理が簡潔になるように柔軟に使い分けていく必要があります。

C#でのwhile文の使い方

ここまで、while文や参考としてdo-while文について説明しましたが、いかがでしたか。ここからは、C#でのwhile文の使い方を、breakやcontinueなどのキーワードを含めて説明します。

基本的なwhile文

while文は、このように記述します。while(条件式){ 繰り返したい処理}このように書くと、条件式が真の間繰り返したい処理が実行されます。また、繰り返したい処理が一行だけの場合は、while(条件式) 繰り返したい処理というように中括弧を省略することができます。while文を使用したC#処理の例を示します。C#のコード内に以下のように記述し、実行します。int i = 0;while(i < 5){ Console.WriteLine(""i = {0}"", i); i++;}[出力]i = 0i = 1i = 2i = 3i = 4このコードでは、int i = 0と初期化し、while文を用いてi < 5を満たす間、「iを出力しi++(iにi+1を代入)する」という処理を繰り返しています。

do-while文

do-while文は、このように記述します。do{ 繰り返したい処理}while(条件式);このように書くと、繰り返したい処理が一度実行されたのち、条件式が真の間繰り返したい処理が実行されます。また、繰り返したい処理が一行だけの場合は、do 繰り返したい処理while(条件式);というように中括弧を省略することができます。do-while文を使用したC#処理の例を示します。C#のコード内に以下のように記述し、実行します。int n;do{ Console.Write(""Input number between 0 and 5 : ""); n = int.Parse(Console.ReadLine());}while(n < 0 || n > 5);Console.Write(""The number that you input is { 0 }"", n);[出力]Input number between 0 and 5 : 8Input number between 0 and 5 : -1Input number between 0 and 5 : 4The number that you input is 4このコードでは、int nと宣言し、do-while文を用いて「nが0より小さいまたは5より大きい」ときにnへと入力を受け取る繰り返し処理を行なっています。このように、先に入力された結果や関数の返り値によって処理をもう一度実行させたい場合は、do-while文によって簡潔に書くことができます。

break, continue

while文やdo-while文には、条件式にかかわらずwhile文全体から抜けるbreakと、while文の先頭に戻るcontinueが存在します。breakの例を示します。C#で以下のように記述し、実行します。while(true){ // 条件式がtrueのため、永久に繰り返される Console.WriteLine(""a""); break; Console.WriteLine(""b"");}[出力]a本来だとa, bの出力が永遠にされ続けますが、breakをしたことで、bを出力する前にwhile文から抜け、aだけが出力される結果となりました。次に、continueを用いた例を紹介します。C#で以下のコードを記述し、実行します。int sum;do{ Console.Write(""Input number (end to input -1) : ""); string s = Console.ReadLine(); int data; if (!int.TryParse(s, out data)) { Console.WriteLine(""Cannot parse to int the input : ”{0}”"", s); continue; } sum += data;}while(data != -1);Console.WriteLine(""The sum is {0}"", sum); [出力]Input number (end to input 0) : 4Input number (end to input 0) : aCannot parse to int the input : “a”Input number (end to input 0) : 3Input number (end to input 0) : 0The sum is 7このプログラムでは、「0が入力されるまで数値入力を受け取り、それらの合計を出力する」というプログラムです。少々複雑なため、プログラムについて順番に説明していきます。 Console.Write(""Input number (end to input -1) : ""); string s = Console.ReadLine();まずこの部分では、数値入力を受け取り、string型変数であるsに格納しています。次に、足し合わせるために変数dataにint data = int.Parse(s);と書きたいところですが、この処理はユーザーが数値以外のデータを入力してしまった時、int.Parse()に失敗してプログラムが強制終了してしまうという欠点があります。そこで、int.TryParse(s, out data)関数を用います。この関数は、もしsが数値でなかった場合に、dataにとりあえずの値として0を格納し、falseを返します。数値だった場合はdataをその数値にして、trueを返します。この関数を利用し、 if (!int.TryParse(s, out data)) { Console.WriteLine(""Cannot parse to int the input : ”{0}”"", s); continue; }と記述することで、int.TryParseが失敗しfalseが返ってきたときは、continue;を実行してまた入力処理をやり直させることができます。continueはループ内の最初に戻る処理のため、 Console.Write(“Input number (end to input -1) : “);まで戻ります。

for文との使い分け

同じく繰り返し処理として、初期化式、条件式、更新式の3つを使って繰り返しを記述するfor文があります。最初に初期化式が一度だけ実行され、そのあとは条件式が真の間繰り返しを続行、一回の反復ごとに更新式を実行する、といった処理を行います。結論から言うと、複雑な初期化や更新をする場合はwhile文、どちらとも単純な場合はfor文を使用します。

なぜそうなるのか?

while文は、for文の初期化式、条件式、更新式のうち、条件式だけを記述したfor文と考えてもらって構いません。しかし、以下のようにするとwhile文でも更新式や初期化式を記述することができます。for(初期化式; 条件式; 更新式){ ...}// 上のfor文は下のwhile文と等価初期化式;while(条件式){ ... 更新式;}このような特徴を踏まえると、for文は初期化式、条件式、更新式を1行にまとめて書きますが、while文はそれらを別々に、例えば初期化式に2行以上使うといったことも容易にできます。そのため初期化や更新処理が単純な場合はfor文、そうでない場合はwhile文を用いるようにします。

SE
C#におけるwhile文の書き方を覚えておけば、ほかのプログラミング言語でも応用できそうですね。

PM
そうですね。while文は様々な言語で使われるので、しっかりマスターしておきましょう!

C#におけるwhile文の書き方を知ろう!

この記事では、C#におけるwhile文の書き方、do-while文、break, continueの用い方をサンプルを用いて解説し、またfor文との違いを説明してきました。while文は様々な言語で使われるため、ぜひチャレンジしてみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)