本書は、現実世界の問題を解決するプログラムを開発、利用する方法を説明しながら、コンピュータとプログラミングの基礎を解説します。例題のほとんどは科学技術分野のものですが、考え方はあらゆる分野に応用できます。また、プログラミングについての系統的、方法論的な考え方について、特に複雑な問題を単純な問題に分割し、それら単純な問題の解決方法を組み合わせて複雑なアプリケーションを作る手順を学びます。
本書を読み終えるころには、プロフェッショナルなプログラマが物事をどのようにとらえて発想するのか、つまりプロフェッショナルなプログラマのように考える方法を手に入れられるでしょう。
初めてのコンピュータサイエンス
Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson 著、長尾 高弘 訳
- TOPICS
- Programming
- 発行年月日
- 2010年07月
- PRINT LENGTH
- 356
- ISBN
- 978-4-87311-463-7
- 原書
- Practical Programming
- FORMAT
目次
1章 イントロダクション 1.1 プログラムとプログラミング 1.2 若干の定義 1.3 インストールすべきもの 1.4 担当講師の方々へ 1.5 まとめ 2章 Python入門 2.1 全体の構図 2.2 式 2.2.1 int型 2.2.2 float型 2.3 型とは何か 2.3.1 有限精度 2.3.2 演算子の優先順位 2.4 変数と代入文 2.4.1 複合演算子 2.5 ものごとがうまくいかないとき 2.6 関数の基礎 2.6.1 ローカル変数 2.7 組み込み関数 2.8 コーディングスタイルについて 2.9 まとめ 2.10 練習問題 3章 文字列 3.1 文字列 3.2 エスケープ文字 3.3 マルチライン文字列 3.4 print 3.5 整形されたprint 3.6 ユーザー入力 3.7 まとめ 3.8 練習問題 4章 モジュール 4.1 モジュールのインポート 4.2 独自モジュールの定義 4.2.1 インポートのときに行われていること 4.2.2 __main__の使い方 4.2.3 ヘルプの準備 4.3 オブジェクトとメソッド 4.3.1 イメージ 4.4 ピクセルと色 4.5 テスト 4.6 コーディングスタイルについて 4.7 まとめ 4.8 練習問題 5章 リスト 5.1 リストと添字 5.1.1 空リスト 5.1.2 異種要素を格納できるリスト 5.2 リストの書き換え 5.3 リストの組み込み関数 5.4 リストの要素の操作 5.4.1 ループのネスト 5.5 スライシング 5.6 エイリアシング 5.6.1 関数呼び出しにおけるエイリアシング 5.7 リストメソッド 5.8 リストのネスト 5.9 その他のシーケンス 5.10 リストとしてのファイル 5.10.1 コマンドライン引数 5.11 コメント 5.12 まとめ 5.13 練習問題 6章 条件分岐 6.1 ブール論理 6.1.1 ブール論理の演算子 6.1.2 関係演算子 6.1.3 比較の結合 6.1.4 ブール演算子による整数、浮動小数点数、文字列の操作 6.2 if文 6.2.1 if文のネスト 6.3 条件の保存 6.4 まとめ 6.5 練習問題 7章 反復 7.1 カウンタ付きループ 7.1.1 数値の範囲 7.1.2 enumerate関数 7.1.3 ループのネスト、再び 7.1.4 複数のオブジェクトを対象とするループ処理 7.1.5 不規則リスト 7.2 whileループ 7.2.1 無限ループ 7.2.2 コールスタック 7.3 ユーザー入力ループ 7.4 ループの制御 7.4.1 break文 7.4.2 continue文 7.5 コーディングスタイルについて 7.6 まとめ 7.7 練習問題 8章 ファイル処理 8.1 1行に1レコード 8.1.1 ファイルの読み出し 8.1.2 インターネット上のファイル 8.1.3 ヘッダの読み飛ばし 8.1.4 値の欠落があるデータ 8.1.5 空白で区切られたデータ 8.2 複数のフィールドを持つレコード 8.3 位置データ 8.4 複数行レコード 8.5 先読み 8.6 ファイルへの書き込み 8.7 まとめ 8.8 練習問題 9章 集合と辞書 9.1 集合 9.1.1 集合の演算 9.1.2 北極圏の鳥類 9.1.3 集合の記憶構造 9.2 辞書 9.2.1 更新とメンバテスト 9.2.2 ループ 9.2.3 辞書のメソッド 9.2.4 辞書のサンプル 9.3 辞書の反転 9.4 まとめ 9.5 練習問題 10章 アルゴリズム 10.1 探索 10.1.1 探索、削除、探索 10.1.2 ソート、最小値判定、添字取得 10.1.3 リスト要素の反復処理 10.2 処理時間の計測 10.3 まとめ 10.4 練習問題 11章 探索とソート 11.1 線形探索 11.1.1 基本線形探索 11.1.2 forループによる線形探索 11.1.3 番兵を使った探索 11.1.4 探索の速度の測定方法 11.1.5 線形探索の実行時間 11.2 二分探索 11.2.1 二分探索の実行時間 11.2.2 組み込みの二分探索 11.3 ソート 11.3.1 選択ソート 11.3.2 挿入ソート 11.3.3 パフォーマンス 11.4 もっと効率のよいソートアルゴリズム 11.4.1 最初の試み 11.5 マージソート:Nlog2Nアルゴリズム 11.5.1 2つのソート済みリストのマージ 11.5.2 mergesort 11.5.3 マージソートの分析 11.6 まとめ 11.7 練習問題 12章 各種ツール 12.1 関数について 12.1.1 デフォルト引数 12.1.2 可変長引数リスト 12.1.3 名前付き引数 12.2 例外 12.2.1 tryとexcept 12.2.2 例外オブジェクト 12.2.3 関数と例外 12.2.4 例外の生成 12.2.5 例外のコーディングスタイル 12.3 テスト 12.3.1 用語法 12.3.2 単体テスト 12.3.3 独立性 12.3.4 限界 12.3.5 テスト駆動開発 12.4 デバッグ 12.5 パターン 12.5.1 固定値 12.5.2 ステッパとカウンタ 12.5.3 最良ホルダ 12.5.4 最新ホルダ 12.5.5 コンテナ 12.5.6 ギャザラ 12.5.7 一時変数 12.5.8 片道フラグ 12.6 まとめ 12.7 練習問題 13章 オブジェクト指向プログラミング 13.1 Colorクラス 13.1.1 メソッド 13.1.2 コンストラクタ 13.2 特殊メソッド 13.3 dirとhelpについてさらに 13.4 OO理論入門 13.4.1 カプセル化 13.4.2 ポリモーフィズム 13.4.3 継承 13.5 もっと長いサンプル 13.5.1 Atomクラス 13.5.2 Moleculeクラス 13.6 まとめ 13.7 練習問題 14章 GUI 14.1 Tkinterモジュール 14.2 GUIの基本ツール 14.2.1 ミュータブルな変数 14.2.2 Frame 14.2.3 Entry 14.3 モデル/ビュー/コントローラ 14.3.1 ラムダ関数 14.4 ウィジェットのスタイル 14.4.1 フォント 14.4.2 色 14.4.3 レイアウト 14.5 その他のウィジェット 14.5.1 Text 14.5.2 Checkbutton 14.5.3 Menu 14.6 オブジェクト指向GUI 14.7 まとめ 14.8 練習問題 15章 データベース 15.1 全体の構図 15.2 第1歩 15.2.1 変更の保存 15.3 データの検索 15.3.1 クエリーの条件 15.4 更新と削除 15.5 トランザクション 15.6 欠けたデータを表すNULL 15.7 JOINを使った表の結合 15.8 キーと制約 15.9 高度な機能 15.9.1 集計関数 15.9.2 グループ化 15.9.3 自己結合 15.9.4 クエリーのネスト 15.10 まとめ 15.11 練習問題 付録A 参考文献 索引