こんにちは、穏やかくらし計画ライターのあらです。
前回の記事では、変数と算術演算子について解説しましたが、今回はfor文、while文を使って、「繰り返し」というものをやっていきたいと思います。
この記事はシリーズもののブログ記事です。まだ#1の(プログラミング初心者が独学で1から掲示板サイトを作れるのか?【始めた理由と目標編】)を見ていない方は#1からぜひ見てみてください。
【繰り返し】とは?
繰り返しとは単調な作業をプログラムの力を使って省き。大量の情報を一気に作りだすことを言います。
例えば、1から1000までの数字を表示させなさい。と言われた時に、
print(1);
print(2);
print(3);
...
上記のように、1つずつprintやechoを使って表示させていこうとすると、半日は過ぎてしまいます。これではあまりに効率が悪すぎますよね?それを2文程度で一気に作りだすことができるのが「繰り返し」ということなんです。
ではどうやって1から1000までの数字を一気に作り出すのか2種類のやり方を一緒にやっていこうと思います!
while文で繰り返しをやってみる!
まずwhile、forというのはどちらも「関数」というもので、それぞれ決まった形でコードを書かなくてはいけません。数学の公式に似ている気がします。
whileの場合は、
- スタート値設定 $i=?
- 条件while関数 while($i<=?)
- {}内で繰り返すコードを書く
こんな感じで書いていきます。これだけではわかりづらいので、練習問題と並行してやって行きたいと思います。
【練習問題】1から100までの数字を表示させよ。while編
まずはスタート値の設定です。スタート値は前回の記事で勉強した「変数」を利用します。
今回は1からなので$i=1。なぜ$iかと言うと、indexのiだと言われています。(indexとは指数や指標)変数名でよく使われる文字らしいので覚えておきましょう!
次にwhileでどこまでかをコードに書きます。今回は100までなので、while($i<=100)。
そして、{}内で$iに1足して表示させるコードを繰り返すコードに書いていきます。
{}内に表示させる(print($i))と1ずつ足していく($i=$i+1)を書き、あとはルールに従って、コードを並べていくだけです。
- $i=1;
- while($i<=100){
- print($i);
- $i=$i+1;
- }
{}の位置が変わってますね。これはPHPのルールでwhileの後に{で終わらせ、繰り返すコードの次の行に}をつけることになっているみたいです。実際にコードを書いてみました。
1~100までの数字の時はprint で数字を表示させ、101になったタイミングで表示させないようなコードになっています。
実行結果はこちらになります。
はみ出して全部撮れていませんが1から100まで表示されていました。
おや?しかし、見慣れない箇所が2つありますよね?「."\n"」と「$i++」...これも解説していきます!
$i++の謎
$i++は$i=$i+1こちらと全く同じコードなのです。プログラミングでは「1を足して再代入」という記述がとても多いらしく、$i=$i+1をもっと簡単に書けるようにしよう!と考えたPHPの作書は$i++を特別な演算子を与えたみたいです。
これを「インクリント(increment:増加)」というらしく、逆に「デクリメント(decrement:減少)という「1ずつ引いて再代入」もあるのでぜひ覚えていってください。
."\n"の謎
この."\n"は改行という意味になります。もしも、この記号はない場合だと12345678910111213....のようにすごく見にくい表示結果になってしまいます。
ですから、改行したい場合は."\n"を入れるようにしましょう。
あと1つ私がつまづいたことがあります。それは\(バックスラッシュ)です。元々バックスラッシュがあるのも分かっておらず、ずっと/(スラッシュ)で改行を書いていました。
しかし、このコードでは改行とは認識されずただの「/n」が表示結果に出てしまいました。
これに気づくのに、結構な時間はかかりましたが自分で解決できたのでよかったと思っています。バックスラッシュはMacだとoptionキー+¥で打つと\と表示されます。毎回optionキーを押すのがめんどくさい場合は、システム環境設定から設定できるので、詳しく知りたい方は調べてみてください。
for文で繰り返しをやってみる!
while文でも言った通り、for文にも公式みたいな型があります。
for(スタート値;終わり値:数値の増減)+{}に繰り返すコードを書く。(whileと同様で{}の位置は少し独特なので注意)
それではwhile文でもやった練習問題をfor文でもやってみたいと思います。
【練習問題】1から100までの数字を表示させよ。for文編
では先ほど言ったfor文の型に合わせてみましょう。スタート値は$i=1、終わり値は$i<=100、増減値は1足していくので、$i=$i+1($i++)。これでforの行は完成です。
あとはwhileと同じようにprintで$iを表示させ、改行するだけで完成になります。
実行結果はこちらになります。
見切れていますが、こちらも正しく1~100まで表示されています。
最後に
while文とfor文の違いは、書き方が違うだけ。個人的に思うのはwhile文はより、順次進行に従った書き方、for文は関数を使って、よりコードを短縮させて、まとまった形だなと感じました。
自分がやりたいことや問題によって、whileとforを使い分けした方が良さそうですね。forの方が簡単だからとかforだけとかではなく、whileにも過程がちゃんと見える部分もいいところなので、両方使えるようにしておこうと思います。
for、whileから少しPHPの難易度も上がっていて、自分でコードを書くのも苦労しました。皆さんも、もしかしたら分からない部分もあると思うので、どこが分からないか、どこか正しくないのか1つ1つ探していって正解に近づけば良いと思います。
また次回の課題も頑張りましょう!
▼私が参考している教材
▼前回の記事 変数と算術演算子のルール