- ベストアンサー
PHPコーディング 訓練が出来る媒体
最近、PHPプログラミングの教室に通っています。 今までプログラム言語を習ったkとがないので、簡単なプログラムを ブラウザに表示させるのも、まったく訳が分かりません。 特に今やっている、ループ処理(for, while)が理解できません。 授業は、「~をfor/while文を使って画面に表示させなさい」のような 感じです。 変数が2個出てくる時点で、脳みそグチャグチャです。 練習するしかないと思いますが、初心者のループ処理を詳しく書かれていて、 レベルアップにつながる練習問題が記載されている書籍、またはwebを教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PHPのマニュアルサイトって見たことありますか? while だったら http://www.php.net/manual/ja/control-structures.while.php 短いけど応用がきくサンプルがいっぱいのってます。 プログラムは最初は言葉で考えてみませんか? 「こんにちはを for/while をつかって3回画面に表示する」 をより自分がプログラムとしてわかる単純な手続きにわけて考えましょう。 この手続きに分割することが、プログラミングそのものといえるので、目的の処理がどんな手続で構成されていて、それぞれの手続が関心をもっている対象がなんなのかを見切る練習をすると、理解が早いかもしれません。 1. 「こんにちは」を表示する。 2. 3回繰り返すんだね。 これなら、プログラムとしてもわかりませんか? 1. echo 'こんにちは'; 2. while( カウンターが 3 になるまで ) もしくは、 for( カウンターは0から始まって、カウンターが 3 より小さい間は、1つずつ進める ) 1.の手続きは、文字列 'こんにちは' にしか関心がありません。 2.はカウンターの状態にしか関心がないみたいです。 でなんかカウンターが必要らしいので、0から始まってカウントアップしていくカウンターを入れる箱を用意しましょう。counter の頭文字をとって $c って名前はどうでしょう? この箱の中身はカウントアップによってどんどん変わっていくので、こいつが変数です。 カウンター変数に関する表現は $c = 0; // 0から開始 $c < 3 // カウンターが3になるまで、もしくは 3 より小さいの表現 $c++; // $c に 1を足す表現 これを 2. の表現に組み込むと while( $c < 3 ) // カウンターが 3 になるまで処理を続ける か for( $c = 0; $c < 3; $c++ ) // カウンターは0から始まって、カウンターが 3 より小さい間は、1つずつ進める while はカウンターの状態しか関心が無いのに対して、for は開始と増分にも関心があるようです。 この間に、1. の処理をすればいいので、中に入れましょう。 <?php while( $c < 3 ) { echo 'こんにちは'; } ?> か <?php for( $c = 0; $c < 3; $c++ ) { echo 'こんにちは'; } ?> ですね。でも while の例では $c が 0 から始まることと、$c をカウントアップすることが表現しきれていません。 表現を補わないとコンピュータに伝わらないので、追加しましょう <?php $c = 0; // 0から開始 while( $c < 3 ) { echo 'こんにちは'; $c++; // カウンターは表示した数のカウンターだから、表示したらカウントアップしなきゃね。 } ?> これで、もれなく表現できました。 今回はカウントアップ方式を取りましたが、カウントダウン方式でもいいですよね。 $c = 3; // 3から始まって $c > 0; // 0回表示するは、表示しないだから 0より大きい間でいいよね $c--; // $c から 1 引く表現 これまでの内容を応用すると、昔流行った 3 の倍数だけアホになるってのも <?php $max = 10; // いくつまで数える? $c = 0; // 0 から while( $c <= $max ) { // 0 ~ 10 まで // アホになる部分 if( $c != 0 and $c % 3 == 0 ) { // 0 を3 で割っても0 だから外しておこう。で、3で割った余りが 0 のときが3の倍数 echo 'アホになる' .PHP_EOL; // PHP_EOL は改行です } // アホじゃない部分 else { echo $c .PHP_EOL; // 数を表示する } $c++; // カウントアップ } ?> #実はこれ、FizzBuzz(フィズバズ)といって、プログラミングスキルを図るときに使われます。 #今回は基礎的に書きましたが、もっと賢い書き方(表現)があったりします。 #気が向いたらFizzBuzzで検索して自分なりの表現を考えてみてください
その他の回答 (2)
- nayamerukun
- ベストアンサー率0% (0/1)
こんばんは。 No.1の回答者です。 お役に立てずスイマセンでした。 それと、私の回答が気に障ったならお許し下さい。 質問者さんのお礼を読んで私にとっての勉強になりました♪ ありがとうございました! ちなみに、 私は、「一夜漬け」どころか学校もまともに行ってなかったけど、成績も良かったような... プログラミングも実践で経験するうちに気が付いたら身についていた感じでしたし。 講師や先生には向いてないですねσ(^_^;)アセアセ... はやく、たくさんのコードを使いこなせるようになったら良いですね。 システム全体を構築できるようになったら、もっとテンションがあがりますよ♪
- nayamerukun
- ベストアンサー率0% (0/1)
私は、ずっと前に独学でPHPを学んで、フリーで仕事をしていた者です。 勿論、それまでは業界経験もありません。 まずは、お急ぎの回答から 初心者の頃に参考にしたサイトのURLです。 ■for文について http://masago.kir.jp/php20030521.php ■whileについて http://masago.kir.jp/php20030522.php サンプルもあって私にはわかりやすかったです。 skyliner33typemさんは、理解してから行動するタイプのようですね。 質問者さんに1つお聞きしたいのですが、 例えば、 1×1=1を理解しましたか?それとも暗記しましたか? 因数分解などの公式を理解しましたか?暗記しましたか? 私は暗記したタイプです。 それと同じように、 未経験者は、プログラムをこう書いたらこうなるというように 暗記するところから始まるのではないでしょうか? また、質問者さんは、 HTMLについての理解はありますか? もしくはVBA(EXEL or Access)などの理解はありますか? ホントに何の経験もないなら、 とにかく、書いて書いて書きまくる。 その中で、『あぁ~、こうなるんだぁ~』とわかってくると思いますよ。 その積み重ねで、理解できると思います。 何らかのご事情があって、 作らなければいけないプログラムがあるなら 書いたコードを掲示して『ここがわからない』などと書いた方が より、ベターな回答が得られますよ。 誹謗中傷があるかもしれませんが・・・。 最初は、誰でもテンぱるものです。 めげずに頑張って下さい。
お礼
こんばんは。 数学の授業は公式を理解して覚えた者です。 なぜなら、理屈を理解していないと何の公式を使用してよいのか、 それがどんな公式だったかが、分からなかったからです。 要するに、公式を覚えておく手段として、「理屈」を駆使しました。 ですので、テストの前日に「一夜漬け」をしたことがありません。 とっとと、寝ていました。 しかし、どんなことでも「積み重ね」が大事ですね。 HTMLは、PHPに入る前に、ほんの少しだけ習いました。 VBAは、分かりません。 nayamerukunさんの後にお答えいただいた回答者さんのアドバイスは 私のレベルと現時点の理解力にバチコンとはまりました。 プログラミングは自分で考えて、うまく処理が出来ると、テンションが上がりますね。
お礼
うわー、ものすごく分かりやすいです。(感動しました!!) 自分が現時点で何を理解していないのかが、分かりました。 いっぺんに『「こんにちは」を3回表示する』を、頭の中で考えるから 分からないのですね。 1.「こんにちは」を表示する 2.3回繰り返す を、まずは考えるのですね。 まだ、このレベルのphpプログラムの講義ですが、 課題の中に、 「すももももものうち」の「も」を繰り返し処理を使用してブラウザに表示しなさい なんてものがあり、かなり苦戦しました。 これも、「も」を表示する。と、5回表示させる。を分けて考えて 繰り返さない文字列を繰り返し処理の外に、printかechoで書けば良いのですね。 プログラミングは自分で考えて、うまく処理が出来ると、テンションが上がりますね。