第9回 基礎プログラミング II レポート課題 氏名 : 藤井駿 学籍番号 : c1091307 語学クラス : 英語3 コース : 地域共創 1.筆記問題 A. ラジオボタンの仕組みは選択肢から1つ選ぶ方法である。 実際にラジオボタンを使うためには、 を htmlの方に入れる。 input type="radio" はラジオボタンのことであり、name="ラジオボタンの名 前"は使うラジオボタンを区別するためのものである。 また、value="CGI変数の値はユーザが選ぶところの値がプログラムに送られる。 B. チェックボックスの仕組みは選択肢からいくつか選べる方法である。 実際にチェックボックスを使うためには を htmlの方へ入れる。 input type=""checkbox" はチェックボックスのことであり、name="チェック ボックスの名前"は使うチェックボックスを区別するためのものである。 また、value="CGI変数の値はユーザが選ぶところの値がプログラムに送られる。 2.プログラム問題 ホームページのアドレス 「http://roy/~c109130/advertise2/rubycgi/fork.html」 A. a.リンクのアドレス 「http://roy/~c109130/advertise2/rubycgi/counter.rb」 b. もとにしたプログラム 授業の際の「counter.rb」 c.プログラム本体 #!/usr/bin/env ruby require 'cgi' # CGIの形式に変換する cgi = CGI.new("html4") # CGIをHTML文書で使用する print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード count = 0 # 0からスタートする open("count.txt","r")do|read| # count.txt を開いて読みこむ while data = read.gets # データを取り込む if /(\d+)/ =~data count = $1.to_i end end end print("\n") # HTML文書 print("\n") print("カウントページ\n") print("\n") print("\n") print("
\n") print("

ようこそ

\n") printf("

あなたは %d番目のお客さまです。

\n",count) print("

時間がありましたら外食ページを実行して下さい!!

\n") print("
\n") print("\n") print("\n") count += 1 # 1ずつ足していく open("count.txt","w") do |write| # count.txt を開いて書きこむ write.printf("%d\n",count) end d.実行結果 pan{c109130}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP カウントページ

ようこそ

あなたは 6番目のお客さまです。

時間がありましたら外食ページを実行して下さい!!

pan{c109130}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP カウントページ

ようこそ

あなたは 7番目のお客さまです。

時間がありましたら外食ページを実行して下さい!!

e.考察 実行していくたびに数が増えていくことがわかった。 しかしホームページ上では数が増えていかない状況になってしまった。 どこが悪いか調べていきたい。 B. a.リンクのアドレス 「http://roy/~c109130/advertise2/rubycgi/gaishoku.html」 b.CGIの題名とその意図 「☆外食へいこう☆」 外食をすることは多いので実際に作ってみたくなったから。 外食とはいっても様々なメニューがあるのでできるだけ多くのメニューを 表示させるようにした。 c.入力部分と送信結果の表示する部分 ◯入力部分 「gaishoku.html」 外食ページ

☆外食へいこう☆

あなたは何を食べたいですか?





戻る ホームぺージヘ
◯送信結果「gaishoku.rb」 #!/usr/bin/env ruby $KCODE = 'e' # 文字化け防止 require 'cgi' # CGIの形式に変換する cgi=CGI.new("html4") # CGIをHTML文書で使用する m = Hash.new # 新しくHash を作る print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コード shi = cgi["shina"] nin = cgi["ninnzu"].to_i print("\n") # HTML文書 print("\n") print("外食メニュー\n") print("\n") print("\n") print("

\n") printf("

外食メニューは・・・

\n") print("
\n") printf("

☆ メニュー : %s

\n",shi) printf("

☆ 品数 : %d [人前]

\n",nin) print("\n") print("
\n") print("

******************************メニュー表************************************

\n") print("

◯ハンバーグ … 680円 /") print("◯カレーライス … 600円/") print("◯オムライス … 550円/") print("◯ステーキ … 800円/

\n") print("

◯ホットケーキ … 400円/") print("◯スパゲッティー … 530円/") print("◯お好み焼 … 640円/") print("◯ハンバーガー … 250円/

\n") print("

◯ラーメン … 550円/") print("◯うどん … 450円/") print("◯そば … 450円/") print("◯カツ丼 … 510円/") print("◯親子丼 … 520円/") print("◯焼き肉 … 1500円

") print("

****************************************************************************

\n") print("
\n") m["ハンバーグ"] = 680 m["カレーライス"] = 600 m["オムライス"] = 550 m["ステーキ"] = 800 m["ホットケーキ"] = 400 m["スパゲッティー"] = 530 m["お好み焼"] = 640 m["ハンバーガー"] = 250 m["ラーメン"] = 550 m["うどん"] = 450 m["そば"] = 450 m["カツ丼"] = 510 m["親子丼"] = 520 m["焼き肉"] = 1500 printf("

あなたの外食でかかる金額は %d 円です。

\n",m[shi]*nin) # 合計金額を表示 print("

\n") print("\n") print("\n") d.各部の解説 上記に明記 e.実行結果 & 考察 実行結果を調べるために、bc -l で確認すると、 ◯ハンバーグが2個の場合 pan{c109130}% bc -l [~/public_html/advertise2/rubycgi] 680 * 2 1360 quit となり、実行結果と一致したので正しく実行できたといえる。 同様に調べていくと ◯オムライスが3個の場合 pan{c109130}% bc -l [~/public_html/advertise2/rubycgi] 550 * 3 1650 quit ◯ステーキが4個の場合 pan{c109130}% bc -l [~/public_html/advertise2/rubycgi] 800 * 4 3200 quit ◯ラーメンが5個の場合 pan{c109130}% bc -l [~/public_html/advertise2/rubycgi] 550 * 5 2750 quit ◯カツ丼が3個の場合 pan{c109130}% bc -l [~/public_html/advertise2/rubycgi] 510 * 3 1530 quit ◯焼き肉が2個の場合 pan{c109130}% bc -l [~/public_html/advertise2/rubycgi] 1500 * 2 3000 quit となり、すべて実行結果と一致した。したがってこれは正常である。 ※最初、Kterm で確認すると pan{c109130}% ./gaishoku.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) shina ="ハンバーグ" ninnzu ="2" Content-type: text/html; charset=EUC-JP 外食メニュー

外食メニューは・・・


☆ メニュー :

☆ 品数 : 0 [人前]


******************************メニュー表************************************


◯ハンバーグ … 680円 /◯カレーライス … 600円/◯オムライス … 550円/◯ステーキ … 800円/

◯ホットケーキ … 400円/◯スパゲッティー … 530円/◯お好み焼 … 640円/◯ハンバーガー … 250円/

◯ラーメン … 550円/◯うどん … 450円/◯そば … 450円/◯カツ丼 … 510円/◯親子丼 … 520円/◯焼き肉 … 1500円

****************************************************************************

./gaishoku.rb:59: undefined method `*' for nil:NilClass (NoMethodError) となるばかりで正常に表示されることが出来なかった。 原因をつきとめると shina ="ハンバーグ" ninnzu ="2" の所をくっつけ て入力していないためにエラーが出てきたことが分かった。 訂正して実行してみると、 pan{c109130}% ./gaishoku.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) shina="ハンバーグ" ninnzu="2" Content-type: text/html; charset=EUC-JP 外食メニュー

外食メニューは・・・


☆ メニュー : ハンバーグ

☆ 品数 : 2 [人前]


******************************メニュー表************************************


◯ハンバーグ … 680円 /◯カレーライス … 600円/◯オムライス … 550円/◯ステーキ … 800円/

◯ホットケーキ … 400円/◯スパゲッティー … 530円/◯お好み焼 … 640円/◯ハンバーガー … 250円/

◯ラーメン … 550円/◯うどん … 450円/◯そば … 450円/◯カツ丼 … 510円/◯親子丼 … 520円/◯焼き肉 … 1500円

****************************************************************************

あなたの外食でかかる金額は 1360 円です。

となって、正常に実行できるようになった。 3.キャラクター キャラクターのリンク先は 「http://roy/~c109130/advertise2/rubycgi/char_r2_c109130.png」 冬にふさわしい雪だるまを製作した。 4.感想 今回の課題はとても手間がかかった。内容が盛りだくさんで友達と協力しなが ら取り組むことができた。まだ不十分のところもあるので改良できるところ は改良していかなければならない。 5.参考文献等 ◯共同学習者 ・池田博哉 ・遠藤孝之