Word bench千葉ーphp超初心者のための繰り返し処理の書き方

Post on 04-Jun-2015

4.806 views 3 download

description

なんで繰返し処理がひつようなの?

Transcript of Word bench千葉ーphp超初心者のための繰り返し処理の書き方

なぜプログラムには繰り返し処理が必要か?

PHP超初心者のための繰り返し処理の書き方

2013/08/25WordBench千葉/岡本直美

13年8月25日日曜日

自己紹介

• 岡本 直美(ねこみみ隊長)• 自由業 でなく、会社員• PHPは実はそんなに経験少ないの。• せんせー歴は長いけど。

13年8月25日日曜日

本日のアジェンダ• プログラマー三大美徳• なぜプログラムが必要なの?• アルゴリズムって• 繰り返し3種• PHPの繰り返し3種• WordPressで使うのは、一体どれ?

13年8月25日日曜日

1.プログラマー三大美徳

13年8月25日日曜日

プログラマ三大美徳

怠惰 傲慢 短気なまけもの プライド高め 待てない

13年8月25日日曜日

ちなみに、

13年8月25日日曜日

隊長は、ものすごーくなまけものです。

13年8月25日日曜日

プログラマ三大美徳

怠惰 傲慢 短気なまけもの プライド高め 待てない

13年8月25日日曜日

なぜか?

13年8月25日日曜日

効率よく作業を終わらせて遊びたいから。

13年8月25日日曜日

そのためには

13年8月25日日曜日

さっさとコーディングしてしまいたい。

13年8月25日日曜日

楽したい。

13年8月25日日曜日

2.なぜプログラムが必要なの?

13年8月25日日曜日

楽したいから。

13年8月25日日曜日

例えばこんな例。

• 生年月日を入力するフォームを作る• 年は和暦で入力する• 月と日をそれぞれセレクトボックスで

13年8月25日日曜日

http://nekomimi-taicho.com/20130825/form.html

例えばこんな例

13年8月25日日曜日

•optionタグがたくさんめんどくさい!

•こんなの勝手に12個とか31個出して!

•修正が来たら直すのもめんどくさい!

13年8月25日日曜日

つまり、楽するためには

13年8月25日日曜日

•勝手に必要な数を出したり

•修正が来たら直すの簡単で

•コピペすれば他のページでも使い回せる

13年8月25日日曜日

これが、プログラムの役目。怠惰プログラマーが目指す

13年8月25日日曜日

3.アルゴリズム

13年8月25日日曜日

アルゴリズムとは• 手順とか段取り。

• プログラムはお決まりの手順があります。• 間違えるととってもおかしくなります。• プログラムって構文の書き方じゃなくて、実はここがイチバンの肝なんです。

13年8月25日日曜日

Word主婦的解説。

13年8月25日日曜日

• お茶碗に沸騰したお湯を入れる。• 急須にお茶っ葉を入れる。• 急須にお茶碗のお湯を入れる(これで80℃)• 煎茶なら1分蒸らす。• 急須のお茶を味や濃さが均等になるようにまわしつぎする。

• 最後の一滴まで出しきる。

お茶淹れのアルゴリズム

13年8月25日日曜日

お茶淹れのアルゴリズム• お茶碗に沸騰したお湯を入れる。• 急須にお茶っ葉を入れる。• 急須にお茶碗のお湯を入れる(これで80℃)• 煎茶なら1分蒸らす。•急須のお茶を味や濃さが均等になるようにまわしつぎする。

• 最後の一滴まで出しきる。急須のお湯がなくなるまでお茶碗の数繰り返す。

13年8月25日日曜日

4.繰り返し3種

13年8月25日日曜日

繰り返し処理を3種

• 条件を満たしてるうちは繰り返す。• データの数だけ繰り返す。• 決まった数だけ繰り返す。

もちろん、細かく言えばもっと種類はあると思いますが・・・

13年8月25日日曜日

さっきのフォームだと

13年8月25日日曜日

条件を満たしてる

• 日数を表示する場合に、31回繰り返す• もしかして28日か29日か30日かも?• その時にあらかじめ何日までか決めておく(終了するための条件)

13年8月25日日曜日

データの数だけ

• 例えば、元号を表示するときにどこからどこまで表示するか?

• 表データで漢字とかも入ったデータを読み込んで終わるまで・・・・

13年8月25日日曜日

決まった数だけ

• 月の表示をするときに1~12って12回繰り返すとわかってる時

• 数を数えるだけでいいので、細かい条件はなし

13年8月25日日曜日

5.PHP構文で繰り返し3種

13年8月25日日曜日

繰り返し処理を3種• 条件を満たしてるうちは繰り返す。• while文• データの数だけ繰り返す。• foreach文• 決まった数だけ繰り返す。• for文

13年8月25日日曜日

http://nekomimi-taicho.com/20130825/form.php

さっきの例だと

13年8月25日日曜日

while文(条件で繰返す)

• 先に条件となるものを揃えておく• 条件を満たしている間繰返す• 条件が変わるように繰り返しの中で変更する

13年8月25日日曜日

foreach文(データ数)

• 配列やオブジェクトの繰返し専門• 表データをとかがお得意• 何回か数えなくても、データがなくなったら終わり

13年8月25日日曜日

for文(回数とか)

• $iというカウンターを使って繰返す• でも本当はもっともっと複雑なことが出来る• PHPの繰り返しではイチバン難しい

13年8月25日日曜日

楽した上に...

13年8月25日日曜日

ファイルサイズ

※小さくなってるのよ

13年8月25日日曜日

6.WordPressテーマで使われる繰り返し?

13年8月25日日曜日

どんな繰り返し?<?php while ( have_posts() ){ the_post(); get_template_part('content'); }?>

普通の書き方だとこんな感じ・・・

13年8月25日日曜日

どんな繰り返し?

<?php while ( have_posts() ) : the_post(); ?> <?php get_template_part('content'); ?><?php endwhile; ?>

WordPressテンプレートではこの書き方だとこんな感じが一般的・・・こっちの書き方は、PHPをHTMLの中に組込みやすいし、コピペでエラー出にくいの。

13年8月25日日曜日

難しい言い方をすると制御構文の違い...

っていうけど、こんなのプログラマになろうと言う人以外覚えんでもええよ。

13年8月25日日曜日

while文(条件で繰返す)• have_posts()という条件http://codex.wordpress.org/Function_Reference/have_posts

• ture(データがある)が返ってくる間繰返す• the_post()でデータを一件取得http://codex.wordpress.org/Function_Reference/the_post

13年8月25日日曜日

あれ?データがあるってforeachじゃないの?

13年8月25日日曜日

クラスという便利BOX• PHPでデータベースを読み込む処理をする時は、実は結構めんどくさい。

• けど、WordPressは、その辺の処理をテーマ内でわかりやすくする記述出来るのでクラスってのを使ってる。

• そのクラスを使ったデータの繰り返しはwhile文の方が簡単。

13年8月25日日曜日

7.まとめ

13年8月25日日曜日

まとめ

• プログラムは、手際よく書いて楽出来る• 繰り返しをするとコードが短い• 種類は大きく3つ• WordPressではデータベースを読むのにクラスを使ってるからwhile文

13年8月25日日曜日

わかりやすい表現のため

• PHPとかプログラミングとか詳しい人から突っ込まれると思う。

• けどこのスライドは、ノンプログラマでもなんとなく概念がわかればいいなというもの

• だからねこみみ流解説ならあってるの。

13年8月25日日曜日

8.おまけ

13年8月25日日曜日

サンプルに使ってるPHPの関数の紹介

13年8月25日日曜日

元号の表示

• array関数(配列を作る。今回は連想配列)http://php.net/manual/ja/function.array.php

• foreach関数(配列などの繰り返し)http://php.net/manual/ja/control-structures.foreach.php

• printf関数(決まったフォーマットで表示)http://php.net/manual/ja/function.sprintf.php

13年8月25日日曜日

月の表示

• for関数(3つの式を使って繰返す)http://php.net/manual/ja/control-structures.for.php

• printf関数(決まったフォーマットで表示)http://php.net/manual/ja/function.sprintf.php

13年8月25日日曜日

日の表示

• while関数(条件があう間繰返す)http://php.net/manual/ja/control-structures.while.php

• printf関数(決まったフォーマットで表示)http://php.net/manual/ja/function.sprintf.php

13年8月25日日曜日

参考にしたサイトなど

13年8月25日日曜日

•プログラマ三大美徳(ITproより)http://itpro.nikkeibp.co.jp/article/Watcher/20061005/250057/

•日本茶の淹れ方、わかりますか?http://ameblo.jp/kuoukai/entry-10714442974.html

13年8月25日日曜日

ご清聴ありがとうございました。

13年8月25日日曜日