for文とは
for文は、ある処理を繰り返し実行するための文法の一つです。for文を使うことで、同じ処理を複数回簡単に実行することができます。
for文の基本的な書き方
for文の基本的な書き方は、以下のようになります。
初期化式
初期化式は、for文を実行する前に一度だけ実行されます。変数の初期化を行う場合に使用します。
条件式
条件式は、繰り返し処理を行うための条件を指定します。
条件式が真(true)の場合に処理が実行され、偽(false)の場合には処理が終了します。
条件式の部分には、比較演算子を用いて大小を比較することができます。
例えば、>
や<
などの演算子を使うことができます。
更新式
更新式は、繰り返し処理を行った後に実行されます。変数の更新を行う場合に使用します。
for文の処理の流れ
for文の特徴
- 初期化式を実行する
- 条件式を評価する
- 条件式が true の場合、繰り返し処理を実行する
- 更新式を実行する
- 再度条件式を評価する
- 条件式が true である限り、3-5を繰り返す
- 条件式が false になると、for文の処理を終了する
for文を使用する例
例えば、1から10までの数値を表示する場合、以下のようにfor文を使用することができます。
public class Sample {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
このプログラムの解説は以下の通りです。
初期化式:変数iを1で初期化しています。初期化式はfor文の最初に1回だけ実行されます。
条件式:iが10以下の間、for文が繰り返されます。条件式は、for文の最初に1回だけ評価され、trueである限りfor文は繰り返されます。
更新式:iが1から10まで順番に表示されるために、iを1ずつ増やしています。更新式は、for文の最後に毎回実行されます。
つまり
①初期化式から変数iを1で初期化する
②条件式からiが10以下の場合、trueとなりブロック内の処理を実行する
③更新式からi++を行いiは2となる
④再び条件式からiが10以下の場合、trueとなりブロック内の処理を実行する
⑤更新式からi++を行いiは3となる
⑥条件式がfalseとなること、つまりiが10より上になるまで繰り返す
というプログラムになります。
このように、for文には初期化式、条件式、更新式という3つの要素が必要であり、それらの要素がうまく使われることで、特定の回数だけ繰り返したり、ある条件が成り立つまで繰り返したりすることができます。
for文の注意点
無限ループに注意する
for文は、条件が真である限り繰り返されます。
しかし、誤って条件が永遠に真になるようなコードを書いてしまいます。
これをプログラムの無限ループと言います。
無限ループに陥位ると処理が終了しなくなってしまいます。
これは非常に危険な状態であり、プログラムの正常な動作を阻害する可能性があります。
例えば、以下のようなコードでは、変数iの値が0より小さい場合、条件が真となり、ループが無限に繰り返されてしまいます。
public class Sample {
public static void main(String[] args) {
for(int i = 10; i < 0; i++) {
System.out.println(i);
}
}
}
このような無限ループを防ぐためには、条件式を注意深く書き、正しい条件を設定する必要があります。
変数のスコープに注意する
for文内で宣言された変数は、ループの外部からアクセスできなくなります。
これを変数のスコープと呼びます。
このため、for文内で宣言された変数をループの外部で使用する場合は、ループの外部で変数を宣言しておく必要があります。
例えば、以下のようなコードでは、for文内で宣言された変数iは、ループの外部からアクセスできません。
public class Sample {
public static void main(String[] args) {
for(int i = 0; i < 10; i++) {
System.out.println(i);
}
System.out.println(i); // エラーが発生する
}
}
これを回避するには、ループの外部で変数を宣言しておく必要があります。
public class Sample {
public static void main(String[] args) {
int i;
for(int i = 0; i < 10; i++) {
System.out.println(i);
}
System.out.println(i); // 10が出力される
}
}
コメント