スポンサーリンク
※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~
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++; } } } } } |
関連記事
~Webサイトを自分で作ってみませんか?~
Webサイトを運営するにはサーバーが必須です。
このサイトは、エックスサーバー のサーバーを使用しています。
エックスサーバーは無料で10日間お試しができます。