第8回 基礎プログラミング II レポート課題 氏名:及川 雄寛 学籍番号:c1090302 語学クラス:英語3 コース(系):政策マネジメント 1. A.Hashとは、keyとvalueを使い、任意の値に任意の値を結びつけて保存することが できる変数のことを言う。Hashはkeyとvalueがペアになって代入され実行され る。対して、CGIとは、HTML内にデータ入力エリアを配置し、あらかじめ決めら れていた処理を行うことにより、結果が表示されると言う特別な変数のことを 指す。いくつかの分担プログラムとその連携動作から成り立つ。そのため、 CGI変数とHash変数の類似している箇所は、最初に必要事項を定め、それらを 結びつけることで、プログラムが実行される類似していると私は思った。 B.初めに、ディレクトリでCGIを利用する宣言のためにhtaccessを作成する。ユー ザーがデータを入力するのにHTML文書の*htmlを作成する。入力したデータを 受け取り、処理するためのプログラム*rbを作成することで、CGIの仕組みが成 り立つことができる。 C.HTML文書で、CGI変数を渡すには*htmlにformと呼ばれるtagを作成しなければ ならない。
この作業を行うことで、CGI変数を渡すことができる。 D.*rbでCGI変数を受け取り、HTML文書にするには、受け取ったデータを使用する ための宣言をする必要がある。通常は、#!/usr/koeki/bin/rubyと表記すると ころをCGI変数を用いる場合は、#!/usr/bin/env rubyとする必要がある。次に、 受け取ったデータを使用する宣言をする。 require 'cgi' CGI変数 =CGI.new("html4") print("Content-type: text/html; charset=EUC-JP\n\n") と入力し、作成したCHIスクリプトの名前定義のためにHashを用いる。実行す るためにprint文でHTML文書を出力することで、プログラムが実行されて、 HTML文書が完成する。 参考文献:2010年度基礎プログラミングII/西村 まどかより http://roy/~madoka/2010/r2/ CGI専用作業directory http://roy/~madoka/2010/r2/08/08_02_theme_02_mkdir.html RubyでCGIスクリプト http://roy/~madoka/2010/r2/08/08_01_theme_01_rubycgi.html 基本のCGIのホームページの作りかた http://roy/~madoka/2010/r2/08/08_06_theme_05_firstcgi.html 2. A. a.考えた設定:オンラインチケット発券システム。出発駅と到着駅を指定すると Webチケットが表示されるシステム。 b.作成したプログラム:ticket.rb #!/usr/koeki/bin/ruby $KCODE = 'e' #日本語コードで出力される require 'cgi' #cgiを使用するという宣言 #cgiは特別な変数であるため、特別なものを作成するときにrequireを 使う cgi = CGI.new("html4") #CGIをHTML文書に使用する print("Content-type: text/html; charset=EUC-jp\n\n") #日本語コードの定義 arv = cgi["arrive"] #Rubyの変数をarriveとする print("\n") print("\n") print("\tオンライン券売機\n") print("\n") print("\n") printf("

庄内急行 Shonai Express

") printf("

庄内急行特急券 酒田 -- %s 間

\n",arv) #実行文 if/東酒田/=~arv #東酒田を選んだ場合 print("

酒田から3.2[km]

\n") elsif/砂越/=~arv #砂越を選んだ場合 print("

酒田から6.5[km]

\n") elsif/北余目/=~arv #北余目を選んだ場合 print("

酒田から9.5[km]

\n") elsif/余目/=~arv #余目を選んだ場合 print("

酒田から12.2[km]

") elsif/西袋/=~arv #西袋を選んだ場合 print("

酒田から15.8[km]

") elsif/藤島/=~arv #藤島を選んだ場合 print("

酒田から20.9[km]

") elsif/鶴岡/=~arv #鶴岡を選んだ場合 print("

酒田から27.5[km]

") end print("\n") print("\n") オンライン券売機システム
到着駅:

c.元にしたプログラムからの変更点:今回の授業で作成した、ticket.rbにif文と

,

を加え、到着駅数もふやした。 d.実行結果 pan{c109030}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="東酒田" Content-type: text/html; charset=EUC-jp オンライン券売機

庄内急行 Shonai Express

庄内急行特急券 酒田 -- 東酒田 間

酒田から3.2[km]

pan{c109030}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="砂越" Content-type: text/html; charset=EUC-jp オンライン券売機

庄内急行 Shonai Express

庄内急行特急券 酒田 -- 砂越 間

酒田から6.5[km]

pan{c109030}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="北余目" Content-type: text/html; charset=EUC-jp オンライン券売機

庄内急行 Shonai Express

庄内急行特急券 酒田 -- 北余目 間

酒田から9.5[km]

pan{c109030}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="余目" Content-type: text/html; charset=EUC-jp オンライン券売機

庄内急行 Shonai Express

庄内急行特急券 酒田 -- 余目 間

酒田から12.2[km]

pan{c109030}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="西袋" Content-type: text/html; charset=EUC-jp オンライン券売機

庄内急行 Shonai Express

庄内急行特急券 酒田 -- 西袋 間

酒田から15.8[km]

pan{c109030}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="藤島" Content-type: text/html; charset=EUC-jp オンライン券売機

庄内急行 Shonai Express

庄内急行特急券 酒田 -- 藤島 間

酒田から20.9[km]

pan{c109030}% ./ticket.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) arrive="鶴岡" Content-type: text/html; charset=EUC-jp オンライン券売機

庄内急行 Shonai Express

庄内急行特急券 酒田 -- 鶴岡 間

酒田から27.5[km]

また、作成したプログラムを以下のURLに掲載した。 http://roy/~c109030/rubycgi/ticket.html/オンライン券売機 トップページのURL:http://roy/~c109030/ e.考察:作成したプログラムと同じ結果が出力されたので、プログラムは正しく 動いたと言える。 参考文献:2010年度基礎プログラミングII第8回/西村 まどか より http://roy/~madoka/2010/r2/08/ 「自動券売機」 http://roy/~madoka/2010/r2/08/08_12_theme_10_ticket.html B. 以下のURLに作成した。 http://roy/~c109030/ C.以下のURLにリンクさせた。http://roy/~c109030/ 3.感想:今回は、前期に行ったバナーとライターの作業があったので、忘れてい るところがあったので、前期の講義ノートも見ながらの作業だった。プ ログラムは、授業で苦労したが、何とか完成させることができたのでよかっ た。ここ最近、体調が優れず、レポートの作成が遅かったり、内容が悪 く評価が低いので、残りの回で挽回したい。 共同学習者:川島 哲