九九の計算
C言語のfor文を使って表示させている。 そもそもfor文って何か? for文とは、プログラミング言語において条件が真の間だけ与えられた文の実行を繰り返すというループを記述するための文である。 forループは、whileループと違って、ループに入る前の初期化(通常カウンタ変数の初期化を行なう)を含む点で異なる。 この九九はfor文を使って表示させた。 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/249283/89d68d9b-7c88-d0ce-8bdd-dfcd0f99c27c.png) ![image.png](https://qiita-image-store.s3.amazonaws.com/0/249283/4920b65e-9574-abd0-059c-36d7d709e535.png)for文の書き方
for(【1】,【2】,【3】){ 【4】 }のような形が一般的です。
Javaであれば、例えば以下のように書きます。
int i = 0;
for(i = 0; i < 5; i++){
System.out.println(i);
}
簡単に説明しておきましょう。
1行目の
int i = 0;
は気にしないでください。
いわゆる「変数の初期化」ってやつです。
2行目以降の
for(i = 0; i < 5; i++){
System.out.println(i);
}
がfor文による繰り返し処理になります。
for(i = 0; i < 5; i++){
の「i++」は「変数『i』の中身に1を足す」処理です。
よく分からない人は「インクリメント演算子」の説明をご覧ください。
「System.out.println()」はJavaにおける「画面に表示してよ」な命令文です。
System.out.println(i);
は「画面に変数『i』の中身を表示してよ」を意味します。
それを踏まえて、for文全体は
1.変数「i」の中身は、最初は「0」だよ【1】
2.変数「i」の中身が5より小さい間、繰り返すよ【2】
3.画面に変数「i」の中身を表示するよ【4】
4.繰り返すごとに変数「i」の中身に1足すよ【3】
な処理になります。
int i = 0;
for(i = 0【1】; i < 5【2】; i++【3】){
System.out.println(i);【4】
}
上記の処理を実行すると、画面には
0
1
2
3
4
と表示されます。
同じ処理が5回繰り返され、都度、変数「i」の中身が表示されていますね。
この処理のポイントは
同じ処理が5回繰り返された
です。
無理に変数「i」の中身を使う必要はありません。
例えば
int i = 0;
for(i = 0; i < 5; i++){
System.out.println("太郎");
}
と書けば、画面には
太郎
太郎
太郎
太郎
太郎
と表示されます。
これは
画面に「太郎」と表示する処理を5回繰り返した
と言えるでしょう。
このように、特定の処理を決まった回数繰り返したいときに使う構文がfor文です。
……というのが、表面をさらっとなぞった説明です。
for文を使う分には、これだけ知っておけば十分です。
同じ処理を決まった回数分だけ繰り返したいときの決まり文句と思って、かまいません。
まずは
for(i = 0; i < 【繰り返す回数】; i++){
繰り返してやりたい処理
}
を決まり文句として覚えてください。
その上で、for文の使い方に慣れてきたら、きちんと中身を理解しましょう。
ここから先の説明は、もう少し突っ込んだ説明です。
何となく分かれば満足な人は読む必要ありません。
for文について、きちんと理解したい人は読んであげてください。
先ほども書きましたが、for文の書き方は
for(【1】,【2】,【3】){
【4】
}
のような形が一般的です。
それを踏まえて、for文における処理の実行順序は
1.【1】(最初の1回だけ実行される)
2.【2】(条件判定:条件を満たさなければループを抜ける)
3.【4】
4.【3】
※以降2~4を繰り返す
です。
先ほど、Javaで以下の処理を書きました。
int i = 0;
for(i = 0【1】; i < 5【2】; i++【3】){
System.out.println(i);【4】
}
この処理は
1.i = 0;【1】
2. i < 5;【2】(を満たすかの判定)
3.System.out.println(i);【4】
4.i++【3】
※以降2~4を繰り返す
の流れで実行されます。
しつこいですが、もう一度書いておきましょう。
for文の処理の流れは
1.【1】(最初の1回だけ実行される)
2.【2】(条件判定:条件を満たさなければループを抜ける)
3.【4】
4.【3】
※以降2~4を繰り返す
です。
プログラミング言語の種類にもよりますが、一般的なfor文には、それ以上の意味はありません。
例えば、Javaで以下のような処理を書いたとしましょう。
i = -1;
for(System.out.println("start"); true; System.out.println(i)){
i++;
if(i == 5){
System.out.println("end");
break;
}
}
奇妙な書き方をしていますね。
読みやすい書き方をするという意味では大問題ですが、構文上は問題ありません。
普通に動きます。
実行すると、画面には
start
0
1
2
3
4
end
と表示されます。
この処理を先ほどのfor文の処理の流れに当てはめると
1.System.out.println("start");【1】
2. true;【2】(を満たすかの判定)
3.以下の処理【4】
i++;
if(i == 5){
System.out.println("end");
break;
}
※変数「i」に1足して5になったらループを抜ける処理
4.System.out.println(i)【3】
※以降2~4を繰り返す
です。
i = -1;
for(System.out.println("start")【1】; true【2】; System.out.println(i)【3】){
i++;【4】
if(i == 5){【4】
System.out.println("end");【4】
break;【4】
}
}
特に、おかしなことはないですよね。
あるいは、以下のような書き方もできます。
for(i = 0; i < 5; System.out.println(i++)){
;
}
この処理を実行すると、画面には
0
1
2
3
4
と表示されます。
この処理を先ほどのfor文の処理の流れに当てはめると
1.i = 0;【1】
2. i < 5;【2】(を満たすかの判定)
3.何もしない【4】
4.System.out.println(i++)【3】
※以降2~4を繰り返す
です。
for(i = 0【1】; i < 5【2】; System.out.println(i++)【3】){
;【4】
}
これも特におかしくはありません。
System.out.println(i++)
は少しややこしい書き方ですが
System.out.println(i);
i = i + 1;
と書いたのと同じ動きをします。
変数「i」の中身を画面に表示した後で、1足されます。
あるいは……もう、いいですかね。
かなりしつこいですが、for文の処理の流れは
1.【1】(最初の1回だけ実行される)
2.【2】(条件判定:条件を満たさなければループを抜ける)
3.【4】
4.【3】
※以降2~4を繰り返す
です。
それさえ満たせば、ある程度は自由に処理を書けます。
この性質を利用して、たまに、とんでもない書き方をする人もいます。
余裕があれば、処理の流れは押さえておいてください。
とはいえ、できればfor文でややこしい書き方をするのは止めてくださいね。
個人的には、単純に処理を繰り返す
for(i = 0; i < 【繰り返す回数】; i++){
繰り返してやりたい処理
}
以外の書き方はしない方が無難だと思っています。