平成 17 年度後期代数学 D・代数学基礎講義 B - …...平成17 年度後期代数学D・代数学基礎講義B 都築暢夫 第I 部 ζ 関数の解析的性質Riemann
Club86 基礎講義「PHPを使おう」
-
Upload
club86-startup-school -
Category
Education
-
view
1.973 -
download
2
Transcript of Club86 基礎講義「PHPを使おう」
PHPを使おうClub86 Startup School
起業家のためのエンジニア教室株式会社ゆめみ 中田 稔
11年7月23日土曜日
PHPを使おう• PHPとは?
•変数とデータ型、関数
•制御構造
•処理とアルゴリズム
• CakePHPの基本ルール
11年7月23日土曜日
PHPとは?
11年7月23日土曜日
PHP?
•サーバ側で動作するプログラミング言語の1つ
• Webページを生成することを目的に作られた
→ Webページの扱いに向いている
PHP = PHP: HyperText Preprocessor
ハイパーテキスト(HTML文書)を前処理するもの
11年7月23日土曜日
PHPとWebサーバの連携
Webサーバ
PHP
ブラウザから要求を受ける
PHPファイルであればPHPに処理を要求
PHPファイルを実行する
出力内容をWebサーバに返す
PHPからの結果をブラウザに返す
PHPファイル
11年7月23日土曜日
PHPとWebサーバの連携
Webサーバ
PHP
ブラウザから要求を受ける
PHPファイルであればPHPに処理を要求
PHPファイルを実行する
出力内容をWebサーバに返す
PHPからの結果をブラウザに返す
PHPファイル
PHPとPHPファイル?
11年7月23日土曜日
PHPの動作
PHP
PHP言語でソースコードを書く(PHPファイル)
PHPというプログラムがソースコードを読んで実行(通訳者)
何かを出力する(多くの場合はHTMLを出力する)
11年7月23日土曜日
プログラム?
• プログラム• コンピュータが理解できる命令書
• プログラミング言語• 命令書を書くための人工言語
• ソースコード• プログラミング言語で書かれた人間が理解できる命令書
プログラム = コンピュータに対する命令書
補足
11年7月23日土曜日
1. ソースコードを書く
2.命令書を翻訳する
3.翻訳済の命令書に従って実行する
コンパイラとインタプリタコンパイラ型言語コンパイラ = 翻訳者
インタプリタ型言語インタプリタ = 通訳者
1. ソースコードを書く
2.毎回命令書を通訳しながら実行する
速い・面倒 遅い・楽
C、C++、Objective-C、Java、C#等
PHP、Perl、Ruby、Python、JavaScript等
補足
11年7月23日土曜日
PHPコード
• <?php ... ?> で囲まれた部分がPHPで実行される
•それ以外はそのままスルーして出力される<h1>こんばんは、<?php echo "中田"; ?>です。</h1>
<h1>こんばんは、中田です。</h1>
11年7月23日土曜日
変数とデータ型、関数
11年7月23日土曜日
変数
•名前のルール• $から始まる
• 1文字目は a-z, A-Z, _
• 2文字目以降は a-z, A-Z, 0-9, _
変数 = 値を入れる箱(入れ物)
$a
11年7月23日土曜日
データ型データには幾つかの種類(型)がある
•論理型(boolean)
真偽値を表現する
•整数型(integer)、浮動小数点数型(float)
数値を表現する
•文字列型(string)
文字を表現する
$a = true;$b = false;
$a = 10;$b = 1.5;
$a = "ABC";$b = '中田';
11年7月23日土曜日
データ型
•配列型(array)
索引が付られた値の集合
key => value の形式
keyが省略された場合、0, 1, 2, ... となる
$a = array("中田", 35, "(株)ゆめみ");echo $a[2]; // (株)ゆめみ が出力される
$b = array(! "name" => "中田",! "age" => 35,! "company" => "(株)ゆめみ");echo $b["name"]; // 中田 が出力される
11年7月23日土曜日
関数
y = f(x)数学での関数
xが決まればyが定まるような式
三角関数 cos θ = b/h
cos(π/4) = √2/2
関数 = 値を渡すと結果が返る
11年7月23日土曜日
関数組み込み関数
その他の関数
PHP側で始めから用意済みリファレンスマニュアルを参照
拾ってくる or 自力で作るfunction文で定義可能
echo strlen("ABC");echo date("Y/m/d");echo ceil(4.3);
function hello($x) {! return $x."さん、こんにちは";}echo hello("中田");
11年7月23日土曜日
制御構造
11年7月23日土曜日
3つの基本構造ほとんどのプログラミング言語で同じ!
構造化プログラミング
順次実行
分岐
反復
上から順番に命令が実行される
条件の真偽によって処理が分かれる
条件を満たしている間処理を繰り返す11年7月23日土曜日
順次実行
•各命令文(式)はセミコロンで区切られる
$str = "中田";echo $str;
11年7月23日土曜日
分岐
•条件Xが満たされたときAを実行する
•条件Xが満たされたときAを、それ以外のときはBを実行する
•条件Xが満たされたときAを、それ以外で条件Yが満たされたときはBを、それ以外のときはCを実行する
if ( X ) {! A ;}
if 文
if ( X ) {! A ;} else {! B ;}
if ( X ) {! A ;} elseif ( Y ) {! B ;} else {! C ;}
11年7月23日土曜日
分岐
• $aがXのとき、Aを実行する。$aがY
またはZのとき、Bを実行する。$aがどれでもないときは、Cを実行する。
switch ($a) {! case X:! ! A ;! ! break;! case Y:! case Z:! ! B ;! ! break;! default:! ! C ;}
switch 文
break は一番内側の { } を抜ける命令
11年7月23日土曜日
反復
•条件を満たす間、処理を繰り返す
• 0から9まで出力される
• while文とほぼ同じ
•条件判定が最後になる
$i = 0;while ($i < 10) {! echo $i;! $i++;}
while 文
$i = 0;do {! echo $i;! $i++;} while ($i < 10);
do while 文
11年7月23日土曜日
反復
•初期化、反復条件、反復時の処理がセットになったもの
•配列の要素を順番に繰り返す
for ($i = 0; $i < 10; $i++) {! echo $i;}
for 文
foreach 文$data = array("A", "B", "C");foreach ($data as $d) {! echo $d;}
11年7月23日土曜日
処理とアルゴリズム
11年7月23日土曜日
カレンダーを作る
•やりたい処理を言葉で表現する
•より細かい単位に分解していく
•順次、分岐、反復の3構造にまで分解する
•できたアルゴリズムをPHPで表現する
アルゴリズムを考える
コードを書く
11年7月23日土曜日
カレンダーのアルゴリズム
•全体をテーブルで表現する
•一週間の曜日を表示する
•日の一覧を一週間ずつ区切って表示する
•土曜は青、日曜は赤、今日は背景を変える
11年7月23日土曜日
アルゴリズムを考える
•日曜から土曜までの文字列を用意
• tr開始タグを表示する
•曜日数分繰り返す
• td開始タグを表示する
• 0番目は赤、6番目は青、それ以外は黒で曜日を表示する
一週間の曜日を表示
11年7月23日土曜日
アルゴリズムを考える• 月の初日の曜日を取得する
• 初日の曜日が日曜でない場合
• tr開始タグを表示する
• その曜日になるまでtdの空タグを表示する• 月の日数分繰り返す
• 日曜ならtr開始タグを表示する
• td開始タグを表示する(当日なら背景色指定)
• 日曜なら赤、土曜なら青、その他なら黒で日を表示する• td終了タグを表示する
• 土曜ならtr終了タグを表示する
• 最終日の曜日が土曜でない場合
• 土曜になるまでtdの空タグを表示する• tr終了タグを表示する
日の一覧を表示
11年7月23日土曜日
アルゴリズムをコードに
$week = array("日", "月", "火", "水", "木", "金", "土");echo "<tr>";for ($i = 0; $i < count($week); $i++) {! echo "<td>";! switch ($i) {! ! case 0:! ! ! echo '<font color="red">'.$week[$i].'</font>';! ! ! break;! ! case 6:! ! ! echo '<font color="blue">'.$week[$i].'</font>';! ! ! break;! ! default:! ! ! echo $week[$i];! }! echo "</td>";}echo "</tr>";
一週間の曜日を表示
11年7月23日土曜日
アルゴリズムをコードに
$wnum = date('w', mktime(0, 0, 0, date('m'), 1, date('Y')));if ($wnum != 0) {! echo '<tr>';! for ($i = 0; $i < $wnum; $i++) {! ! echo '<td> </td>';! }}
日の一覧を表示
序盤の空枠表示部分
11年7月23日土曜日
アルゴリズムをコードに日の一覧を表示 $today = date('d');
$lastday = date('t');for ($i = 1; $i <= $lastday; $i++) {! if ($wnum == 0) {! ! echo '<tr>';! }! if ($i == $today) {! ! echo '<td style="background-color:#ffff00;">';! } else {! ! echo '<td>';! }! switch ($wnum) {! ! case 0:! ! ! echo '<font color="red">'.$i.'</font>';! ! ! break;! ! case 6:! ! ! echo '<font color="blue">'.$i.'</font>';! ! ! break;! ! default:! ! ! echo $i;! }! echo '</td>';! if ($wnum == 6) {! ! echo '</tr>';! }! $wnum = ($wnum + 1) % 7;}
中盤の日付表示部分
11年7月23日土曜日
アルゴリズムをコードに
if ($wnum != 0) {! for ($i = $wnum; $i <= 6; $i++) {! ! echo '<td> </td>';! }! echo '</tr>';}
日の一覧を表示
終盤の空枠表示部分
11年7月23日土曜日
CakePHPの基本ルール
11年7月23日土曜日
URLとの連携ルールhttp://localhost/[プロジェクト名]/
[コントローラ名]/[アクション名]
ファイル名: [コントローラ名]_controller.php クラス名: [コントローラ名]Controller 先頭大文字
ビューのフォルダ名
コントローラ
11年7月23日土曜日
URLとの連携ルールhttp://localhost/[プロジェクト名]/
[コントローラ名]/[アクション名]
コントローラ内の各関数名がアクション名になる
ビューのファイル名(ビュー名)指定がなければ、アクション名=ビュー名
アクション名が省略された場合はindexというアクション名になる
アクション・ビュー
11年7月23日土曜日
DBとの連携ルール
単数形の名前でテーブルの参照が可能
複数形でテーブルを定義しておく
モデル ※モデル定義ファイルは省略可能
11年7月23日土曜日
ややこしいかもしれませんが、基本構造を理解すれば、後は語彙を増やすだけ。
リファレンスマニュアルを参照しながら作って見ましょう!
11年7月23日土曜日