WHAT'S NEW
- 2017/01/29 番外編 : immutable な連結リスト を追加
- 2017/01/28 番外編 : 遅延ストリーム を改訂
- 2017/01/22 お気楽 Ruby プログラミング入門 : 付録 を追加
- 2017/01/15 お気楽 Ruby プログラミング入門 を改訂
CONTENTS
お気楽 Ruby プログラミング入門
CONTENTS
- 第 1 回 Ruby の基礎知識 データ構造編
Ruby のインストール、Ruby のプログラム、Ruby のデータ型、数、文字列、ヒアドキュメント、配列、シーケンス、メソッドの呼び出し方法、配列の操作メソッド、集合演算、ハッシュ、シンボル、コラム TMTOWTDI
- 第 2 回 Ruby の基礎知識 制御構造編
if 文、if 文の連結、修飾子形式、比較演算子、論理演算子、case 文、while 文による繰り返し、修飾子形式による繰り返し、for 文による繰り返し、繰り返しの制御、範囲演算子、FizzBuzz 問題、数値積分、素数を求める、コラム メソッドの命名規則
- 第 3 回 関数の使い方
関数の基礎知識、関数の定義方法、ローカル変数とグローバル変数、ローカル変数の定義と有効範囲、デフォルト引数、可変個の引数、配列を展開して関数に渡す、多重代入、複数の値を返す、データの探索、二分探索、素数を求める (2)、値呼びと参照呼び
- 第 4 回 ファイル入出力
ファイル入出力、標準入出力の使い方、データの合計値を求める、列ごとの合計値を求める、for 文と IO オブジェクト、ファイルのアクセス方法、エンコーディングの設定、コマンドライン引数の取得、書式出力、ファイルを行単位で連結する、コラム 同一性の判定
- 第 5 回 正規表現
正規表現の基礎知識、文字の指定、繰り返し、最長一致と最短一致、グループ、位置の指定、選択、正規表現の使い方、文字列の検索、scan() と split()、クロスリファレンサ、プログラムの作成、実行例、コラム grep と正規表現
- 第 6 回 正規表現と文字列の置換
後方参照、正規表現のコンパイルと照合、MatchData のメソッド、拡張記法、文字列の置換、文字列置換ツールの作成、文字の置換、複数の文字を一つの文字に置換、タブの展開、空白をタブに置換、文字コード、コラム gresreg
- 第 7 回 関数の再帰定義
再帰定義の基本、再帰定義のポイント、ユークリッドの互除法、末尾再帰と繰り返し、クイックソート、クイックソートのプログラム、クイックソートの欠点、バックトラック法と再帰定義、順列の生成、順列を配列に格納する、コラム たらいまわし関数
- 第 8 回 イテレータと高階関数
イテレータとブロック、イテレータの作り方、イテレータの制御、高階関数、マッピング、フィルター、畳み込み、手続きオブジェクト、ブロック引数、手続きオブジェクトとブロック、レキシカルスコープ、ブロックのスコープ、クロージャ、ジェネレータ、ジェネレータをリセットする
- 第 9 回 オブジェクト指向の基礎知識
オブジェクトとは、クラスとインスタンス、メソッド、Ruby のクラス、Ruby のインスタンス変数、Ruby のメソッド、アクセスメソッドの定義、メソッドのアクセス制御、Point クラス、Point3D クラス、クラス変数、クラスメソッド、コラム 遅延評価
- 第 10 回 連結リスト
連結リストの構造、クラスの定義、連結リストの操作メソッド、作業用メソッド nth()、データの取得、データの挿入、データの削除、イテレータ、データの変換、演算子の定義、角カッコによるアクセス、演算子 + の実装、演算子 * の実装、コラム 連結リストと Lisp
- 第 11 回 継承
継承、単一継承、多重継承、継承の仕組み、単一継承の使い方、メソッド結合、実行例、クラス変数とクラスメソッドの継承、データ型の継承、制限付き連結リスト、コラム1 レシーバと self、コラム2 動的プログラミング
- 第 12 回 多重継承と Mix-in
多重継承の問題点、Mix-in、モジュールの使い方、モジュールとクラスの優先順位、Comparable と Enumerable モジュール、スタック、継承は is-a 関係を表す、スタックの実装、キュー、キューの実装、プログラムの作成、コラム クラスベースとプロトタイプベース
- 第 13 回 二分木
木構造、二分木、クラスの定義、データの探索、データの挿入、データの削除、最小値の探索と削除、データの削除処理、巡回、public メソッドの作成、実行例、コラム CLOS
- 第 14 回 例外と大域脱出
例外処理、例外の捕捉、begin 文の使い方、例外の送出、例外の定義、大域脱出、catch と throw、ensure 節、逆ポーランド記法、逆ポーランド記法の計算、スタックと演算子の定義、数式の計算処理、数式の入力処理
- 付録A (2017/01/22)
Enumerator,
Enumerator::Lazy,
Fiber
- 付録B : 簡単なプログラム (2017/01/22)
九九表の作成 / 整数列の和 / 度数分布表 / 総和、最大値、最小値、平均値 /
累乗 / フィボナッチ数 / 組み合わせの数 / パスカルの三角形 / 組み合わせの生成 /
順列の生成 / 完全順列の生成 / 素数 / 双子素数 / 素因数分解 / 約数の個数 /
約数の和 / 約数 / べき集合
初版 2008 年 10 月 - 12 月
改訂 2017 年 1 月 15 日
●番外編
- 2011/02/12 継続渡しスタイル
継続とは?、継続渡しスタイル (CPS) とは?、再帰呼び出しと CPS、二重再帰と CPS、CPS の便利な使い方、高階関数と CPS、CPS による木の巡回、CPS による継続の保存と実行の再開、Appendix: 末尾再帰と繰り返し、末尾再帰をスタックオーバーフローせずに実行する、CPS での実行
- 2011/02/19 継続 (continuation)
Ruby の継続、大域脱出、繰り返しの中断、再帰呼び出しからの脱出、ジェネレータの作成、高階関数をジェネレータに変換、コルーチン、ファイバーの動作、ツリーマッチング、コルーチンの作成、エラトステネスの篩
- 2011/02/26 非決定性
amb の動作、amb の作成、順列の生成、解をすべて求める、論理パズル、データ構造の定義、補助関数の作成、論理パズルの解法、amb は深さ優先探索、経路の探索、幅優先探索版 amb の作成、経路の探索 (2)、水差し問題
- 2017/01/28 遅延評価
遅延評価の実装、たらいまわし関数、遅延評価による高速化、クロージャによる遅延評価
- 2017/01/28 遅延ストリーム
遅延ストリームの構造、遅延ストリームの生成、無限ストリームの生成、遅延ストリームの操作メソッド、遅延ストリームの連結、高階関数、遅延ストリームへの変換、flat_map()、take_while() と drop_while()
- 2017/01/28 遅延ストリーム (2)
zip() と zip_with()、遅延ストリームの併合、集合演算、ハミングの問題、順列の生成、組み合わせの生成、エラトステネスの篩、より高速な方法、双子素数
- 2017/01/29 immutable な連結リスト
immutable な連結リストの仕様と実行例、プログラムリスト (imlist.rb)、リストで遊ぼう (sum, minimum, maximum, FizzBuzz, butlast, group, partition, quick_sort, merge_list, merge_sort, permutation, combination, distinct, union, intersection, difference, subset?, power_set, sieve, mastermind)
●参考文献, URL
- まつもとゆきひろ, 石塚圭樹, 『オブジェクト指向スクリプト言語Ruby』, 株式会社アスキー, 1999
- オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル, (本家)
- Ruby入門(全26回), (ドットインストール)
お気楽 Ruby/Tk 超入門
CONTENTS
●参考文献, URL
- library tk, (Ruby 2.2.0 リファレンスマニュアル)
- Ruby/Tk講習会 at 都城 (PDF), (永井さん)
- Ruby/Tk チュートリアル, (梶山タカシさん)
Ruby Junk Scripts
M.Hiroi が Ruby の勉強で書いたジャンクスクリプトです。
CONTENTS
権利・免責事項など
『お気楽 Ruby プログラミング入門』, 『お気楽 Ruby/Tk 超入門』,『Ruby Junk Scripts』の著作権は筆者「広井誠 (Makoto Hiroi) 」が保持します。無断使用や無断転載は禁止いたします。
『お気楽 Ruby プログラミング入門』, 『お気楽 Ruby/Tk 超入門』, 『Ruby Junk Scripts』で作成したプログラムはフリーソフトウェアとします。ご自由にお使いください。プログラムの改造や配布もご自由にどうぞ。その際は、出典を明記してくださるようお願いいたします。
ただし、これらのプログラムは無保証であり、使用したことにより生じた損害について、作者「広井誠 (Makoto Hiroi) 」は一切の責任を負いません。また、これらのプログラムを販売することで利益を得るといった商行為は禁止いたします。
Copyright (C) 2006-2017 Makoto Hiroi
All rights reserved.