Software Technologyシリーズ[決定版] はじめてのC++
1999年9月20日紙版発売
塚越一雄 著
A5判/648ページ
定価2,948円(本体2,680円+税10%)
ISBN 4-7741-0843-X
ただいま弊社在庫はございません。
書籍の概要
この本の概要
これまでのC++の入門書は,読者にCの知識があることを前提にしたものが大半でした。それゆえ,初心者が始めてC++を学習するには,その第一歩から巨大な壁に挑まざるをえなかったのです。本書は,この障壁を完全に取り除きました。どうぞすぐにでも始めてください。
こんな方におすすめ
- Cを飛ばして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
- 索引
この本に関連する書籍
-
最新 これからはじめるVisual C++
難しい理屈はとりあえず抜きにして,とにかくぶっつけ本番でVC++を使いながらC++でのプログラミングについて学習していこうという本です。本書で一通り学習すれば,次に...
-
はじめてのC++[演習と解説]
完全な初心者にもわかりやすいとご好評をいただいている『はじめてのC++』をさらに強化すべく,新たに問題集ができました。まさにC++入門者必読の独習書です。『はじめ...