戻る

Software Technology シリーズ

[決定版]はじめてのC++ もくじ

 

1部 基礎 

第1章 旅立ち―はじめてのコンパイル

1 プログラムの構成
1.1 C++のプログラム
1.2 関数

2 関数の書き方
2.1 関数の名前
2.2 引数のない関数
2.3 関数値
2.4 return

3 コンパイル
3.1 ソースファイル
3.2 コンパイル
3.3 関数main
3.4 完成

4 GNU C++コンパイラ
4.1 g++とgcc
4.2 実行ファイル名の指定
4.3 デバッグを可能にする

第2章 書式の慣例

1 トークン
1.1 ト−クン
1.2 トークンの分解
1.3 トークンとトークン

2 自由書式

3 書式の習慣
3.1 1行1文
3.2 関数の書式
3.3 インデント

4 コメント
4.1 C++のコメント
4.2 行形式のコメント
4.3 ブロック形式のコメント
4.4 コメントのネスト

第3章 ストリームI/O

1 cout
1.1 文字列の表示
1.2 実行の流れ
1.3 coutの位置

2 ストリームI/O
2.1 coutの正体
2.2 ストリームI/O
2.3 iostream.h
2.4 Hello, world

3 マニピュレータ
3.1 coutによる出力
3.2 マニピュレータ
3.3 <<の連鎖

第4章 演算とデータ型

1 数値の出力
1.1 数値の出力
1.2 演算

2 四則演算子
2.1 数の合計
2.2 元利合計
2.3 オリンピックの開催

3 いろいろなデータ型
3.1 データ型
3.2 文字/文字列リテラル
3.3 数値リテラル

第5章 標準出力

1 いろいろな出力

2 もう1つの視点から
2.1 標準出力
2.2 リダイレクト
2.3 teeコマンド
2.4 /dev/null

3 標準エラー出力cerr

4 デバッグへの応用
4.1 cout天国
4.2 デバッグへの応用
4.3 coutよりもcerr

5 条件コンパイル
5.1 ifdef
5.2 ifndef
5.3 サンプルプログラム
5.4 記号定数の定義(コンパイル時)

第6章 変数

1 16進数変換プログラム
1.1 マニピュレータhex
1.2 マニピュレータdec
1.3 16進数変換プログラム(第1版)
1.4 16進数変換プログラム(第2版)

2 変数
2.1 宣言
2.2 変数宣庫
2.3 型名
2.4 代入
2.5 変数宣言(2)

3 16進数変換プログラム(第3版)

4 sizeof
4.1 sizeof演算子
4.2 データ型のサイズを調べる

第7章 標準入力

1 cin

2 演算子の多重定義

3 入力可能な16進数変換プログラム
3.1 16進数変換プログラム(第4版)
3.2 16進数変換プログラム(第5版)

4 サンプルプログラム
4.1 等差級数
4.2 オリンピックの開催(第2版)

5 cinの落とし穴
5.1 変数宣言(第3版)
5.2 cinの落とし穴

第8章 選択文if

1 基本3構造
1.1 連接
1.2 選択
1.3 反復
1.4 制御文

2 場合分け―if
2.1 if文
2.2 式の真偽
2.3 サンプルプログラム
2.4 else節
2.5 if文のインデント

3 オリンピックの開催(第3版)

4 条件式
4.1 演算子とオペランド
4.2 算術式
4.3 論理否定演算子 !

5 結果が「真/偽」になる演算
5.1 等値演算
5.2 関係演算子
5.3 論理演算子

6 ブロック
6.1 プログラムの落とし穴
6.2 プログラムの終了
6.3 ブロック
6.4 除算プログラム

7 代入式
7.1 文と式
7.2 代入式の値
7.3 誤らないために
7.4 便利な代入式
7.5 結合規則
7.6 式文

第9章 高度な選択文

1 3つ以上の場合分け(1)― else if
1.1 else if
1.2 遊園地の入園料

2 3つ以上の場合分け(2)― switch
2.1 switch文
2.2 簡易メニュー
2.3 バリエーション(1)
2.4 バリエーション(2)

3 if文のネスト
3.1 ifとelseの対応
3.2 どちらがもてる?
3.3 { } の利用

4 三項演算
4.1 三項演算子 ? と :
4.2 代入への利用
4.3 大小を比較するプログラム(三項演算子版)

5 論理演算子のトリック(猛者になるために)

第10章 反復文

1 インクリメント/デクリメント
1.1 代入演算子
1.2 インクリメント/デクリメント演算子

2 while
2.1 無限ループ
2.2 ループ変数
2.3 猫ふんじゃった

3 定数

4 do〜while
4.1 書式
4.2 do〜while文とwhile文
4.3 猫ふんじゃった(do〜while版)
4.4 入力の検査
4.5 円の面積と円周

5 for
5.1 while文の拡張
5.2 書式
5.3 for文の動作
5.4 猫ふんじゃった(for版)

6 ループ変数の利用
6.1 繰り返しの回数
6.2 平方表

第11章 高度なストリームI/O

1 出力幅の制御
1.1 setw
1.2 iomanip.h
1.3 有効な範囲

2 平方表(改良版)

3 cinのエラー処理
3.1 混乱するcin
3.2 エラーフラグ変数
3.3 演算子 !
3.4 エラーフラグのリセット
3.5 in
3.6 プロンプトの嵐
3.7 INT_MAX
3.8 複数文字のクリア

4 2数の合計(改良版)
4.1 リスト
4.2 実行
4.3 プログラムのポイント

第12章 関数

1 関数定義
1.1 関数名
1.2 関数の型
1.3 関数値
1.4 void型関数
1.5 引数
1.6 関数内部の実行順序
1.7 関数を並べる順序
1.8 サンプルプログラム

2 関数参照
2.1 関数を呼び出す
2.2 複数の関数を使う
2.3 コンパイルエラー

3 関数のプロトタイプ宣言
3.1 プロトタイプ宣言の書式
3.2 関数参照のチェック
3.3 CとC++のプロトタイプ宣言
3.4 関数参照とプロトタイプ宣言
3.5 プロトタイプ宣言の省略
3.6 複数の関数を使う(改良版)
3.7 C方式とPascal方式

4 なぜ関数を使うのか
4.1 同一処理の省力化
4.2 困難は分割せよ
4.3 プログラムの部品化

5 関数値
5.1 値を返す関数と返さない関数
5.2 べき乗 pow
5.3 static変数(関数内部)
5.4 10年後の元利合計

6 インライン関数
6.1 inline
6.2 インライン展開
6.3 メリットとデメリット

第13章 引数

1 引数
1.1 仮引数の定義
1.2 引数付き関数の参照
1.3 min〜maxまでの合計

2 デフォルト引数
2.1 デフォルト引数
2.2 複数の引数がある場合
2.3 サンプルプログラム

3 関数の多重定義
3.1 多重定義の条件
3.2 max & min

第14章 スコープ

1 関数呼び出しを数える

2 ローカル変数
2.1 名前のスコープ
2.2 ローカル変数
2.3 名前の衝突
2.4 ブロックローカル
2.5 引数とローカル変数

3 グローバル変数
3.1 ファイルスコープ
3.2 ローカル変数との衝突
3.3 スコープ演算子

第15章 配列

1 基本型とユーザー定義型

2 使い方の基本
2.1 宣言とサイズ
2.2 要素とインデックス
2.3 配列の使い方

3 定石
3.1 初期値を与える
3.2 配列のサイズ
3.3 全要素の出力
3.4 全要素に同じ値を設定する

4 応用
4.1 入力データの保存と加算
4.2 データの最大数
4.3 変数
4.4 データの入力
4.5 ループの脱出 ― break
4.6 データの件数
4.7 合計の計算
4.8 配列の限界

第16章 ポインタ

1 アドレス

2 ポインタの基本
2.1 宣言
2.2 変数のサイズ
2.3 変数表
2.4 変数の型
2.5 ポインタの型
2.6 代入
2.7 アドレス演算子
2.8 逆参照

3 参照引数
3.1 swap関数
3.2 値引数
3.3 ポインタ引数
3.4 swap関数(第2版)
3.5 参照引数
3.6 一時変数を使わない値の交換

4 ポインタと配列

第17章 ポインタと配列

1 配列名とアドレス

2 ポインタの演算

3 配列要素の参照
3.1 ポインタを移動しない
3.2 ポインタを移動する

4 ポインタと配列の相互利用
4.1 ポインタを配列として使う
4.2 配列をポインタとして使う

5 配列とポインタの違い

6 配列引数
6.1 配列を渡す
6.2 配列形式で受け取る
6.3 ポインタ形式で受け取る
6.4 配列のサイズ
6.5 配列の最大値を求める

第18章 文字列

1 文字列変数
1.1 文字列変数は存在しない
1.2 文字列変数の特殊性

2 文字の配列
2.1 EOS
2.2 ヌル文字
2.3 配列名

3 文字配列の初期化
3.1 文字単位の初期化
3.2 { } を使う
3.3 文字列リテラルを使う
3.4 同じ文字で初期化する
3.5 文字列の代入

4 文字へのポインタ
4.1 メモリの確保
4.2 文字遊び
4.3 ポインタ文字列の初期化

5 文字列引数と文字列関数値
5.1 文字列引数
5.2 文字列関数値
5.3 最後の文字を削除する

6 文字列関数
6.1 数値への変換
6.2 コピー
6.3 連結
6.4 文字列の検索

第2部 オブジェクト指向プログラミング

第19章 クラス

1 クラスの実態
1.1 ユーザー定義型
1.2 クラスのメンバー

2 クラス宣言

3 クラスの利用
3.1 クラス型変数の宣言
3.2 オブジェクト
3.3 宣言と定義

4 メンバー変数の参照

5 顧客クラス

第20章 アクセス制御

1 顧客クラス(第2版)

2 拡張に強いクラス
2.1 クラスの変更が及ぼす影響
2.2 拡張に強いクラス

3 メンバー関数
3.1 メンバー関数の追加
3.2 メンバー関数の本体
3.3 メンバー変数の参照
3.4 顧客クラス(第3版)

4 アクセス制御
4.1 メンバーの可視性
4.2 セクション
4.3 アクセス制御キーワード

5 インラインメンバー関数
5.1 クラスの外で定義する
5.2 インラインメンバー関数
5.3 顧客クラス(第4版)

6 何をクラスにするか?

第21章 コンストラクタ/デストラクタ

1 オブジェクトの初期化
1.1 クラスDiv
1.2 メンバー変数の初期化を忘れた例

2 コンストラクタ
2.1 コンストラクタの宣言
2.2 コンストラクタの定義
2.3 コンストラクタの実行
2.4 引数付きのコンストラクタ

3 コンストラクタの多重定義
3.1 2つのコンストラクタを持つクラス
3.2 コンストラクタの選択

4 デフォルトコンストラク

5 デストラクタ
5.1 デストラクタの宣言
5.2 デストラクタが実行される時期

第22章 継承

1 継承
1.1 果物クラス
1.2 基本クラスと派生クラス
1.3 派生クラスの宣言
1.4 コンパイルエラー

2 privateな継承
2.1 継承修飾子
2.2 privateな継承
2.3 基本クラスのprivateメンバー
2.4 publicメンバーがprivateに

3 publicな継承
3.1 publicな継承
3.2 厳しい継承
3.3 protectedセクション

4 アクセス制御と継承修飾子のまとめ

5 メンバー関数のオーバーロード
5.1 オーバーロード
5.2 多重定義
5.3 スコープ解決演算子
5.4 サンプルプログラム

6 継承とコンストラクタ
6.1 基本クラスのコンストラクタ
6.2 派生クラスのコンストラクタ
6.3 引数
6.4 イニシャライザ

第23章 多態性

1 オブジェクトとポインタ
1.1 オブジェクトとポインタ
1.2 ポインタとメンバーの参照

2 オブジェクトの代入互換性
2.1 代入互換性
2.2 オブジェクトの代入互換性
2.3 基本型への回帰
2.4 派生型への回帰
2.5 引数の代入互換性

3 仮想GUIプログラミング
3.1 GUI
3.2 GUI部品のためのクラス
3.3 オブジェクト階層図
3.4 GUI部品の基本クラス
3.5 ボタンクラス
3.6 エディットボックスクラス
3.7 「基本型への回帰」の弊害

4 列挙型
4.1 enum
4.2 値の変更
4.3 新しいデータ型
4.4 書式について

5 非多態性による解決
5.1 型情報を示す引数
5.2 なぜよくないか?

6 仮想関数
6.1 virtualキーワード
6.2 仮想関数のオーバーロード
6.3 「基本型への回帰」の回避

7 多態性

8 純粋仮想関数と抽象クラス
8.1 純粋仮想関数
8.2 抽象クラス
8.3 抽象クラスの派生クラス

第24章 動的変数

1 動的変数

2 基本型への適用
2.1 動的変数の生成 new
2.2 動的変数には名前がない
2.3 ポインタを使う
2.4 動的変数の削除 delete
2.5 サンプルプログラム

3 配列への適用
3.1 動的配列
3.2 入力データの保存と加算(第2版)

第25章 動的オブジェクト

1 動的オブジェクト
1.1 作成と削除
1.2 サンプルプログラム

2 コンストラクタとデストラクタ

3 引数付きのコンストラクタ

4 コンポジション
4.1 コンポジション
4.2 is a関係とhas a関係
4.3 コンストラクタ
4.4 デストラクタ
4.5 引数付きのコンストラクタ

第26章 演算子の多重定義

1 クラスの代入

2 2項演算子の多重定義(メンバー関数版)
2.1 演算子メンバー関数の書式
2.2 メンバー関数の本体
2.3 2項演算子 +

3 フレンド関数
3.1 フレンド関数の宣言
3.2 フレンド関数をインラインにする
3.3 オブジェクト間でデータを共有
3.4 複数のクラスで共通のフレンド関数を持つ

4 2項演算子の多重定義(フレンド関数版)
4.1 フレンド関数による演算子の定義
4.2 サンプルプログラム

5 単項演算子の多重定義(メンバー関数版)

6 単項演算子の多重定義(フレンド関数版)

7 演算子の多重定義

8 まとめ

第3部 応用プログラミング

第27章 分割コンパイル

1 ファイルの分割

2 分割コンパイル
2.1 オブジェクファイル
2.2 リンカの威力
2.3 コンパイルとリンクのしかた
2.4 いろいろなバリエーション

3 extern宣言
3.1 コンパイルエラー
3.2 エラーの原因
3.3 extern宣言
3.4 変数に対するextern宣言
3.5 関数に対するextern宣言
3.6 エラーの修正

4 ヘッダファイル
4.1 #include疑似命令
4.2 ヘッダファイル
4.3 ヘッダファイルに書く内容
4.4 分割コンパイルの支援
4.5 条件コンパイル
4.6 重複includeの回避

5 標準ヘッダファイル

6 やさしいmake
6.1 ファイルの依存関係
6.2 makeの実際
6.3 メイクファイル
6.4 ルール
6.5 依存記述行
6.6 コマンド行
6.7 基本的なメイクファイル

第28章 getoptパッケージ

1 コマンドラインの引数の解析
1.1 mainの引数
1.2 引数の値
1.3 引数の数
1.4 全引数の取得
1.5 解析が各プログラムに任されている

2 環境変数の取得

3 getopt
3.1 getoptの引数
3.2 getoptの関数値
3.3 無効なオプション文字
3.4 使い方の表示
3.5 エラーメッセージの停止―opterr
3.6 引数をとるオプション
3.7 非オプション引数

第29章 乱数

1 rand
1.1 stdlib.h
1.2 乱数発生プログラム

2 乱数系列
2.1 乱数系列の初期値
2.2 srand
2.3 乱数発生プログラム(第2版)
2.4 time
2.5 乱数発生プログラム(第3版)

3 範囲の制御
3.1 RAND_MAX
3.2 0以上1未満の乱数
3.3 0以上N未満の乱数
3.4 MIN以上MAX以下の乱数
3.5 サイコロの目

第30章 ファイル入出力:stdio版

1 stdioライブラリが必要な理由

2 ファイルからの入力
2.1 ファイルのオープン
2.2 オープンモード
2.3 オープン時のエラーチェック
2.4 データの入力
2.5 ファイルのクローズ

3 メッセージの出力
3.1 標準出力への出力
3.2 エスケープシーケンス
3.3 変換指示子
3.4 可変引数
3.5 標準エラー出力

4 簡易cat

5 ファイルへの出力
5.1 ファイルのオープン
5.2 データの出力:1文字単位
5.3 ファイルのクローズ
5.4 サンプルプログラム
5.5 ファイルの削除

6 fprintf
6.1 ファイルへの書き込み
6.2 組み込みのファイルポインタ

第31章 ファイル入出力:ストリームI/O版

1 ファイルからのフ入力
1.1 ifstream
1.2 ファイルのオープン
1.3 オープン時のエラーチェック
1.4 データの入力
1.5 ファイルのクローズ

2.簡易cat

3 ファイルへの出力
3.1 ofstream
3.2 サンプルプログラム
3.3 空白文字を読む
3.4 ファイルのアンリンク

第32章 端末プログラミング

1 cursesライブラリのコンパイル
1.1 ヘッダファイル
1.2 ライブラリ

2 最初のプログラム
2.1 ヘッダファイル
2.2 初期化と後処理
2.3 サンプルプログラム
2.4 ベルを鳴らす

3 文字の出力
3.1 文字列の出力
3.2 1文字入力
3.3 画面出力の最適化

4 cookedモード
4.1 1文字出力
4.2 バッファリング
4.3 echoモード
4.4 erase処理
4.5 kill処理

5 改行コードの変換
5.1 改行コード
5.2 改行コードの変換
5.3 nonl
5.4 復帰と改行

6 cbreakモード
6.1 モードの設定
6.2 割り込みキー
6.3 一時停止
6.4 表示の停止と再開

7 rawモード
7.1 モードの設定
7.2 キーコードを調べるプログラム

8 ファンクションキーの利用
8.1 ファンクションキーのキーコード
8.2 keypad
8.3 サンプルプログラム

9 カーソル移動

10 文字を装飾する

11 色を付ける
11.1 色を使う準備
11.2 カラーペア
11.3 色の設定
11.4 サンプルプログラム

第33章 スクリーンエディット

1 どのようなエディタか?

2 イベント駆動型プログラミング

3 クラスの設計
3.1 クラスにまとめる
3.2 座標
3.3 表示するもの
3.4 編集バッファ
3.5 メンバー変数

4 コンストラクタとデストラクタ
4.1 コンストラクタの設計
4.2 コンストラクタの定義
4.3 デストラクタ
4.4 なぜcursesの設定をしないのか?

5 公開メンバー
5.1 表示
5.2 フォーカスを当てる
5.3 イベントハンドラ
5.4 編集結果

6 クラスの使い方

7 イベントの検出

8 スクリーンエディタの内部構造
8.1 処理する機能
8.2 カーソル移動
8.3 編集バッファの構造
8.4 画面への反射
8.5 ASCII文字の挿入
8.6 漢字の挿入
8.7 文字の削除

9 全リスト

第34章 イベント駆動型アプリケーションフレームワーク

1 アプリケーションフレームワーク

2 オブジェクトベースのライブラリ
2.1 手順の隠蔽
2.2 再コンパイル不要の拡張

3 サンプルアAAAプリケーション
3.1 コンストラクタの拡張
3.2 データファイル
3.3 ウィジェットの挿入
3.4 ホットキー
3.5 ウィジェットの配列
3.6 データの保存
3.7 リスト

4 cursesの管理
4.1 cursesの制御
4.2 ヘッダとフッタ

5 ウィジェットの管理
5.1 ウィジェットの基本クラス
5.2 編集ボックス
5.3 WidgetとApp
5.4“の挿入
5.5 ウィジェットの廃棄

6 イベントの検出と送信

7 ホットキー

8 全リスト ウィジェットの挿入
8.1 app.h
8.2 app.C

索引

先頭へ

「はじめてのC++」内容紹介へ戻る      C++書籍目次             トップページ