この記事にはプロモーションが含まれています。

【PHP】for文を書くときの考え方をピラミッド作成から学ぶ

【PHP】for文を書くときの考え方をピラミッド作成から学ぶ

ケケンタ

こんにちは! ケケンタです。

PHPを勉強し始めると比較的早い段階でfor文(繰り返し文・ループ文)の学習に差し掛かるかと思います。

ただ、このfor文、初学者の方にとってはひとつ目の鬼門となることが多いです。

(かくいう僕も、最初はfor文でつまずきました……)

そこで今回はPHPを学習し始めたばかりでfor文でつまずいてしまったという方に向けて

ピラミッド作成から学ぶfor文を書くときの考え方

を解説していきます。

この記事が向いている方
  • PHPを学習し始めたばかりの方
  • for文の考え方のイメージがわかない方
  • PHPでピラミッド作成をしてみたい方
  • 二重ループの考え方を知りたい方
ケケンタ

この記事をご覧いただくことでfor文を書くときの考え方のイメージが掴めるようになります。

この記事を通して、初学者の方にとってつまずきやすいfor文への理解が少しでも深まれば何よりです。

他にもfor文の考え方を知るための解説記事を「九九表作成」をテーマに公開しています。
ご興味のある方はぜひこちらもご覧ください。

PHPのことを体系的に学びたい方にはこちらの書籍がおすすめです。
(僕自身が初めてPHPを学ぶとき実際に使用した本です)

PHP本格入門[上] ~プログラミングとオブジェクト指向の基礎からデータベース連携まで
大塚 正登/著 技術評論社/出版|Amazon

目次

Web制作を仕事にしたいなら

 ̄ ̄ ̄

格安レンタルサーバーを
お探しなら

格安サーバーをお探しならリトルサーバーがおすすめ!

リトルサーバーの特徴
  • 月額150円~利用可能
  • 標準で全サーバー毎日自動バックアップ付き
  • 全プランWordPress対応(簡単インストール機能付き)
  • 独自SSLが無料(全プランがSSLに完全対応)
  • 提供ドメインが複数あるため独自ドメインが無くても複数サイト運営可能
  • 独自ドメイン無制限(サブドメインも無制限で利用可能)
  • 無料お試し期間がある

リトルサーバーの最大の特徴は安価な月額料金です

\ 利用料金比較表 /

ミニプランワードプランリトルプランビッグプラン
月額料金150円~195円~250円~430円~
SSD容量20GB30GB60GB120GB
提供ドメインアカウント+2アカウント+2アカウント+3アカウント+5
独自ドメイン無制限
バックアップ7日分
リトルサーバー>プラン別サービス比較

有名なサーバーだと月額料金は1000円前後であることが普通です。

仮にリトルサーバーで同じ料金(1000円)を支払ったとすると

最も安いミニプランだと半年分
おすすめのリトルプランでも4カ月分のサーバーがレンタル可能!

こんな方にオススメ

  • 実案件でテスト用のサーバーを用意したい
  • とりあえずサーバーというものに触れてみたい
  • 試しにWordPressを本番運用してみたい
  • いま利用しているサーバーが高額だから安価なレンタルサーバーに乗り換えたい
ケケンタ

リトルサーバーには無料お試し期間があります。
ご興味のある方は是非ご検討してみてはいかがでしょうか。

無料お試しのお申し込みはこちら

「仕事が忙しい方」、「すぐに商品が欲しい方」にピッタリのサービス

by Amazon

日時指定便が「無料」で使えるので不在で商品を受け取れないという心配が無くなる

最短で注文した「翌日」に商品が届くので欲しいものがすぐ手に入る 
※ご注文の時間帯やお住まいの地域によります。

Amazonプライムの無料体験は「何度でも」利用可能

Amazonプライムの無料体験を何度も利用する方法

  • Amazonプライムに会員登録する
  • 会員の自動更新を解除しておく=期限が来たら自動解約
  • 1~3ヶ月ぐらいすると再度無料体験の案内が表示される
ケケンタ

僕自身、過去に少なくとも3回は無料体験を利用しています。

PHPにおけるfor文とは?

具体的な解説の前に、まずは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文を書くときの思考の積み重ね方を身に付けることができました。

この記事が、読者の方にとってひとつのキッカケになれば何よりです。

【実践解説】ピラミッド作成

今回作成するピラミッドは「4段」の想定です。

今回作成するピラミッドの完成形

ピラミッドの完成形
ピラミッドのプログラム(完成形)
<?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段それぞれにアスタリスクをひとつずつ出力してみる
  • 各段のアスタリスクを必要な分だけ出力する
  • 各段の数字を出力する

①まずはハードコーディング(手打ち)でピラミッドを作成する

先ほどもお伝えしましたが、慣れてくるまでの間は、for文を組むときは出力結果をとりあえずハードコーディング(手打ち)してみるのがコツです。

具体的に書くと以下の通りです。

<?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>';
}

?>

出力結果

アスタリスクを4段出力してみる

③各段のアスタリスクを必要な分だけ出力する

次に、①で可視化されたピラミッドを元に、「どのような法則でアスタリスク(*)が繰り返されているのか」をイメージします。

ここがピラミッド作成の中で最もハードルが高い部分かもしれません。
この「法則」を自力で導き出せるかどうかが重要なポイントです。

ケケンタ

ちなみにピラミッドにおけるアスタリスクの繰り返し法則は、
「ピラミッド全体の段数 – 現在の段数」です。

例えば、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本格入門[上] ~プログラミングとオブジェクト指向の基礎からデータベース連携まで
大塚 正登/著 技術評論社/出版|Amazon

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次