第 1 回 前期の復習 レポート課題 氏名:井上宏美 学籍番号:c111022 語学クラス:英語3 コース:政策マネジメント 1.筆記問題 ●UNIXの役割 Kterm,consoleのウィンドウからコンピュータに命令する。 プログラムやソフトフェアを起動させる。 また、Windowのようにアイコンをマウスでクリックするシステムではない。 そのため、メール送信やファイルの保存、WEBブラウザの起動などといった 多くの動作を、コンピュータにコマンドを入力することで命令する必要がある。 ●画面上での切り替え Ctrl 1 ... emacs 表示 Ctrl 2 ... Kterm 表示 (「firefox&」を入力すると学生専用サーバーに) Ctrl 3 ... console 表示 Ctrl 4 ... firefox 表示 Ctrl+x 5 2 ... emacsの画面を一つ増やす(分裂)。 Ctrl+x 5 0 ... emacsの画面を一つ減らす。 Ctrl+x Ctrl+f ... ファイルを開く。 Ctrl+x Ctrl+s ... ファイルを保存する。 ●emacsは、プログラムやHTML文章を作成する役割を持つ。 ●ディレクトリの作成 Kterm上で、「mkdir 新ディレクトリ名」を入力する。 ! ディレクトリはWindowでいうフォルダにあたるので、 プログラムの前に作成する。 ●プログラムの作成の手順 1.emacs上で、「Ctrl+x Ctrl+f」を入力する。(ファイルの新規作成) 2.プログラム名を入力する。ディレクトリ名を入力しておけば、 そのディレクトリにプログラムが作成される。 3.「Ctrl+x Ctrl+s」で保存する。こまめに保存することで、 いきなり電源が切れたなどのアクシデントに対応出来る。 プログラム本文の最初には 「#!/usr/koeki/bin/ruby」と「#coding :euc-jp」を入力する。 画面上で困ったときには「Ctrl+g」を押す。 ●作成したプログラムの実行方法 1.Kterm上で「cd ディレクトリ名」を入力する。 ex.「cd Ruby」「cd public_html」など これで右端の方に入力したディレクトリに変換される。 2.Kterm上で「chmod +x プログラム名」を入力する。 3.「ls」してディレクトリの中にあるプログラムが表示される。 このとき、プログラム名の右端に「*」があれば実行することが出来る。 4.最後に「./プログラム名」で実行出来る。 ●メールを作成するにあたって emacsで「Esc+x」「mew」を入力する。 新規作成は、w 新着確認は、i 未送信メールは、gを押してから「draft」と打つと 未送信メール一覧に画面が変わる。 編集する時は、Shift+eで文字を入力することが出来る。 送信の際は、「Ctrl+c Ctrl+c」と打つと送信は「y」中止は「n」 ファイル添付は、「Ctrl+c Ctrl+a」の後に「c」を押してファイル名を入力。 ●計算「bc-l」を用いる Kterm上で、「bc-l」を入力する。 レポート課題の考察では計算があっているか確認しなければならない。 終わるときは、「quit」を押して終了。 ●その他 Kterm上でプログラムを実行する際に 「ファイルもディレクトリもありません。」と表示される原因は プログラムの最初に入力する 「#!/usr/koeki/bin/ruby」のスペルが違っているためである。 メールを作成したが、メール自体を削除する場合には「Ctrl+c q」を押すと消す ことが出来る。 2.プログラム問題 A. i.考えた設定 今年10月から卒業までの自分の計画を語るプログラムを考えた。 ii.作成したプログラム ファイル名(Ruby/life_print.rb) #!/usr/koeki/bin/ruby print("●今年10月から卒業までの自分の計画●\n") print("2年生後期\n") print("2012年10月 資格取得の為に勉強を開始\n") print(" 11月 バイトをしながら授業の予習.復習\n") print(" 12月 とにかく本を読んで様々な知識を得る\n") print("2013年 1月 正月ボケにならないように勉強を怠らない\n") print(" 2月 試験が終わっても自学する。特に日商!\n") print(" 3月 バイトばかりしないように、机に向かう癖をつける\n\n") print("3年生前期\n") print(" 4月 必修科目がなくても多くの単位を取得出来るように努力する\n") print(" 5月 就活が始まる前に自分なりに対策をとっておく\n") print(" 6月 梅雨で怠けやすい時期だが、気を引き締めて授業に臨む\n") print(" 7月 月末の試験対策を早めに始めておく\n") print(" 8月 集中講義を受ける。規則正しい生活を心掛ける\n") print("3年生後期\n") print(" 9月 そろそろ就活に向けて本気を出す。授業も頑張る\n") print(" 10月 ゼミを頑張っている頃、社会に目をむけるように\n") print(" 11月 自分の部屋にこもって勉強している毎日\n") print(" 12月 年末だからこそ一番気を抜かずに勉強する。妥協しない\n") print("2014年 1月 4年生になる直前だから自分の夢を見失わない\n") print(" 2月 息抜きしながらも勉強して家のこともやる。\n") print(" 3月 自立出来るように\n\n") print("4年生\n") print(" 4月~ 出来てたらバイト続けていたい。卒論も妥協しない\n") print("2015年 3月 無事に卒業出来ますように!\n") iii.もとにしたプログラムからの変更点 授業中に作成した連絡する際に略歴データを添付したapplication.datを元に 作成した。変更した点は月ごとなので見づらくならないように行を合わせたこと である。 iv.プログラムを実行した結果画面 pan{c111022}% ./life_print.rb [~/Ruby] ●今年10月から卒業までの自分の計画● 2年生後期 2012年10月 資格取得の為に勉強を開始 11月 バイトをしながら授業の予習.復習 12月 とにかく本を読んで様々な知識を得る 2013年 1月 正月ボケにならないように勉強を怠らない 2月 試験が終わっても自学する。特に日商! 3月 バイトばかりしないように、机に向かう癖をつける 3年生前期 4月 必修科目がなくても多くの単位を取得出来るように努力する 5月 就活が始まる前に自分なりに対策をとっておく 6月 梅雨で怠けやすい時期だが、気を引き締めて授業に臨む 7月 月末の試験対策を早めに始めておく 8月 集中講義を受ける。規則正しい生活を心掛ける 3年生後期 9月 そろそろ就活に向けて本気を出す。授業も頑張る 10月 ゼミを頑張っている頃、社会に目をむけるように 11月 自分の部屋にこもって勉強している毎日 12月 年末だからこそ一番気を抜かずに勉強する。妥協しない 2014年 1月 4年生になる直前だから自分の夢を見失わない 2月 息抜きしながらも勉強して家のこともやる。 3月 自立出来るように 4年生 4月~ 出来てたらバイト続けていたい。卒論も妥協しない 2015年 3月 無事に卒業出来ますように! v.導き出された結果の考察 実行出来ることは確認出来た。 ただ、月ごとにしたことで一つひとつの内容が薄くなってしまったように 感じた。 print文だけだと面白さに欠けるので、バナーを使うと良いと思った。 B. i.考えた設定 時期を入力する部分を作り、その時点での自分の計画を語るプログラムを考えた。 ii.作成したプログラム (作成したファイル Ruby/life_stderr.rb) #!/usr/koeki/bin/ruby print("\n") print("今までの自分を振り返って語りたいと思います。\n\n")#プログラムの説明 printf("何歳のときの自分の思い出を振り返りますか?:")#年齢を入力する。 age =gets.to_i #入力された年齢ageを数値として入れる。to_iは文字列を数値にする if age <=19 #現在の年齢age以下の場合で考える print("\n") #見やすさのため一行空けて printf("%d歳のときは確か......\n", age) #入力された年齢と思い出すための言葉 if age < 5 #5歳以下は記憶が定かでないため print("\n") #一行空けて print("小さくてあまり記憶に残ってないな....5歳以上なら覚えてるはず!\n") #「%d歳のときは確か......」の次の言葉を表示させる。 elsif age ==5 #5が入力されたら print("\n") #一行空けて print("幼稚園の年中組だった頃、引っ込み思案で人見知りだったな。\n") #「%d歳のときは確か......」の次の言葉を表示させる。 elsif age ==6 print("\n") print("卒園式の日に園人服を忘れて式までに親に届けてもらったっけ。\n") elsif age ==7 print("\n") print("小学生になってクラスで一番身長が大きかったのが地味に悩みだった..\n") elsif age ==8 print("\n") print("掛け算九九を年内中に覚えられたのが嬉しかったな〜\n") elsif age ==9 print("\n") print("理科と社会の勉強が苦手だった。早く家に帰りたかった。\n") elsif age ==10 print("\n") print("社会2時間連続で授業中に具合が悪くなった。原因は貧血だったような\n") elsif age ==11 print("\n") print("習っていた水泳に行かなくなる。少し早い反抗期の始まり。\n") elsif age ==12 print("\n") print("早く小学を卒業したかった記憶がある。制服への憧れは大きかった\n") elsif age ==13 print("\n") print("一番苦労した年。あまり思い出したくない年齢かも笑\n") elsif age ==14 print("\n") print("中二病にかかっていた。でも担任の先生のおかげで楽しかったな\n") elsif age ==15 print("\n") print("毎日「学校行きたくない」と言ってた。と言いながら、3年間無遅刻無欠席!\n") elsif age ==16 print("\n") print("この高校に入って本当に幸せだった!クラスも部活も最高!\n") elsif age ==17 print("\n") print("修学旅行はインフルエンザの影響でグアムから国内へ。内心安心してた。\n") elsif age ==18 print("\n") print("大学受検や部活で悩んだ時期だった。でも最後まで楽しめたからまぁ良い!\n") elsif age ==19 print("\n") print("今、自分のやれることを精一杯やりたい!\n") else #ageが20以上の場合 print("\n") #一行空けて print("19以下の数字を入れて下さい。\n") #メッセージを表示 end end #全体の終了 iii.もとにしたプログラムからの変更点 これもAと同じように授業中に作成したファイルの review_print.rbを元にした。 年齢別で見やすいように一行でまとめて表示させるようにした。 iv.プログラムを実行した結果画面 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:3 3歳のときは確か...... 小さくてあまり記憶に残ってないな....5歳以上なら覚えてるはず! pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:8 8歳のときは確か...... 掛け算九九を年内中に覚えられたのが嬉しかったな〜 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:21 20以下の数字を入れて下さい。 v.導き出された結果の考察 4以下の数字を入れる。 このとき、「小さくてあまり記憶に残ってないな....5歳以上なら覚えてるは ず!」と出るか確認する。 1を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:1 1歳のときは確か...... 小さくてあまり記憶に残ってないな....5歳以上なら覚えてるはず! 3を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:3 3歳のときは確か...... 小さくてあまり記憶に残ってないな....5歳以上なら覚えてるはず! 4を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:4 4歳のときは確か...... 小さくてあまり記憶に残ってないな....5歳以上なら覚えてるはず! よって4以下の数字はきちんと 「小さくてあまり記憶に残ってないな....5歳以上なら覚えてるはず!」 と表示されることが分かった。 ーーーー 今度は5から19までの数字を入力する。 それぞれ設定したものが表示されるか確認する。 5を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:5 5歳のときは確か...... 幼稚園の年中組だった頃、引っ込み思案で人見知りだったな。 7を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:7 7歳のときは確か...... 小学生になってクラスで一番身長が大きかったのが地味に悩みだった. 9を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:9 9歳のときは確か...... 理科と社会の勉強が苦手だった。早く家に帰りたかった。 11を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:11 11歳のときは確か...... 習っていた水泳に行かなくなる。少し早い反抗期の始まり。 13を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:13 13歳のときは確か...... 一番苦労した年。あまり思い出したくない年齢かも笑 15を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:15 15歳のときは確か...... 毎日「学校行きたくない」と言ってた。と言いながら、3年間無遅刻無 17を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:17 17歳のときは確か...... 修学旅行はインフルエンザの影響でグアムから国内へ。内心安心してた 19を入力 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:19 19歳のときは確か...... 今、自分のやれることを精一杯やりたい! 指定した文がきちんと表示された。 今回は奇数だけだったが、偶数をきちんと表示された。 ーーー 20以上の数値を入力 「19以下の数字を入れて下さい」と表示されるか確かめる。 pan{c111022}% ./life_stderr.rb [~/Ruby] 今までの自分を振り返って語りたいと思います。 何歳のときの自分の思い出を振り返りますか?:20 19以下の数字を入れて下さい きちんと表示されるのでこのプログラムは正常に動いていると言える。 C. i.考えた設定 データとプログラムを分離させて、自分の卒業までの計画を語るプログラムを作 成する。 ii.作成したプログラム 作成したファイル Ruby/life_open.rb) #!/usr/koeki/bin/ruby year = Array.new #年 data = Array.new #日付 plan = Array.new #今後の予定 STDERR.print("2012年から2015年3月までの年の打ち込んで下さい。\n") a = STDIN.gets.chomp #数字を一行ずつ読み込む b = Regexp.new(a,true) #読み込むものを正規表現に変える #ture ... 大文字、小文字を区別しない # e ... 日本語で検索する場合に使う open("mydata_c111022.dat","r") do |plaplan| #mydata_c111022.datを読み取る。 そして、plaplanという名前にする。 i =0 #配列番号 while pla = plaplan.gets #繰り返し、plaplanの中身が最後までいったら終わり if b=~pla # bがplaの場合 if/(\S+)\s+(\S+)\s+(\S+)/=~ pla year[i] =$1 #1番目のSにyearを読み込む data[i] =$2 plan[i] =$3 #2番目のSにplanを読み込む printf("%s年%s月 : %s \n" ,year[i],data[i],plan[i]) i +=1 #次のものを読み込むために+1 end #ifの終わり end #ifの終わり end #whileの終わり end #openの終わり iii.もとにしたプログラムからの変更点 前期のwhileのプログラムを改良した。 変更点は、配列を揃えることで見やすさを 重視した。 iv.プログラムを実行した結果画面 pan{c111022}% ./life_open.rb [~/Ruby] 2012年から2015年3月までの年の打ち込んで下さい。 2013 2013年01月 : 正月ボケにならないように勉強を怠らない 2013年02月 : 試験が終わっても自学する。特に日商! 2013年03月 : バイトばかりしないように、机に向かう癖をつける 2013年04月 : 必修科目がなくても多くの単位を取得出来るように努力する 2013年05月 : 就活が始まる前に自分なりに対策をとっておく 2013年06月 : 梅雨で怠けやすい時期だが、気を引き締めて授業に臨む 2013年07月 : 月末の試験対策を早めに始めておく 2013年08月 : 集中講義を受ける。規則正しい生活を心掛ける 2013年09月 : そろそろ就活に向けて本気を出す。授業も頑張る 2013年10月 : ゼミを頑張っている頃、社会に目をむけるように 2013年11月 : 自分の部屋にこもって勉強している毎日 2013年12月 : 年末だからこそ一番気を抜かずに勉強する。妥協しない v.導き出された結果の考察 2013年の一覧の予定が表示されたので上手くいったと考える。 他の年数も実行できたのでこのプログラムは正しく実行できたと考える。 3.感想 基本的な画面上での操作が曖昧だったと思う。忘れていたところは、プログラム を作成する際、上手く表示出来ない箇所が多くあり、時間がかかってしまうとこ ろがあった。とくに、while文では一ヶ所のミスで全く動かない部分もあって苦 戦した。 復習したところは、筆記問題の部分のレポートを書きながら基本的なところを思 い出しながら取り組んだところである。前期の1回目の講義ノートの「UNIXとは」 という部分を中心に取り組んだ。 今回は、友人とは取り組まず、ひとりでの作業だったので話し合ってはないが、 ひとりで取り組むことで自分の苦手な部分を克服出来た。 4.参考文献など Workstation のしくみと使い方 前期第1回 西村まどか http://roy/~madoka/2012/r1/01/lec/resume.html データを配列にしまうには 前期第6回 西村まどか http://roy/~madoka/2012/r1/06/lec/resume.html 応募書類を作ってみよう 後期第1回 西村まどか http://roy/~madoka/2012/r2/01/lec/resume.html コマンドでのデータの取り出し 前期第7回 西村まどか http://roy/~madoka/2012/r1/07/lec/resume.html Rubyプログラミング基礎講座 広瀬雄二 P85,86 ファイル入出力