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

58
なぜプログラムには繰り返し処理が必要か? PHP初心者のための 繰り返し処理の書き方 2013/08/25 WordBench千葉/岡本直美 13825日日曜日

description

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

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

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

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

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

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

13年8月25日日曜日

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

自己紹介

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

13年8月25日日曜日

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

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

13年8月25日日曜日

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

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

13年8月25日日曜日

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

プログラマ三大美徳

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

13年8月25日日曜日

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

ちなみに、

13年8月25日日曜日

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

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

13年8月25日日曜日

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

プログラマ三大美徳

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

13年8月25日日曜日

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

なぜか?

13年8月25日日曜日

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

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

13年8月25日日曜日

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

そのためには

13年8月25日日曜日

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

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

13年8月25日日曜日

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

楽したい。

13年8月25日日曜日

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

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

13年8月25日日曜日

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

楽したいから。

13年8月25日日曜日

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

例えばこんな例。

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

13年8月25日日曜日

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

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

例えばこんな例

13年8月25日日曜日

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

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

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

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

13年8月25日日曜日

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

つまり、楽するためには

13年8月25日日曜日

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

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

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

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

13年8月25日日曜日

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

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

13年8月25日日曜日

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

3.アルゴリズム

13年8月25日日曜日

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

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

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

13年8月25日日曜日

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

Word主婦的解説。

13年8月25日日曜日

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

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

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

お茶淹れのアルゴリズム

13年8月25日日曜日

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

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

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

13年8月25日日曜日

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

4.繰り返し3種

13年8月25日日曜日

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

繰り返し処理を3種

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

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

13年8月25日日曜日

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

さっきのフォームだと

13年8月25日日曜日

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

条件を満たしてる

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

13年8月25日日曜日

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

データの数だけ

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

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

13年8月25日日曜日

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

決まった数だけ

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

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

13年8月25日日曜日

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

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

13年8月25日日曜日

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

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

13年8月25日日曜日

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

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

さっきの例だと

13年8月25日日曜日

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

while文(条件で繰返す)

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

13年8月25日日曜日

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

foreach文(データ数)

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

13年8月25日日曜日

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

for文(回数とか)

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

13年8月25日日曜日

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

楽した上に...

13年8月25日日曜日

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

ファイルサイズ

※小さくなってるのよ

13年8月25日日曜日

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

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

13年8月25日日曜日

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

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

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

13年8月25日日曜日

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

どんな繰り返し?

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

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

13年8月25日日曜日

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

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

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

13年8月25日日曜日

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

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日日曜日

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

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

13年8月25日日曜日

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

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

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

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

13年8月25日日曜日

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

7.まとめ

13年8月25日日曜日

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

まとめ

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

13年8月25日日曜日

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

わかりやすい表現のため

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

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

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

13年8月25日日曜日

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

8.おまけ

13年8月25日日曜日

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

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

13年8月25日日曜日

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

元号の表示

• 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日日曜日

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

月の表示

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

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

13年8月25日日曜日

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

日の表示

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

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

13年8月25日日曜日

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

参考にしたサイトなど

13年8月25日日曜日

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

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

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

13年8月25日日曜日

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

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

13年8月25日日曜日