現在、JavaとかC++とか新しいプログラミング言語が脚光を浴びていますが、実際に仕事でよく使われている言語をあげるとFORTRANとかCOBOL、そしてCという名前が出てきます。特にCは非常に柔軟で適用範囲の広い言語なので、あらゆる分野で使われています。しかし、Cは柔軟に作られているがため、不慣れなCプログラマが組んだプログラムはプログラマが予期しなかったことまで実行してしまうこともあるのです。そうした初学者が罠に陥らないよう本書ではシンプルで実用的なルールを重んじながら、Cの言語仕様だけでなく(プログラムの発想、設計、記述、手法、デバッグ、リリース、ドキュメント作成、保守、バージョンアップなど)Cプログラミングの全過程について解説します。
C実践プログラミング 第3版
Steve Oualline 著、望月 康司 監訳、谷口 功 訳
- TOPICS
- 発行年月日
- 1998年06月
- PRINT LENGTH
- 480
- ISBN
- 978-4-900900-64-6
- 原書
- Practical C Programming, 3rd Edition
- FORMAT
正誤表
書籍発行後に気づいた誤植や更新された情報を掲載しています。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷数をご確認の上、ご利用ください。
正誤表 - 次回増刷時に修正
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プログラム
用語解説
索引