スポンサーリンク
※サイト運営にサーバーは必須です※
~ ロリポップ! はコスパのよい初心者向けサーバーです~
for文
for文は繰り返し処理を行う際に、使用します。
for文は以下のように書きます。
for (変数の初期化式; 条件式; 変数の変更式)
{
文(処理);
}
変数の初期化式(一項目)で、カウント用の変数の初期値を設定します。
条件式(二項目)がtrueであれば、文(処理)が実行されます。
処理が一通り終わった後は変数の変更式(三項目)に従い、カウント用の変数が増減します。
再度、条件式(二項目)を評価します。
trueなら、文(処理)が実行されます。falseになれば、ループから抜けます。
具体的に、ソースコードを見てみましょう。
※言語はC#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace For02 { class Program { static void Main(string[] args) { for (int i = 0; i < 5; i++) { Console.WriteLine("iの値は" +i); } } } } |
最初はi=0で初期化されます。
→0>5はtrue
→Console.WriteLine(“iの値は” +i);が実行されます。
→i++により、iの値は1になる
→1>5はtrue
→Console.WriteLine(“iの値は” +i);が実行されます。
…(省略)…
→i++により、iの値は5になる
→5>5はfalse
→ループから抜けます
実行結果は以下のようになります。
iの値は0
iの値は1
iの値は2
iの値は3
iの値は4
変数の初期化式(一項目)で、必ず、変数を宣言しなければならないというわけではありません。
変数の宣言と値の代入は分けて記述することができます。
※言語によっては、for文の変数の初期化式(一項目)で変数の宣言ができない場合もあります。記憶が正しければ、C言語はできなかったはず。
変数の変更式三項目)は必ずしもインクリメント演算子(++)やデクリメント演算子(–)でないといけないわけではありません。(ただし、インクリメント・デクリメント演算子を使わない式が設定されていることは稀です)
以下のようなコードを書くことが可能です。
※変数の宣言と代入を分けて記述しています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace For03 { class Program { static void Main(string[] args) { int sum=0; int i;//変数の宣言と初期値代入の分離 for (i = 0; i <= 10; i+=2) { sum+= i; } Console.WriteLine("0~10までの偶数の和は"+sum); } } } |
この場合、カウント用の変数であるiの値は2つずつ増えます。
実行結果
0~10までの偶数の和は30
for文のネスト
for文の中にfor文を書くことは可能です。
※ネストとは入れ子のことです。あるプログラムの構造の中に、それと同じプログラムの構造が入っていることを意味します(今回の場合for文の中にfor文が入っています)。
以下のプログラムは、九九の一覧を求めるプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace For04 { class Program { static void Main(string[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <=9; j++) { Console.WriteLine(j+"×"+i+"="+i*j); } Console.WriteLine("---------"); } } } } |
実行結果
1×1=1
2×1=2
3×1=3
4×1=4
5×1=5
6×1=6
7×1=7
8×1=8
9×1=9
———
1×2=2
2×2=4
3×2=6
4×2=8
5×2=10
6×2=12
7×2=14
8×2=16
9×2=18
———
1×3=3
2×3=6
3×3=9
4×3=12
5×3=15
6×3=18
7×3=21
8×3=24
9×3=27
———
1×4=4
2×4=8
3×4=12
4×4=16
5×4=20
6×4=24
7×4=28
8×4=32
9×4=36
———
1×5=5
2×5=10
3×5=15
4×5=20
5×5=25
6×5=30
7×5=35
8×5=40
9×5=45
———
1×6=6
2×6=12
3×6=18
4×6=24
5×6=30
6×6=36
7×6=42
8×6=48
9×6=54
———
1×7=7
2×7=14
3×7=21
4×7=28
5×7=35
6×7=42
7×7=49
8×7=56
9×7=63
———
1×8=8
2×8=16
3×8=24
4×8=32
5×8=40
6×8=48
7×8=56
8×8=64
9×8=72
———
1×9=9
2×9=18
3×9=27
4×9=36
5×9=45
6×9=54
7×9=63
8×9=72
9×9=81
———
変数の初期化式(一項目)及び変数の変更式(三項目)において、かならず一つの変数しか指定できないというわけではありません。
例えば、以下のコードでは、初期化式(一項目)の中で、iとjという2つの変数を取り扱っています。
ただし、同時に2つ以上の変数を取り扱っているfor文を参考書以外でお目にかかったことはありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace For05 { class Program { static void Main(string[] args) { for (int j = 1,i = 1; i <= 9; j++) { Console.WriteLine(j + "×" + i + "=" + i * j); if (j==9) { Console.WriteLine("---------"); j = 0; i++; } } } } } |
関連記事
~ギャンブルに絶対儲かる必勝法があるのだろうか?~
私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。
このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。