今回学ぶのは「for文」です。前回の講義で学んだ「if文」とも関連があるものですね
if文? なんか聞いたことがあるなぁ
猫田さん。 if文は前回の講義で学んだばかりですよ
あれ? そうだっけ?
猫田さんのようにif文を忘れてしまった方は、前回の講義を復習しておきましょう。
復習してきました。 完全に思い出しました!
猫田さんの記憶が蘇ったところで、「繰り返し処理(ループ処理)」を担当するfor文の学習をしていきます。for文を使用すると、同じ処理を繰り返し実行させたり、箇条書きになっている文章を全て出力させたり出来ます。
よーし! じゃあ、今回もいってみよー!
PHPの学習:for文の書き方・使い方の基本
まずはfor文の書き方を紹介します
for文の基本的な書き方は下記の通りです。
for(初期値;条件式;増減式){
処理
}
このような書き方をしますが、これだけだと何が書いてあるのか分からない人も多いでしょう。
はい。 さっぱりわかりません
そうですよね。なので、もう少し詳しく説明します
先程の例ですが……を実際には下記のように書きます。
初期値と条件式と増減式:それぞれの意味
初期値と条件式と増減式の意味を紹介する前に、for文の処理の流れを紹介します。
- 変数aに0を代入
- 変数aが10以下の場合は処理を実行する
- 処理を1回実行するごとに、変数aが1ずつ増加する
- for文が実行されるごとに変数aの値を出力結果に表示する(改行付き)
- 変数aが10を超えるまでループする
このような処理になっていて、初期値というのは「for文が始まる前の変数の値」を指します。
そして、条件式は「ループ処理を行う回数」を示唆していて、増減式は「ループ1回毎に増加(減少)していく値」と考えてください。 そのため、今回は「aが1ずつ増えていく」という式を採用しています。
なるほど。 aの値が1つずつ増えていくプログラムだったんですね。 だから、1,2,3,4……と数字が1つずつ増えていったのか
具体例:②
では、数値を少し変えて応用してみましょう。こんな感じのプログラムを組んでみました
どこが変わったのか、わかりますか?
えーと……3つめの増減式の部分が変わっていますね。「$a++」だったものが「$a +=2」に変わっています
2つめの具体例では、変数aは1回ループするごとに+2ずつされます。ループの回数は0からスタートして10までなので、合計6回ですね。 このように、ループさせる際の仕様によって使い方を分けるのがfor文を使用する際のポイントです。
for文を使用する際の注意点について
今のところ、なんとなくわかった気にはなっています
キャニット先生、for文を使うときの注意点を教えてください
そうですね。for文の注意点は、次の2つでしょうか
- ループ回数をキチンと確認する
- 条件式の比較演算子を確認する
この2つの事柄はベテランでも勘違いでミスをしてしまうケースが多いです。
上記の画像を例に紹介すると、「a++」の画像では、「10回のループ」ではなく、「0~10までの11回のループ」です。
たしかに、10回のように感じちゃうかもー
もしも「10回ループさせる」という処理をしたいのならば初期値を「1」にするか、条件式の比較演算子を「<=」ではなく「<」にしなければいけません。この辺りの認識をしっかりとしていないと確認するのが面倒なミスとなってしまうので注意してください。
ちなみに、なぜ確認するのが面倒なのかというと、ループの回数をミスしてもプログラミングとしてエラーが検出されないので、どの部分でミスったのか肉眼で確認しなければならないためです。 プログラミングをしていて、最も面倒なミスが「エラーにならないミス」となっていますので、その点に関しては注意したほうが良いでしょう。
for文にfor文を重ねた処理
前回学習した内容のif文にも「複数の条件分岐」というものがあったように、今回のfor文にも「2つのfor文を重ねる」方法が存在します。
これを「ネスト方法」とも呼びますが、簡単に言えば「2つのfor文を重ねることでプログラミングをシンプルにする」やり方です。
2つ重ねるのにシンプルになるの?
その疑問はもっともですが、次の例題を見るとわかりやすいと思いますよ
今回は、for文の練習問題でも使われることの多い「掛け算の九九」をfor文で出力していきます。
プログラミングと出力結果は、このようになります。わかりやすいようにコメントアウトもしておきました。
重要なポイントはコメントアウトで紹介しているために割愛しますが、この2つのfor文が表しているのは「1行ごとに計算と表示を9回繰り返して、9回改行する」ことです。
1周目のループでは変数aが1の状態でスタートしているので、1×1~1×9を表示します。
2周目では変数aが1から2へとプラスされるために、2×1~2×9となり、このループが9周目まで繰り返されるのが今回のfor文の全容です。 このように、同じような処理をまとめて繰り返すことが出来るのがfor文の強みとなっていますので、使い方を変えると「箇条書きされたデータを1つずつまとめて表示させる」というように使うことも出来ます。
テスト:実際にfor文を使ってプログラミングをしてみよう
それでは、恒例となりました練習問題を解いていきましょう
今回はfor文の練習問題となりますが、今までに学習したことをちゃんと理解していないと出来ない仕組みになっていますので、頑張ってください。
むむっ! つまり難しいってことかー がんばるぞー
テストプログラミング内容
今回作成するfor文の条件は下記の通りです。
- 変数を1つ作成して、その変数を配列化する
- 配列の中身は「国語・数学・理科・社会・英語」の5つとする
- For文を使って配列の中身をそれぞれ出力し、5回ループさせる
- 該当する項目が「理科」の場合のみ、さらに「理科は得意科目です」と表示させる
ヒント:今までに学習した「配列」と「if文」、そして今回学習したfor文を組み合わせると作成出来ます。
テストの答え合わせ
では、答え合わせをしていきましょう
このようなプログラミングが書けていたら合格です
どのような処理をしているのかということについては、コメントアウトで説明していますので、そちらを確認してください。
PHPの学習:「for文」のまとめ
今回はfor文について学習してきましたね。どうでしたか?
うぅ…… テストができなかったよぉおおおお
ここまで学んだものを組み合わせるのは、やはり大変ですね。 少しずつ慣れていかないと……
今回の練習問題は今まで学習してきたことを複合したものを出題しました。PHPに限らずプログラミングは色々なテクニックを駆使するとプログラミングの行数を減らしたり、スムーズに処理が出来たりします。一方、力技でプログラミングを構築することも可能といえば可能です。
ただし、力技はあくまでも力技なので、きちんとした能力を身につけてプログラミングをしたほうが後々楽なのは言うまでもありません。