勉強してても不安ってつのりますね。el(える)です。
今回は繰り返し処理をやっていきます。
条件分岐と繰り返し処理は基本的なことですからね。
ちゃちゃっと覚えちゃいましょう。
連続で表示してみよう
Console.WriteLineで何行も書くのは大変ですし、間違える場合もあります。
プログラムでは指定した回数だけ同じ処理を繰り返すことができるfor文があります。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Main(string[] args) { for(int i = 0; i < 5; i++) { Console.WriteLine("連続で表示"); } } } }
for文を使って5回表示をさせています。
繰り返す回数を指定すれば、指定した回数ぶんブロック内の処理を実行 します。
for文の一般的な使い方
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Main(string[] args) { for(int i = 0; i < 5; i++) { Console.WriteLine(i); } } } }
このプログラムはカウントアップしています。
for文の書式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Main(string[] args) { for(ループ変数の初期化; ループ条件式; ループ変数の更新) { 繰り返したい処理 } } } }
ループ変数の初期化では、何回ループしたかを覚えておくためのループ変数を定義します。
ループ変数の初期化はfor文の最初に一度だけ実行されます。
ループの条件式が真の場合はブロック内の処理を実行し、ループ変数の値を更新します。詳しく解説するとこうなります。
for(int i = 0(変数の初期化); i < 5(iが5より小さい場合); i++(iに1を足す))
{
Console.WriteLine(i)(iが5より大きくなるまで実行される);
}
ループ変数はブロック内の処理に利用することもできます。
ですが、for文の外で使おうとするとエラーとなります。
for文にてカウントダウンもすることができます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Main(string[] args) { for(int i = 3; i > 0; i--) { Console.WriteLine(i); } Console.WriteLine("スタート"); } } }
繰り返す回数が決まっていない場合
for文のほかにWhile文があります。
for文は 繰り返す回数が決まっている場合に使うことが多く 、
While文は 繰り返す回数が決まっていない場合に使います。
プレイヤに衝突する石を移動させるプログラムです。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Main(string[] args) { int playerPos = 3; int stonePos = 10; while(playerPos != stonePos) { Console.WriteLine("石まであと" + stonePos); stonePos--; } Console.WriteLine("石に当たった"); } } }
石が飛んできて当たるまで何回移動すればプレイヤにあたるかわからないので、
While文をつかっています。
今回のプログラムでは右辺と左辺が等しくない場合に真となります。
両者が同じ値になると条件をみたさなくなるのでWhile文を抜けています。
While文の書式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Main(string[] args) { while(条件式) { 繰り返したい処理 } } } }
break文
playerPos(人)とstonePos(石)変数の値が等しくなった時に繰り返し処理が終わりました。
break文を使っても繰り返しの終了条件を直感的に書くことができます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Main(string[] args) { int playerPos = 3; int stonePos = 10; while(true) { if (playerPos == stonePos) { break; } Console.WriteLine("石まであと" + stonePos); stonePos--; } Console.WriteLine("石に当たった"); } } }
While文の条件式にtrueを指定しているので、常に条件式を満たすことになり、
While文が無限に実行され続けます。これを無限ループといいます。
無限ループを抜けるにはループしているブロック内でbreak文を使います。
break文は 繰り返し処理のブロックから抜ける ための構文です。
注意として、2重ループになっていた場合、内側にbreakがあっても外側のループまでは抜けられません。
終わりに
今回はfor文などの繰り返し処理でした。
プログラムを書く上では必ず出てくるところなので、
ちゃんと覚えておかなければいけませんね。
でもまだ大丈夫。うん覚えてる。
やっぱり勉強しながら書くのって、どう書いたらいいかとか考えながら勉強するから、深く覚えるみたいですね。
でもまた使わなくなると忘れるんだろうなぁ・・・
またしても勉強で欲しい本。
お金ないからなぁ・・・
会社の事務所に本棚があれば置いてほしいなぁなんて。
それではまた次回。