第 9 回 ことえらび レポート課題 氏名:菊地瑞紀 学籍番号:c1100673 語学クラス:英語6 コース(系):地域共創コース 1-A ラジオボタンとは複数の選択肢から一つだけ選択するもの。 (htmlの例) うさぎ かめ type="radio" でラジオボタンをつかう宣言をする。 name="animal" で使うラジオボタンの区別をする。複数の選択肢でもanimalの 部分は全て同じにする。 value="うさぎ" で選択した値をプログラムに送る また、inputタグにcheckedを入れると最初から選択されているように設定でき る。 (プログラム例) animal = cgi["animal"] で選択された項目をanimalに代入する 1-B チェックボックスは複数の選択肢から、一つだけでなく複数個選択できるもの。 (htmlの例) うさぎ かめ いぬ type="checkbox" でチェックボックスを使う宣言をする。 name="cute" で使うチェックボックスの区別をする。複数の選択肢の時は"" でくくられた部分の名前を全て異るものにする value="かわいい" で選択した値をプログラムに送る ラジオボタンと同様に、inputタグにcheckedを入れると最初から選択されているように設定でき る。 (プログラムの例) anm[0] = cgi["cute"] anm[1] = cgi["iyashi"] anm[2] = cgi["cool"] name="cute" で決まった変数を値を配列に代入する 1-C [タイトル] RUBY's sheep [解説、方法] トップページで羊が出てきたときに、かわいい羊の画像で課題で疲れた心を少し でも癒せればと思い、これを作った。 羊毛の部分は最初直線だったのが、友達にアドバイスにより曲線にした。 主に、直線と曲線を使用している。 また、吹き出しを作り、文字を入れた。 [工夫したところ] RUBYは楽しいものなので、色をたくさん使って楽しい感じにした。 塗りつぶしをボーダーやドットを使い、可愛くした。 広告ページに掲載しました http://roy/~c110067/advertise2/ 2 A B D を作成しました。 作成したプログラムの公開ページ http://roy/~c110067/advertise2/rubycgi/fork.html 2-A a、[カウンタのページリンク] http://roy/~c110067/advertise2/rubycgi/counter.rb b、 [タイトル] カウンタ [作成意図] 自分のHPに何人アクセスしているのかを調べたかった。また、ブログなど で良く見かけるカウンターの機能がどのようになっているのか理解しようと思っ たから。 c、d、 [入力部分] 入力部分は、アクセスした時点で入力される。 カウンター (http://roy/~c110067/advertise2/rubycgi/fork.html ソースより抜粋) この、カウンターのリンクを押した時点で入力される。 [表示部分(プログラム本体)] counter.rb #!/usr/bin/env ruby require 'cgi' # CGIを使う cgi = CGI.new("html4") # CGIをHTML文書に使う宣言 print("Content-type: text/html; charset=EUC-JP\n\n") # HTMLに書き込む、文字は日本語に arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 # "arrive" を arv として取りこむ number = 0 # カウンタ初期値は 0 から始まる open("number.txt","r") do |read| # number.txt を読み込む while data = read.gets # 読み込むデータが無くなるまで繰り返す if /(\d+)/ =~ data # データが一桁以上の数字だったら number = $1.to_i # number にその数字を整数として取りこむ end # if の end end # while の end end # open do の end print("\n") # htmlの始まり print("\n") # html の上部を表すタグ print("基礎プロ課題\n") # タイトル print("") # cssなどを定義する ここでは、fork.css print("\n") # head タグを閉じる print("\n") # body の始まり print("

カウンター

") # h1見出し printf("

あなたは %d 人目のお客様です*

\n", number) # h2 で人数を表示 print("

ゆっくりしていってね!

\n") # メッセージ print("課題のページへ[戻る]") # 戻れるようにするリンクタグ print("\n") # body を閉じる print("\n") # html を閉じる number += 1 # number に1を足していく open("number.txt","w") do |write| # number.txt に書き込む write.printf("%d\n",number) # 訪問者を書き込む end # open do の end e、[実行結果] カウンターのページより、 カウンター あなたは 32 人目のお客様です* ゆっくりしていってね! 課題のページへ[戻る] と表示された。 [考察] pan{c110067}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP 基礎プロ課題

カウンター

あなたは 37 人目のお客様です*

ゆっくりしていってね!

課題のページへ[戻る] pan{c110067}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP 基礎プロ課題

カウンター

あなたは 38 人目のお客様です*

ゆっくりしていってね!

課題のページへ[戻る] 2回実行したところ、37、38人と値が増えていることが分かり、またHPでも正し く表示された。したがって、このプログラムは正しいようである。 また、テキストファイル number.txt を chmod o+w とすることで -rw-r--rw- となっ た。そうすることで、number に 1 ずつ加算される。また、この number.txt は data ディレクトリのしたにファイルを作成した。 2-B a、 [計算プログラムのページリンク] http://roy/~c110067/advertise2/rubycgi/keisan.html b、 [タイトル] BMI・標準体重計算 [作成意図] 計算のプログラムで思いついたのが BMI の計算だった。前期もこのネタでプログ ラムを作っていたので、CGIで作ったら面白そうだと思った。 c、d、 [入力部分] keisan.html 計算プログラム

BMI・標準体重計算


BMIと標準体重の計算をします*

身長を入力(cm)

体重を入力(kg)

[表示部分(プログラム本体)] 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") # HTMLに書き込む、文字は日本語に height = cgi["height"] # Ruby に CGI でもらってきた値を代入 weight = cgi["weight"] # height を "height" として、 weight を "weight"として取りこむ print("\n") # htmlのはじまり print("\n") # head の上部を表すタグ print("計算プログラム\n") # ホームページのタイトル print("\n") # css の定義 ここでは fork.css print("\n") # head タグを閉じる print("\n") # body のはじまり print("

計算結果

\n") # h1見出し bmi = weight.to_f / (height.to_f/100) **2 # BMI の計算式 printf("

あなたのBMIは %d です

\n",bmi) # h2で結果を表示 standerd = (height.to_f/100 ) **2*22 # 標準体重の計算式 printf("

身長から見た標準体重は %2.1f です

\n",standerd) # h2で結果を表示 print("課題のページへ[戻る]\n") # 戻れるようにするリンクタグ print("\n") # body を閉じる print("\n") # html を閉じる e、[実行結果] Web 計算結果 あなたのBMIは 20 です 身長から見た標準体重は 63.6 です 課題のページへ[戻る] Kterm pan{c110067}% ./keisan.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) height=170 weight=60 Content-type: text/html; charset=EUC-jp 計算プログラム

計算結果

あなたのBMIは 20 です

身長から見た標準体重は 63.6 です

課題のページへ[戻る] pan{c110067}% ./keisan.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) weight=a height=b Content-type: text/html; charset=EUC-jp 計算プログラム

計算結果

./keisan.rb:25:in `printf': NaN (FloatDomainError) from ./keisan.rb:25 [考察] pan{c110067}% bc -l [~/public_html/advertise2/rubycgi] 60/(170/100)^2 20.76124567474048442906 (170/100)^2*22 63.58000000000000000000 bc -l で計算の確認をしたところあっていた。また、数字以外のものを入力する とエラーがでてしまったが。どうすればよいのか分からず、直すことができなかっ た。 2-D a、[きせかえプログラムのページリンク] http://roy/~c110067/advertise2/rubycgi/change.html b、 [タイトル] CHANGE* [作成意図] スタイルシートが一瞬にして変化するプログラムがあったら面白いと思った。 また、画面が一瞬で切り替わることでページに動きをつけることが出来るよう になるのではないかと思い作成した。 c、d、 [入力部分] きせかえプログラム

CHANGE*

色をかえます!

好きな季節を選んで下さい

c110067@f.koeki-u.ac.jp
[表示部分(プログラム本体)] #!/usr/bin/env ruby require 'cgi' # CGIを使う cgi = CGI.new("html4") # CGIをHTML文書に使う宣言 print("Content-type: text/html; charset=EUC-JP\n\n") # HTMLに書き込む、文字は日本語に color = cgi["color"] print("\n") # htmlの始まり print("\n") # html の上部を表すタグ print(" CHANGE \n") # タイトル if color == "spring" # if で場合わけ print("") # cssの定義 "spring" のときは change1.css elsif color == "summer" print("") # cssの定義 "summer" のときは change2.css elsif color == "autum" print("") # cssの定義 "autum" のときは change3.css else color == "winter" print("") # cssの定義 "winter" のときはchange4.css end print("\n") # head タグを閉じる print("\n") # body の始まり print("

CHANGE*

\n") # h1見出し printf("

色をかえます!

\n") # h2 で人数を表示 print("

好みの色はみつかりましたか?

\n") # メッセージ print("課題のページへ[戻る]\n") # 戻れるようにするリンクタグ print("\n") # body を閉じる print("\n") # html を閉じる e、[実行結果] spring -- 春 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="spring" Content-type: text/html; charset=EUC-JP CHANGE

CHANGE*

色をかえます!

好みの色はみつかりましたか?

課題のページへ[戻る] summer -- 夏 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="summer" Content-type: text/html; charset=EUC-JP CHANGE

CHANGE*

色をかえます!

好みの色はみつかりましたか?

課題のページへ[戻る] autum -- 秋 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="autum" Content-type: text/html; charset=EUC-JP CHANGE

CHANGE*

色をかえます!

好みの色はみつかりましたか?

課題のページへ[戻る] winter -- 冬 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="winter" Content-type: text/html; charset=EUC-JP CHANGE

CHANGE*

色をかえます!

好みの色はみつかりましたか?

課題のページへ[戻る] [考察] 春、夏、秋、冬ともしっかり場合分けがされているので、このプログラムは正し く作動しているようだ。 感想 今回は、A のカウンタのプログラムで-rw-r--rw- にするということに気が付 かずすごく苦戦した。しかし、気付けたときの嬉しさはとても大きなものだっ た。Bの計算のプログラムもうまくいかず、エラーが出てしまうことがなんども あったがなんとか形にすることができた。 D のプログラムは if-end での場合 分けだけだったので、比較的簡単だった。 参考文献 著者 : 西村まどか 基礎プログラミング II 第 9 回 (ことえらび) 「テキストフィールドの作り方」 http://roy/~madoka/2011/r2/09/r2_09_06_theme_06_textfield.html 基礎プログラミング II 第 9 回 (ことえらび) 「ファイルを使ってみよう」 http://roy/~madoka/2011/r2/09/r2_09_08_theme_08_hashfile.html ------------------------------ attachments ------------------------------ Multipart/Mixed 50/ 1 Text/Plain(guess) *Cover.txt B 2 Image/Png char_r2_c.. 3 Text/Plain(guess) char_r2_c.. 4 Text/Plain(guess) counter.rb 5 Text/Plain(guess) keisan.rb 6 Text/Plain(guess) change.rb 7 . --------0-1-2-3-4-5-6-7-8-9---------------------------------------------- ----------------------- 東北公益文化大学 公益学部 公益学科  2年 菊地瑞紀 c110067@f.koeki-u.ac.jp -----------------------