第10回 基礎プログラミング II レポート課題 氏名: xxxxxxxx 学籍番号:C10xxxx 語学クラス:英語xx コース(系):社会系 1.A.pstore を使った CGI の使い方 require 'pstore' でPStoreを使う宣言。 db =PStore.("◯◯.db") dbに入れられたものを書き込む。 これは管理者だけでなく閲覧者もウェブページ上で書けるようにするものだ。 プログラム問題 http://roy/~c108203/advertise2/rubycgi/r2_cgi_best.html 作成CGI ・選択肢で表示する画像を変える「路上詩人みづゑ」 ・時間割作成ソフト「時間割つくーる」 ・「SPI2 非言語分野 問題集(仮)」 1.http://roy/~c108203/advertise2/rubycgi/rojou.html 作品名:「路上詩人みづゑ」 意図:ドロップダウンやラジオボタンで選択されたものをもとに、 画像を変えるCGIを作りたいと思ったため作成した。 ※Tgifで絵でなく文字を描いた理由は、自分に絵心が無いため。 作成ページ rojou.html 路上詩人 みづゑ #rojou.cssを使う。

路上詩人 みづゑ

# rojou.rbでデータを処理

お名前は?(10字以内):
# 名前入力 性別は?:
男です
女です
# ラジオボタンで性別を選択。Male Or Female で mof とした。 どんなことで悩んでる?:

# ドロップダウンで選択。 #rojou.rbに送信
#全てクリア

作成プログラム #!/usr/koeki/bin/ruby require 'cgi' #cgi使用宣言 cgi = CGI.new("html4") #html4で print("Content-type: text/html; charset=EUC-jp\n\n") namae = cgi["name"] mf = cgi["mof"] nayami = cgi["problem"] # 貰ってくる値。 print("\n") print("\n") print("路上詩人みづゑ\n") print("") print("\n") print("\n") print("

") if nayami == "悩みはない" # ドロップダウンで「悩みはない」が選択されたら print("ふーん、\n") if mf == "male" # ラジオボタンで「男性」が選択されたら print("お兄さん、悩みないんだ
\n") printf("そんな %s お兄さんにはコレ!",namae) #入力された名前を表示 else # ラジオボタンで「女性」が選択されたら print("お姉さん、悩みないんだ
\n") printf("そんな %s お姉さんにはコレ!",namae) #入力された名前を表示 end print("

") #「悩みはない」の場合、性別関係なく同じ画像を出す。 # ほかは各悩みに男女別で違う画像を表示させる。 elsif nayami == "体調不良" print("ふーん、\n") if mf == "male" print("なるほどね。お兄さん体調が悪いんだ
\n") printf("そんな %s お兄さんにはコレ!",namae) print("

") else print("なるほどね、お姉さん体調が悪いんだ
\n") printf("そんな %s お姉さんにはコレ!",namae) print("

") end elsif nayami == "人間関係" print("ふーん、\n") if mf == "male" print("そっかぁ。お兄さん、人間関係で悩んでるの
\n") printf("そんな %s お兄さんにはコレ!",namae) print("

") else print("そっかぁ。お姉さん、人間関係で悩んでいるの
\n") printf("そんな %s お姉さんにはコレ!",namae) print("

") end elsif nayami == "挫折しそう" print("あらら、\n") if mf == "male" print("お兄さん、挫折しちゃいそうなの?
\n") printf("そんな %s お兄さんにはコレ!",namae) print("

") else print("お姉さん、挫折しちゃいそうなの?
\n") printf("そんな %s お姉さんにはコレ!",namae) print("

") end end print("

\n") print("\n") print("\n") 実行結果 roy{c108203}% ./rojou.rb [~/public_html/advertise2/rubycgi] name="たろう" mof="male" problem="体調不良" Content-type: text/html; charset=EUC-jp 路上詩人みづゑ

ふーん、 なるほどね。お兄さん体調が悪いんだ
そんな たろう お兄さんにはコレ!

roy{c108203}% ./rojou.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="みずえ" mof="female" problem="人間関係" Content-type: text/html; charset=EUC-jp 路上詩人みづゑ

ふーん、 そっかぁ。お姉さん、人間関係で悩んでいるの
そんな みずえ お姉さんにはコレ!

きちんとhtml文が表示される。 ウェブページ上で実行しても、きちんと自分の求めているとおり表示された。 作成画像について 自分はあまり絵が得意ではないので、字を描いてみた。 自分の想像の路上詩人(街で、お客を見てその人をイメージした詩を描く人)が こういうのを描くのではないかというのをもとにした。 文はオリジナルのつもりである。 手書きのような雰囲気を出すため、曲線で描いた。 左下の[みづゑ]は一つ描いたものを複数の画像に使い回した。 2.http://roy/~c108203/advertise2/rubycgi/jikanwari.html タイトル:時間割作成ソフト「時間割つくーる」 意図:CGIで時間割を作れたら便利だと思ったため。 また、テーブルタグがprintf("")内でも使えるか知りたかったのでCGIで 表を作らせてみた。 作成ページ jikanwai.html 時間割つくーる

2010年度後期の時間割表を作ります

お名前は?(10字以内):

それぞれの時間の教科を選んで下さい。

※お手数ですが、トップセミナーを履修中の方は3,4限
理論経済学を履修中の方は4,5限 どちらも選択して下さい。

月曜日

1限

2限

3限

4限

5限

6限

火曜日

1限

2限

3限

4限

5限

6限

水曜日

1限

2限

3限

4限

5限

6限

木曜日

1限

2限

3限

4限

5限

6限

金曜日

1限

2限

3限

4限

5限

土曜日

「インクルージョン社会論」の講義を履修していますか?
はい いいえ

集中講義


作成プログラム jikanwari.rb #!/usr/koeki/bin/ruby require 'cgi' cgi = CGI.new("html4") # html4でCGIを使用する宣言 print("Content-type: text/html; charset=EUC-jp\n\n") name = cgi["name"] m1 = cgi["m1"] m2 = cgi["m2"] m3 = cgi["m3"] m4 = cgi["m4"] m5 = cgi["m5"] m6 = cgi["m6"] tu1 = cgi["tu1"] tu2 = cgi["tu2"] tu3 = cgi["tu3"] tu4 = cgi["tu4"] tu5 = cgi["tu5"] tu6 = cgi["tu6"] w1 = cgi["w1"] w2 = cgi["w2"] w3 = cgi["w3"] w4 = cgi["w4"] w5 = cgi["w5"] w6 = cgi["w6"] th1 = cgi["th1"] th2 = cgi["th2"] th3 = cgi["th3"] th4 = cgi["th4"] th5 = cgi["th5"] th6 = cgi["th6"] f1 = cgi["f1"] f2 = cgi["f2"] f3 = cgi["f3"] f4 = cgi["f4"] f5 = cgi["f5"] sk = cgi["sk"] is = cgi["is"] # 貰ってくる値 print("\n") print("\n") print("\tじかんわり\n") print("") print("\n") print("\n") printf("

%sさんの時間割

\n",name) printf("") print("") # 表を作る if is == "no" # インクルージョン社会論を履修していない場合 print(" ") # 月曜日から金曜日までの表を作る # それぞれの該当個所に、選択された科目名を入れる。 printf("",m1,tu1,w1,th1,f1) printf("",m2,tu2,w2,th2,f2) printf("",m3,tu3,w3,th3,f3) printf("",m4,tu4,w4,th4,f4) printf("",m5,tu5,w5,th5,f5) printf("",m6,tu6,w6,th6) #水 else # そうでなければ=インクルージョン社会論を履修していれば print(" ")#月曜日から土曜日までの表を作る printf("",m1,tu1,w1,th1,f1) printf("",m2,tu2,w2,th2,f2) printf("",m3,tu3,w3,th3,f3) printf("",m4,tu4,w4,th4,f4) printf("",m5,tu5,w5,th5,f5) printf("",m6,tu6,w6,th6) end print("
1 %s%s%s %s%s
2 %s%s%s %s%s
3 %s%s%s %s%s
4 %s%s%s %s%s
5 %s%s%s %s%s
6 %s%s%s %sなし
1 %s%s%s %s%sなし
2 %s%s%s %s%sインクルージョン社会論
3 %s%s%s %s%sインクルージョン社会論
4 %s%s%s %s%sインクルージョン社会論
5 %s%s%s %s%s インクルージョン社会論
6 %s%s%s %sなしなし
\n")#テーブルタグを閉じる printf("

集中講義:%s

",sk) #表の下に、履修予定の集中講義も記す。 print("\n") print("\n") #html終了。 実行結果 roy{c108203}% ./jikanwari.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="みずえ" m1="なし" m2="なし" m3="高齢化社会" m4="経営財務論" m5="なし" m6="なし" Content-type: text/html; charset=EUC-jp じかんわり

みずえさんの時間割

1 なし なし
2 なし インクルージョン社会論
3 高齢化社会 インクルージョン社会論
4 経営財務論 インクルージョン社会論
5 なし インクルージョン社会論
6 なし なしなし

集中講義:

月曜から金曜までのl〜6限全て入力するのは面倒であったので、 月曜日だけ入力し実行した。 テーブルタグもそのまま出力されることが分かった。 CGIを実行したところ、うまく表示された。 土曜の授業の有無も表に反映された。 2.http://roy/~c108203/advertise2/rubycgi/SPI2.html タイトル:「SPI2 非言語分野問題集(仮)」 意図:ラジオボタンを使った、クイズ形式のCGIを以前よく使用していた。 そのようなものを自分でも作れるのではないかと思い作成した。 タイトルに(仮)がついているのは、未完成の作品だからである。 問題は少ないし、解答の解説もない不親切なクイズCGIだ。 だが、一応骨組は完成しているので最高傑作の一つとして提出する。 作成ページ SPI2.html SPI2 非言語分野問題集

SPI2 非言語分野問題集

紙と筆記用具の準備はいいですか?
それではスタート!

第一問 4%の食塩水200gと10%の食塩200gを混ぜると、何%の食塩水ができるか。

6% 7% 8% 9%

第二問 数列{1 2 5 10 17 □ 37……}がある。□に入る数字は何か。

26 27 28 29

第三問 父の年齢は現在、子の年齢の5倍である。 6年後には父の年齢は子の年齢の3倍になる。子は現在何歳か。

4歳 5歳 6歳 7歳

第四問 商品Aを1個200円で100個仕入れ、250円で売った。すると2割が売れ残った。
残りを売り値の半額で売ったとき、売り上げはいくらか。

21500円 20000円 1500円 18500円

第五問 ある仕事をするのに、Aさんだけだと10日、Bさんだけだと15日かかる。
A・Bの二人が協力してこの仕事をすると、何日かかるか。

6日 7日 8日 9日

第六問 3進数の3321を10進数に直すと いくつになるか

48 312 115 287

第七問 1から100までの整数のうち、4でも6でも割り切れない数はいくつか

33 41 49 26

第八問 1周800メートルのトラックを、Xくんは分速45m、Yくんは分速35mで
同時に同じ地点から反対方向に歩きはじめた。二人は何分後出会うか。

6分後 8分後 10分後 12分後

第九問 120メートルの道路に、端から端まで6メートルごとに木を植えたい。
木は全部で何本必要か。

19本 20本 21本 22本

第十問 1個60円のミカンと1個100円のリンゴを買う。
ミカンをリンゴの1.5倍の個数買ったら、合計1520円になった。
リンゴはいくつ買ったか。

5個 6個 7個 8個

作成プログラム SPI2.rb #!/usr/koeki/bin/ruby require 'cgi' cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-jp\n\n") name = cgi["name"] q1 = cgi["q1"] q2 = cgi["q2"] q3 = cgi["q3"] q4 = cgi["q4"] q5 = cgi["q5"] q6 = cgi["q6"] q7 = cgi["q7"] q8 = cgi["q8"] q9 = cgi["q9"] q10 = cgi["q10"] # cgiから持って来る値 correct = 0 # 正解数をしまう print("\n") print("\n") print("\t結果発表\n") print("\n") print("\n") print("

\n") print("

第一問

\n") if q1 == "7%" #正答が選ばれていれば correct += 1 #正解数に1加える printf("

あなたの答:%s\n",q1) #選ばれたものを表示し print("……正解!

\n") #メッセージ else #正答と違う場合 printf("

あなたの答:%s\n",q1) #選ばれたものを表示し print("……不正解!

\n") #メッセージ end print("

第二問

\n") if q2 == "26" correct += 1 printf("

あなたの答:%s\n",q2) print("……正解!

\n") else printf("

あなたの答:%s\n",q2) print("……不正解!

\n") end print("

第三問

\n") if q3 == "6歳" correct += 1 printf("

あなたの答:%s\n",q3) print("……正解!

\n") else printf("

あなたの答:%s\n",q3) print("……不正解!

\n") end print("

第四問

\n") if q4 == "18500円" correct += 1 printf("

あなたの答:%s\n",q4) print("……正解!

\n") else printf("

あなたの答:%s\n",q4) print("……不正解!

\n") end print("

第五問

\n") if q5 == "6日" correct += 1 printf("

あなたの答:%s\n",q5) print("……正解!

\n") else printf("

あなたの答:%s\n",q5) print("……不正解!

\n") end print("

第六問

\n") if q6 == "115" correct += 1 printf("

あなたの答:%s\n",q6) print("……正解!

\n") else printf("

あなたの答:%s\n",q6) print("……不正解!

\n") end print("

第七問

\n") if q7 == "33" correct += 1 printf("

あなたの答:%s\n",q7) print("……正解!

\n") else printf("

あなたの答:%s\n",q7) print("……不正解!

\n") end print("

第八問

\n") if q8 == "10分後" correct += 1 printf("

あなたの答:%s\n",q8) print("……正解!

\n") else printf("

あなたの答:%s\n",q8) print("……不正解!

\n") end print("

第九問

\n") if q9 == "21本" correct += 1 printf("

あなたの答:%s\n",q9) print("……正解!

\n") else printf("

あなたの答:%s\n",q9) print("……不正解!

\n") end print("

第十問

\n") if q10 == "8個" correct += 1 printf("

あなたの答:%s\n",q10) print("……正解!

\n") else printf("

あなたの答:%s\n",q10) print("……不正解!

\n") end #全て終わったら printf("

10問中%s問正解

\n",correct) #正解数表示。 実行結果 最初と最後の問題だけ答えた。正解数が2問になっていれば正しい。 roy{c108203}% ./SPI2.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) q1="7%" q10="8個" Content-type: text/html; charset=EUC-jp 結果発表

第一問

あなたの答:7% ……正解!

第二問

あなたの答: ……不正解!

第三問

あなたの答: ……不正解!

第四問

あなたの答: ……不正解!

第五問

あなたの答: ……不正解!

第六問

あなたの答: ……不正解!

第七問

あなたの答: ……不正解!

第八問

あなたの答: ……不正解!

第九問

あなたの答: ……不正解!

第十問

あなたの答:8個 ……正解!

10問中2問正解

10問中2問正解

」と表示されるので正しいと考えた。 感想 http://roy/~c109058/advertise2/rubycgi/r2_cgi_best.html 私が興味を持っているのは、久保田瑛一郎くんの作品である。 彼の作品は全て実用的なプログラムだ。 文字の拡大・反転や優先搭乗券など福祉に関しても考慮されている。 これぞまさに公益的だと思う。 久保田くんが朝まで、101教室でコンピュータに向かっている様子をよく見る。 毎回、その頑張りが表れたすばらしいプログラムを作っているなと思う。 ########################## 授業で習ったdbを活用したかったが、その仕組みを理解できず断念した。 だが、時間割作成のような自分では満足できるものを作れたのでよかった。 次回からのグループ課題もがんばりたい。 前期は自分だけで抱え込んでしまった気がするので、今回はチームメンバーにも 頼ろうと思う。 参考文献 『わかる!わかる!わかる! SPI&WEBテスト』新星社出版 2008 WEB色見本サイト − 色見本大辞典 http://www.nicopon.com/