#author("2019-07-28T23:39:23+00:00","default:sagasite","sagasite")
#author("2019-07-30T14:08:28+00:00","default:sagasite","sagasite")
[[OCaml]]
#norelated
#contents

* プログラミングの基礎 [#qcbdf116]
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4781911609/vertex9-22/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51FBsJHo4EL._SL160_.jpg" border="0"></a></td><td> </td><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4781911609/vertex9-22/" target="_blank">プログラミングの基礎 (Computer Science Library)</a><br>浅井 健一<br>サイエンス社<br>2007-03-01<br>¥ 2484</td></tr></table>
}}

* 目次 [#pcff3bad]

| No. | 章 | 節 |h
|   1 | 第1章 はじめに								 | 1.1 デザインレシピ |
|   2 | | 1.2 使用する言語 |
|   3 | | 1.3 準備 |
|   4 | | 1.4 参考となる資料 |
|   5 | 第2章 基本的なデータ						 | 2.1 整数 |
|   6 | | 2.2 [[実数>Basic-of-programming_2-2]] |
|   7 | | 2.3 [[文字列>Basic-of-programming_2-3]] |
|   8 | | 2.4 真偽値 |
|   9 | | 2.5 そのほかのデータ |
|  10 | 第3章 変数の定義							 | 3.1 変数の必要性 |
|  11 | | 3.2 変数定義の構文 |
|  12 | | 3.3 変数の実行方法 |
|  13 | | 3.4 ほかの言語の変数との違い |
|  14 | 第4章 関数の定義							 | 4.1 関数定義の必要性 |
|  15 | | 4.2 関数定義の構文 |
|  16 | | 4.3 関数の型 |
|  17 | | 4.4 型推論と型チェック |
|  18 | | 4.5 関数の実行方法 |
|  19 | | 4.6 関数定義に対するデザインレシピ |
|  20 | 第5章 条件分岐								 | 5.1 条件分岐の必要性 |
|  21 | | 5.2 条件分岐の構文 |
|  22 | | 5.3 kyuyoの例 |
|  23 | | 5.4 式としてのif文 |
|  24 | | 5.5 条件分岐に対するデザインレシピ |
|  25 | | 5.6 真偽値を返す関数 |
|  26 | | 5.7 条件分岐の実行方法 |
|  27 | 第6章 さまざまなエラー						 | 6.1 構文エラー |
|  28 | | 6.2 未定義の変数 |
|  29 | | 6.3 型エラー |
|  30 | | 6.4 実行時のエラー |
|  31 | | 6.5 論理的なエラー |
|  32 | 第7章 組とパターンマッチ					 | 7.1 組の構文 |
|  33 | | 7.2 パターンマッチ |
|  34 | | 7.3 構造データに対するデザインレシピ |
|  35 | | 7.4 パターンマッチの実行方法 |
|  36 | 第8章 レコード								 | 8.1 レコードの必要性 |
|  37 | | 8.2 レコードの構文 |
|  38 | | 8.3 レコードとパターンマッチ |
|  39 | | 8.4 そのほかの記法 |
|  40 | | 8.5 ユーザによる型定義 |
|  41 | | 8.6 データ定義に対するデザインレシピ |
|  42 | | 8.7 駅名と駅間の情報の定義 |
|  43 | 第9章 リスト								 | 9.1 リストの構造 |
|  44 | | 9.2 リストの構文と型 |
|  45 | | 9.3 リストとパターンマッチ |
|  46 | | 9.4 再帰関数 |
|  47 | | 9.5 再帰関数に対するデザインレシピ |
|  48 | | 9.6 テンプレートの複合 |
|  49 | | 9.7 駅名リストと駅間リストの整備 |
|  50 | 第10章 再帰関数を使ったプログラミング		 | 10.1 関数のネスト |
|  51 | | 10.2 リストの中の最小値を求める関数 |
|  52 | | 10.3 局所変数定義 |
|  53 | | 10.4 パターンマッチつき局所変数定義 |
|  54 | | 10.5 ふたつのリストを結合する関数 |
|  55 | | 10.6 ふたつの昇順に並んだリストをマージする関数 |
|  56 | | 10.7 駅名・駅間リストからの情報の取得 |
|  57 | 第11章 自然数と再帰						 | 11.1 自然数の構造 |
|  58 | | 11.2 自然数に基づいた再帰関数 |
|  59 | | 11.3 ベキ乗を求める関数 |
|  60 | | 11.4 リスト上の再帰との違い |
|  61 | 第12章 ダイクストラのアルゴリズム			 | 12.1 グラフ上の最短路問題 |
|  63 | | 12.2 ダイクストラのアルゴリズム |
|  64 | | 12.3 アルゴリズムの正当性 |
|  65 | | 12.4 プログラムにおける頂点と辺の定義 |
|  66 | | 12.5 駅名の重複の除去 |
|  67 | 第13章 一般化と高階関数					 | 13.1 データの一般化 |
|  68 | | 13.2 関数の一般化とmap |
|  69 | | 13.3 多相型と多相関数 |
|  70 | | 13.4 値としての関数 |
|  71 | | 13.5 関数を返す関数 |
|  72 | | 13.6 確定点に隣接する点の最短距離の更新 |
|  73 | 第14章 高階関数を使ったリスト処理			 | 14.1 条件を満たす要素を取り出す関数 |
|  74 | | 14.2 各要素をまとめあげる関数 |
|  75 | | 14.3 局所関数定義 |
|  76 | | 14.4 名前のない関数 |
|  77 | | 14.5 infix関数とprefix関数 |
|  78 | | 14.6 完全数を求める関数 |
|  79 | 第15章 新しい形の再帰						 | 15.1 再帰関数の構造 |
|  80 | | 15.2 部分問題の生成 |
|  81 | | 15.3 補助関数の作成 |
|  82 | | 15.4 停止性の判定 |
|  83 | | 15.5 一般の再帰に対するデザインレシピ |
|  84 | | 15.6 最短距離最小の点の分離 |
|  85 | | 15.7 例の作成とデバッグについて |
|  86 | 第16章 情報の蓄積							 | 16.1 情報の欠落 |
|  87 | | 16.2 アキュムレータ |
|  88 | | 16.3 アキュムレータの活用 |
|  89 | | 16.4 最初の完動プログラム |
|  90 | | 16.5 プログラム作成のプロセス |
|  91 | 第17章 再帰的なデータ構造					 | 17.1 バリアント型 |
|  92 | | 17.2 木 |
|  93 | | 17.3 再帰的なデータ構造に対するデザインレシピ |
|  94 | | 17.4 2分探索木 |
|  95 | | 17.5 多相型の宣言 |
|  96 | | 17.6 停止性 |
|  97 | | 17.7 get_ekikan_kyoriの高速化 |
|  98 | | 17.8 全通りを尽くしていない場合の対処 |
|  99 | 第18章 例外と例外処理						 | 18.1 オプション型 |
| 100 | | 18.2 オプション型を使った例外処理 |
| 101 | | 18.3 オプション型を使った例外処理の問題点 |
| 102 | | 18.4 例外処理専用の構文 |
| 103 | | 18.5 例外処理の実際 |
| 104 | | 18.6 例外処理を使ったプログラミング |
| 105 | | 18.7 最短路問題における例外処理 |
| 106 | 第19章 モジュール							 | 19.1 モジュールの構文 |
| 107 | | 19.2 2分探索木のモジュール |
| 108 | | 19.3 モジュールインタフェース:シグネチャ |
| 109 | | 19.4 抽象データ型 |
| 110 | | 19.5 そのほかのシグネチャの宣言法 |
| 111 | | 19.6 ファイルの分割と分割コンパイル |
| 112 | | 19.7 2分探索木モジュールの使用 |
| 113 | 第20章 モジュールの開発					 | 20.1 赤黒木 |
| 114 | | 20.2 赤黒木への挿入 |
| 115 | | 20.3 赤黒木の再構成 |
| 116 | | 20.4 「または」のパターン |
| 117 | | 20.5 赤黒木のモジュール化 |
| 118 | | 20.6 open文 |
| 119 | 第21章 逐次実行							 | 21.1 副作用を持つ関数 |
| 120 | | 21.2 unit型 |
| 121 | | 21.3 逐次実行の構文 |
| 122 | | 21.4 実行中の変数の表示 |
| 123 | | 21.5 実行の順序 |
| 124 | | 21.6 スタンドアローンのプログラム |
| 125 | | 21.7 引数の渡し方 |
| 126 | 第22章 値の書き換えと参照透過性			 | 22.1 参照透過性 |
| 127 | | 22.2 呼び出し回数のカウント |
| 128 | | 22.3 参照型と値の書き換え |
| 129 | | 22.4 参照透過性の喪失 |
| 130 | | 22.5 変更可能なレコード |
| 131 | | 22.6 配列 |
| 132 | | 22.7 配列の変更 |
| 133 | 第23章 副作用命令を使ったプログラミング	 | 23.1 ダイクストラ法におけるデータアクセス |
| 134 | | 23.2 ヒープ |
| 135 | | 23.3 ヒープへの挿入 |
| 136 | | 23.4 そのほかの操作 |
| 137 | | 23.5 ヒープのインタフェース |
| 138 | | 23.6 副作用命令の影響について |
| 139 | | 23.7 ヒープ実装の概要 |
| 140 | 第24章 まとめ―プログラミングとは―		 | 24.1 OCamlを習得して |
| 141 | | 24.2 この先の道 |
|   1 | 第1章 はじめに								 | [[1.1 デザインレシピ>Basic-of-programming_1-1]] |
|   2 | | [[1.2 使用する言語>Basic-of-programming_1-2]] |
|   3 | | [[1.3 準備>Basic-of-programming_1-3]] |
|   4 | | [[1.4 参考となる資料>Basic-of-programming_1-4]] |
|   5 | 第2章 基本的なデータ						 | [[2.1 整数>Basic-of-programming_2-1]] |
|   6 | | [[2.2 実数>Basic-of-programming_2-2]] |
|   7 | | [[2.3 文字列>Basic-of-programming_2-3]] |
|   8 | | [[2.4 真偽値>Basic-of-programming_2-4]] |
|   9 | | [[2.5 そのほかのデータ>Basic-of-programming_2-5]] |
|  10 | 第3章 変数の定義							 | [[3.1 変数の必要性>Basic-of-programming_3-1]] |
|  11 | | [[3.2 変数定義の構文>Basic-of-programming_3-2]] |
|  12 | | [[3.3 変数の実行方法>Basic-of-programming_3-3]] |
|  13 | | [[3.4 ほかの言語の変数との違い>Basic-of-programming_3-4]] |
|  14 | 第4章 関数の定義							 | [[4.1 関数定義の必要性>Basic-of-programming_4-1]] |
|  15 | | [[4.2 関数定義の構文>Basic-of-programming_4-2]] |
|  16 | | [[4.3 関数の型>Basic-of-programming_4-3]] |
|  17 | | [[4.4 型推論と型チェック>Basic-of-programming_4-4]] |
|  18 | | [[4.5 関数の実行方法>Basic-of-programming_4-5]] |
|  19 | | [[4.6 関数定義に対するデザインレシピ>Basic-of-programming_4-6]] |
|  20 | 第5章 条件分岐								 | [[5.1 条件分岐の必要性>Basic-of-programming_5-1]] |
|  21 | | [[5.2 条件分岐の構文>Basic-of-programming_5-2]] |
|  22 | | [[5.3 kyuyoの例>Basic-of-programming_5-3]] |
|  23 | | [[5.4 式としてのif文>Basic-of-programming_5-4]] |
|  24 | | [[5.5 条件分岐に対するデザインレシピ>Basic-of-programming_5-5]] |
|  25 | | [[5.6 真偽値を返す関数>Basic-of-programming_5-6]] |
|  26 | | [[5.7 条件分岐の実行方法>Basic-of-programming_5-7]] |
|  27 | 第6章 さまざまなエラー						 | [[6.1 構文エラー>Basic-of-programming_6-1]] |
|  28 | | [[6.2 未定義の変数>Basic-of-programming_6-2]] |
|  29 | | [[6.3 型エラー>Basic-of-programming_6-3]] |
|  30 | | [[6.4 実行時のエラー>Basic-of-programming_6-4]] |
|  31 | | [[6.5 論理的なエラー>Basic-of-programming_6-5]] |
|  32 | 第7章 組とパターンマッチ					 | [[7.1 組の構文>Basic-of-programming_7-1]] |
|  33 | | [[7.2 パターンマッチ>Basic-of-programming_7-2]] |
|  34 | | [[7.3 構造データに対するデザインレシピ>Basic-of-programming_7-3]] |
|  35 | | [[7.4 パターンマッチの実行方法>Basic-of-programming_7-4]] |
|  36 | 第8章 レコード								 | [[8.1 レコードの必要性>Basic-of-programming_8-1]] |
|  37 | | [[8.2 レコードの構文>Basic-of-programming_8-2]] |
|  38 | | [[8.3 レコードとパターンマッチ>Basic-of-programming_8-3]] |
|  39 | | [[8.4 そのほかの記法>Basic-of-programming_8-4]] |
|  40 | | [[8.5 ユーザによる型定義>Basic-of-programming_8-5]] |
|  41 | | [[8.6 データ定義に対するデザインレシピ>Basic-of-programming_8-6]] |
|  42 | | [[8.7 駅名と駅間の情報の定義>Basic-of-programming_8-7]] |
|  43 | 第9章 リスト								 | [[9.1 リストの構造>Basic-of-programming_9-1]] |
|  44 | | [[9.2 リストの構文と型>Basic-of-programming_9-2]] |
|  45 | | [[9.3 リストとパターンマッチ>Basic-of-programming_9-3]] |
|  46 | | [[9.4 再帰関数>Basic-of-programming_9-4]] |
|  47 | | [[9.5 再帰関数に対するデザインレシピ>Basic-of-programming_9-5]] |
|  48 | | [[9.6 テンプレートの複合>Basic-of-programming_9-6]] |
|  49 | | [[9.7 駅名リストと駅間リストの整備>Basic-of-programming_9-7]] |
|  50 | 第10章 再帰関数を使ったプログラミング		 | [[10.1 関数のネスト>Basic-of-programming_10-1]] |
|  51 | | [[10.2 リストの中の最小値を求める関数>Basic-of-programming_10-1]] |
|  52 | | [[10.3 局所変数定義>Basic-of-programming_10-3]] |
|  53 | | [[10.4 パターンマッチつき局所変数定義>Basic-of-programming_10-4]] |
|  54 | | [[10.5 ふたつのリストを結合する関数>Basic-of-programming_10-5]] |
|  55 | | [[10.6 ふたつの昇順に並んだリストをマージする関数>Basic-of-programming_10-6]] |
|  56 | | [[10.7 駅名・駅間リストからの情報の取得>Basic-of-programming_10-7]] |
|  57 | 第11章 自然数と再帰						 | [[11.1 自然数の構造>Basic-of-programming_11-1]] |
|  58 | | [[11.2 自然数に基づいた再帰関数>Basic-of-programming_11-2]] |
|  59 | | [[11.3 ベキ乗を求める関数>Basic-of-programming_11-3]] |
|  60 | | [[11.4 リスト上の再帰との違い>Basic-of-programming_11-4]] |
|  61 | 第12章 ダイクストラのアルゴリズム			 | [[12.1 グラフ上の最短路問題>Basic-of-programming_12-1]] |
|  63 | | [[12.2 ダイクストラのアルゴリズム>Basic-of-programming_12-2]] |
|  64 | | [[12.3 アルゴリズムの正当性>Basic-of-programming_12-3]] |
|  65 | | [[12.4 プログラムにおける頂点と辺の定義>Basic-of-programming_12-4]] |
|  66 | | [[12.5 駅名の重複の除去>Basic-of-programming_12-5]] |
|  67 | 第13章 一般化と高階関数					 | [[13.1 データの一般化>Basic-of-programming_13-1]] |
|  68 | | [[13.2 関数の一般化とmap>Basic-of-programming_13-2]] |
|  69 | | [[13.3 多相型と多相関数>Basic-of-programming_13-3]] |
|  70 | | [[13.4 値としての関数>Basic-of-programming_13-4]] |
|  71 | | [[13.5 関数を返す関数>Basic-of-programming_13-5]] |
|  72 | | [[13.6 確定点に隣接する点の最短距離の更新>Basic-of-programming_13-6]] |
|  73 | 第14章 高階関数を使ったリスト処理			 | [[14.1 条件を満たす要素を取り出す関数>Basic-of-programming_14-1]] |
|  74 | | [[14.2 各要素をまとめあげる関数>Basic-of-programming_14-2]] |
|  75 | | [[14.3 局所関数定義>Basic-of-programming_14-3]] |
|  76 | | [[14.4 名前のない関数>Basic-of-programming_14-4]] |
|  77 | | [[14.5 infix関数とprefix関数>Basic-of-programming_14-5]] |
|  78 | | [[14.6 完全数を求める関数>Basic-of-programming_14-6]] |
|  79 | 第15章 新しい形の再帰						 | [[15.1 再帰関数の構造>Basic-of-programming_15-1]] |
|  80 | | [[15.2 部分問題の生成>Basic-of-programming_15-2]] |
|  81 | | [[15.3 補助関数の作成>Basic-of-programming_15-3]] |
|  82 | | [[15.4 停止性の判定>Basic-of-programming_15-4]] |
|  83 | | [[15.5 一般の再帰に対するデザインレシピ>Basic-of-programming_15-5]] |
|  84 | | [[15.6 最短距離最小の点の分離>Basic-of-programming_15-6]] |
|  85 | | [[15.7 例の作成とデバッグについて>Basic-of-programming_15-7]] |
|  86 | 第16章 情報の蓄積							 | [[16.1 情報の欠落>Basic-of-programming_16-1]] |
|  87 | | [[16.2 アキュムレータ>Basic-of-programming_16-2]] |
|  88 | | [[16.3 アキュムレータの活用>Basic-of-programming_16-3]] |
|  89 | | [[16.4 最初の完動プログラム>Basic-of-programming_16-4]] |
|  90 | | [[16.5 プログラム作成のプロセス>Basic-of-programming_16-5]] |
|  91 | 第17章 再帰的なデータ構造					 | [[17.1 バリアント型>Basic-of-programming_17-1]] |
|  92 | | [[17.2 木>Basic-of-programming_17-2]] |
|  93 | | [[17.3 再帰的なデータ構造に対するデザインレシピ>Basic-of-programming_17-3]] |
|  94 | | [[17.4 2分探索木>Basic-of-programming_17-4]] |
|  95 | | [[17.5 多相型の宣言>Basic-of-programming_17-5]] |
|  96 | | [[17.6 停止性>Basic-of-programming_17-6]] |
|  97 | | [[17.7 get_ekikan_kyoriの高速化>Basic-of-programming_17-7]] |
|  98 | | [[17.8 全通りを尽くしていない場合の対処>Basic-of-programming_17-8]] |
|  99 | 第18章 例外と例外処理						 | [[18.1 オプション型>Basic-of-programming_18-1]] |
| 100 | | [[18.2 オプション型を使った例外処理>Basic-of-programming_18-2]] |
| 101 | | [[18.3 オプション型を使った例外処理の問題点>Basic-of-programming_18-3]] |
| 102 | | [[18.4 例外処理専用の構文>Basic-of-programming_18-4]] |
| 103 | | [[18.5 例外処理の実際>Basic-of-programming_18-5]] |
| 104 | | [[18.6 例外処理を使ったプログラミング>Basic-of-programming_18-6]] |
| 105 | | [[18.7 最短路問題における例外処理>Basic-of-programming_18-7]] |
| 106 | 第19章 モジュール							 | [[19.1 モジュールの構文>Basic-of-programming_19-1]] |
| 107 | | [[19.2 2分探索木のモジュール>Basic-of-programming_19-2]] |
| 108 | | [[19.3 モジュールインタフェース:シグネチャ>Basic-of-programming_19-3]] |
| 109 | | [[19.4 抽象データ型>Basic-of-programming_19-4]] |
| 110 | | [[19.5 そのほかのシグネチャの宣言法>Basic-of-programming_19-5]] |
| 111 | | [[19.6 ファイルの分割と分割コンパイル>Basic-of-programming_19-6]] |
| 112 | | [[19.7 2分探索木モジュールの使用>Basic-of-programming_19-7]] |
| 113 | 第20章 モジュールの開発					 | [[20.1 赤黒木>Basic-of-programming_20-1]] |
| 114 | | [[20.2 赤黒木への挿入>Basic-of-programming_20-2]] |
| 115 | | [[20.3 赤黒木の再構成>Basic-of-programming_20-3]] |
| 116 | | [[20.4 「または」のパターン>Basic-of-programming_20-4]] |
| 117 | | [[20.5 赤黒木のモジュール化>Basic-of-programming_20-5]] |
| 118 | | [[20.6 open文>Basic-of-programming_20-6]] |
| 119 | 第21章 逐次実行							 | [[21.1 副作用を持つ関数>Basic-of-programming_21-1]] |
| 120 | | [[21.2 unit型>Basic-of-programming_21-2]]  |
| 121 | | [[21.3 逐次実行の構文>Basic-of-programming_21-3]]  |
| 122 | | [[21.4 実行中の変数の表示>Basic-of-programming_21-4]]  |
| 123 | | [[21.5 実行の順序>Basic-of-programming_21-5]]  |
| 124 | | [[21.6 スタンドアローンのプログラム>Basic-of-programming_21-6]]  |
| 125 | | [[21.7 引数の渡し方>Basic-of-programming_21-7]]  |
| 126 | 第22章 値の書き換えと参照透過性			 | [[22.1 参照透過性>Basic-of-programming_22-1]]  |
| 127 | | [[22.2 呼び出し回数のカウント>Basic-of-programming_22-2]] |
| 128 | | [[22.3 参照型と値の書き換え>Basic-of-programming_22-3]] |
| 129 | | [[22.4 参照透過性の喪失>Basic-of-programming_22-4]] |
| 130 | | [[22.5 変更可能なレコード>Basic-of-programming_22-5]] |
| 131 | | [[22.6 配列>Basic-of-programming_22-6]] |
| 132 | | [[22.7 配列の変更>Basic-of-programming_22-7]] |
| 133 | 第23章 副作用命令を使ったプログラミング	 | [[23.1 ダイクストラ法におけるデータアクセス>Basic-of-programming_23-1]] |
| 134 | | [[23.2 ヒープ>Basic-of-programming_23-2]] |
| 135 | | [[23.3 ヒープへの挿入>Basic-of-programming_23-3]] |
| 136 | | [[23.4 そのほかの操作>Basic-of-programming_23-4]] |
| 137 | | [[23.5 ヒープのインタフェース>Basic-of-programming_23-5]] |
| 138 | | [[23.6 副作用命令の影響について>Basic-of-programming_23-6]] |
| 139 | | [[23.7 ヒープ実装の概要>Basic-of-programming_23-7]] |
| 140 | 第24章 まとめ―プログラミングとは―		 | [[24.1 OCamlを習得して>Basic-of-programming_24-1]] |
| 141 | | [[24.2 この先の道>Basic-of-programming_24-2]] |

* 出版社 [#n532744f]
- 「プログラミングの基礎」 株式会社サイエンス社 株式会社新世社 株式会社数理工学社
http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-1160-1

* リンク [#g98b8301]
- お茶の水女子大学 理学部情報科学科 准教授 浅井健一さんインタビュー | IT系のインターンシップならエンジニアインターン
https://engineer-intern.jp/archives/11524
- 「プログラミングの基礎」
http://pllab.is.ocha.ac.jp/~asai/book/Top.html
- 「プログラミングの基礎」を使った授業紹介
http://pllab.is.ocha.ac.jp/~asai/book-mov/
- 浅井健一『プログラミングの基礎』の読書を捗らせるためのツール作りました - akimachoのはてなブログ
http://akimacho.hatenablog.com/entry/2015/03/05/122858
- デザインレシピ入力ページ
http://akimacho.github.io/design_recipe/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS