第 9 回 ことえらび レポート課題
氏名: 松田 大輝
学籍番号: c1101804
語学クラス: 中国語
コース(系): 地域共創コース
1、筆記問題
A、ラジオボタンとは、複数の選択肢の中から 1 つだけ選ぶ方法である。
具体的に言うと講義ノートに書いてあるように
自由席、指定席、スーパーシートの中から 1 つを選ばせている。
実際のプログラムを見てみる。
自由席
指定席
スーパーシート
input typeで ラジオボタンを作ることを定義している。
name でラジオボタンを区別、判断するために使用。
value で 選択されたものを <> 後の値としてプログラムに送られる。
また、checked と入れることによって、最初から
既定値(ここでは「指定席」)に設定できるようになる。
B、チェックボタンとは、複数の選択肢の中から いくつか選べる方法である。
具体的に言うと講義ノートに書いてあるように
豪華和食バイキング、土産物クーポン、はえぬき詰め放題、喫煙
の中から複数、選ばせている。
豪華和食バイキング
土産物クーポン
はえぬきプレゼント
喫煙
input typeで ラジオボタンを作ることを定義している。
name でラジオボタンを区別、判断するために使用。
value で 選択されたものを <> 後の値としてプログラムに送られる。
また、checked と入れることによって、最初から
既定値(ここでは「指定席」)に設定できるようになる。
そして、選択されているものをまた選択すると
選択されていない状態に戻ってしまう。
C、作成した画像
http://roy/~c110180/advertise2/char_r2_c110180.png
題名: 「おむルビまん」
解説:「おむすび」と「ルビー」を混ぜて「おむルビまん」とした。
まず、おむすびを描いてからそこから、変化させていった。
作った方法: まず三角形を描き、その三角の角をとっていった。
そこに、丸や四角を使用し海苔や目を描いた。
工夫した点: 一番の工夫した点は三角の角をとったことである。
講義中におしえてもらったが忘れてしまい
試行錯誤の上でできた。
2、プログラム問題
今回作成したプログラム問題のリンクアドレスは
http://roy/~c109xxx/advertise2/rubycgi/fork.html
となっている。
A、
1、CGI の題名とその意図
CGI の題名 を「カウンタ」と設定した。
意図としては 訪問人数を調べるプログラムのため この題名にした。
そして、今回のレポート課題に記載されている
「例」や「構造」がどのように
動いているか理解するためも実際に作成してみた。
2、考えた設定
自分のホームページにどれほどの人数が訪問してきたか
計算してくれるプログラムを作成した。
また、見やすいように色などを使用し
綺麗に表示されるようにした。
3、作成したプログラム(説明)
#!/usr/koeki/bin/ruby # 最初に書かなければいけないもの
require 'cgi' # ここで CGI 変数を使用することを定義した
cgi = CGI.new("html4") # CGI を HTML 文書で使用することを定義した
print("Content-type: text/html; charset=EUC-jp\n\n")
# 上の2文で受け取ったデータを使用しCGIを実行することを定義した
houmon = 0 # ここで houmon の値を 0 と定義した
open("kaunta.txt" , "r") do |suuti|
# open メソッドを使用しファイルからデータを読み込んでいる
# ここでのファイルとは kaunta.txt
# モードは読み込み専用である "r" を使用した
# 変数 suuti と定義した
while kazu = suuti.gets # 繰り返しを継続する条件であるwhileを使用
if /(\d+)/ =~ kazu
# ファイルからデータを読み込み kazu に代入させた
# メタ文字は数字にマッチさせる \d と
# 1回以上の繰り返しにマッチさせる + を使用
houmon = $1.to_i # $1 の値を 変数 houmon に代入させた
end # if の end
end # while の end
end # open の end
print("\n") # ここから html 文が始まる
print("
\n") # 本文前の タイトルやスタイルを定義するための
# 場所である head が始まる
print("訪問者数\n") # ここでタイトルを定義した
print("\n")
# ここで リンクを fork.css につなぎ
# Webページの文字の大きさや色等の見栄えを変更させている
print("\n") # ここで 10 行前の head を閉じた
print("\n") # ここから 本文を書くための body が始まる
print("訪問者数を調べています
\n")
print("
%d 人\n",houmon)
# printf を用いて 訪問人数の結果を表示させた
print("
\n") # ここで 3 行前の h3 を閉じた
print("
\n") # 改行するためにこの文章を作成
print("\n") # ここで body を閉じた
print("\n") # ここで html を閉じた
houmon += 1 # houmon の値( 0とした) に 1ずつ加算されるようにした
open("kaunta.txt" , "w") do |suuti2|
# open メソッドを使用しファイルからデータを読み込んでいる
# ここでのファイルとは kaunta.txt
# モードは書き込み専用専用である "r" を使用した
# 変数 suuti2 と定義した
suuti2.printf("%d\n",houmon) # printf を使用し houmonの値を表示
end # open の end
4、もとにしたプログラムからの変更点
今回のレポート課題のところに記載されていた 「構造」を基にした。
変更点は プログラム内の変数を自分でわかりやすいよいに
変更していった。
5、実行結果
ーーーーーーーーーーーーーーーーーーーー
訪問者数を調べています
この時点で訪れた人数は
41 人
ーーーーーーーーーーーーーーーーーーーーーーーー
訪問者数を調べています
この時点で訪れた人数は
42 人
ーーーーーーーーーーーーーーーーーーーーーー
6、結果の考察
ホームページ上で訪問するたびに 1 ずつ数字が加算されていた。
このように、正しく 1ずつ加算されているか kterm でも調べてみる。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
pan{c110180}% ./kaunta.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪問者数
訪問者数を調べています
この時点で訪れた人数は43 人
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
pan{c110180}% ./kaunta.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
Content-type: text/html; charset=EUC-jp
訪問者数
訪問者数を調べています
この時点で訪れた人数は44 人
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
kterm で調べてみても訪問人数は 正しく 1ずつ加算されていたため
プログラムが正しいことが確認できた。
B、
1、CGI の題名とその意図
CGI の題名を「計算」と設定した。
意図としては、ただ入力してその結果が表示されるだけでなく
ラジオボタン方式を使用しホームページ上で
計算してくれるプログラムのためこの題名にした。
2、考えた設定
ホームページ上で計算できる CGI スクリプトの
プログラムを作成した。数値を入力してもらい
ラジオボタンで計算方法を選んでもらうようにした。
また、割った時は小数点以下も表示されるようにした。
3、作成したプログラム(説明)
ーーーーーーーーーーーー入力部分 keisan.htmlーーーーーーーーーーーー
計算プログラム
計算プログラム
ーーーーーーーー送信結果の表示する部分 keisan.rbーーーーーーーーーーーー
#!/usr/koeki/bin/ruby # 最初に書かなければいけないもの
require 'cgi' # ここで CGI 変数を使用することを定義した
cgi = CGI.new("html4") # CGI を HTML 文書で使用することを定義した
print("Content-type: text/html; charset=EUC-jp\n\n")
# 上の2文で受け取ったデータを使用しCGIを実行することを定義した
k1 = cgi["kazu1"] # 変数 k1 に kazu1 を代入して
# CGIにおいて使用できるようにした
k2 = cgi["kazu2"] # 変数 k2 に kazu2 を代入して
# CGIにおいて使用できるようにした
en = cgi["enzan"] # 変数 en に enzan を代入して
# CGIにおいて使用できるようにした
print("\n") # ここから html 文が始まる
print("\n") # 本文前の タイトルやスタイルを定義するための
# 場所である head が始まる
print("計算プログラム\n") # ここでタイトルを定義した
print("\n")
# ここで リンクを fork.css につなぎ
# Webページの文字の大きさや色等の見栄えを変更させている
print("\n") # ここで 9 行前の head を閉じた
print("\n") # ここから 本文を書くための body が始まる
# これからif 文を用いて条件判断させている。
if en == "pura" # もし en (enzanを代入したもの) が
# pura (+)だった場合。
goukei = k1.to_i + k2.to_i # k1 と k2 の数値を加算し、その値を
# goukei としている
elsif en == "mai" # 条件が 2つ以上のため elsif を使用している
# もし en (enzanを代入したもの) が mai (-)だった場合。
goukei = k1.to_i - k2.to_i # k1 から k2 の数値を減算し、その値を
# goukei としている
elsif en == "kake" # もし en (enzanを代入したもの) が
# kake (×)だった場合。
goukei = k1.to_i * k2.to_i # k1 と k2 の数値を乗算し、その値を
# goukei としている
elsif en == "waru" # もし en (enzanを代入したもの) が
# waru (÷)だった場合。
goukei = k1.to_f / k2.to_f # k1 から k2 の数値を除算し、その値を
# goukei としている
end # 26行前のif の end
print("計算結果
\n") # print を用いて文章を表示させている。
if en == "pura" # もし、 pura (+)だった場合
printf("%d + %d = %d
\n",k1 ,k2 ,goukei)
# printf を用いて 計算結果を表示させた
elsif en == "mai" # もし、 mai (-)だった場合
printf("%d - %d = %d
\n",k1 ,k2 ,goukei)
# printf を用いて 計算結果を表示させた
elsif en == "kake" # もし、 kake (×)だった場合
printf("%d * %d = %d
\n",k1 ,k2 ,goukei)
# printf を用いて 計算結果を表示させた
elsif en == "waru" # もし、 waru (÷)だった場合
printf("%d / %d = %f
\n",k1 ,k2 ,goukei.to_f)
# printf を用いて 計算結果を表示させた
# waru (÷) の場合のみ小数点以下も表示させるため
# %s としている
end # 18 行前の if の end
print("\n") # ここで body を閉じた
print("\n") # ここで html を閉じた
4、もとにしたプログラムからの変更点
講義中に作成したプログラム (ticket.rb) を基にした。
変更点は CGI スクリプト で選んでもらうだけでなく
数値を入力してもらうようにした。
5、実行結果
数値1が 59255、 数値 2が432987 で
" + " 場合を選んだ場合
計算結果
432987 + 59255 = 492242
ーーーーーーーーーーーーーーーーーー
" - "を選んだ場合
計算結果
432987 - 59255 = 373732
ーーーーーーーーーーーーーーーーーー
" × "を選んだ場合
計算結果
432987 * 59255 = 25656644685
ーーーーーーーーーーーーーーーーー
" ÷ "を選んだ場合
計算結果
432987 / 59255 = 7.307181
ーーーーーーーーーーーーーーー
6、結果の考察
計算が正しいか調べる。
pan{c110180}% bc -l [~/public_html/rubycgi]
432987+59255
492242
pan{c110180}% bc -l [~/public_html/rubycgi]
432987-59255
373732
pan{c110180}% bc -l [~/public_html/rubycgi]
432987*59255
25656644685
pan{c110180}% bc -l [~/public_html/rubycgi]
432987/59255
7.30718082862205721036
以上の結果からすべての計算が正しいことを確認できた。
3、感想
今回の課題は今までで一番難しく感じた。プログラム問題の C と D は
手をつけたが理解できず断念した。
Cは、2 つ以上の組み合わせでプログラムは、作成したが
そこに グラフをつけ足すのが上手くいかなかった。
Dは、リンクで .css を何パターンも作成して色を変化させていくものだと
思ったが、細かい作業が上手くいかずできなかった。
キャラクタ画像の作成は、新しい内容ばかりで最初、戸惑ったが
慣れてくると思いどおりに動かせた。
私の技術力の中で最高のものが作成できたと思っている。
一応、前回と同じように今回の課題を 個人プログラム広告ページの
http://roy/~c110180/advertise2/index.html
第 9 回 の講義レポートという枠の中にすべて載せておいた。
4、参考文献
西村先生の2011 年度 基礎プログラミング II 講義ノート
http://roy/~madoka/2011/r1/12/
9. ことえらび http://roy/~madoka/2011/r2/09/
1.結果を分岐させるには
http://roy/~madoka/2011/r2/09/r2_09_01_theme_01_branch.html
2.エラーの分析
http://roy/~madoka/2011/r2/09/r2_09_02_theme_02_error.html
3.CGI スクリプトによる結果表示
http://roy/~madoka/2011/r2/09/r2_09_03_theme_03_result.html
4.ラジオボタンの作り方
http://roy/~madoka/2011/r2/09/r2_09_04_theme_04_radio.html
5.チェックボックスの作り方
http://roy/~madoka/2011/r2/09/r2_09_05_theme_05_checkbox.html
西村先生の2011 年度 基礎プログラミング I 講義ノート
http://roy/~madoka/2011/r1/
12.自由課題コンペティション / 画像作成 http://roy/~madoka/2011/r1/12/
1.戦略会議
http://roy/~madoka/2011/r1/12/r1_12_01_theme_01_correction.html
2.描画ソフト
http://roy/~madoka/2011/r1/12/r1_12_02_theme_02_painttool.html
3.2D Draw 系ツール での作画
http://roy/~madoka/2011/r1/12/r1_12_03_theme_03_tgifexample.html
4.ツールバー各部分の解説
http://roy/~madoka/2011/r1/12/r1_12_04_theme_04_tgiftoolbar.html