プログラミング学習をするときに必要となる知識はの一つが、
ループです。
ループとは英語でLoopと書いて、「繰り返し」という意味だよ。
何度も同じ処理を行うときに使うよ。
小学生でも分かるように、詳しく説明していくから心配しないでね。
ループってなに?
テレビや映画などのストーリーで、ある特定の1日を永遠に繰り返すというようなストーリー見たこと無いかな?
出口から抜け出すきっかけが見つかるまで、主人公の意思などお構いなしに、ひたすら同じ日を繰り返すんだ。
プログラミングのループ処理も、それと似ているんだよね。
ある特定の条件を満たさない限り、永遠と同じことを繰り返すんだ。
条件については、以下の記事に詳しくまとめたから読んでね。
条件ってなに?小学生でも分かる!プログラミングの基本知識
で、ループ処理には大きく分けて
「 for 」
という書き方(for文と呼ばれる)と、
「 while 」
という書き方(while文と呼ばれる)の2つあるんだよ。
forとwhileは何が違うの?
for文もwhile文もどちらも、ループ処理なんだけど
for文は
for (カウンタの初期化; カウンタのチェック; カウンタの増加) {
繰り返したい処理
}
となって、実際には、
goukei = 10;
for (int kazu; kazu < 7; kazu++) {
goukei += 5;
}
と書きます。「++」のインクリメント演算子については、以下の記事に詳しく書いたから読んでね。
インクリメント演算子・デクリメント演算子とは?小学生でも分かる!プログラミングの基本知識
上の処理は、変数「kazu」が「7よりも小さい間」、変数「goukei」に+5していくという処理なんだ。
だから、
goukei = 10;
goukei += 5;
goukei += 5;
goukei += 5;
goukei += 5;
goukei += 5;
goukei += 5;
goukei += 5;
と同じ結果になるんだ。
while文は、
while (条件式を満たしている) {
繰り返したい処理
}
となって、実際には、
goukei = 10;
while (goukei <= 100) {
kazu++;
goukei += 5;
}
と書きます。「<=」の比較演算子については、以下の記事に詳しく書いたから読んでね。 比較演算子とは?小学生でも分かる!プログラミングの基本知識
上の処理は、変数「goukei」が「200以下の間」、変数「goukei」に+5していき、変数「kazu」で回数をカウントしているんだね。
だから、
goukei = 10;
goukei += 5; //15
goukei += 5; //20
goukei += 5; //25
goukei += 5; //30
goukei += 5; //35
goukei += 5; //40
goukei += 5; //45
goukei += 5; //50
goukei += 5; //55
goukei += 5; //60
goukei += 5; //65
goukei += 5; //70
goukei += 5; //75
goukei += 5; //80
goukei += 5; //85
goukei += 5; //95
goukei += 5; //100
と同じ結果になるんだ。
結局、何が違うか?というと、
for文は、繰り返す回数が決まっているときに使う
while文は、繰り返す回数が決まっていないときに使う
というのが分かりやすいかな。
でも、繰り返し処理であれば、for文でもWhile文でもどちらでも書くことができるんだ。
さっきfor文で書いた、変数「kazu」が「7よりも小さい間」、変数「goukei」に+5していく処理も
goukei = 10;
while (kazu < 7) {
kazu++;
goukei += 5;
}
と書けるし、
さっきWhile文で書いた、変数「goukei」が「200以下の間」、変数「goukei」に+5していき、変数「kazu」で回数をカウントしている処理も
goukei = 10;
for (int kazu; kazu < 50; kazu++) {
goukei += 5;
if (goukei > 100){
break;
}
}
と書くことができます。
「break」を使うと、ループ処理を強制的に抜けさせることができるんだ。
つまり本来だと「kazu < 50」、変数「kazu」が50になるまで変数「goukei」に+5の処理をしていかなければならないが、 途中の条件式で「if (goukei > 100)」、変数「goukei」の値が100を超えたらループ処理を抜けるとあるので、変数「goukei」の値は100を超えることはないんだ。
無限ループにご用心!
テレビや映画では、主人公は毎日同じように感じていた日にも、少しだけ違いがあることに気づき、それをきっかけに無限ループから抜け出すよね?
プログラムでも、ループを抜け出す条件を必ず設定しなければいけないんだ。
そうじゃないと、永遠に同じ処理を繰り返してしまう。
テレビや映画では、登場人物が自ら発見するんだけど、プログラムの場合、そうはいかないよね。
だからこそ、しっかりとループ処理を抜ける条件を書いてあげる必要があるんだ。
よくやっちゃうのが
goukei = 10;
for (int kazu; kasu < 7; kazu++) {
goukei += 5;
}
for文の条件を設定する部分が、「 kasu < 7 」になっているよ。 「kazu」と「kasu」を間違えたんだね。 他にも、
goukei = 10;
for (int kazu; kazu > 7; kazu++) {
goukei += 5;
}
for文の条件を設定する部分が、「 kazu > 7 」になっているよ。
変数「kazu」の初期値は「0」、条件は「kazuが7より大きいとき」なので、上記のfor文は一度も処理されることなく、
変数「goukei」は初期値「10」から変わることはないんだ。
これからは、本当に些細なミスで、よく発生するんだよ。
文字が1文字違うだけで、結果が全然違うものになるから、何度も確かめたり、見返すことが大事になるね。
まとめ
- ループ処理は、「繰り返し」処理
- ループ処理には、for文とWhile文がある
- for文は、繰り返す回数が決まっているときに使う
- while文は、繰り返す回数が決まっていないときに使う
- 無限ループにならないように、見返しは大事
コメント