第 9 回 ことえらび レポート課題
氏名:加藤恭平
学籍番号:c110054
語学クラス:英語2
コース(系):政策マネジメント
1.筆記問題
A.ラジオボタンは
自由席
のように入力すると作成できる選択肢の中から1つだけ選択させる方法である。
type="radio"でラジオボタンであることを表し、
name="seat"の部分は使うラジオボタンを区別するためのラジオボタンの名前
を表す。
value="自由席"の部分はユーザーが選んだ場合にプログラムに送られる値であ
る。この場合"自由席"という値がプログラムに送られる。
B.チェックボックスは、
土産物クーポン
のように入力すると作成でき、複数の選択肢を作成することができる。
type="checkbox" でチェックボックスであることを表し、
name="gift"の部分は使うチェックボックスを区別するためのチェックボック
スの名前である。
value="土産"の部分はユーザーが選んだ場合にプログラムに送られる値であ
る。この場合"土産"という値がプログラムに送られる。
2.プログラム問題
A.カウンターの解説
カウンタープログラムへのリンク
「http://roy/~c110054/rubycgi/count.rb」
a)考えた設定
カウンタのページがクリックされる度にカウントして、クリックしたユーザーが
何番目にこのページに訪れたのかを表示するプログラム(count.rb)
b)作成したプログラム
#!/usr/koeki/bin/ruby
require 'cgi' # cgiの実行を要求
cgi = CGI.new("html4") # html4 に準拠してCGIを実行
print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語表記にする
arv = cgi["arrive"]
number = 0 # 数値をカウントするための変数。初期値は0
open("number.txt","r") do |read|
# number.txtを読み取り、read という名前に置き換える
while data = read.gets
if /(\d+)/ =~ data
number = $1.to_i # 数値で表示させる
end # ifに対するend
end # whileに対するend
end # openに対するend
# print文で HTML 文章を表示させる
print("\n") # html文章を書き始める
print("
\n") # head開始
print("おいでませ\n")
print("\n") # head終了
print("\n") # 本体を書き始める
printf("貴方は %d 番目のお客様です。
\n", number)
print("ゆっくりしていってね!!
\n")
print("\n") # 本体を書き終える
print("\n") # html文章を書き終える
number += 1 # # WEBページで出力される度(ページが開かれる度)に,
数値をカウントするため、numberに1を足す。
open("number.txt","w") do |write|
write.printf("%d\n",number) # number.txt値を書き込んで数値を表示
させる
end # openに対するend
c)もとにしたプログラム
第9回 レポート課題のページのカウンタ例 を参考にした。
d)実行結果
pan{c110054}% ./count.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
arrive="58"
Content-type: text/html; charset=EUC-JP
おいでませ
貴方は 1 番目のお客様です。
ゆっくりしていってね!!
e)考察
pan{c110054}% ./count.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
arrive="59"
Content-type: text/html; charset=EUC-JP
おいでませ
貴方は 2 番目のお客様です。
ゆっくりしていってね!!
pan{c110054}% ./count.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
arrive="60"
Content-type: text/html; charset=EUC-JP
おいでませ
貴方は 3 番目のお客様です。
ゆっくりしていってね!!
実行結果の1番目に加えて2回実行したが 2番目→3番目と正確にカウントされていること
が分かった。よってこのプログラムは正しいと言える。
B.ホームページで計算できるCGIスクリプトプログラム
計算プログラムへのリンク
「http://roy/~c110054/rubycgi/keisan.html」
a)考えた設定
ふたつの数値を入力して足し算、引き算、割り算、掛け算が可能なCGIスクリプ
トプログラム
b)作成したプログラム
#!/usr/koeki/bin/ruby
require 'cgi' # cgiの実行を要求
cgi = CGI.new("html4") # html4 に準拠してCGIを実行
print("Content-type: text/html; charset=EUC-jp\n\n")
suji1 = cgi["suji1"] # Ruby に CGIでもらってきた値(suji1)を代入
suji2 = cgi["suji2"] # Ruby に CGIでもらってきた値(suji2)を代入
suji3 = cgi["suji3"] # Ruby に CGIでもらってきた値(suji3)を代入
print("\n") # html文を開始する
print("\n") # headを書きはじめる
print("計算プログラム\n") #ページのタイトル
print("\n") # head終了
print("\n") # 本体を書きはじめる
if suji3 == "tasu" # 足し算が選択された場合
s = suji1.to_i + suji2.to_i 入力された数値で足し算を行う
elsif suji3 == "hiku" # 引き算が選択された場合
s = suji1.to_i - suji2.to_i 入力された数値で引き算を行う
elsif suji3 == "kakeru" # 掛け算が選択された場合
s = suji1.to_i * suji2.to_i 入力された数値で掛け算を行う
else # それ以外の場合
s = suji1.to_f / suji2.to_f 入力された数値で割り算を行う
end
print("計算結果
\n")
if suji3 == "tasu"
printf("%d + %d = %d
\n",suji1 ,suji2 ,s)
elsif suji3 == "hiku" #上と同じ構造で
計算結果を代入
して表示
printf("%d - %d = %d
\n",suji1 ,suji2 ,s)
elsif suji3 == "kakeru"
printf("%d * %d = %d
\n",suji1 ,suji2 ,s)
else
printf("%d / %d = %f
\n",suji1 ,suji2 ,s.to_f)
end
print("\n") # 本体を描き終わる
print("\n") # html文を終了する
-------------------------------------------------------------------------------
以下はkeisan.htmlを貼り付ける
計算プログラム
計算プログラム
c)もとにしたプログラム
2010年度授業用ページより、昨年度の先輩が作成したkeisan.rbとkeisan.html
d実行結果
足し算の場合
pan{c110054}% ./keisan.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
suji1=6
suji2=9
suji3="tasu"
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
6 + 9 = 15
引き算の場合
pan{c110054}% ./keisan.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
suji1=16
suji2=7
suji3="hiku"
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
16 - 7 = 9
掛け算の場合
pan{c110054}% ./keisan.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
suji1=5
suji2=9
suji3=kakeru
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
5 * 9 = 45
割り算の場合
pan{c110054}% ./keisan.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
suji1=42
suji2=7
suji3=waru
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
42 / 7 = 6.000000
e)考察
それぞれの計算結果をbc -lで確かめてみる。
pan{c110054}% bc -l [~/public_html/rubycgi]
6+9
15
16-7
9
5*9
45
42/7
6.00000000000000000000
以上の結果から正しく計算されているのでこのプログラムは正しいと言える。
D.きせかえができる CSS を自動生成するプログラム。
色変えプログラムへのリンク
「http://roy/~c110054/rubycgi/color.html」
a)考えた設定
ユーザーが色名を選択すると、CSSファイルを読みこみ、その色のページが表示
されるプログラム
c)作成したプログラム
#!/usr/koeki/bin/ruby
require 'cgi' # cgiの実行を要求
cgi = CGI.new("html4") # html4 に準拠してCGIを実行
print("Content-type: text/html; charset=EUC-jp\n\n")
color = cgi["color"] # Ruby に CGIでもらってきた値を代入
print("\n") # html文を開始する
print("\n") # headを書きはじめる
print("色変えプログラム\n") # ページのタイトル
if color == "seiji" # 青磁色が選択された場合
print("\n")
# iro1のcssを使う
elsif color == "kikyou" # 桔梗色が選択された場合
print("\n")
# iro2のcssを使う
elsif color == "suou" # 蘇芳色が選択された場合
print("\n")
# iro3のcssを使う
else # それ以外(瑠璃色)が選択された場合
print("\n")
# iro4のcssを使う
end # ifに対するend
print("\n") # head終了
print("\n") # 本体を書きはじめる
print("色変えプログラム
\n") # 見出し
print("
\n") # 改行
print("作者が主に言葉の響きだけで選んだ四色に色が変わります
\n")#説明文 print("\n") # body の終わり
print("\n") # html の終わり
--------------------------------------------------------------------------------
以下はcolor.htmlを貼り付ける。
色変えプログラム
色変えプログラム
作者が主に言葉の響きだけで選んだ四色に色が変わります
c)もとにしたプログラム
2010年度授業用ページより、昨年度の先輩が作成したcolor.rbとcolor.html
d)実行結果
青磁色の場合
pan{c110054}% ./color.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
color="seiji"
Content-type: text/html; charset=EUC-jp
色変えプログラム
色変えプログラム
作者が主に言葉の響きだけで選んだ四色に色が変わります
桔梗色の場合
pan{c110054}% ./color.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
color="kikyou"
Content-type: text/html; charset=EUC-jp
色変えプログラム
色変えプログラム
作者が主に言葉の響きだけで選んだ四色に色が変わります
蘇芳色の場合
pan{c110054}% ./color.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
color="suou"
Content-type: text/html; charset=EUC-jp
色変えプログラム
色変えプログラム
作者が主に言葉の響きだけで選んだ四色に色が変わります
瑠璃色の場合
pan{c110054}% ./color.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
color="ruri"
Content-type: text/html; charset=EUC-jp
色変えプログラム
色変えプログラム
作者が主に言葉の響きだけで選んだ四色に色が変わります
以上、選択した通りにiro1〜4が表示されているのでこのプログラムは正しいと
言える。
--------------------------------------------------------------------------------
筆記問題 C.
Tgifに関して
題名「基礎プログラミングの要素を無理矢理後付けしたデフォルメ巫女」
解説 基本は題名の通りです。とりあえず人を書こうとして色々と迷走していた
らかなり時間をかけた末に巫女のような人が完成したので、Rubyと表示し
たパソコンと基礎プロと書かれている玉串を持たせて無理矢理プログラミ
ングの要素を持たせた上で提出することにした結果です。
感想
金曜日から土曜日にかけて残り、三つのプログラムを完成させたのですが、html
作成まで終わらず土曜日がバイトだったために日曜日に提出する結果となってし
まったのが今回最大の心残りとなりました。
プログラムの内容の方は作成に非常に時間を要しましたが、ラジオボタン、テキ
ストフィールドなどの今回学習した内容を実際に使用して復習することが出来ま
した。
今回作った課題をまとめたページのリンク
「http://roy/~c110054/rubycgi/fork.html」
※前回の授業の際に、rubycgiをadvertise2の中ではなく public_htmlに直接作
成してしまったので課題用ページのURLとは違ってしまいました。
--------------------------------------------------------------------------------
参考文献
基礎プログラミング II 第 9 回 (ことえらび) 「ラジオボタンの作り方」
http://roy/~madoka/2011/r2/09/r2_09_04_theme_04_radio.html
著者 西村まどか
基礎プログラミング II 第 9 回 (ことえらび) 「テキストフィールドの作り方」
http://roy/~madoka/2011/r2/09/r2_09_06_theme_06_textfield.html
著者 西村まどか
2010年度基礎プログラミング II 第9回 CGIことえらび 第 9 回 レポート講評
http://roy/~madoka/2010/r2/09/rpt/c108203.txt
http://roy/~madoka/2010/r2/09/rpt/c109074.txt
著者 西村まどか
昨年度の先輩