C実践プログラミング 第3版

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
480
ISBN
978-4-900900-64-6
原書
Practical C Programming, 3rd Edition
FORMAT
Print
Print
4,950円

現在、JavaとかC++とか新しいプログラミング言語が脚光を浴びていますが、実際に仕事でよく使われている言語をあげるとFORTRANとかCOBOL、そしてCという名前が出てきます。特にCは非常に柔軟で適用範囲の広い言語なので、あらゆる分野で使われています。しかし、Cは柔軟に作られているがため、不慣れなCプログラマが組んだプログラムはプログラマが予期しなかったことまで実行してしまうこともあるのです。そうした初学者が罠に陥らないよう本書ではシンプルで実用的なルールを重んじながら、Cの言語仕様だけでなく(プログラムの発想、設計、記述、手法、デバッグ、リリース、ドキュメント作成、保守、バージョンアップなど)Cプログラミングの全過程について解説します。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表 - 次回増刷時に修正

288ページ 下から5行目
<修正前> 特定の数の実体か宣言できないのです。
<修正後> 特定の数の実体しか宣言できないのです。

目次

監訳者まえがき
はじめに

I部 基礎編

1章 Cとは何か
    1.1     Cの役割
    1.2     プログラミングとは
    1.3     C小史
    1.4     Cプログラムの構造
    1.5     Cの習得方法

2章 プログラム記述の基本
    2.1     プログラムの構想から実行まで
        2.1.1 ラッパ
    2.2     実際のプログラム作成
    2.3     コマンド行コンパイラを使用したプログラム作成
        2.3.1 手順1 プログラム格納場所の作成
        2.3.2 手順2 プログラムの作成
        2.3.3 手順3 コンパイラの実行
        2.3.4 手順4 プログラムの実行
    2.4 統合開発環境を使用したプログラム作成
        2.4.1 手順1 プログラム格納場所の作成
        2.4.2 手順2 IDEを用いたプログラムの入力、コンパイルおよび実行
    2.5     UNIXのヘルプ
    2.6     統合開発環境のヘルプ
    2.7     プログラミング実習

3章 スタイル
    3.1 コメント
    3.2     コーディングの基本
    3.3     コーディング信奉
    3.4     インデントとコードのスタイル
    3.5     わかりやすさ
    3.6     簡潔さ
    3.7     まとめ

4章 基本的な宣言および式
    4.1     プログラムの要素
    4.2     基本的なプログラム構造
    4.3     簡単な式
    4.4     変数および格納場所
    4.5     変数宣言
    4.6     整数型
    4.7     代入文
    4.8     printf関数
    4.9     浮動小数点数
    4.10    浮動小数点数型の除算と整数型の除算
    4.11    文字型
    4.12    設問の解答
    4.13    プログラミング実習

5章 配列、修飾子および数値の使用
    5.1     配列
    5.2     文字列
    5.3     文字列の読み込み
    5.4     多次元配列
    5.5     数値の読み込み
    5.6     変数の初期化
    5.7     種々の整数型
    5.8     種々の浮動小数点数型
    5.9     定数の宣言
    5.10    16進数および8進数
    5.11    簡略化演算子
    5.12    副作用
    5.13    ++xとx++
    5.14    その他の副作用の問題
    5.15    設問の解答
    5.16    プログラミング実習

6章 条件文と制御文
    6.1     if文
    6.2     else文
    6.3     strcmpは注意して使う
    6.4     ループ文
    6.5     while文
    6.6     break文
    6.7     continue文
    6.8     どこにでも代入できることによる副作用
    6.9     設問の解答
    6.10    プログラミング実習

7章 プログラミング手順
    7.1     セットアップ
    7.2     仕様書
    7.3     コード設計
    7.4     プロトタイプ
    7.5     Makefile
        7.5.1 汎用UNIX
        7.5.2 Free Software Foundationのgccコンパイラを使用するUNIX
        7.5.3 Borland C++
        7.5.4 Microsoft Visual C++
    7.6     テスト
    7.7     デバッグ
    7.8     保守
    7.9     改訂
    7.10    電子的考古学
    7.11    プログラムの注釈付け
    7.12    デバッガの利用
    7.13    テキストエディタのブラウザ的使用
    7.14    コメントの付加
    7.15    プログラミング実習


II部 単純なプログラミング

8章 他の制御文
    8.1     for文
    8.2     switch文
    8.3     switch、breakおよびcontinue
    8.4     設問の解答
    8.5     プログラミング実習

9章 変数スコープ および関数
    9.1     スコープおよびクラス
    9.2     関数
    9.3     パラメータをとらない関数
    9.4     構造化プログラミング
    9.5     再帰
    9.6     設問の解答
    9.7     プログラミング実習

10章 Cプリプロセッサ
    10.1    #define文
        10.1.1 #define対const
    10.2    条件付きコンパイル
    10.3    インクルードファイル
    10.4    パラメータをとるマクロ
    10.5    高度な機能
    10.6    まとめ
    10.7    設問の解答
    10.8    プログラミング実習

11章 ビット演算
    11.1 ビット演算子
    11.2 AND演算子(&)
    11.3    ビット単位OR(|)
    11.4    ビット単位排他的OR(^)
    11.5    補数演算子NOT(~)
    11.6    左シフト演算子と右シフト演算子(<<,>>)
        11.6.1 右シフトの詳細
    11.7    ビットのセットとクリアおよびテスト
    11.8    ビットマップグラフィックス
    11.9    設問の解答
    11.10   プログラミング実習

12章 高度な型
    12.1    構造体
    12.2    共用体
    12.3    typedef
    12.4    enum型
    12.5    キャスト
    12.6    ビットフィールドまたは構造体の圧縮
    12.7    構造体配列
    12.8    まとめ
    12.9    プログラミング実習

13章 単純なポインタ
    13.1    ポインタ
    13.2    関数引数としてのポインタ
    13.3    constポインタ
    13.4    ポインタと配列
    13.5    ポインタを使用しない方法
    13.6    ポインタを使用した文字列分割
    13.7    ポインタと構造体
    13.8    コマンド行引数
    13.9    設問の解答
    13.10   プログラミング実習

14章 ファイル入出力
    14.1    ファイル関数
    14.2    変換ルーチン
    14.3    バイナリファイルとASCIIファイル
    14.4    行終端にまつわる謎
    14.5    バイナリI/O
    14.6    バッファリングの問題
    14.7    バッファリングを行わないI/O
    14.8    ファイル形式の設計
    14.9    設問の解答
    14.10   プログラミング実習

15章 デバッグと最適化
    15.1    デバッグ
        15.1.1 分割統治法
        15.1.2 デバッグ専用コード
        15.1.3 デバッグコマンド行スイッチ
        15.1.4 出力のチェック
    15.2    対話型デバッガ
    15.3    二分探索のデバッグ
    15.4    実行時エラー
    15.5    告白的方法によるデバッグ
    15.6    最適化
        15.6.1 強力な2の累乗
        15.6.2 最適化の手法
    15.7    設問の解答
    15.8    プログラミング実習

16章 浮動小数点
    16.1    浮動小数点の形式
    16.2    浮動小数点の加算と減算
    16.3    乗算
    16.4    除算
    16.5    オーバーフローとアンダーフロー
    16.6    丸め誤差
    16.7    精度
    16.8    丸め誤差の最小化
    16.9    精度の決定
    16.10   精度と速度
    16.11   累乗級数
    16.12   プログラミング実習


III部 高度なプログラミング概念

17章 高度なポインタ
    17.1    ポインタと構造体
    17.2    関数free
    17.3    リンクリスト
    17.4    構造体ポインタ演算子
    17.5    順序付きリンクリスト
    17.6    二重リンクリスト
    17.7    ツリー
    17.8    ツリーの出力
    17.9    プログラムの残りの部分
    17.10   チェスプログラムのデータ構造
    17.11   設問の解答
    17.12   プログラミング実習

18章 モジュール プログラミング
    18.1    モジュール
    18.2    公開と非公開
    18.3    extern修飾子
    18.4    ヘッダ
    18.5    モジュールの本体
    18.6    無限配列を使用するプログラム
    18.7    複数ファイルのMakefile
    18.8    無限配列の使用
        18.8.1 UNIX Generic CのMakefile
        18.8.2 Free Software FoundationのgccのMakefile
        18.8.3 Borland C++のMakefile
        18.8.4 Microsoft Visual C++のMakefile
    18.9    タスクのモジュール化
    18.10   モジュール分割の例:テキストエディタ
    18.11   コンパイラ
    18.12   スプレッドシート
    18.13   モジュール設計のガイドライン
    18.14   プログラミング実習

19章 古いコンパイラ
    19.1    K&R関数
        19.1.1 関数プロトタイプ
    19.2    ライブラリの変換
    19.3    対応できない機能
    19.4    free/mallocの変更
    19.5    lint
    19.6    設問の解答

20章 移植性の問題
    20.1    モジュール性
    20.2    ワードサイズ
    20.3    バイト順問題
    20.4    境界整列問題
    20.5    NULLポインタ
    20.6    ファイル名問題
    20.7    ファイルタイプ
    20.8    まとめ
    20.9    設問の解答

21章 あまり使用しないCの機能
    21.1    do/while
    21.2    goto
    21.3    ?:構造
    21.4    カンマ演算子
    21.5    volatile修飾子
    21.6    設問の解答

22章 まとめのプログラム
    22.1    要求仕様
    22.2    設計仕様
    22.3    コード設計
        22.3.1 トークンモジュール
        22.3.2 入力モジュール
        22.3.3 文字型モジュール
        22.3.4 統計サブモジュール
    22.4    コーディング
    22.5    機能仕様
        22.5.1 char_typeモジュール
        22.5.2 in_fileモジュール
        22.5.3 tokenモジュール
        22.5.4 行カウンタサブモジュール(lc)
        22.5.5 中括弧カウンタサブモジュール(bc)
        22.5.6 括弧カウンタサブモジュール(pc)
        22.5.7 コメントカウンタサブモジュール(cc)
        22.5.8 do_fileプロシージャ
    22.6    拡張性
    22.7    テスト
    22.8    改訂
    22.9    最終警告
    22.10   プログラムファイル
        22.10.1 in_file.hファイル
        22.10.2 in_file.cファイル
        22.10.3 ch_type.hファイル
        22.10.4 ch_type.cファイル
        22.10.5 token.hファイル
        22.10.6 token.cファイル
        22.10.7 stat.cファイル
        22.10.8 cc(汎用UNIX)用UNIX Makefile
        22.10.9 gcc用UNIX Makefile
        22.10.10 Borland C++ Makefile
        22.10.11 Microsoft Visual C++ Makefile
    22.11   プログラミング実習

23章 プログラミングに 関する格言
    23.1    プログラミング一般
    23.2    設計
    23.3    宣言
    23.4    switch文
    23.5    プリプロセッサ
    23.6    スタイル
    23.7    コンパイル
    23.8    終わりに
    23.9    設問の解答


IV部 他の言語機能

付録A ASCIIコード表
付録B 値域とパラメータ渡し変換
    B.1     値域
    B.2     パラメータ渡し時に使用する自動型変換
付録C 演算子優先ルール
    C.1     標準ルール
    C.2     実用サブセット
付録D 累乗級数を使った正弦値の算出
    D.1     sine.cプログラム
用語解説
索引