11 月 28 日 第 9 回レポート 「CGI スクリプトを作ってみよう」 学籍番号: c106XXXX 氏名: XXXXXXXX 語学クラス: 中国語選択XX 系: 社会系 1. 筆記問題 A. 〜 予想 〜 配列 momo と komomo に与えられている6つの数字が、大きい順に[9, 7, 5, 4, 3, 0] と並べ替えられるはずである。 〜 証明 〜 a. プログラムコード (hikki.rb) #!/usr/koeki/bin/ruby momo = [0,9,7] komomo = [3,4,5] oomomo = komomo + momo p oomomo p oomomo.sort p oomomo.sort.reverse b. 結果画面 irsv{c106179}% ./hikki.rb [~/Ruby] [3, 4, 5, 0, 9, 7] [0, 3, 4, 5, 7, 9] [9, 7, 5, 4, 3, 0] c. 考察 1行目が配列 komomo と momo をそのまま表示させたものである。 2行目は sort をしたため、数字が小さい順に並べ替えられた。 3行目は sort.reverse をしたため、2行目の sort の結果とは逆で数字が大きい 順に並べ替えられた。 sort.reverse をすると予想通り数字の大きい順に並べ替えられたことが証明さ れた。 B. alphabet = ["a","b",...,"z"] は alphabet[0] = a、alphabet[1] = b、 alphabet[25] = z とデータが埋め込まれていく。 よって、alphabet[15] は、a から数え始めて 16 番目の文字 p である。 また、alphabet[28] は、アルファベットは 28文字 までは存在しないため、 表示されない。 【参考HP】 西村先生のHP 第 5 回 配列とデータ処理 〜 配列 Array 〜 http://roy/~madoka/2007/r1/05/05-05-array.html 2. a. 考えた設定 今日の運勢を表示するプログラム。 b. 〜 CGIプログラム (sindan.rb) 〜 #!/usr/bin/env ruby require 'cgi' c = CGI.new("html4") print("Content-type: text/html; charset=EUC-JP\n\n") name = c["namae"] seibetu = c["seibetu"] age = c["age"] birth = c["birth"] toi1 = c["check1"] toi2 = c["check2"] toi3 = c["check3"] toi4 = c["cbk1"] toi5 = c["cbk2"] toi6 = c["cbk3"] point = age.to_i - toi4.to_i + toi5.to_i + toi6.to_i print(" 今日の運勢は? \n") print("

気になる今日の運勢は?

\n") print("#{name}さん(性別:#{seibetu} 年齢:#{age}歳)\n") print("

#{birth}月 生まれのあなたは…

\n\n") print("

") if point >= 20 print("今日は一日ラッキーです!!良いことが次々に起こるかも!\n") elsif point >= 15 print("今日は調子がいいです。色々なことに挑戦してみましょう。\n") elsif point >= 10 print("今日はツイてません…大人しくしていましょう。\n") else print("今日は最悪な日かも…じっと我慢です。\n") end print("

\n") print("\n") print("\n") 〜 入力フォーム (sindan.html) 〜 ** 今日の運勢 **

** 今日の運勢 **

名前:
性別: 男性 女性 不明
年齢:
誕生月:

▼当てはまるものをチェックして下さい。(ひとつだけ)

【質問 1】 今日の気分は?

良いです!
まあまあ
いまいち

【質問 2】 昨日は良いことがありましたか?

もちろん!
ある程度は
いえ、全く

【質問 3】 今日の天気は?

晴れ
くもり

▼当てはまるものにチェックして下さい。(いくつでも)

現在、悩みがある。
趣味を持っている。
将来の夢がある。

c. 変更点 神田先生のHPのいんちき占い(uranai.html)(uranai.rb)を参考にした。 ラジオボタンとチェックボックスを新たに追加した。 d. 結果画面 今日の運勢は?

気になる今日の運勢は?

田中ルビ子さん(性別:女性 年齢:17歳)

7月 生まれのあなたは…

今日は調子がいいです。色々なことに挑戦してみましょう。

e. 考察 年齢は17、最後の質問項目を悩みと将来の夢についてチェックした場合、 point = 17 - 1 + 3 という計算になる。 irsv{c106179}% bc -l [~/Ruby] 17 - 1 + 3 19 quit 計算結果は19 なので、占いの結果は正しく表示されている。 f. 参考HP ・西村先生のHP 〜 print() 文と HTML 文書のなかみ 〜 http://roy/~madoka/2007/r2/10/10-09-firefox.html ・神田先生のHP 〜 (10) 12/10の授業内容:CGI[2]補足 〜 http://roy/~naoya/cgi-bin/10j-uranai.htm CGIプログラムのリンク先 「HPのトップページのURL」 http://roy.e.koeki-u.ac.jp/~c106179/index.html 「今日の運勢のトップページのURL」 http://roy.e.koeki-u.ac.jp/~c106179/rubycgi/sindan.html 3. logo-r2-c106179.png 4. 感想 def を習ったことで、すっきりとしたプログラムを作成することができるように なり、プログラムを作る側にもプログラムを見る側にもわかりやすいプログラム を作ることができるようになった。 後期に入り Hash を習ったが、最初は Array の方が使いやすいと感じた。 しかし、課題を通して Hash を使うことで段々と Hash の便利さがわかり、 Array よりも Hash の方が使いやすいと感じるようになった。 times や downto などを使うことで、ゲームらしいプログラムを作成することが できると思う。