プログラミング基礎 II

第十二回 (2011年12月19日)

プログラム開発

http://www.sw.it.aoyama.ac.jp/2011/PB2/lecture12.html

Martin J. Dürst

AGU

© 2007-11 Martin J. Dürst 青山学院大学

今日の予定

これからの予定

補講についての注意

前回の演習 1

提出: 12月16日 (金曜日) 22:00 までに Moodle に famous_hash.rb のファイル名で投稿

以前作った famous_method.rb (正解例でも可能) に連想配列を追加し、出力する文字列 (height, weight, normal, obese など) を日本語に置き換えるようなプログラムを作成しなさい。

ヒント:

発展問題: 複数の言語が使えるようにする (ハッシュのハッシュ)

正解例: famous_hash.rb

前回の演習 2

提出: 12月16日 (金曜日) 22:00 までに Moodle に words.rb のファイル名で投稿

英語などの文書の入力 (< ファイルまたは直接入力) を行と単語に分解し、それぞれの単語の数を数えて、アルファベット順にきれいに出力しなさい。

入力例: Ottos Mops, President Obama's speaches

ヒント: 文字列の delete メソッドで ,.!?;:'" など記号を取り除く

ヒント: スペースを区切りに単語に分割

ヒント: 大文字・小文字の差をなくす

ヒント: 単語を最初に見つけるときともう一つ見つけるときの処理を分ける

発展問題: 単語の頻度順で出力

正解例: words.rb

プログラム開発

開発方針の大切さ

トップダウン開発

ボトムアップ開発

テストベース開発

  1. 一部の機能のテストを作成
  2. テストの失敗の確認
  3. テストを通過できるように実装
  4. テストの成功の確認

1. から 4. の繰り返し

特長: テストが財産として残り、プログラムの改正時に役に立つ

Ruby から使える機能:

 

便利なイテレータ: inject

 

便利なイテレータ: group_by

 

発展技術: 引数としてのブロック

仮引数のときの書き方: def my_method (x, y, &block)

実引数の使い方, その一: block.call (ブロックを関数のように呼び出す)

実引数の使い方, その二: sort_by &block (ブロックを別のイテレータに渡す)

演習 1

提出: 12月23日 (金曜日) 22:00 までに Moodle に famous_stats.rb のファイル名で投稿

注意: 12月23日は祝日のため、大学のパソコンは使えません

有名人のデータから次の統計を計算し、出力しなさい。

注意: 肥満度ごとにプログラムをコピペしないで、イテレータを使う

ヒント:

発展問題: 平均を計算できる関数を作って使う

 

演習 2

提出: 12月30日 (金曜日) 22:00 までに Moodle に投稿

注意: 12月23日以降は大学のパソコンは使えません

これから自分が書きたいプログラムの概要・応用を文書 (.txt ファイル) で説明しなさい。

条件:

 

次回への準備

授業全体の内容を復習し、分からない部分をリストアップ