第 9 回 Ruby であそぼ / 広告ページの作成 レポート課題
氏名:高橋岬
学籍番号:c1110973
語学クラス:英語5
コース:環境サイエンスコース
1.A.a.0x32 + 0x24 = 0x??
0x32 + 0x24 = 0x ( 3+2 ) ( 2+4 )
= 0x56
b.0x15 + 0x2d = 0x??
0x15 + 0x2d = 0x ( 1+2 ) ( 5+d )
= 0x 3 ( 5+13 = 16+2 ) # 一桁目には15までしか入らないので 16 を二桁目に繰り上げる
= 0x ( 3+1 ) 2 # 一桁目から16繰り上がってきたので 1 を足す
= 0x42
c.0xed - 0x12 = 0x??
0xed - 0x12 = 0x ( e-1 ) ( d-2 )
= 0x ( 14-1 ) ( 13-2 )
= 0x ( 13 ) ( 11 )
= 0xdb
B. 1 から 31 までの整数で、7 で割るとあまりが 2 であるような数
商を x とすると計算式は以下のようになる。
( 整数 ) = 7 * x + 2
この数が 1以上31以下 なので
1 <= 7 * x + 2 <= 31
-1 <= 7 * x <= 29
となり、これに該当するのは
x = [ 0, 1, 2, 3, 4 ]
となる。
これを整数の式に代入して計算する。
x = 0 : 7 * 0 + 2 = 2
x = 1 : 7 * 1 + 2 = 9
x = 2 : 7 * 2 + 2 = 16
x = 3 : 7 * 3 + 2 = 23
x = 4 : 7 * 4 + 2 = 30
したがって、答えは 2, 9, 16, 23, 30
2.A.作成したプログラム
#!/usr/koeki/bin/ruby
#coding: euc-jp
print("MikasA商店でのお買物\n") # kterm に表示させる言葉
print("何日のお買物ですか?\n") # kterm に表示させる言葉
STDERR.printf("何月?: ") # 入力させたい文字への導入(月)
month = gets.chomp # 入力された文字を month として受け付ける
month = month.to_i # month を整数として扱う
STDERR.printf("何日?: ") # 入力させたい文字への導入(日)
day = gets.chomp # 入力された文字を day として受け付ける
day = day.to_i # day を整数として扱う
total = 0 # 合計金額
point = 0 # ポイント数
all = 0 # ポイント合計
if month == 1 or month == 4 or month == 7
d = (day - 1) % 7 # 2012年 1/4/7月 1日は日曜日
elsif month == 10
d = day % 7 # 2012年 10月 1日は月曜日
elsif month == 5
d = (day + 1) % 7 # 2012年 5月 1日は火曜日
elsif month == 2 or month == 8
d = (day + 2) % 7 # 2012年 2/8月 1日は水曜日
elsif month == 3 or month ==11
d = (day + 3) % 7 # 2012年 3/11月 1日は木曜日
elsif month == 6
d = (day + 4) % 7 # 2012年 6月 1日は金曜日
elsif month == 9 or month == 12
d = (day + 5) % 7 # 2012年 9/12月 1日は土曜日
end
if d == 0 # 計算機の日曜日
wday = "日"
elsif d == 1 # 計算機の月曜日
wday = "月"
elsif d == 2 # 計算機の火曜日
wday = "火"
elsif d == 3 # 計算機の水曜日
wday = "水"
elsif d == 4 # 計算機の木曜日
wday = "木"
elsif d == 5 # 計算機の金曜日
wday = "金"
else # d == 6
wday ="土"
end
printf("2012年%d月%d日(%s)のお買物\n", month, day, wday) # kterm に表示させる言葉(2012年○月×日(△))
print("お買い上げ商品の値段を打ち込んで下さい。 (終了は[q])\n") # kterm に表示させる言葉
i = 0 # しまう変数
open("registar.html", "a") do |html| # registar.html に書き込み(a)、以後は html として扱う
# ( a はファイルが存在していれば続きから書きはじめる)
html.printf("\n") # でHTML文章であることを示す
html.printf("
\n") # の後には が続く(ページ情報の記載)
html.printf("レシート発行 \n") # ページタイトル
html.printf(" ")
# stylesheet を css で設定し、その css ファイル名を与える
html.printf("\n") # 閉じ
html.printf("\n") # 本文
html.printf("======================================== \n") # 文章の見出し2
html.printf("MikasA商店 \n") # 文章の見出し1
html.printf("Tel 0123-45-6789
\n") #
通常の文書
html.printf("2012年%d月%d日(%s) \n", month, day, wday)
while true # 計算が終わるまで計算し続ける
i += 1 # 1ずつ増えていく
STDERR.printf("商品 %d : ", i) # 入力させたい文字への導入
money = gets.chomp # 入力された文字を money として受け付ける
if money == "q" # q(終了)を選んだら
printf("合計 %d 円 / 取得ポイント %d \n", total, all) # 入力させたい文字への導入
html.printf("合計 %d 円 \n", total) # 大きい文字になる
html.printf("取得ポイント %d P \n", all)
if d == 1 # 月曜日だったら
html.print("★毎週月曜日はポイント10倍★
\n")
end
if day == 8 # 8日だったら
html.print("☆毎月8のつく日はお会計より10%オフ☆
\n")
end
break # 計算終了
end
money = money.to_i # money を整数として扱う
if day == 8
total += money * 0.9 # 10%オフした money を足し続ける
else
total += money # money を足し続ける
end
point = money / 100 # money を100で割る(小数点以下切り捨て)
if d == 1
all += point.to_i * 10 # point を整数として扱ってい10倍し足し続ける
else
all += point.to_i # point を整数として扱ってい足し続ける
end
html.printf("商品%d :\t%d円\t%dP
\n", i, money, point)
end
html.printf("======================================== \n")
html.printf("\n") # 閉じ
html.printf("\n") # 閉じ
end
# html.printf となっている文章は registar.html に書き込まれる
実行したプログラム
a.平日
pan{c111097}% ./registar.rb [~/public_html/adv]
MikasA商店でのお買物
何日のお買物ですか?
何月?: 3
何日?: 9
2012年3月9日(金)のお買物
お買い上げ商品の値段を打ち込んで下さい。 (終了は[q])
商品 1 : 199
商品 2 : 105
商品 3 : 398
商品 4 : 315
商品 5 : 1050
商品 6 : q
合計 2067 円 / 取得ポイント 18
b.8のつく日
pan{c111097}% ./registar.rb [~/public_html/adv]
MikasA商店でのお買物
何日のお買物ですか?
何月?: 5
何日?: 8
2012年5月8日(火)のお買物
お買い上げ商品の値段を打ち込んで下さい。 (終了は[q])
商品 1 : 199
商品 2 : 105
商品 3 : 398
商品 4 : 315
商品 5 : 1050
商品 6 : q
合計 1860 円 / 取得ポイント 18
c.月曜日
pan{c111097}% ./registar.rb [~/public_html/adv]
MikasA商店でのお買物
何日のお買物ですか?
何月?: 8
何日?: 20
2012年8月20日(月)のお買物
お買い上げ商品の値段を打ち込んで下さい。 (終了は[q])
商品 1 : 199
商品 2 : 105
商品 3 : 398
商品 4 : 315
商品 5 : 1050
商品 6 : q
合計 2067 円 / 取得ポイント 180
d.8のつく月曜日
pan{c111097}% ./registar.rb [~/public_html/adv]
MikasA商店でのお買物
何日のお買物ですか?
何月?: 10
何日?: 8
2012年10月8日(月)のお買物
お買い上げ商品の値段を打ち込んで下さい。 (終了は[q])
商品 1 : 199
商品 2 : 105
商品 3 : 398
商品 4 : 315
商品 5 : 1050
商品 6 : q
合計 1860 円 / 取得ポイント 180
出力結果
a.========================================
MikasA商店
Tel 0123-45-6789
2012年3月9日(金)
商品1 : 199円 1P
商品2 : 105円 1P
商品3 : 398円 3P
商品4 : 315円 3P
商品5 : 1050円 10P
合計 2067円
取得ポイント 18P
========================================
b.========================================
MikasA商店
Tel 0123-45-6789
2012年5月8日(火)
商品1 : 199円 1P
商品2 : 105円 1P
商品3 : 398円 3P
商品4 : 315円 3P
商品5 : 1050円 10P
合計 1860円
取得ポイント 18P
☆毎月8のつく日はお会計より10%オフ☆
========================================
c.========================================
MikasA商店
Tel 0123-45-6789
2012年8月20日(月)
商品1 : 199円 1P
商品2 : 105円 1P
商品3 : 398円 3P
商品4 : 315円 3P
商品5 : 1050円 10P
合計 2067円
取得ポイント 180P
★毎週月曜日はポイント10倍★
========================================
d.========================================
MikasA商店
Tel 0123-45-6789
2012年10月8日(月)
商品1 : 199円 1P
商品2 : 105円 1P
商品3 : 398円 3P
商品4 : 315円 3P
商品5 : 1050円 10P
合計 1860円
取得ポイント 180P
★毎週月曜日はポイント10倍★
☆毎月8のつく日はお会計より10%オフ☆
========================================
考察(bc -lより)
199+105+398+315+1050 = 2067
2067*0.9 = 1860.3
1+1+3+3+10 = 18
18*10 = 180
料金計算のため、小数点以下は切り捨てとなる。
よって a.b.c.d. ともに正しい計算結果が出ている。
したがって、このプログラムは正しく起動している。
参考文献
基礎プログラミング I 第 9 回 (Ruby であそぼ / 広告ページの作成) 「ファイルの入出力に関して」
http://roy/~madoka/2012/r1/09/r1_09_01_review_01_fileopen.html
参考にしたプログラム
第 4 回 プログラミングの方法 レポート課題 にて作成
Ruby/cal_registar.rb
Ruby/cal_wday.rb
第 8 回 電子チケットを作ろう レポート課題 にて作成
public_html/openweb/web_order_c111097.rb
B.作成したwebページ
http://roy/~c111097/adv/index.html
http://roy/~c111097/adv/plan.txt
<00readme>
http://roy/~c111097/adv/00readme
http://roy/~c111097/adv/registar.rb
キャッチフレーズ
簡単操作!使えるレジスター!
概略
日付を入力して、商品の金額を入力するとレシートが発行されます。
ポイント倍や割引設定可。
メインHP
http://roy/~c111097/
C.エントリー部門
実用部門
広告ホームページURL
http://roy/~c111097/adv/
3.感想
作りたいと思っていたプログラムを作ることが出来た。
メールを作成していて、もっとこうできたのではないか、こんな動作ができた
ら面白いのではないか、と案が沢山出てきたので今後も引続き作成していきたい。
-----------------------------
高橋 岬
東北公益文科大学 2年
c111097@g.koeki-u.ac.jp
-----------------------------