氏名:安達 一貴
学籍番号:C1190067
クラス:IB
自分の誕生日の西暦2001年01月01日を全部足した数
2001+01+01=2003
<答え>
2進数・・・11111010011 16進数・・・7d3
<説明>
「2進数」・・・10進数の値から2進数を求める場合には、2進数に変換したい10進数の商が0になるまで2で割っていき余りの値を求める。
そして、その際に求められた余りの値を下から上に読むと「11111010011」となる。
2)2003 余り
2)1001・・・1
2) 500・・・1
2) 250・・・0
2) 125・・・0
2) 62・・・1
2) 31・・・0
2) 15・・・1
2) 7・・・1
2) 3・・・1
2) 1・・・1
2) 0・・・1 ↑ 下から上に読む
「16進数」・・・2進数の計算にて求められた値「11111010011」を右から4桁ごとに区切と「111,1101,0011」というように分けられる。
分けた2進数の値を16進数に直すと「7d3」となる。
0111→7
1101→d
0011→3
自分の名前「Adachi Kazuki」
<答え>
「A」・・・0x41
「d」・・・0x64
「a」・・・0x61
「c」・・・0x63
「h」・・・0x68
「i」・・・0x69
「K」・・・0x4B
「a」・・・0x61
「z」・・・0x7A
「u」・・・0x75
「k」・・・0x6B
「i」・・・0x69
<説明>
課題であるローマ字で書いた自分の名前「Adachi Kazuki」を16進数で表記するために講義にて説明されたASCIIコード表を使用した。
表から「A」は4行目の1列目にあるため「41」、「d」は6行目の4列目にあるため「64」、「a」は6行目の1列目にあるため「61」
「c」は6行目の3列目にあるため「63」、「h」は6行目の8列目にあるため「68」、「 i 」は6行目の9列目にあるため「69」
「K」は4行目のB列目にあるため「4B」、「a」は6行目の1列目にあるため「61」、「z」は7行目のA列にあるため「7A」
「u 」は7行目の5列目にあるため「75」、「k」は6行目のB列にあるため「6B」、「i」は6行目の9列目にあるため「69」となる。
(2進数を表記する場合には「0b」、16進数を表記する場合には「0x」、8進数を表記する場合には「0」を数値の先頭に付ける。10進数の場合には何もつけない。)
課題番号...第7回の6番の問題
「作成プログラム」
#!/usr/koeki/bin/ruby #-*- coding: utf-8*- name=[] bunrui=[] syouhin=[] kakaku=[] i= 0 sum=0 a=0 open("receipt.txt","r")do|rece| open("result.txt","w")do|kotae| kotae.puts" 公益スーパー" kotae.puts"" kotae.puts" <領収書>" kotae.puts"" kotae.puts" 公益店" kotae.puts"TEL:090-1234-5678 レジ:2番" kotae.puts"2020年6月30日" kotae.puts"<商品>" while line = rece.gets if/(\S+\s*+\S+)\s+(\d+)\s+(.+)\s+(\d+)/=~ line name[i]= $1 bunrui[i]= $2.to_i syouhin[i] = $3 kakaku[i] = $4.to_i printf("%d %s %d円\n",i,$1,$4.to_i) i+=1 end end while true print"注文?(qで終了)\n" line=gets.chomp! if line =="q" break end number = line.to_i if number<0 ||number>=name.length puts"ないです" redo end printf("%sを買いました\n",name[number]) sum+=kakaku[number] kotae.printf("%s %d円\n",name[number],kakaku[number]) end STDOUT.printf("合計金額は%d円です\n",sum) kotae.puts"----------------------------" kotae.printf("合計金額%d円\n",sum) end end
プログラムの結果とtxtファイル
「プログラムの結果」
0 "モコモコスパゲッティ" 880円 1 "suidou ざ・movie" 3980円 2 "無邪気白熊" 240円 3 "ウィリーCUB" 180000円 4 "恋愛大皿左巻き" 54000円 注文?(qで終了) 0 "モコモコスパゲッティ"を買いました 注文?(qで終了) 1 "suidou ざ・movie"を買いました 注文?(qで終了) 2 "無邪気白熊"を買いました 注文?(qで終了) 3 "ウィリーCUB"を買いました 注文?(qで終了) 4 "恋愛大皿左巻き"を買いました 注文?(qで終了) q 合計金額は239100円です
「結果txtファイル」
公益スーパー <領収書> 公益店 TEL:090-1234-5678 レジ:2番 2020年6月30日 <商品> "モコモコスパゲッティ" 880円 "suidou ざ・movie" 3980円 "無邪気白熊" 240円 "ウィリーCUB" 180000円 "恋愛大皿左巻き" 54000円 ---------------------------- 合計金額239100円
「プログラムの説明」
6番の課題内容は「receipt.txt にあるデータを入力として 購入したものや合計 金額などを本物のレシートのような書式で result.txt ファイルに出力するプロ グラム 」の作成だったため最初に読みこむファイル「receipt.txt」と、商品名 と価格を抜きだし書き出すファイル「result.txt」を指定した open("receipt.txt","r")do|rece| open("result.txt","w")do|kotae| 今回は読みこむファイルと書き出すファイルの指定だったためモードは読み込みのモードである"r"と書き込みのモードである"w"を使用した。 その後、open("receipt.txt","r")do|rece|で開いたファイルからデータを読みこみ処理するプログラムとopen("result.txt","w")do|kotae|に抜き出し、書き出す内容を指定し処理するプログラムを作った。 また、kotae.puts""とすることで出力先に""の中の文字が表示されるようにした。今回の課題では本物のレシートのような形で出力する必要があったためkotae.puts""のようなプログラムを作成した。printやprintfでは改行をするために最後に\nを入れる必要があるが、putsでは\nを入れなくても自然と行の終りに改行が入る形になるため\nを入れる必要がない. open("receipt.txt","r")do|rece| open("result.txt","w")do|kotae| kotae.puts" 公益スーパー" kotae.puts"" kotae.puts" <領収書>" kotae.puts"" kotae.puts" 公益店" kotae.puts"TEL:090-1234-5678 レジ:2番" kotae.puts"2020年6月30日" kotae.puts"<商品>" while line = rece.gets if/(\S+\s*+\S+)\s+(\d+)\s+(.+)\s+(\d+)/=~ line name[i]= $1 bunrui[i]= $2.to_i syouhin[i] = $3 kakaku[i] = $4.to_i printf("%d %s %d円\n",i,$1,$4.to_i) i+=1 end end 次にお客様に自由に注文してもらうためのプログラムを作成した。まず始めに何 を注文するかを聞く画面を表示しその後、メニュー番号を入力することでその番 号の食べ物を注文できるようにしその後、注文を繰り返し取れるようにし、qを 入力することで注文を終らせる事が出来るプログラムを作成した。 また、if number<0 ||number>=name.length puts"ないです" redo end とすることで0から4番以外の数字が入力された際には「ないです」と表示されるようにした。 while true print"注文?(qで終了)\n" line=gets.chomp! if line =="q" #"q"を入力したら break # 終了 end number = line.to_i #メニューに番号をつける(整数にする) if number<0 ||number>=name.length puts"ないです" redo end printf("%sを買いました\n",name[number]) sum+=kakaku[number] kotae.printf("%s %d円\n",name[number],kakaku[number]) end そして最後に、標準出力をし注文した商品の合計金額を出力を出来るようにした。 STDOUT.printf("合計金額は%d円です\n",sum) kotae.puts"----------------------------" kotae.printf("合計金額%d円\n",sum) end end
様々なスキルや技名などを用意し、ガチャガチャをする事で出てきたものをステータスに追加することでキャラを強化できるプログラム。
広瀬雄二 "#07 ファイルの入出力" 2020年基礎プログラミングI
http://roy.e.koeki-u.ac.jp/~yuuji/2020/pf1/07/index.html (2020-06-30参照)
広瀬雄二 "#08 計算機の内部表現" 2020年基礎プログラミングI
http://roy.e.koeki-u.ac.jp/~yuuji/2020/pf1/08/report.html (2020-06-30参照)
"Webページ作成の基礎" 情報リテラシ−II
http://roy/web/ (2020-07-01参照)
約7時間
今回の課題では計算問題だけだったためいつもより課題自体はすぐにおわすことが出来
追加課題のHTML作成と過去の課題の作成に取り組むことが出来た。これからの基礎プロ
グラミングも頑張っていきたい。