こんにちは! ケケンタです。
PHPを勉強し始めると比較的早い段階でfor文(繰り返し文・ループ文)の学習に差し掛かるかと思います。
ただ、このfor文、初学者の方にとってはひとつ目の鬼門となることが多いです。
(かくいう僕も、最初はfor文でつまずきました……)
そこで今回はPHPを学習し始めたばかりでfor文でつまずいてしまったという方に向けて
ピラミッド作成から学ぶfor文を書くときの考え方
を解説していきます。
- PHPを学習し始めたばかりの方
- for文の考え方のイメージがわかない方
- PHPでピラミッド作成をしてみたい方
- 二重ループの考え方を知りたい方
この記事をご覧いただくことでfor文を書くときの考え方のイメージが掴めるようになります。
この記事を通して、初学者の方にとってつまずきやすいfor文への理解が少しでも深まれば何よりです。
PHPのことを体系的に学びたい方にはこちらの書籍がおすすめです。
(僕自身が初めてPHPを学ぶとき実際に使用した本です)
PHP本格入門[上] ~プログラミングとオブジェクト指向の基礎からデータベース連携まで
大塚 正登/著 技術評論社/出版|Amazon
PHPにおけるfor文とは?
具体的な解説の前に、まずはfor文とは何か?について簡単にお話をします。
for文とは、ある処理を繰り返し行いたいときに用いるPHPの基本構文のひとつです。
似た構文としてwhile文があります。
具体例
<?php
/**
* 0~9までの数字を繰り返し出力する
*/
for($i=0; $i<10; $i++){
echo $i;
}
/**
* for文を使用しないで書こうとすると……
*/
echo 0;
echo 1;
echo 2;
echo 3;
echo 4;
echo 5;
echo 6;
echo 7;
echo 8;
echo 9;
// 出力結果はいずれも以下のようになる
// 0123456789
?>
このように、for文(繰り返し文・ループ文)を用いることで、より短いプログラムで処理を組むことが可能です。
ピラミッド作成を通じてfor文の考え方を学ぶ
for文を書くときには、考え方にコツがあります。
for文の考え方のコツ
- いったん完成形をハードコーディング(手打ち)してみる
- ハードコーディングした処理を見て、「どこがどのような法則で繰り返されているか」を観察する
- 「法則」にしたがってfor文に置き換えてみる
このような流れを取ることで、少しずつfor文の考え方に慣れていくこと可能です。
今回ご紹介するピラミッド作成でも上記のコツに沿って解説を進めていきます。
僕自身、プログラミングを学習し始めたばかりのときはif文までは比較的すんなり進めたのですが、for文で一気につまずきました。
しかし、勉強を継続していくことで少しずつではありますが、for文を書くときの思考の積み重ね方を身に付けることができました。
この記事が、読者の方にとってひとつのキッカケになれば何よりです。
【実践解説】ピラミッド作成
今回作成するピラミッドの完成形
ピラミッドのプログラム(完成形)
<?php
for($i=1; $i<=4; $i++) {
for($j=1; $j<=4-$i; $j++){
echo '*';
}
for($k=1; $k<$i*2; $k++){
echo $k;
}
echo '<br>';
}
?>
- まずはハードコーディング(手打ち)でピラミッドを作成する
- とりあえず4段それぞれにアスタリスクをひとつずつ出力してみる
- 各段のアスタリスクを必要な分だけ出力する
- 各段の数字を出力する
①まずはハードコーディング(手打ち)でピラミッドを作成する
具体的に書くと以下の通りです。
<?php
echo '***1' . "<br>";
echo '**123' . "<br>";
echo '*12345' . "<br>";
echo '1234567';
?>
出力結果
このようにハードコーディングすることで、どの部分が繰り返されているのか=for文で表現できるのかが可視化されます。
具体的に可視化されることで頭のリソースに余裕が生まれ、for文を書くためのイメージも整理しやすくなります。
②とりあえず4段それぞれにアスタリスクをひとつずつ出力してみる
①の時点で繰り返し部分は可視化されましたが、まだ少し複雑な印象なので、今度はとりあえずアスタリスクを4段に分けて出力してみます。
<?php
for($i=1; $i<=4; $i++) {
echo '*' . '<br>';
}
?>
出力結果
③各段のアスタリスクを必要な分だけ出力する
次に、①で可視化されたピラミッドを元に、「どのような法則でアスタリスク(*)が繰り返されているのか」をイメージします。
ちなみにピラミッドにおけるアスタリスクの繰り返し法則は、
「ピラミッド全体の段数 – 現在の段数」です。
例えば、1段目なら「4段-1段=3つ」、2段目なら「4段-2段=2つ」といった法則に基づいて、アスタリスクが繰り返されています。
<?php
for($i=1; $i<=4; $i++) {
// ******この部分を修正*******
/**
* 「4-$i」=「ピラミッド全体の段数-何段目か」
*/
for($j=1; $j<=4-$i; $j++){
echo '*';
}
echo '<br>';
// *********ここまで**********
}
?>
出力結果
④各段の数字を出力する(完成)
最後に、数字部分を出力すればピラミッドの完成です。
ちなみにここでの「法則」は、
「『現在の段数×2』未満の数だけ数字が出力されている」
です。
例えば、
1段目なら「1段目×2=2」なので、1まで
2段目なら「2段目×2=4」なので、1~3まで
の数字が繰り返し出力されています。
<?php
for($i=1; $i<=4; $i++) {
/**
* 「4-$i」=「ピラミッド全体の段数-何段目か」
*/
for($j=1; $j<=4-$i; $j++){
echo '*';
}
// ******この部分を追加*******
/**
* 「$k < $i*2」=「『現在の段数×2』未満の数だけ数字を出力」
* (例)2段目……2×2=4未満(つまり3まで)の数字を出力
*/
for($k=1; $k<$i*2; $k++){
echo $k;
}
// *********ここまで**********
echo '<br>';
}
?>
出力結果
以上でピラミッドの完成です!
for文を書くときはまずハードコーディングしてみる
いかがだったでしょうか。
今回はピラミッド作成の工程をできるだけ細分化し、どのような考え方でfor文を書いていけば良いかという点について解説しました。
今回の解説のポイントは以下の通りです。
- まずはハードコーディングして完成形を可視化する
- 「どこがどのような法則に基づいて繰り返されているのか」を分析する
- 「法則」にしたがってfor文に置き換える
for文は初学者の方にとって大きな鬼門のひとつです。
しかし、ここを乗り越えることができれば、それはプログラミング力だけでなく論理的思考力が向上したことを意味します。
最初は大変かもしれませんし、事実(ぼく自身も含め)ここでつまずく方はとても多いです。
まずは少しずつ「処理を繰り返して出力する」という部分に慣れていきましょう。
この記事がお役に立ったなら何よりです!
根を詰めすぎないよう、少しずつ前進していきましょう~。
最後までご覧いただきありがとうございました。
以下の記事でもfor文について解説していますので、ご興味のある方はぜひご覧ください。
以下はfor文の練習問題ページです。
また、もしもPHPの独学に限界を感じていたら、一度プログラミングスクールの利用を検討するのも良いかもしれません。
無料でPHPが学べるプログミングスクール
コメント