【課題】
yahooの検索APIで結果を取得して、表示するプログラムの作成
【解説】
今回の課題で行わなければならないことは、
まずヤフーアカウントの取得、アプリケーションIDの取得します。そして、リクエストURL、アプリケーションID、検索キーワード等で検索リクエストURLを組み立てます。その後、それをブラウザからリクエストを投げます。
すると、xmlファイルを見ることができ、それを参考にプログラムを作成することとなります。詳しい内容はまた後日書こうと思います。
【課題】
yahooの検索APIで結果を取得して、表示するプログラムの作成
【解説】
今回の課題で行わなければならないことは、
まずヤフーアカウントの取得、アプリケーションIDの取得します。そして、リクエストURL、アプリケーションID、検索キーワード等で検索リクエストURLを組み立てます。その後、それをブラウザからリクエストを投げます。
すると、xmlファイルを見ることができ、それを参考にプログラムを作成することとなります。詳しい内容はまた後日書こうと思います。
【課題】
関西弁への変換プログラム
【プログラム】
【解説】
昨日の続きの課題がやっと完成しました。
昨日の説明と被る部分もありますが、初めから解説していきたいと思います。
昨日も説明しましたが、この課題では文字を入力する部分と、それを変換したものを出力する部分が必要です。その部分は<form><textarea></textarea></form>で作りました。
<form></form>は、入力・送信フォームの作成に使われます。methodは、送信の際の転送方法(HTTPメソッド)を指定するものです。
<textarea></textarea>は、複数行の入力フィールドを作成するものです。rowsでは行、colsでは文字数が指定され、これによって出力フォームの大きさが規定されます。nameはこの入力フィールドの名前になります。
次の<input type = “submit” value = “変換”>は、送信するボタンをつくり、そのボタンには「変換」という文字をのせるという意味です。つまり、入力された文字を、このボタンをクリックすることによって送信できるということです。
この後にphpの処理が始まります。最初の
これ以降は文字列の変換です。入力フォームから送られてきた文字列に、特定の文字列が含まれていた場合、指定した文字列に変換されます。昨日は、mb_ereg_replase()を使用しましたが、うまく扱えなかったため、str_replase()を使いました。str_replase()は、str_replase(パターン,置き換え文字列,元の文字列)で、表されます。
変換したい文字列を考えられる分だけ並べていきました。
そして、最後にまた<textarea></textarea>がでてきます。ここに出力された文字列が表示されるようになります。よって、<textarea></textarea>の間にphpの処理で、変換後の文字列$aを出力するようにします。
これで、このプログラムが完成します。
【課題】
文章を入力したら、関西弁に変換されるプログラムの作成
【解説】
前回作成したプログラムでは、私自身が入力した(プログラムの中に組み込んだ)文章をmb_ereg_replace()を使って、文章ごと変換していました。
このプログラムで、私は課題意図をミスリードしていました。その一つ目は、自分自身が入力したものを変換するのではないということ。二つ目は、文章ごと変換するのではなく、単語ごとに変換しなけらば意味がないということです。
この課題では、私以外の人が使用することを想定してプログラムを書かなければなりません。よって、文章をまるごと変換するのでは意味がなく、単語ごとに変換しなければなりませんでした。(文章ごとに変換するプログラムでは、ユーザーが使用する時に、入力する文章が、私の想定する文章とまるごと一致していなければ、変換しないということになってしまいます。)
前回のプログラムは、私自身が楽をして、作りやすいプログラムを作ってしまったといわざるを得ません。反省・・・。
今日はできたところまで、簡単に説明します。(といっても少ししかできていませんが・・・)
今日できたところは、ユーザーが文章を入力できるフォームを作成したというところです。これまで、プログラムが完成した後に、文字を入力するようなことはしたことがなかったので、ここで使うものははじめて使用するものでした。
それは、<form></form>,<textarea></textarea>です。
これらは、以下のようにつかいます。
<form action = “test64.php” method = “post”> <textarea rows = “3″ cols = “40″ name = “kansai”>関西弁に変換します </textarea> </form>
<form action = “フォームデータの送信先” method = “属性値”> <textarea rows = “行数” cols = “文字数” name = “入力欄の名前”>入力欄に最初に表示させるテキスト </textarea> </form>
<form></form><textarea></textarea>は、
このようなかき方がされます。
今回できたところは、ここまでです。このままでも、文字を入力する場所と、最初に表示させるテキストが出力されます。
私がしたいのは、この文字を入力する欄に、文章を入力して、それが関西弁に変換されるというプログラムです。しかし、ここからどのようにすれば、入力欄に関西弁を出力できるのか・・・。
【課題】
文章を入力したら、関西弁に変換されるプログラム
【プログラム】
【解説】
今回の課題では、まず変換前の文章を出力し、その次に変換後の文章を出力することにしました。
詳しい手順は、①変換前の文章を定義、②それを出力、③文章を変換、④その文章を出力、というものです。なお今回は、3パターンの文章を作成したので、この手順を3回繰り返しました。
この手順のうち、今回のポイントは、③番目です。つまり、文章を変換する関数の部分です。ここでは、mb_ereg_replace()を使いました。数字や文字を変換する関数には、この他にもpreg_replace()があります。しかし、preg_replace()は、英数字を変換する関数です。今回は日本語を変換しなければならないため、mb_ereg_replace()が適しているといえます。
mb_ereg_replace()は、
mb_ereg_replace(パターン, 置き換え文字列, 元の文字列)というように表されます。つまり、「元の文字列」の「パターン」部分を「置き換え文字列」に変換するという作業が行われます。
【課題】
mysqlで都道府県とその人口からなるテーブルを作成し、昇順に並べたものを出力した後、人口が最大と最小の都道府県名と人口を出力するプログラムの作成
やっとプログラムが完成しました。昨日は、課題を3段階に分けて考えることにするといいました。1段階目は、phpからmysqlテーブルを呼び出して出力することでした。2段階目は、昇順に並べ替えたテーブルを出力すること。3段階目は、人口最大、最小の都道府県名と人口を出力することです。
本来、1段階目は、2段階目に組み込まれている内容なので、この後の解説では、2段階以降を意識して説明していきます。
【プログラム】
【解説】
今日は、上述のプログラムの初めから順に、説明していきます。初めて使うものがたくさん登場するので、その都度説明していきます。
まずはじめに、ホスト名、ユーザー名、パスワードの変数を作ります。これは、この後で、これらを入力しなければならない場面があるので、わかりやすいように初めに記述しておきます。これらは変数に置かなくても、入力すべき場所にそのまま入力できますが、それでは見にくくなってしまうので、今回は変数におきました。
次は、データベースに接続する作業を行います。
【課題】
mysqlで都道府県とその人口からなるテーブルを作成し、昇順に並べ替えた後、人口が最大、最小、それぞれの都道府県名と人口を表示するプログラムの作成
今回も完成しなかったので途中までです。
そして、この課題は3段階に分けて作業することにしました。1段階目は、phpからmysqlのテーブルを呼び出して、出力すること。2段階目は、昇順にソートしたテーブルを出力すること。3段階目は、人口最大、最小の都道府県名と人口を出力することです。
このように、分けて作業することにしましたが、今回は2段階目までできました。
【1段階目のプログラム】
【解説】
まずはデータベースに接続します。mysql_connect(ホスト名, ユーザー名, パスワード)により、接続しますが、接続できなかったときの確認のため、if文で!(否定)を使うことにより、失敗した際に確認できるようにしました。
次の、mysql_query(“SET NAMES utf8″,$con); //クエリの文字コードを設定については後日説明します。
その後は、mysql_select_db(データベース名, 接続ID)により、データベースを選択します。このときも選択失敗を確認するために、データベース接続時と同じ方法で確かめれるようにしました。
そして、mysql_query(SQL文, 接続ID)でテーブル内の取得したい内容を指定します。ここでも失敗を確認できるようにしました。
最後はmysql_fetch_array()をwhile文で使うことにより、先ほど取得したデータをすべて出力します。
最後は、mysql_free_result($res);で結果セットの開放をし、mysql_close($con);でデータベースから切断して一連の作業は終了します。
私もまだまだわからないことだらけであいまいな説明になりました。明日以降に2段階以降の説明と、mysqlに関する詳しい解説ができればと思います。
【課題】
前回と同様の内容をMYsqlのテーブルを使って行う。
前回の課題:
都道府県名とその人口を入力し、昇順に並べ替え、最大値の都道府県名と人口を入力するプログラムの作成
【解説】
今回も完成できませんでしたが、新しいことに挑戦しました。
mysqlのデータベースを使って、テーブルを作成し、それをphpで呼び出して、処理を行うということです。この作業は、今回うまくできませんでしたが、これが「されるべき作業」です。
mysqlでテーブルを使った後、php内でmysqlに接続して、操作対象のデータベースを選択し、テーブルからデータを取得、取得したデータベースを処理して、最後にmysqlを閉じるという作業が必要です。
これがこの課題で必要なことです。明日は、しっかり課題をこなさないと。
【課題】
都道府県名とその人口を入力し、昇順に並べ替え、最大値の都道府県名と人口を入力するプログラムの作成
前回のつづきです。
【プログラム】
【解説】
今回は、新しく使うものがたくさんありました。
array(),asort(),arsort(),foreach(){},key(),min(),max()などです。
array()は、array(値1、値2、値3、・・・)やarray(キー1=>値1、キー2=>値2、キー3=>値3、・・・)というようにして配列を作成するものです。
asort()は、配列の値に応じて、配列を昇順に並べ替えるものです。arsort()は、配列の値に応じて、配列を降順に並べ替えるものです。
ちなみに、このほかにsort()やrsort()などもあります。sort()は、配列の値に応じて、配列を昇順に並べ替えるものであり、rsort()は、配列の値に応じて、配列を降順に並べ替えるものです。
一見、asort()とsort()、arsort()とrsort()は同じものに見えますが、キーと値の相関関係が維持されるかどうかに違いがあります。
asort()やarsort()は、値が並べ替えられるのと同時に、値に対応したキーも並べ替えられます。sort()やrsort()は値が並べ替えられると、キーは0,1,2,3,…というようになってしまいます。
foreach(){}は、foreach(配列名 as キー用の変数 => 値用の変数){・・・}というように書かれます。今回は、foreach($prefecture as $a => $b){}といように書きましたが、これは$prefectureという配列のキーを$a,値を$bとおいて、{}内の作業を行うというものです。
key()は、()内に配列名を入れ、現在位置のキーを得るという作業を行います。
min(),max()は、それぞれ配列の中でもっとも小さい数値、もっとも大きい数値を得るという作業を行います。
これまで、今回はじめて使ったものについての説明をしてきました。ここからは、今回のプログラムの考え方について解説していきます。
まず初めにarray()を使って、配列を作り、それに$prefectureという名前をつけました。
次に、その配列をasort()を使って、昇順に並べ替え、foreach(){}を使うことにより、キーと値の両方を出力していきました。
そして、foreach文から出て、また$prefectureを昇順に並べ替えます。ここで、一番上にくる都道府県は、一番人口が少ないところです。なので、その一番上のキーをkey()を使って出力し、そのあとでmin()により人口の一番少ない値を出力しました。min()は、current()でも同じ値が出ます(current()は、現在の値を得るものです)。
最後は、arsort()を使い、配列を降順に並べ替えます。これにより、一番上に来る都道府県は、人口が一番多い都道府県です。これをまた、キーにより出力し、min()で一番少ない値を出力することでプログラムが完成しました。最後のmin()も,current()により表せます。
今回は、foreach文以降のプログラムが不本意な結果となってしまいました。もっとわかりやすく、普通のやり方があるはず・・・。
【課題】
都道府県名とその人口を入力し、昇順に並べ替え、最大値の都道府県名と人口、最小値の都道府県名と人口を出力するプログラムの作成
注意:今回は未完のため、できたところまで書きます。
【プログラム】
【解説】
初めにも書きましたが、今回はまだ完成形ができていません。なので途中経過と思ってください。
今回の課題では、都道府県の人口が昇順になるように並べ替え、その後に人口が最大の都道府県名と人口、人口が最小の都道府県名と人口を出力しなければなりません。
私ができたところは、都道府県を人口に応じて昇順に並べ、最小の人口と最大の人口を出力するところまでです。
つまり、人口が最小と最大の都道府県名を出力することができませんでした。
今日、新しく使った知識は、array()とforeach(){}です。詳しくは、また明日書きたいと思います。
【課題】
1から1000まで数えるプログラム。ただし、3の付く数で数字を表示せずにアホになり、5の倍数で数字を表示せずに犬になる(これは4月11日に行った課題です)。
【プログラム】
【解説】
今回のポイントは3の付く数をどのように表すかです。結論から言うと、それは、$aを10、100、1000それぞれで割った余りが3、30~39、300~399になるかどうかで判断しました。
一の位に3が付く数は10で割った余りが3に、十の位に3が付く数は100で割った余りが30~39に、百の位に3が付く数は1000で割った余りが300~399になります。
よって、3の付く数は、一の位、十の位、百の位それぞれに3が付くかどうかを判断することで示しました。
ちなみに「30~39」や「300~399」は、$aを100や1000で割った余りが「30以上、かつ、39以下」、「300以上、かつ、399以下」というように表しました。
| 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|
| « 4月 | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||
EvoLve theme by Blogatize • Powered by WordPress 初心者のためのPHP課題学習
PHPプログラミングの基礎的な課題集