連絡先と氏名、アドレスが間違っていたので直しました。
第9回 基礎プログラミング II レポート課題
氏名: 横山 広樹
学籍番号: c109149A
語学クラス: 英語 1
コース(系): 環境サイエンス
1.
A.
ラジオボタンは とすることでラジオボタンを作
ることが出来る。ラジオボタンはクリックすることで選択することが出来るもの
である。
B.
チェックボタンは とすることでチェックボタ
ンを作ることが出来る。チェックボタンはクリックすることで選択することが出
来るが、ラジオボタンと違いいくつか選ぶことが出来る。
2.
A.
1.リンク先
http://roy.e.koeki-u.ac.jp/~c109149/advertise2/rubycgi/count.rb
2.CGIの題名とその意図
訪れた人のカウンター
訪れた人を数え何人訪れたか知りたいと思ったから。
3.表示部分
#!/usr/koeki/bin/ruby
require 'cgi' # require で cgi が使えるようにする
cgi = CGI.new("html4") # cgi という名前で CGI をつくる バージョンは4
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを使う宣言をする
count = 0 # 最初は0人から始めるので0を代入
open("count.txt" , "r") do |r|
# dat/count.txtを読みこみモードで開きrという名前に置き換える
while kazu = r.gets # データがなくなるまで繰り返す
if /(\d+)/ =~ kazu # もしデータが数字だったら
count = $1.to_i # countにデータを代入
end # ifのend
end # whileのend
end # openのend
print("\n") # html始め
print("
\n") # タイトル、文章へヘッダ情報を記述する
print("訪れた人数 \n") # ホームページのタイトル
print(" \n")
# ホームページの色やタイプなどをリンクしている
print("\n") # head の終わり
print("\n") # body の始め
print("訪れた人数 \n") # ホームページの見出し
print("\n") # ホームページの見出しの始まり
print(" \n") # 改行
printf("いままで訪れた人: %d\n",count)
# いままで訪れた人の表示
print(" \n") # 改行
print(" \n") # 改行
print(" \n") # ホームページの見出しの終わり
print("\n")
print("連絡先:横山広樹 c109149@e.koeki-u.ac.jp \n")
print(" \n")
print("© c109149A 横山 広樹 \n")
print("
\n")
print("\n") # body の終わり
print("\n") # html の終わり
count += 1 # countを1人訪れたので1足す
open("count.txt" , "w") do |k|
# dat/count.txtを書きこみモードで開きkという名前で置き換える
k.printf("%d\n",count) # dat/count.txtに今のcountを書きこむ
end # openのend
4.各部の説明
最初のopenで現在のデータの数字をcountに代入する。
printf("いままで訪れた人: %d\n",count)で今の訪れた人を表示する。
最後のopenでcountに1を足した数を書きこむ
5.実行結果
roy{c109149}% ./count.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪れた人数
訪れた人数
いままで訪れた人: 4
連絡先:横山広樹 c109149@e.koeki-u.ac.jp
© c109149A 横山 広樹
B.
1.リンク先
http://roy.e.koeki-u.ac.jp/~c109149/advertise2/rubycgi/calc.html
2.CGIの題名とその意図
自動計算
ホームページで数字を入力すると自動で計算してくれるものを作りたかった。
3.入力部分と送信結果
入力部分
計算プログラム
計算プログラム
入力する文字は8文字以内で数字でお願いします
連絡先:横山広樹 c109149@e.koeki-u.ac.jp
© c109149A 横山 広樹
送信結果の部分
#!/usr/koeki/bin/ruby
require 'cgi' # require で cgi が使えるようにする
cgi = CGI.new("html4") # cgi という名前で CGI をつくる バージョンは 4
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを使う宣言をする
kazu1 = cgi["kazu1"] # 受け取ったデータをkazu1に代入
kazu2 = cgi["kazu2"] # 受け取ったデータをkazu2に代入
enzan = cgi["enzan"] # 受け取ったデータをenzanに代入
print("\n") # html の始め
print("\n") # タイトル、文章へヘッダ情報を記述する
print("計算プログラム \n") # ホームページのタイトル
print(" \n")
# ホームページの色やタイプなどをリンクしている
print("\n") # head の終わり
print("\n") # body の始め
if enzan == "tasu" # もしenzanがtasuだったら
s = kazu1.to_i + kazu2.to_i # kazu1とkazu2を整数に直して足し、sに代入
elsif enzan == "hiku" # もしenzanがhikuだったら
s = kazu1.to_i - kazu2.to_i # kazu1とkazu2を整数に直して引き、sに代入
elsif enzan == "kakeru" # もしenzanがkakeruだったら
s = kazu1.to_i * kazu2.to_i # kazu1とkazu2を整数に直して掛けて、sに代入
else # もしそれ以外だったら
s = kazu1.to_f / kazu2.to_f # kazu1とkazu2を少数に直して割り、sに代入
end # ifのend
print("計算結果 \n") # ホームページの見出し
if enzan == "tasu" # もしenzanがtasuだったら
printf("%d + %d = %d \n",kazu1 ,kazu2 ,s)
elsif enzan == "hiku" # もしenzanがhikuだったら
printf("%d - %d = %d \n",kazu1 ,kazu2 ,s)
elsif enzan == "kakeru" # もしenzanがkakeruだったら
printf("%d * %d = %d \n",kazu1 ,kazu2 ,s)
else # もしそれ以外だったら
printf("%d / %d = %f \n",kazu1 ,kazu2 ,s.to_f)
end # ifのend
print("\n")
print("連絡先:横山広樹 c109149@e.koeki-u.ac.jp \n")
print(" \n")
print("© c109149A 横山 広樹 \n")
print("
\n")
print("\n") # body の終わり
print("\n") # html の終わり
4.各部の解説
入力部分の
数値:
数値:
で相手に数字を入力してもらっている。
送信部分の
kazu1 = cgi["kazu1"]
kazu2 = cgi["kazu2"]
enzan = cgi["enzan"]
で入力されたものをそれぞれ変数に代入している。
if文で場合分けをして足す、引く、掛ける、割るをそれぞれしている。
最後に計算した結果を表示する。
5.実行結果
roy{c109149}% ./calc.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu1=2
kazu2=5
enzan="tasu"
Content-type: text/html; charset=EUC-jp
計算プログラム
計算結果
2 + 5 = 7
連絡先:横山広樹 c109149@e.koeki-u.ac.jp
© c109149A 横山 広樹
あっているか確かめ算をした。
roy{c109149}% bc -l [~/public_html/rubycgi]
2+5
7
確かめ算をすると7になった。プログラムで実行した結果も7になったのでこのプ
ログラムは正しく動いているといえる。
C
1.リンク先
http://roy.e.koeki-u.ac.jp/~c109149/advertise2/rubycgi/gurahu.html
2.CGIの題名とその意図
自動グラフ作成
傾きと切片を選択すると1次関数のグラフが描けないかと思い作った。
3.入力部分と送信部分
入力部分
グラフプログラ厶
グラフプラグラム
これは1次関数を表示します
連絡先:横山広樹 c109149@e.koeki-u.ac.jp
© c109149A 横山 広樹
送信結果の部分
#!/usr/koeki/bin/ruby
def itiji(a,x,b) # メソッドの定義
y = a * x + b # aとxを掛けbを足す
y - 1 # yの値から1を引く
y.to_i # yの値を呼び主に返す
end
def gurahu(c,d,e) # メソッドの定義
print("\n") # ホームページの見出しの始め
s = e - 1 # sにeから1を引いた値を代入する
print(" " + "-" * s + "*" + "-" * 40 + "- y \n")
# で空白を空け、-をsのぶんだけ表示し、*と表示する。そして-を40個
# 表示し、-yと表示する。 は改行
print("|" + " " * itiji(c,d,e) + "* \n")
# |を表示し、itiji(a,x,b)を呼びその値だけ空白を空ける。そして*を表示させ
# る。
printf("|" + " " * itiji(c,d+1,e) + "* \n")
printf("|" + " " * itiji(c,d+2,e) + "* \n")
printf("|" + " " * itiji(c,d+3,e) + "* \n")
printf("|" + " " * itiji(c,d+4,e) + "* \n")
print("| \n") # |と表示し改行する
print("x \n") # xと表示し改行する
print(" \n") # ホームページの見出しの終わり
end # defのend
require 'cgi' # require で cgi が使えるようにする
cgi = CGI.new("html4") # cgi という名前で CGI をつくる バージョンは 4
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを使う宣言をする
kazu1 = cgi["kazu1"] # 受け取ったデータをkazu1に代入
kazu2 = cgi["kazu2"] # 受け取ったデータをkazu2に代入
k = 1 # xの値は1から始めるので1を代入
print("\n") # html の始め
print("\n") # タイトル、文章へヘッダ情報を記述する
print("グラフプログラム \n") # ホームページのタイトル
print(" \n")
# ホームページの色やタイプなどをリンクしている
print("\n") # head の終わり
print("\n") # body の始め
print("結果 \n") # ホームページの見出し
printf("y = %dx + %d のグラフ \n",kazu1.to_i ,kazu2.to_i)
# ホームページの見出し
gurahu(kazu1.to_i,k,kazu2.to_i) # gurahuメソッドを呼出す
print("\n")
print("連絡先:横山広樹 c109149@e.koeki-u.ac.jp \n")
print(" \n")
print("© c109149A 横山 広樹 \n")
print("
\n")
print("\n") # body の終わり
print("\n") # html の終わり
3.各部の解説
入力部分の
でダウンメニューを表示させている。
送信結果部分の
kazu1 = cgi["kazu1"]
kazu2 = cgi["kazu2"]
で入力されたものをそれぞれ変数に代入している。
最後にgurahuメソッドを呼出し結果を表示する。
5.実行結果
roy{c109149}% ./gurahu.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
kazu1=2
kazu2=3
Content-type: text/html; charset=EUC-jp
グラフプログラム
結果
y = 2x + 3 のグラフ
--*----------------------------------------- y
| *
| *
| *
| *
| *
|
x
連絡先:横山広樹 c109149@e.koeki-u.ac.jp
© c109149A 横山 広樹
D.
1.リンク先
http://roy.e.koeki-u.ac.jp/~c109149/advertise2/rubycgi/iro.html
2.CGIの題名とその意図
自動着せ替え
cssを変えてホームページを変えられないかと思った。
3.入力部分と送信結果
入力部分
着せ変えプログラム
着せ変えプログラム
色が変わるよ
連絡先:横山広樹 c109149@e.koeki-u.ac.jp
© c109149A 横山 広樹
送信結果の部分
#!/usr/koeki/bin/ruby
require 'cgi' # require で cgi が使えるようにする
cgi = CGI.new("html4") # cgi という名前で CGI をつくる バージョンは 4
print("Content-type: text/html; charset=EUC-jp\n\n")
# 受け取ったデータを使う宣言をする
iro = cgi["iro"] # 受け取ったデータをiroに代入
print("\n") # html の始め
print("\n") # タイトル、文章へヘッダ情報を記述する
print("色プログラム \n") # ホームページのタイトル
if iro == "aka" # もしiroがakaだったら
print(" \n")
# iro1のcssを使う
elsif iro == "ao" # もしiroがaoだったら
print(" \n")
# iro2のcssを使う
elsif iro == "orenji" # もしiroがorenjiだったら
print(" \n")
# iro3のcssを使う
else # それ以外だったら
print(" \n")
# iro4のcssを使う
end # ifのend
print("\n") # headの終わり
print("\n") # bodyの始め
print("着せ変えプログラム \n") # ホームページの見出し
print(" \n") # 改行
print("色が変わるよ \n") # ホームページの見出し
print("\n")
print("連絡先:横山広樹 c109149@e.koeki-u.ac.jp \n")
print(" \n")
print("© c109149A 横山 広樹 \n")
print("
\n")
print("\n") # body の終わり
print("\n") # html の終わり
4.各部の解説
入力部分の
赤
青
オレンジ
緑
でラジオボタンを作っている。
送信部分の
iro = cgi["iro"]
で入力されたものを変数に代入している。
if文でどのcssを使うか場合によって分けている。
5.実行結果
roy{c109149}% ./iro.rb [~/public_html/rubycgi]
(offline mode: enter name=value pairs on standard input)
iro="aka"
Content-type: text/html; charset=EUC-jp
色プログラム
着せ変えプログラム
色が変わるよ
連絡先:横山広樹 c109149@e.koeki-u.ac.jp
© c109149A 横山 広樹
akaを選ぶとcssはiro1.cssが選ばれるので、このプログラムは正しくうごいてい
るといえる。
Tgifの題名
ネコ
作った方法
上から7番目を使い線を書いた。書いた後マウスで自分が納得する位置まで持っ
ていく。丸は上から4番目を使い丸を書いた。
工夫した点は目の輪郭を黄色ではなく黒にした。
感想
今回CGIのプログラムを作ってみて、一番大変だったのがグラフのCGIだった。プ
ログラムでどうやってホームページに空白を入れるか苦労した。調べた結果ホー
ムページで空白を入れるには、全角でスペースを入れるか とすると空白を
入れることができる。
参考文献
基礎プログラミング II 第9回 「CGIのことえらび」テキストフィールドの作り方
http://roy/~madoka/2010/r2/09/09_06_theme_04_textfield.html
西村まどか先生
基礎プログラミング II 第9回「CGIのことえらび」ファイルを使ってみよう
http://roy/~madoka/2010/r2/09/09_08_theme_06_hashfile.html
西村まどか先生
HTML-特殊文字-
http://pst.co.jp/powersoft/html/index.php?f=3401
共同学習者
青木 千紗 久保田 瑛一郎 小松 由里
添付