5 月 16 日のレポートについて 語学クラス:XXXX語 系:XXXX系 学籍番号:c106XXXX 氏名:XXXXXXXX すみません!さきほど出したレポートを一問解き忘れがあったので再提出しまし た。 1、ルビ緒の恋について 16進法のコードを解読すると、最初の台詞でemilyーエミリーという名の女の 子に恋をしているようである。さらに台詞二段目でどこかへのアドレスが隠さ れていて、最後の台詞で彼はnhkanime-NHKアニメと言っている。そして、例の アドレスもNHKのホームページへ繋がったので彼はNHKにいるエミリーちゃんに 恋をしているのだろうと考える。 2、プログラム問題A a)考えた設定 夕食の献立を考えるちまたのお母さんの頭の中を覗いてみました。 b)作成したプログラム #!/usr/koeki/bin/ruby cook = Array.new # 配列を与える method i = 0 # 料理を与えるラベル cook[0] = ["春キャベツ","挽肉","コンソメ","ロールキャベツ"] cook[1] = ["えりんぎ","まいたけ","えのき","きのこのソテー"] cook[2] = ["じゃがいも","お肉","にんじん","カレー"] cook[3] = ["パン粉","卵","エビ","エビフライ"] # print(":\n") while i < 4 printf("料理 %d \n",i+1) printf("今日は %s と、%s と %s があるから夕飯は %s にしよう! \n", cook[i][0],cook[i][1],cook[i][2],cook[i][3]) i += 1 end print("お母さんの頭の中の計算\n") c)プログラム作成で変更した点 課題の基準を満たすために配列の要素数を3つから4つに増やしました。また作 成の際、行先検索ソフトのtrain.rbを参考にしました。train.rbでは経路の検 索をしたので変数の要素はwayでしたが、私が作成したソフトは料理に関して のものなのでcookに変換されています。 d)実行結果張りつけ irsv{c106142}% ./form_a.rb [~/Ruby] 料理 1 今日は 春キャベツ と、挽肉 と コンソメ があるから夕飯は ロールキャベツ にしよう! 料理 2 今日は えりんぎ と、まいたけ と えのき があるから夕飯は きのこのソテー にしよう! 料理 3 今日は じゃがいも と、お肉 と にんじん があるから夕飯は カレー にしよう! 料理 4 今日は パン粉 と、卵 と エビ があるから夕飯は エビフライ にしよう! お母さんの頭の中の計算 e)考察 K-termで実行し、エラーがでない正常なプログラムを作ることができた。 f)参考文献 西村先生の基礎プログラミングのHPを参考にしました。 http://roy.e.koeki-u.ac.jp/~madoka/2007/r1/05/05-12-form2.html また、課題作成の際に百瀬先輩に協力してもらいました。 #!/usr/koeki/bin/ruby cook = Array.new n = 0 print("夕食の献立を決めます:\n") while cook_list = gets if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ cook_list cook[0] = $1 cook[1] = $2 cook[2] = $3 cook[3] = $4 end printf("料理 %d \n",n+1) printf("今日は %s と、%s と %s があるから %s を作ろう! \n", cook[0],cook[1],cook[2],cook[3]) n += 1 end print("おかあさんの頭の中の計算\n") a)プログラムの内容はform_a.rbと同様である。 b)このプログラムについて 作成したプログラムform_b.rbは変数の要素のファイルを取り込むことで正常 に動作する。今回はwork.datというファイルを作った。またファイルを取り込 むときにはK-termでプログラムを実行する際に、form_b.rbの後に、スペース をひとつ空けて、word.datと入力すると、ファイルが取り込まれる。取りこま れた変数はプログラムに設定された優先順位に沿って実行される。 まず、このファイルでは表示される変数の優先順位が定められている。表示さ せる文字列はS+で表される。s+は空白文字を表す。()は中の文字を優先的に探 し出し、表示させるという効果をもつ。 これらの文字は$で表され、取りこんだword.datのcookの変数が$ナンバーに代 入されるのである。だから結果的にこのプログラムは代入される変数の数だけ 実行表示するプログラムである。 c)もとのプログラムからの変更点。内容的には変わっていない。 d)実行結果の張りつけ irsv{c106142}% ./form_b.rb word.dat [~/Ruby] 夕食の献立を決めます: 料理 1 今日は 春キャベツ と、挽肉 と コンソメ があるから ロールキャベツ を作ろう! 料理 2 今日は えりんぎ と、まいたけ と えのき があるから きのこのソテー を作ろう! 料理 3 今日は じゃがいも と、お肉 と にんじん があるから カレー を作ろう! 料理 4 今日は パン粉 と、卵 と エビ があるから エビフライ を作ろう! おかあさんの頭の中の計算 s+で表された空白部分もきちんと表示されている。 また、word.datを代入し忘れたらこうなった。 irsv{c106142}% ./form_b.rb [~/Ruby] 夕食の献立を決めます: 料理 1 今日は と、 と があるから を作ろう! 料理 2 今日は と、 と があるから を作ろう! 料理 3 今日は と、 と があるから を作ろう! 料理 4 今日は と、 と があるから を作ろう! 料理 5 今日は と、 と があるから を作ろう! 表示させたい文字列がみつからず、変数の要素部分は表示されない。ここに見え る空白部分はこのプログラムだけで表示されているs+の部分である。また、この プログラムを限定、終了させる実行文がないのでctrl-cでプログラムを終了する までこのプログラムは動き続けるだろう。 e)参考文献 こちらも西村先生のHPと百瀬先輩に助けられました。 http://roy/~madoka/2007/r1/05/05-15-form5.html http://roy/~madoka/2007/r1/05/05-13-form3.html 西村先生のHPではtrain.rbとデータの分解の解説を参考にしました。 その他に詳しい手順は百瀬先輩に助けていただきました。 3、感想 今回、TAの先輩に助けられながら何とか提出する形にまで私の頭の中の整理と レポートが出来たと思います。講義も第5回を終えましたが、まだまだ知らない ことがたくさんあるので勉強しなくてはとつよい気持ちでいっぱいです。とく に、私は前回、前々回、さらにその前のレポートも提出せず、あきらかにに他の 人と差がついてしまって、そのせいか、自暴自棄ぎみになっていました。しか し、最初に出したrポートにも書いたように、やるだけ理解が深まるので、追い 込みをすることのないようにがんばって学ぼうと思いました。 ----Next_Part(Fri_May_18_21_44_45_2007_654)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="form_a.rb" #!/usr/koeki/bin/ruby cook = Array.new # 配列を与える method i = 0 # 料理を与えるラベル cook[0] = ["春キャベツ","挽肉","コンソメ","ロールキャベツ"] cook[1] = ["えりんぎ","まいたけ","えのき","きのこのソテー"] cook[2] = ["じゃがいも","お肉","にんじん","カレー"] cook[3] = ["パン粉","卵","エビ","エビフライ"] # print(":\n") while i < 4 printf("料理 %d \n",i+1) printf("今日は %s と、%s と %s があるから夕飯は %s にしよう! \n", cook[i][0],cook[i][1],cook[i][2],cook[i][3]) i += 1 end print("お母さんの頭の中の計算\n") ----Next_Part(Fri_May_18_21_44_45_2007_654)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="form_b.rb" #!/usr/koeki/bin/ruby cook = Array.new n = 0 print("夕食の献立を決めます:\n") while cook_list = gets if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ cook_list cook[0] = $1 cook[1] = $2 cook[2] = $3 cook[3] = $4 end printf("料理 %d \n",n+1) printf("今日は %s と、%s と %s があるから %s を作ろう! \n", cook[0],cook[1],cook[2],cook[3]) n += 1 end print("おかあさんの頭の中の計算\n") ----Next_Part(Fri_May_18_21_44_45_2007_654)-- Content-Type: Application/Ms-Tnef Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="word.dat" vdWlraXjpdmlxAnI1Mb5CQmls6Xzpb2l4Qml7aG8peulraXjpdmlxAqkqKTqpPOkrgmk3qSkpL+k sQmkqKTOpK0JCaStpM6ks6TOpb2lxqG8CqS4pOOkrKSkpOIJpKrG+QkJpMuk86S4pPMJpaul7KG8 CqXRpfPKtAkJzfEJCaWopdMJCaWopdOl1aXppaQK ----Next_Part(Fri_May_18_21_44_45_2007_654)----