• 検索結果がありません。

~モバイルを知る~ 日常生活とモバイルコンピューティング

N/A
N/A
Protected

Academic year: 2021

シェア "~モバイルを知る~ 日常生活とモバイルコンピューティング"

Copied!
28
0
0

読み込み中.... (全文を見る)

全文

(1)

Webプログラミングの基礎

PHPの基礎(7)

(2011/06/29)

政策情報学部

渡辺恭人

riho-m@cuc.ac.jp

メーリングリスト:riho-m-rg11@cuc.ac.jp:

資料ページ: http://www.cuc.ac.jp/~riho-m/rg11/

(2)

前回の課題

• おみくじのプログラムを参考にして、生まれた

年(西暦)を入力すると、干支を表示するプロ

グラムを作ってください。

(3)

基本的な流れ

3

生まれた年を入力

生まれた年から干支を計算する

(4)

Webプログラムでの流れ

4

PHP部分: 受信データ(生まれた年)から干支を算出 受信データがなければスルー HTMLフォーム部分: 生まれた年を入力し送信 POSTで 自分に 生まれた年を 送信 データ名 “year”

最初の実行 受信データ無し

(5)

干支

5

0 子 ね 鼠 1 丑 うし 牛 2 寅 とら 虎 3 卯 う 兎 4 辰 たつ 竜 5 巳 み 蛇 6 午 うま 馬 7 未 ひつじ 羊 8 申 さる 猿 9 酉 とり 鶏 10 戌 いぬ 犬 11 亥 い 猪 これらを配列変数に代入する。例、eto_data[0]=”ねずみ” 2008年は「ねずみ」なので、12で割った余りが0になるように調整する。 2008から4を引いた2004を12で割ると余りが0になるので、 計算式は、(年-4) % 12 となる。

(6)

プログラム前半

6

<?php if (isset($_POST["start"])) { $year = $_POST["year"]; $eto_data[] = "ねずみ"; $eto_data[] = "うし"; $eto_data[] = "とら"; $eto_data[] = "うさぎ"; $eto_data[] = "たつ"; $eto_data[] = "へび"; $eto_data[] = "うま"; $eto_data[] = "ひつじ"; $eto_data[] = "さる"; $eto_data[] = "とり"; $eto_data[] = "いぬ"; $eto_data[] = "いのしし";

(7)

プログラム後半

7

$result = ($year-4) % 12; $message = "あなたの干支は " . $eto_data[$result] . " です"; } else { $message = "あなたの生まれた年の干支を調べましょう"; } ?> <html> <body> <?php print $message;?> <br> <form method="post">

<input type="text" name="year" value=""><br /> <br>

<input type="submit" name="start" value="変換する"> </form>

</body> </html>

(8)

実行画面

(9)

自分で関数を作る

• ユーザ定義関数

– ユーザが独自に定義した関数のこと

• 書式

9

function 関数名 (引数1, 引数2, 引数3, ….){

処理内容

return 戻り値;

}

引数の数は 任意 戻り値がある場合は、 return文で記述

(10)

関数を記述する場所

• ユーザ定義関数を記述する場所

– 関数を呼び出す位置の前

– 関数を呼び出す位置の後

– どちらでもよい

10

(11)

関数の引数のタイプ

• 値渡しと参照渡し

• 値渡し・・・通常のタイプ

– 関数への引数の値を直接渡す

– 関数内でその値を変更しても、呼び出し元の変

数の値に影響を与えない

• 参照渡し

– 引数で、変数の前に&をつける

– 関数内でその値を変更すると、呼び出し元の変

数の値に影響を与える

11

(12)

参照渡しの例

12

<?php

$sum = 1000;

kaimono($sum,100);

kaimono($sum,50);

print $sum;

function kaimono (

&

$sum, $nedan){

$sum = $sum - $nedan;

}

(13)

値渡しのユーザ定義関数(前半)

13

<?php

// ユーザー定義関数

function user_sum($a,$b) {

$a = $a + $b;

print "合計は" . $a . "です<br>";

}

?>

(14)

値渡しのユーザ定義関数(後半)

14

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

<?php

$a = 15;

$b = 30;

user_sum($a,$b);

print "変数の値は" . $a . " と " . $b . "です<br>";

?>

</body>

</html>

(15)

参照渡しのユーザ定義関数(前半

15

<?php

function user_sum(&$a,&$b) {

$a = $a + $b;

print "合計は" . $a . "です<br>";

}

?>

(16)

参照渡しのユーザ定義関数(後半

16

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

<?php

$a = 15;

$b = 30;

user_sum($a,$b);

print "変数の値は" . $a . " と " . $b . "です<br>";

?>

</body>

</html>

(17)

Webアプリケーションにおける

アルゴリズム

• アルゴリズムを考える

– プログラムに取り掛かる前

– どのような機能や仕様が必要となるのか、その手

順はどのようにするのかを考える

• 重要なこと

– プログラムを作る前に、アルゴリズムについて検

討する

– わからないことなどを自分で調べることができる

17

(18)

素数を求めるアルゴリズム

• ある数が素数であるかどうかを出力する

• 素数とは、1とその数自身以外のどんな自然

数によっても割り切れない値で、1より大きな

• 定番アルゴリズム「エラトステネスのふるい」

– 定義に従った馬鹿正直な手順

– 「判定したい数より小さい全ての数で割ってみる」

18

(19)

エラトステネスのふるい

• 基本的な考え方

– 「判定したい数より小さい全ての数で割ってみる」

• 91が素数かどうかを判定するには

– 2から90で割ってみればよい

– 割り切れる=余りが0

– 途中一度でも割り切れたら素数ではない

• どんなに面倒な手順でも明確で機械的なら立

派なアルゴリズムである

– 2から90までの数で91を割る処理なんて一瞬!

19

(20)

20

エラトステネスのふるい

始め

終わり

判定したい数mを入力

判定したい数を割る数 n=2

n > m -1 ?

m は nで割り切れない?

「m は素数である」と表示

n に1を加える

Yes

Yes

No

No

「m は素数ではない」と表示

(21)

プログラム(sosu1.php)

21

<?php

sosu_check();

function sosu_check(){

$a = 91;

$s = "は素数です";

for ($i = 2; $i <= ($a - 1); $i++){

if ($a % $i == 0) {

$s = "は、素数ではありません";

break;

}

}

print $a . $s;

}

?>

(22)

文字化けについて

• Webアプリケーションでよく起きるトラブル

– データの入出力・メール送信などの個所で起きる

– Webブラウザ、Webサーバ、PHP、データベースサ

ーバなどの間で文字コードが正しく設定されてい

ないときに起こりうる

• 文字化けの原因

– 文字にはコードが多数ある(日本語にも数種類)

• 使う文字コードを統一するのも一つの方法

– PHPでどのように設定されているかを確認する

• Phpinfo()の表示のうち、mbstringカテゴリ

22

(23)

文字コード

• JIS(ISO-2022JP)

– 電子メールでの日本語

の文字コード

• SJIS(Shift JIS)

– WindowsやMS-DOS等で

普及した日本語の文字

コード

• EUC( Extended UNIX

Code)

– UNIXシステムで普及

• UTF-8

– コンピュータ上で多言語

の文字を単一の文字コ

ードで取り扱うために

1980年代に提唱された

文字コードである

Unicodeの一つ

23

(24)

PHPでの設定方法

• 3つ

– php.iniを設定

• 一般ユーザにはできない

– .htaccessを設定

• 使えないレンタルサーバもある

– PHPのスクリプト内で設定

24

(25)

PHPスクリプトの中で設定する

25

<?php

mb_internal_encoding ("

UTF-8

");

mb_http_output("

UTF-8

");

ob_start("mb_output_handler");

header("Content-Type: text/html; charset=

UTF-8

");

print "日本語を出力する";

?>

EmEditorで保存するときに、文字コードをUTF-8に

(26)

.htaccessファイルで設定する

• .htaccessファイル

– WebサーバのApacheの設定やPHPの設定、ユー

ザの認証を設定する

– Windowsでは、ドット「.」で始まるファイル名はつく

れないので、ドットのないファイル名で作成し、

www2に転送してから変更する

• 次の1行をhtaccessというファイル名で作成す

– WinSCPで転送して、ファイル名を .htaccessに変更

26

(27)

文字コードの確認

• 以下のプログラムを入力・保存し、WinSCPで

www2に転送してください

• Internet Explorerで実行する

• default_charsetの欄を見る

27

<?php

phpinfo();

?>

(28)

課題

「スライド21のプログラムの改良」

• 関数の定義を変更して、引数にチェックしたい

数値を入れられるようにしてください。

• プログラムで$aの値をいちいち変更しなくても

、フォームを使って、ブラウザから値を入力で

きるようにしてください。

• 以上、作ったプログラムと実行結果をWordに

まとめ、

メーリングリストに

提出してください。

• ファイル名 例: kadai-0629-学籍番号.doc

• 締切: 7/5 23:59

28

参照

関連したドキュメント

大正デモクラシーの洗礼をうけた青年たち の,1920年代状況への対応を示して」おり,「そ

BC107 は、電源を入れて自動的に GPS 信号を受信します。GPS

WAKE_IN ピンを Low から High にして DeepSleep モードから Active モードに移行し、. 16ch*8byte のデータ送信を行い、送信完了後に

この課題のパート 2 では、 Packet Tracer のシミュレーション モードを使用して、ローカル

題が検出されると、トラブルシューティングを開始するために必要なシステム状態の情報が Dell に送 信されます。SupportAssist は、 Windows

今回の SSLRT において、1 日目の授業を受けた受講者が日常生活でゲートキーパーの役割を実

   がんを体験した人が、京都で共に息し、意 気を持ち、粋(庶民の生活から生まれた美

一︑意見の自由は︑公務員に保障される︒ ントを受けたことまたはそれを拒絶したこと