プログラミング基礎
II
第十四回
(2012年1月17日)
復習と展望
http://www.sw.it.aoyama.ac.jp/2011/PB2/lecture14.html
Martin J. Dürst
© 2011-12 Martin
J. Dürst 青山学院大学
今日の予定
これからの予定
期末試験: 1月23日月曜日 13:10-14:10
前回の復習
- 正規表現は文字列の中のパターンを表す
- 文書処理に非常に便利
- 書き方は
//
の間、特殊文字に気をつけながら
- 応用は、パターンの有無によって処理を変えるか
- 文字列 (の一部) を置き換える
前回の演習 3
提出: 1月18日 (水曜日) 22:00 までに Moodle に
famous_regexp.rb
のファイル名で投稿
有名人のデータから正規表現を使って特殊な有名人を探し出してください。例:
- 女優/俳優/声優
- 内野手/外野手/投手など
- 名前の最後の字 (例: 子、美など)
で女性だと思われる有名人
その他や複数のものも可能。何を出力するのか出力に明記しなさい。
前回の演習 3 の正解例
famous_regexp.rb
簡潔に書ける手法: (期末試験対処外)
if
条件 then
を使用
→ 条件と結果をテーブルみたいに書ける
Person
の output
メソッドを
to_s
に変更
→ puts
などで自動的に呼び出される
Array
に select_and_output
メソッドを追加
(メソッドの変更も可能が、要注意)
追加: 正規表現で選択肢の指定
- 複数のパターンにマッチできる場合、選択肢を
|
でつなぐ
- 具体例:
/abc|def/
abc 又は def にマッチ
- 文字クラスは一文字に限定した選択肢
具体例: [abcde]
は (a|b|c|d|e)
と同じ
- 記号の組み合わせに注意
a|bc*
は a, b, bc, bcc, bcc... にマッチが、aaa や bcbc
全体はマッチしない
全体の復習
- 数、演算、演算子、被演算子
- 文字列、配列、範囲、連想配列、正規表現
- 分岐と繰返し、ブロックとイテレータ
- 関数、クラス、メソッド、インスタンス
- irb と ruby の使い方、ファイルからの入力
- プログラム開発の方針
- データの扱い方
他の Ruby の中心的な機能
- 継承:
あるクラスから別のクラスを作って、実装の一部を追加・変更
- Module: メソッドなどの集まりで、クラスに追加可能
- ファイル処理
- 例外: 処理中に起こるエラーをつかむ
- (擬似的) 並列処理
Ruby の主なライブラリ
- Ruby に数多くのライブラリがある
- 組み込みクラス (
require
無しで使用可能)
- 標準ライブラリ (インストールが必要ないが
require
が必要)
gem
コマンドで使用可能なもの
- その他ダウンロードできるもの
Ruby の奥: ドメイン特化言語
(Domain Specific Language, DSL)
- いろいろな分野 (ドメイン)
で特殊な機能のプログラムが必要
- プログラミングができない人が多い
- ドメイン特化言語で設定などを可能にする
- しかし、(外部)
ドメイン特化言語を作るのが大変で、拡張性も低い
- Ruby で内部ドメイン特化言語が作成可能
- 設定などが簡単に書ける
- 必要に応じてプログラムみたいなものも書ける
- Ruby が内部ドメイン特化言語に非常に向いている
Ruby on Rails
SVuGy
SketchUp
- SketchUp は Google の 3D
図形ツール
- Ruby によりスクリプティングが可能
- グーグルアースと連動可能
メタプログラミング
- 普通のプログラミング:
人間がプログラムを作成、計算機が実行
- メタプログラミング: プログラムがプログラム
(の一部) を作成
どんな質問でも結構です!