&size(20){プログラミング演習II-1,II-2のページ};
このページは,プログラミング演習II-1,II-2のページです.&br;
-担当者
-- 真栄城 哲也
--- Email: maeshiro あっと slis.tsukuba.ac.jp
--- 研究室: 研究棟 4F 409
--- オフィスアワー: 水曜1,2限
-- 若林 啓
--- Email: kwakaba あっと slis.tsukuba.ac.jp
--- 研究室: 研究棟 2F 207
--- オフィスアワー: 金曜5,6限
----
#contents
----
*お知らせ [#za14580d]
お知らせです.クラス毎のお知らせの場合は,[木][金]で区別します.何もなければ全体向けです.
- (1/13) リモートデスクトップからファイルをダウンロードできるようになりました.
- (1/7) 課題-2 の注意事項を記載しました.
- (1/7) [金曜クラス] 課題-2 が提出できるようになっていますが,問題がある場合,メールで連絡してください.その際,問題を具体的に明記してください.
- (12/28) [木曜クラス] 課題-1 の提出システムに問題があったため,課題-1 の提出〆切を,1月12日 (木) に変更しました.
- (12/25) [木曜クラス] 課題-1 の入力データで,扱いが困難な文字列があったため,入力データを更新しました.再度ダウンロードしてください.
- (12/22) メールによる課題の提出は受け付けていません.
- (12/22) 課題-A の提出について:課題-A を 〆切までに提出できなかった場合,12/28 までに提出されれば受け付けます.なお,〆切後の提出は,減点されます.また,提出できない場合の確認事項を「課題」のところに記載しました.
- (12/21) 課題-2 の内容に訂正があります.
- (12/16) 課題-A の入力ファイル 「taskA_data1.txt」に対する出力結果「taskA_data1-text.txt」を載せました.実行結果チェックシステムで違っている箇所が判らない場合,出力結果と比較してください.
- (12/15) 課題-A の入力用のファイル 「taskA_data2.txt」が更新されました.実行の際,このファイルを再度ダウンロードしてください
- (12/13) 課題-A の入力用のファイル (データ) が更新されました.12/13以前にデータをダウンロードしている場合,再度ダウンロードしてください
- (12/12) 課題提出システム:課題-A の提出ができるようになっていますが,問題がある場合,メールで連絡してください.その際,問題を具体的に明記してください.
- (12/10) 実行結果チェックシステム:課題-A のチェックができるようになっていますが,問題がある場合,メールで連絡してください.その際,問題を具体的に明記してください.
// - 作業記録入力システムは,11月14日の週から使えるようになる予定です.
// - テキスト-3 を公開しました (11/10)
// - 日程,テキスト-1 と テキスト-2 を公開しました (11/4)
// - チェックの残りは2/10(月)1,2限,2/12(水)1,2限に行います.木金問いませんので,来れる時に(なるべく早く)来てください.
// -- SIZE(25){COLOR(RED){こちらの把握する[[未チェック学生リスト >
// http://klis.tsukuba.ac.jp/klib/Subjects/ProgII/text/check_nokori]]}}
// - 席の位置は指定です.指定位置は,授業開始時に提示されます.
// - なお, 第7回授業と第10回授業では,席の指定は無く.席の位置は自由です.
// - 第7回授業と第10回授業のレポートは,資料等,持ち込み自由です.
// - 使用するテキストを&color(red){授業の前日までに};印刷して,持参してください.必要なテキストは下記「日程」の「テキスト」覧に記載してあります.
* お知らせ(演習以外) [#udeff9cc]
*日程 [#r5396b65]
// &color(blue){準備中};
// |回|木曜日|金曜日|内容(予定)|テキスト|その他|
|回|木曜日|金曜日|内容(予定)|締切|その他|
// |回|木曜日|金曜日||||
|1|11/17|11/11|課題-1|||
|2|11/24|11/18|課題-1 [続き]|||
|3|12/1|11/25|課題-1 [続き]|||
|4|12/8|12/2|課題-A|課題-1||
|5|12/15|12/9|課題-2|||
|6|12/22|12/16|レポート-1|課題-A||
|7|1/12|1/11|課題-2 [続き]|||
|8|1/19|1/20|課題-B|課題-2||
|9|1/26|1/27|課題-C|||
|10|2/2|2/3|レポート-2|課題-B||
|予備日|2/9|2/10||課題-C||
// |回|木曜日|金曜日|内容(予定)|テキスト||
// |予備日|2/12|2/6|チェック|||
**全学計算機システム停止等の情報 [#x5882dd1]
-詳細は[[春日サテライトニュース:http://www.slis.tsukuba.ac.jp/ipc/news/]]をご覧ください.
*テキスト [#m8972d2f]
// &color(blue){準備中};
-[[フローチャート:http://life.slis.tsukuba.ac.jp/prog2/text/flowchart_p.pdf]]
-[[テキスト-1:http://life.slis.tsukuba.ac.jp/prog2/text/text01_p.pdf]]
(入力データ:
[[data1-1.txt:http://life.slis.tsukuba.ac.jp/prog2/data/data1-1.txt]],
[[data1-2.txt:http://life.slis.tsukuba.ac.jp/prog2/data/data1-2.txt]],
[[data1-3.txt:http://life.slis.tsukuba.ac.jp/prog2/data/data1-3.txt]],
[[data1-4.txt:http://life.slis.tsukuba.ac.jp/prog2/data/data1-4.txt]]
)
-- [[説明スライド:http://life.slis.tsukuba.ac.jp/prog2/text/slide_text01_distp.pdf]]
-[[テキスト-2:http://life.slis.tsukuba.ac.jp/prog2/text/text02_p.pdf]]
-- [[説明スライド:http://life.slis.tsukuba.ac.jp/prog2/text/slide_text02_distp.pdf]]
*課題 [#y565d398]
// &color(blue){準備中};
- ruby プログラムのチェック:
-- (1) [[自動チェックシステム:http://life.slis.tsukuba.ac.jp/ruby_checker]]
-- (2) [[実行結果チェックシステム:http://life.slis.tsukuba.ac.jp/ruby_checker/task1]]
--&color(red){注意:};自動チェックシステムがエラーで動作しない場合,教員に連絡してください.
- 課題提出システム:[[利用方法:http://life.slis.tsukuba.ac.jp/prog2/docs/rep-submit/index.html]]をよく読んでください。
-- エラーが出る,問題がある等の場合,教員に連絡してください.
// 作業記録入力システムは,11月14日の週から使えるようになる予定です.
- [[作業記録入力システム:http://kc09.kc.tsukuba.ac.jp/bb3_two]]:[[利用方法:http://life.slis.tsukuba.ac.jp/prog2/docs/task_descript/manual.html]]をよく読んでください。
// - ruby プログラムの提出:
// -- (1) [[自動チェックシステム:http://life.slis.tsukuba.ac.jp/ruby_checker]]
// -- (2) [[実行結果チェックシステム:http://life.slis.tsukuba.ac.jp/ruby_checker/task1]]
// の結果を提出してください.
// ---テスト用 (プログラムの動作確認用) の小さいデータ:[[task1-thu-test.txt:http://life.slis.tsukuba.ac.jp/prog2/task1-thu-test.txt]]
// ---テスト用データの[[実行結果:http://life.slis.tsukuba.ac.jp/prog2/task1-thu-test-result.txt]] (品詞毎と品詞ペア毎の使用頻度のみ)
-課題-1 (木曜クラス)
---テスト用 (プログラムの動作確認用) の小さいデータ:[[task1-thu-test.txt:http://life.slis.tsukuba.ac.jp/prog2/data/task1-thu-test.txt]]
---[[入力用のファイル (データ) :http://life.slis.tsukuba.ac.jp/prog2/data/task1_thu_data.zip]] (zip ファイルなので,ダウンロード後,展開してください)
--&color(red){注意:};同じディレクトリにある全ての ".txt" ファイルを処理してください.
--&color(red){注意:}; (11/30)入力用のファイル (データ) が更新されました.11/30以前にデータをダウンロードしている場合,再度ダウンロードしてください.
--&color(red){注意:}; (12/25)入力データで,扱いが困難な文字列があったため,入力データを更新しました.再度ダウンロードしてください.
-課題-1 (金曜クラス)
---テスト用 (プログラムの動作確認用) の小さいデータ:[[task1-fri-test.rb:http://life.slis.tsukuba.ac.jp/prog2/data/task1-fri-test.rb]]
---[[入力用のファイル:http://life.slis.tsukuba.ac.jp/prog2/data/task1_fri_data.zip]] (zip ファイルなので,ダウンロード後,展開してください)
--&color(red){課題テキストの訂正:};2ページのプログラムの要件の「3. プログラム内で定義されたメソッドが呼び出される回数.」とありますが,メソッドの呼び出し回数の計測は不要です.
--&color(red){課題テキストの訂正:};4ページの「task1-fri-data1.rb を入力した場合の実行結果.」の「文字数」の行に間違いがあります.正しい文字数の平均値は,14.63 です.
--&color(red){注意:};小数点以下2桁で表示する際,printf や sprintf を使って四捨五入の処理をしないでください.ruby 自体に欠陥があるため,間違った値を返す場合があります.
--&color(red){注意:};同じディレクトリにある全ての ".rb" ファイルを処理してください.ただし,実行しているプログラム ("kadai-1.rb") は処理しないようにプログラムを作ってください.
-課題-A (木曜クラス)
--[[課題Aのテキスト:http://life.slis.tsukuba.ac.jp/prog2/text/task_A-2016_thu_p.pdf]]
(入力データ:
[[taskA_data1.txt:http://life.slis.tsukuba.ac.jp/prog2/data/taskA_data1.txt]],
[[taskA_data2.txt:http://life.slis.tsukuba.ac.jp/prog2/data/taskA_data2.txt]],
[[task_A-poslist.csv:http://life.slis.tsukuba.ac.jp/prog2/data/task_A-poslist.csv]]
)
-課題-A (金曜クラス)
--[[課題Aのテキスト:http://life.slis.tsukuba.ac.jp/prog2/text/task_A-2016p.pdf]]
--&color(red){注意:}; (12/13)入力用のファイル (データ) が更新されました.12/13以前にデータをダウンロードしている場合,再度ダウンロードしてください(入力データ:
[[taskA_data1.txt:http://life.slis.tsukuba.ac.jp/prog2/data/taskA_data1.txt]],
[[taskA_data2.txt:http://life.slis.tsukuba.ac.jp/prog2/data/taskA_data2.txt]],
[[task_A-poslist.csv:http://life.slis.tsukuba.ac.jp/prog2/data/task_A-poslist.csv]]
)
taskA_data1.txt の出力結果:[[taskA_data1-text.txt :http://life.slis.tsukuba.ac.jp/prog2/data/taskA_data1-text.txt]] :実行結果チェックシステムで間違いがあると表示されても,間違いが判らない場合,このファイルと比較して,違っている箇所を調べてください.
-課題-A が提出できない場合の確認事項 (木金両方)
-- プログラムの文字コードが UTF でないか
-- 同じディレクトリにある全ての「*.txt」ファイルを処理できるか
-- 出力ファイル「taskA_data1-text.txt」について:
--- 行末に空白がないか
--- 最後に空行がないか
-課題-2
--入力用のファイル:[[task2_data.zip:http://life.slis.tsukuba.ac.jp/prog2/data/task2_data.zip]] (zip ファイルなので,ダウンロード後,展開してください)
--&color(red){注意:};課題2の中で,「辞書順にソートされていなければならない」ことを要件としている箇所がありますが,これは「Rubyにおける文字列の大小関係の定義に従ってソートされていなければならない」ことと訂正します.Rubyにおける文字列の大小関係の定義では,アルファベットの大文字と小文字についてはABCDEF....XYZabcdef...xyzというように,大文字の方が前で,小文字が後という順序が成り立つように定義されています.
このような順序で並べ替えた配列を得るメソッドには,配列の操作メソッドの「sort」やハッシュの操作メソッドの「sort」があります.これらについては,適宜参考書やWeb等で調べてください.
--&color(red){注意(金曜クラスのみ):};課題2の実行結果例は,ハッシュタグの定義について次の仮定を置いています:「Twitterではハッシュタグの直後にスペースや句読点が必要だが,本課題ではハッシュタグの直後の文字はなんでもよい.例えば,「#4月1日」という文字列には,「#4」というハッシュタグが含まれているとみなす.」
ですが,この定義は日本語と英数字が混じったハッシュタグでは直感に反する定義になっています.このことを考慮し,今回の課題では,よりよいと思える方法が思いつく場合は,この定義に従っていなくても提出を認めることにしました.日本語ハッシュタグも抽出できるプログラムが作れそうなら,是非挑戦してみてください.課題2は対面チェックをしますので,その際にどのようなハッシュタグを抽出するプログラムなのかをTAに説明できるようにしてください.
--&color(red){注意:};tweet.txt の読み込みにおいて,環境によってはエンコーディングの問題が起こることが分かりましたので,以下の対応をお願いします.
~ファイルを読み込む際,以下のように読み込んでいると思いますが,
~input = open("tweet.txt", "r")
~これを,以下のようにして,明示的にエンコードを指定して開くようにしてください.(この例では Shift_JIS を指定していますが,Rubyプログラムのマジックコメント(#encoding:)で指定しているエンコーディングに合わせてください.)
~input = open("tweet.txt", "r:Shift_JIS")
~Rubyでは,エンコードを特に指定せずに open
メソッドを呼んだ場合,ファイル内容から推測して文字コードが決定されます.日本語文字コードには Shift_JIS と Windows-31J
という似ているが異なるエンコーディングが存在しているのですが,課題2で使用している tweet.txt は,明示的に Shift_JIS
で書き込んでいるにも関わらず,環境によっては一部のファイルが Windows-31J
として認識されてしまう場合があるようです.このため,上述のような対応をお願いします.
--&color(red){注意:};課題2の締切日に,testdata3 フォルダ内の tweet.txt を入力したときの出力ファイル(stats.txt)を印刷したものを提出してください.このため,紙媒体で提出するものは次の3点です:(1) プログラム(自動チェックシステムの結果画面)の印刷物,(2) フローチャート,(3) testdata3/tweet.txt を入力したときの stats.txt の印刷物
--&color(red){訂正:};課題2のプリントでは「ソースコードのファイル名を「kadai-2.rb」とする」と指示していますが,これは「kadai2.rb」の誤りです.課題提出システムは「kadai2.rb」のファイル名で受け付ける設定になっています.
--&color(red){よくあるミス(木曜クラス):};投稿時間帯やwの数の分析では「〜〜ツイート数は」と出力するように指示していますが,クライアントソフトの分析では「〜〜ツイートの数は」と出力する指示になっています.要件がちょっと紛らわしいので,注意してください.
*レポート [#y565d398]
// &color(blue){準備中};
// -[[レポートについての注意点:http://klis.tsukuba.ac.jp/klib/Subjects/ProgII/gakunai/report-generalp.pdf]]
// - 課題提出システムの[[利用方法:http://life.slis.tsukuba.ac.jp/prog2/docs/rep-submit/index.html]]をよく読んでレポートの作成をしてください。
// ー レポートには,資料や本は持ち込み自由です.
*道具箱 [#c681d0c6]
-[[meadow で ruby のファイルを見易くする:http://life.slis.tsukuba.ac.jp/prog2/docs/emacs_ruby-mode/ruby_mode_manual.html]]
-[[コマンドプロンプトで日本語入力を行う:http://klis.tsukuba.ac.jp/klib/Subjects/ProgI/toolbox/cmd.html]]
-[[実行結果をファイルに保存する方法:http://klis.tsukuba.ac.jp/klib/Subjects/ProgI/toolbox/file.html]]
-[[プログラミング演習版 Ruby コーディング規約:http://klis.tsukuba.ac.jp/klib/Subjects/ProgI/toolbox/kiyaku.html]]
-[[Meadowで作成したファイルが文字化けする場合の修復法:http://klis.tsukuba.ac.jp/klib/Subjects/ProgII/toolbox/meadow-code-fix/]]
-[[Meadow を開いたときのデフォルトディレクトリ(フォルダ)を z: ドライブにする:http://klis.tsukuba.ac.jp/klib/index.php?meadow-z_drive_as_home]]
*演習支援情報 [#z9d015c6]
- [[ProgI/プログラミング演習I]]のページ
- 参考書:
-- [[たのしいRuby 第4版:http://www.amazon.co.jp/dp/4797372273/]](教科書)
-- [[プログラミングRuby 第2版 言語編:http://www.amazon.co.jp/dp/4274066428/]]
-- [[プログラミングRuby 第2版 ライブラリ編:http://www.amazon.co.jp/dp/4274066436/]]
-- [[プログラミング言語 Ruby:http://www.amazon.co.jp/dp/4873113946/]]
--- プログラミング言語としてのRubyの文法について詳しく説明しています。
-- [[Rubyアプリケーションプログラミング:http://www.amazon.co.jp/dp/4274064611/]]
--- Rubyのバージョンは古いですが、Ruby/Tkの比較的まとまった解説の章があります。
-- [[Effective Tcl/Tk (ASCII Addison Wesley Programming Series):http://www.amazon.co.jp/dp/4756131654/]]
--- Ruby/Tkそのものではありませんが、元になったTcl/Tkの詳しい解説書です。
- 参考Webページ
-- [[オブジェクト指向スクリプト言語Ruby:http://www.ruby-lang.org/ja/]]
--- Rubyのおおもとです.
-- [[Rubyリファレンスマニュアル:http://www.ruby-lang.org/ja/man/]]
--- リファレンスマニュアルです.辞書として使えます.
--- たとえば,「組み込みライブラリ」の「組み込みクラス」のあたりを見ると,各クラスに定義されたメソッドの一覧と定義・使い方等を調べることができます.便利なメソッドがたくさんあるので,ぜひ調べてみてください.
//-- [[Ruby/Tk - FrontPage:http://www.dumbo.ai.kyutech.ac.jp/~nagai/RubyTk/]]
//--- 九州工業大学大学院 永井秀利氏による情報
-- [[Ruby/Tkチュートリアル:http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby%2FTk+%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB]]
--- Ruby/TkによるGUIプログラミングの入門編です。
-- [[逆引きRuby/Tk:http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=%B5%D5%B0%FA%A4%ADRuby%2FTk]]
//--- Ruby/Tkを用いたGUIプログラミングで、やりたいことに対するプログラムの書き方の例が列挙されています。
-- [[日本Rubyの会 公式Wiki:https://github.com/ruby-no-kai/official/wiki]]
--- Rubyのユーザグループ
-- [[Ruby - Wikipedia:http://ja.wikipedia.org/wiki/Ruby]]
--- WikipediaによるRubyの解説