情報科学III

平成23年度前期 情報科学III (理系コア科目)
PHP 概要
担当 松永 裕介
月曜日 2限
http://www.c.csce.kyushu-u.ac.jp/~matsunaga/lecture/php
本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明准
1
教授等による以前の講義資料をもとにしています。
今回やること
 プログラミング言語PHPの基礎
– PHPが動く仕組み
– PHPの文法(基礎編)
2
PHPが動く仕組み
3
PHPの特徴
 PHP: Hypertext Preprocessor の略
– 頭文字を取って略称を作るおおもとの名前の中に,その略
称自体が含まれている.
 これ自体が1つのプログラミング言語であるが,HTML言語と組
み合わせて,特にwebページの動的な生成に用いられることが
多い.
– HTMLで書かれた普通のwebページの中に,PHPプログラ
ムを埋め込むことができる.
 文法のかなりの部分は,以下の言語とよく似ている.
– C
– Perl
 外部のデータベースにアクセスする関数をたくさん持っている.
4
HTMLファイルへのPHP埋め込みの簡単な例
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html">
<title>test of php</title>
</head>
<body>
<?php
print("Hello, World!\n");
?>
</body>
</html>
5
どのようにして処理されるか?
ブラウザ
①ページのリクエスト
webサーバ
②ページの取り出し
HTML
HTML
PHP
PHP処理用
モジュール
③PHP部分の処理
(結果はHTMLに埋
め込み)
④HTMLのみと
なったページが
ブラウザに返信
される
(サーバサイドでの処理となっている)
6
PHP部分が処理されると…
<html>
<head>
...
"Hello, World!"
と印字して,改
</head>
行しなさい.
<body>
<?php
print("Hello, World!\n");
?>
</body>
</html>
(これはブラウザでは正しく表示できない)
<html>
<head>
...
</head>
<body>
Hello, World!
</body>
</html>
(これならブラウザで表示できる)
「\n」は,改行文字を表す.
7
サーバ上での約束事
 webサーバ上に置くファイルの拡張子
– HTMLのみのファイル: .html (または .htm)
– PHPを含むファイル: .php
8
HTMLに埋め込むときのルール
<html>
<head>
...
</head>
<body>
<?php
print("Hello, World!\n");
?>
</body>
</html>
PHPで書かれた部分を
<?php と ?>
で囲む.ここで,
<?php を 開始タグ
?>
を 終了タグ
と呼ぶ.
9
PHPの文法(基礎編)
PHP の文法は下記のサイトにて公開されています。
http://www.php.net/manual/ja/
10
PHPの文法(基礎編)







関数の呼び出し
文と文の区切り
PHPからの「脱出」
コメント
変数とデータ型
演算子
制御構文
– if,else,elseif,while,for 文など
11
関数の呼び出し
 関数は,( )で囲まれたデータ(引数)を受け取り,何かの処理
をして,結果を返す.
– 「引数」は「ひきすう」と読む.
print ( "Hello, World!\n" )
関数名
引数
12
文と文の区切り
 文と文の間は,セミコロン( ; )で区切る.
print("Hello, ") ;
print("World!\n");
...
 ただし,PHPブロック(<?php と ?>で囲まれたひと連なりの部
分)の最後の文の後ろには,セミコロンがなくてもよい.
<?php
print("Hello, ") ;
print("World!\n")
?>
13
PHPからの「脱出」
 開始タグ <?php と終了タグ ?> をうまく組み合わせて使うと:
– 1つのHTML文書の中で,「PHPから出たり入ったり」できる.
– PHPブロックを複数箇所に埋め込むことができる.
<html>
...
<body>
<?php print("Hello, World!\n"); ?>
<p>ここは HTML の1行目.</p>
<?php print("Hello, World, Again!\n "); ?>
<p>ここは HTML の2行目.</p>
</body>
</html>
14
コメント
 CやC++のように,プログラムをわかりやすくするためのコメント
(注釈)を書くことができる.
– コメントは,人間が読むための記述で,PHPの文としては無
視される(何の処理も行われない).
<?php
print("Hello, World!\n"); // C++スタイルのコメントは
// その行の終わりまで有効.
/* Cスタイルのコメントは,
複数の行にまたがって書くことができる. */
print("Hello, World, Again!\n"); # シャープ文字で
# で始まるコメント
# もある.
?>
15
変数
 PHPでは,変数名の頭に $ が付く.
例: 「$a」, 「$x」, 「$variable」
– 大文字と小文字は区別される.
• $a と $A,$name と $Name は別の変数になる.
– 英大文字,英小文字,数字,アンダースコア( _ )が使える.
• ただし,最初は英字かアンダースコア
• 数字で始まる変数名は不可
– C/C++ のような変数の型宣言が必要ない.
• 使いたい型のデータをいきなり代入して初期化する.
(宣言なしでいきなり代入してもエラーにならない.)
• 逆に,初期化を忘れていてもエラーにはならないので,
気づきにくい.
16
データ型と初期化の例
 文字列型
$name = "John";
$message = "Hello, World!\n"
代入文は
左辺に右辺を代入
する.
 整数型
$count = 1;
$age = 43;
 論理型
$condition1 = TRUE;
$condition2 = False;
– 値は TRUE と FALSE のいずれか(大文字小文字は区別さ
れない).
 浮動小数点型
$pi = 3.1416;
17
演算子(1)
 代入演算子: =
左辺に右辺を代入する.
例: $a = 0;
 比較演算子
右辺と左辺を比較して,その結果を論理型の値(TRUE/
FALSE)で返す.
 == :左辺と右辺が等しい
 != :左辺と右辺が等しくない
 < :左辺が右辺より小さい
 > :左辺が右辺より大きい
 <= :左辺が右辺以下
 >= :左辺が右辺以上
18
演算子(2)
 連結演算子: . (ピリオド)
– 左辺の文字列データに右辺の文字列データを連結する.
$left . $right
 算術演算子
 +
  *
 /
 論理演算子
 AND
2つの論理型のデータに対して適用される.
例: $condition1 AND $condition2
 OR
 NOT
1つの論理型のデータに対して適用される.
例: NOT $condition2
19
制御構文(1)
 if 文
– ある条件が成り立っているときだけ実行したいときに使う.
• 条件が成り立つときは,内側の文を実行して,次の文に
進む
• 成り立たなかったら,そのまま何もせずに次の文に進む.
– 「条件分岐」ともいう.
if (条件式) {
条件式が成り立つときに実行する文
}
次の文
20
制御構文(2)
 else 文
– if 文とペアにして,条件が成り立っていないときだけ実行し
たい文を置く.
if (条件式) {
条件式が成り立つときに実行する文
}
else {
条件式が成り立たないときに実行する文
}
21
制御構文(3)
 elseif 文
– 先行する if 文の条件が成り立たなかったとき,次の条件を
検査する.
if (条件式1) {
条件式1が成り立つときに実行する文
}
elseif (条件式2) {
条件式2が成り立つときに実行する文
}
else {
どちらの条件式も成り立たないときに実行する文
}
22
制御構文(4)
 switch 文
– if ~ elseif ~ elseif ~…~ else でもいいが,条
件式が単一の変数で判定されるときには便利な構文がある.
switch (変数) {
コロン(:)であるこ
case "値1" :
変数の値が「値1」のときに実行する文
とに注意!
break;
case "値2" :
変数の値が「値2」のときに実行する文
break;
...
default :
変数の値がどれとも一致しなかったときに実行する文
break;
}
次の文
23
制御構文(5)
 while 文
– 条件が成り立つ間,何度でも繰り返す.
– 条件式が成り立たなくなったら,次の文に進む.
– while ループともいう
while (条件式) {
条件式が成り立つときに実行する文
}
次の文
24
制御構文(6)
 do-while 文
– 最初は1回必ず実行する.
– それが終わったら条件の検査をする.
– 条件が成り立たなくなるまで繰り返す.
do {
条件式が成り立つときに実行する文
} while (条件式)
次の文
25
制御構文(7)
 for 文
– 同じ処理を一定の回数繰り返したいときに用いる.
– for ループともいう.
「カウンタを1に
セットする」など
「カウンタが100以下
の間は…」など
「カウンタの値を1増やす」など
for (初期化の式; 条件式; 1回終了したときの処理) {
繰り返し実行する文
}
次の文
26
まとめ







関数の呼び出し
文と文の区切り
PHPからの「脱出」
コメント
変数とデータ型
演算子
制御構文
– if,else,elseif,while,for 文など
27
演習問題
1. その1
1. 100個の乱数を生成して表示させてみよう
2. 小さい順にソートしてみよう
2. その3
1. 表形式に出力結果を表示してみよう。
28
課題問題
1. 任意の数を100個生成して 表形式で表示しなさい。
• 乱数を発生させる関数を探す
2. 1. で、発生させた数字が素数かどうか判定し、素数を青色で
表示させなさい。
• ある数が素数であるかどうかは、どうやって調べる?
29