前回はfor文の構文について書きましたが、そもそも、
for文はどのようなシーンで利用するのか、またそのメリットは?
ということについて書いていきたいと思います。
前回も書いたのですが、一度で理解するのはなかなか難しいので
実際にプログラムを書きながらゆっくりと学んでいって下さい。
例えば、こういう問題があったとします。
なんでこんな問題を解かなきゃいけないのか?と聞かれると
困ってしまうのですが、大学で情報工学(≒プログラミング)を学ぶと
やけにこういう計算問題を解かされることになります。
今から考えると、for文などの構文を理解するための例題にすぎない
ということがわかるのですが、当時は、こんな問題を解きたいんじゃなくて
人工知能がやりたいんだよ!と思っていました苦笑
そんなことは置いておいて、この問題をfor文を使わずに解いた
サンプルプログラムを紹介します。
<?php $answer = 3+6+9+12+15+18+21+24+27+30+33+36+39+42+45+48+ 51+54+57+60+63+66+69+72+75+78+81+84+87+90+93+96+99; echo $answer;
ひどいプログラムですね。。。
書いているのが嫌になってくるプログラムです。
今、問題が1〜100までだったので、書くのに数分で済みましたが
出題者がいじわるで1〜10000までの3の倍数の数の合計
と言われたら、この書き方で書くのは精神的にムリです。
そこでfor文が必要となってきます。
先ほどのプログラムをfor文を使って書いてみましょう。
<?php $answer = 0; //最終的な合計が入る変数。初期値は0とする。 for($i = 1; $i <= 100; $i++){ if($i % 3 == 0){ //$iが3の倍数だったら=3で割った余りが0 $answer = $answer + $i; //合計値に$iを加算する } }//ここでfor文が終わり echo $answer; //合計をブラウザに出力
先ほどのサンプルと比べると少し複雑なプログラムに見えると思います。
for文の内側にif文も入っていますし、過去に紹介した%(余りを求める演算子)も使っています。
これまで学んできた技術を使いこなしています。
$iはループが回るたびに1からはじまり、2,3,4・・・とその数値が変化していきます。
そして、$iの数値を3で割ったあまり( $i % 3 の部分 )が0であれば
$iは3の倍数ということになります。(例:6を3で割ったあまりは0ですよね)
3の倍数だということが分かれば、$answerにどんどん足していくことになります。
$answerは最初は0としていますので、$i = 3の時に
$answer = 0 + 3 となり、$answerは3となります。
そして、$i = 6 の時に、
$answer = 3 + 6 となり、9に変化します。
for文が終わると、当然ですが結果はどちらのプログラムも同じです。
が、しかし、こちらの書き方だと、1〜10000までの3の倍数の数の合計
と言われても、「全然OKです!」と余裕しゃくしゃくで答えられます。
サンプルプログラムを見てみましょう。
<?php $answer = 0; for($i = 1; $i <= 10000; $i++){ //ここを10000に変えただけ if($i % 3 == 0){ $answer = $answer + $i; } } echo $answer;
このプログラムでは100だったところを10000に変えただけです。
実行結果があっているかどうか確認するのは嫌ですが・・・
このようにfor文を使うと、繰返し回数が10倍、100倍に増えても
プログラムを書き直す変更点が少ないということがメリットとなります。
違う見方をすれば、100回繰り返すような処理も、100万回繰り返すような処理も
プログラムを書く工数はほとんど変わらないということになります。
いかがでしたでしょうか。for文を使うメリットを感じてもらえたでしょうか。