コンピュータプログラミング
書籍情報
発売日 : 2022年04月12日
著者/編集 : 電子情報通信学会/富樫 敦
出版社 : コロナ社
発行形態 : 全集・双書
書籍説明
内容紹介
プログラミングは貴重なアイディアを実現するための強力な武器である。本書ではPythonという人工知能用言語を用い,問題解決を通してその背景にある専門知識も同時に身に付けながらプログラミングの基礎を習得していく。
目次
1. プログラミングとは
1.1 はじめに
1.2 プログラミングとは
1.3 アルゴリズムとプログラム
1.4 問題解決とアルゴリズムに関する基礎知識
1.4.1 探索問題
1.4.2 ソーティング問題
1.4.3 最短経路問題
1.4.4 最適化問題
1.5 計算可能関数
本章のまとめ
理解度の確認
2. プログラミング・チュートリアル(制御フロー編)
2.1 数とその表現
2.1.1 数とf文字列
2.1.2 prin(t)関数
2.1.3 指数形式の浮動小数点数表示
2.1.4 タプル・パッキング&シーケンス・アンパッキング
2.2 算術演算と式の計算
2.2.1 算術演算
談話室 Jupyter Notebookのセル
2.2.2 式の計算
2.2.3 フェルマーの小定理
2.3 変数・代入・平方根
談話室 コメントを追加する
2.4 関数定義
2.4.1 def文による無名関数定義
2.4.2 ラムダ式による関数定義
2.5 条件分岐
2.5.1 条件分岐とは
2.5.2 うるう年
2.5.3 偽造硬貨・天秤問題
2.6 繰返し(ループ)
2.6.1 繰返し構造のパターン
2.6.2 ユークリッドの互除法(while文の適用例)
談話室 水汲み問題
2.6.3 二分法による平方根の求め方(while文の適用例)
2.6.4 じゃんけんプログラム
本章のまとめ
理解度の確認
3. プログラミング・チュートリアル(制御フロー編・発展編)
3.1 関数(発展的話題)
3.1.1 関数のグラフ
3.1.2 関数の図的表現
3.1.3 素数判定
3.2 エラーと例外処理
3.2.1 構文エラー
3.2.2 例外
3.2.3 例外処理
3.2.4 例外発生
3.2.5 assert文
3.3 アルゴリズムとプログラム
3.3.1 アルゴリズムとは
3.3.2 アルゴリズムの記述
3.3.3 アルゴリズム解析と計算量
3.3.4 時間計算量からみたアルゴリズムの主なクラス
本章のまとめ
理解度の確認
4. プログラミング・チュートリアル(データ構造編)
4.1 変数とその評価
4.1.1 代入文の処理系上の仕組み
4.1.2 変数への値の渡し方と参照渡し
4.2 データ型
4.2.1 用途と特徴に応じたデータ構造の分類
4.2.2 数・数値
4.2.3 リスト
4.2.4 文字列
4.2.5 タプル
4.2.6 range
4.2.7 辞書(ディクショナリ)
4.2.8 集合
4.3 グラフの実現とアルゴリズム
4.3.1 グラフの実現法(表現法)
4.3.2 到達可能性問題
4.3.3 グラフ問題:ダイクストラの最短経路アルゴリズム
4.4 オブジェクト指向
4.4.1 オブジェクト指向プログラミングとは
4.4.2 データ構造スタックとキュー
4.4.3 スタックのクラス定義と応用
4.4.4 キューのクラス定義と応用
本章のまとめ
理解度の確認
5. 条件分岐と繰返し
5.1 条件分岐
5.1.1 選択:if文による条件分岐
5.1.2 偽造硬貨問題
5.2 条件的繰返し処理(whileループ)
5.2.1 while文による条件的繰返し
5.2.2 ニュートン・ラフソン法
5.3 反復可能オブジェクトによる繰返し(forループ)
5.3.1 for文の構造
5.3.2 繰返し回数の指定法
5.3.3 繰返し処理例:数が作る美
5.4 繰返しからの脱却
5.4.1 脱却のイメージ:三つのケース
5.4.2 プログラム例
5.5 内包表記と繰返し
5.5.1 集合の外延的表記と内包的表記
5.5.2 リスト内包表記
本章のまとめ
理解度の確認
6. 関数と再帰
6.1 関数の基礎
6.1.1 関数定義
6.1.2 グローバル変数
6.2 Pythonでの関数流儀
6.2.1 位置引数・キーワード引数・デフォルト値
6.2.3 関数の中で補助関数を利用
6.2.4 可変長引数
6.3 再帰関数
6.3.1 再帰関数とは
6.3.2 階乗関数
6.3.3 フィボナッチ数列
6.3.4 回文
6.4 再帰関数の効率化
6.4.1 再帰関数の実行の仕組み
6.4.2 再帰関数の効率化
本章のまとめ
理解度の確認
7. オブジェクト指向プログラミング
7.1 オブジェクト指向とは
7.2 クラスの定義
7.2.1 クラス定義
7.2.2 インスタンス属性・インスタンスメソッド
7.2.3 クラス属性・クラスメソッド
7.3 クラスの継承
7.4 オブジェクト指向プログラミングの醍醐味
7.4.1 イテラブルクラス・イテレータクラスの実装
7.4.2 カプセル化
本章のまとめ
理解度の確認
8. 問題解決とプログラミング
8.1 アルゴリズム設計戦略
8.1.1 問題解決とアルゴリズム設計
8.1.2 縮小統治法による有名人の問題解決
8.2 探索問題
8.2.1 線形探索アルゴリズム
8.2.2 二分探索アルゴリズム
8.2.3 数以外の探索問題
8.3 ソーティングアルゴリズム
8.4 貪欲アルゴリズム
8.4.1 コイン問題
8.4.2 ナップザック問題
8.4.3 ダイクストラの最短経路アルゴリズム
8.5 動的計画法
8.5.1 動的計画法とは
8.5.2 コイン問題
本章のまとめ
理解度の確認
付録
1. 演算
2. データ型一般
3. シーケンス型の操作
4. データ型独自の固有操作
5. 組み込みデータ型間の変換
6. deque
引用・参考文献
索引
1.1 はじめに
1.2 プログラミングとは
1.3 アルゴリズムとプログラム
1.4 問題解決とアルゴリズムに関する基礎知識
1.4.1 探索問題
1.4.2 ソーティング問題
1.4.3 最短経路問題
1.4.4 最適化問題
1.5 計算可能関数
本章のまとめ
理解度の確認
2. プログラミング・チュートリアル(制御フロー編)
2.1 数とその表現
2.1.1 数とf文字列
2.1.2 prin(t)関数
2.1.3 指数形式の浮動小数点数表示
2.1.4 タプル・パッキング&シーケンス・アンパッキング
2.2 算術演算と式の計算
2.2.1 算術演算
談話室 Jupyter Notebookのセル
2.2.2 式の計算
2.2.3 フェルマーの小定理
2.3 変数・代入・平方根
談話室 コメントを追加する
2.4 関数定義
2.4.1 def文による無名関数定義
2.4.2 ラムダ式による関数定義
2.5 条件分岐
2.5.1 条件分岐とは
2.5.2 うるう年
2.5.3 偽造硬貨・天秤問題
2.6 繰返し(ループ)
2.6.1 繰返し構造のパターン
2.6.2 ユークリッドの互除法(while文の適用例)
談話室 水汲み問題
2.6.3 二分法による平方根の求め方(while文の適用例)
2.6.4 じゃんけんプログラム
本章のまとめ
理解度の確認
3. プログラミング・チュートリアル(制御フロー編・発展編)
3.1 関数(発展的話題)
3.1.1 関数のグラフ
3.1.2 関数の図的表現
3.1.3 素数判定
3.2 エラーと例外処理
3.2.1 構文エラー
3.2.2 例外
3.2.3 例外処理
3.2.4 例外発生
3.2.5 assert文
3.3 アルゴリズムとプログラム
3.3.1 アルゴリズムとは
3.3.2 アルゴリズムの記述
3.3.3 アルゴリズム解析と計算量
3.3.4 時間計算量からみたアルゴリズムの主なクラス
本章のまとめ
理解度の確認
4. プログラミング・チュートリアル(データ構造編)
4.1 変数とその評価
4.1.1 代入文の処理系上の仕組み
4.1.2 変数への値の渡し方と参照渡し
4.2 データ型
4.2.1 用途と特徴に応じたデータ構造の分類
4.2.2 数・数値
4.2.3 リスト
4.2.4 文字列
4.2.5 タプル
4.2.6 range
4.2.7 辞書(ディクショナリ)
4.2.8 集合
4.3 グラフの実現とアルゴリズム
4.3.1 グラフの実現法(表現法)
4.3.2 到達可能性問題
4.3.3 グラフ問題:ダイクストラの最短経路アルゴリズム
4.4 オブジェクト指向
4.4.1 オブジェクト指向プログラミングとは
4.4.2 データ構造スタックとキュー
4.4.3 スタックのクラス定義と応用
4.4.4 キューのクラス定義と応用
本章のまとめ
理解度の確認
5. 条件分岐と繰返し
5.1 条件分岐
5.1.1 選択:if文による条件分岐
5.1.2 偽造硬貨問題
5.2 条件的繰返し処理(whileループ)
5.2.1 while文による条件的繰返し
5.2.2 ニュートン・ラフソン法
5.3 反復可能オブジェクトによる繰返し(forループ)
5.3.1 for文の構造
5.3.2 繰返し回数の指定法
5.3.3 繰返し処理例:数が作る美
5.4 繰返しからの脱却
5.4.1 脱却のイメージ:三つのケース
5.4.2 プログラム例
5.5 内包表記と繰返し
5.5.1 集合の外延的表記と内包的表記
5.5.2 リスト内包表記
本章のまとめ
理解度の確認
6. 関数と再帰
6.1 関数の基礎
6.1.1 関数定義
6.1.2 グローバル変数
6.2 Pythonでの関数流儀
6.2.1 位置引数・キーワード引数・デフォルト値
6.2.3 関数の中で補助関数を利用
6.2.4 可変長引数
6.3 再帰関数
6.3.1 再帰関数とは
6.3.2 階乗関数
6.3.3 フィボナッチ数列
6.3.4 回文
6.4 再帰関数の効率化
6.4.1 再帰関数の実行の仕組み
6.4.2 再帰関数の効率化
本章のまとめ
理解度の確認
7. オブジェクト指向プログラミング
7.1 オブジェクト指向とは
7.2 クラスの定義
7.2.1 クラス定義
7.2.2 インスタンス属性・インスタンスメソッド
7.2.3 クラス属性・クラスメソッド
7.3 クラスの継承
7.4 オブジェクト指向プログラミングの醍醐味
7.4.1 イテラブルクラス・イテレータクラスの実装
7.4.2 カプセル化
本章のまとめ
理解度の確認
8. 問題解決とプログラミング
8.1 アルゴリズム設計戦略
8.1.1 問題解決とアルゴリズム設計
8.1.2 縮小統治法による有名人の問題解決
8.2 探索問題
8.2.1 線形探索アルゴリズム
8.2.2 二分探索アルゴリズム
8.2.3 数以外の探索問題
8.3 ソーティングアルゴリズム
8.4 貪欲アルゴリズム
8.4.1 コイン問題
8.4.2 ナップザック問題
8.4.3 ダイクストラの最短経路アルゴリズム
8.5 動的計画法
8.5.1 動的計画法とは
8.5.2 コイン問題
本章のまとめ
理解度の確認
付録
1. 演算
2. データ型一般
3. シーケンス型の操作
4. データ型独自の固有操作
5. 組み込みデータ型間の変換
6. deque
引用・参考文献
索引
著者情報
富樫, 敦
富樫 敦
電子情報通信学会