標準プログラマーズ ライブラリシリーズC言語アルゴリズム +徹底入門

[表紙]C言語アルゴリズム +徹底入門

紙版発売

B5変形判/416ページ

定価2,728円(本体2,480円+税10%)

ISBN 4-7741-1204-6

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

いまでも最も使われ,入門する人も数多い,プログラミング言語「C」の初期段階を終えた後で誰もが必ず踏まなければならないアルゴリズムを糸口に,C言語への入門を一挙に果たしてしまおうと意図されている,画期的な入門書です。

こんな方におすすめ

  • C言語のアルゴリズムをきちんと習得したい人
  • プログラマを目指す学生

著者の一言

本書は,C言語を効果的に身につけるための手段としてアルゴリズムを実装していく少し風変わりな書籍です。しかし,このアプローチ自体は,カーニハン&リッチのC言語バイブルでも採用されているものです。かのバイブルが難しいと感じた人なら,本書の良さを十分認識してくれるはずです。

目次

第1章 C言語の基本を整理する

  • 1・1 C言語とは
    • 1・1・1 C言語を学ぶことの意味
    • 1・1・2 C言語はプログラマー依存の言語
  • 1・2 Cプログラミングの準備
    • 1・2・1 拡張子が".C"のテキストファイルを準備する
    • 1・2・2 ソースコードを記述する
    • 1・2・3 Cプログラムの典型的な雛形とその意味
    • 1・2・4 実体コードの記述
    • 1・2・5 コード記述を変更してみる
  • 1・3 変数のスコープと寿命を理解する
    • 1・3・1 ローカル変数とグローバル変数の違い
    • 1・3・2 変数の宣言ブロックを理解する
  • 1・4 Cの算術演算子を使ってみる
    • 1・4・1 代入演算子の省略記法
  • 1・5 Cの関係演算子と論理演算子を使ってみる
    • 1・5・1 条件式と真と偽の判定
    • 1・5・2 条件式の判定結果に基づく実行の流れの制御
    • 1・5・3 論理演算子を使った条件式の結合
  • 1・6 printf()関数に慣れておく
  • 第1章のまとめ

第2章 ウォーミングアップ

  • 2・1 Cの条件分岐と定数分岐を使う
    • 2・1・1 if文とif-else-if構文
    • 2・1・2 scanf()関数を使ってキーボード入力を読み取る
    • 2・1・3 if-else-if構文を使ったプログラム
    • 2・1・4 switch文
  • 2・2 Cのループを使う
    • 2・2・1 インクリメントとデクリメント演算子
    • 2・2・2 whileループを理解する
    • 2・2・3 break文とreturn文を使ったループの脱出方法
    • 2・2・4 continue文を使ったループ文のスキップ
    • 2・2・5 whileループを使ったプログラム
    • 2・2・6 forループを理解する
    • 2・2・7 forループを使ったプログラム
    • 2・2・8 もう1つのwhileループ
  • 2・3 整数定数と浮動小数点定数の表記を理解する
  • 2・4 Cの型変換を理解する
    • 2・4・1 式の中での型変換
    • 2・4・2 代入での型変換
    • 2・4・3 明示的な型変換
  • 2・5 ポインタの基本を理解する
    • 2・5・1 ポインタとは
    • 2・5・2 「ポインタの想定する型」の持つ意味
    • 2・5・3 ハードウェア環境に対応するプログラム
  • 第2章のまとめ

第3章 アルゴリズムことはじめ

  • 3・1 複雑さとは
  • 3・2 MinとMax
    • 3・2・1 Cの条件演算子
    • 3・2・2 条件演算子を使った簡単なMinとMax
  • 3・3 大文字/小文字変換
    • 3・3・1 JIS(アスキー)半角コード
    • 3・3・2 getchar()とputchar()関数
    • 3・3・3 大文字変換
    • 3・3・4 小文字変換
  • 3・4 チェックサム
    • 3・4・1 簡単なファイル操作
    • 3・4・2 エラー処理
    • 3・4・3 チェックサムプログラム
  • 3・5 チェックディジット
  • 3・6 スワップ
  • 第3章のまとめ

第4章 ビットを操作するアルゴリズム

  • 4・1 ビットを操作するアルゴリズム
    • 4・1・1 ビットごとの演算子
    • 4・1・2 ビットシフト演算子
    • 4・1・3 ビット列表示関数を作成する
    • 4・1・4 符号付き整数とビットシフト特性
  • 4・2 ビットマスク
  • 4・3 ビット演算子を使ったチェックサム
  • 4・4 パリティチェック
  • 4・5 データの暗号化と復号化
  • 第4章のまとめ

第5章 配列を使ったアルゴリズム

  • 5・1 いくつかの配列用法
    • 5・1・1 Cの文字列と初期化
    • 5・1・2 文字列へのポインタを格納する配列
    • 5・1・3 複数の文字列を格納する二次元の配列
    • 5・1・4 多次元配列の初期化
  • 5・3 挿入ソート
  • 5・4 バブルソート
    • 5・4・1 昇順のバブルソート
    • 5・4・2 降順のバブルソート
  • 5・5 二分探索
    • 5・5・1 昇順の二分探索
    • 5・5・2 降順の二分探索
  • 5・6 シェルソート
  • 第5章のまとめ

第6章 再帰関数を使ったアルゴリズム

  • 6・1 再帰関数とは
    • 6・1・1 再帰関数の利点と欠点
    • 6・1・2 再帰関数でのローカル変数とstaticなローカル変数
  • 6・2 乗算を繰り返す簡単な再帰プログラム
  • 6・3 再帰関数を使った二分探索プログラム
  • 6・4 クイックソート
  • 6・5 クイックソートの弱点と改善
    • 6・5・1 クイックソートの弱点
    • 6・5・2 クイックソートの改善
  • 第6章のまとめ

第7章 ポインタを使ったアルゴリズム

  • 7・1 ポインタの基本操作
    • 7・1・1 ポインタの基本演算
    • 7・1・2 ポインタを使った配列の操作
    • 7・1・3 ポインタの連鎖用法
  • 7・2 ポインタの取扱い
    • 7・2・1 ポインタの初期化
    • 7・2・2 ポインタの初期設定
    • 7・2・3 ポインタ演算と優先順位
    • 7・2・4 ヌルポインタとvoidポインタ
  • 7・3 関数の仮引数と戻り値でのポインタの役割
  • 7・4 ポインタを使ったアルゴリズム
    • 7・4・1 ポインタを使ったSwap()関数
    • 7・4・2 ポインタを使ったバブルソート
    • 7・4・3 文字列操作アルゴリズムの効率化
  • 7・5 関数ポインタ
    • 7・5・1 関数ポインタとは
    • 7・5・2 関数ポインタを使ったクイックソートの汎用化
  • 第7章のまとめ

第8章 構造体を使ったアルゴリズム

  • 8・1 構造体の基本を理解する
    • 8・1・1 構造体の定義と構造体変数
    • 8・1・2 構造体のtypedef用法
    • 8・1・3 構造体変数間の代入
    • 8・1・4 構造体のメンバーアクセス
  • 8・2 列挙と共用体と構造体のビットフィールド
    • 8・2・1 列挙
    • 8・2・2 共用体
    • 8・2・3 構造体ビットフィールド
    • 8・2・4 Cの復号データを使ったバリティチェックプログラム
  • 8・3 リンクリスト
    • 8・3・1 リンクリストとは
    • 8・3・2 静的な単方向リンクリスト
    • 8・3・3 静的な双方向リンクリスト
  • 8・4 ハッシュ探索
    • 8・4・1 ハッシュ探索とは
    • 8・4・2 ハッシュ関数
    • 8・4・3 動的なリンクリストを使った重複の解決
    • 8・4・4 動的なリンクを保つハッシュ検索
  • 第8章のまとめ

第9章 動的なメモリ割り当てを使ったアルゴリズム

  • 9・1 動的なメモリ割り当ての基本
    • 9・1・1 malloc()とcalloc()の違い
    • 9・1・2 realoc()を使ったオブジェクトサイズの変更
    • 9・1・3 動的なプログラミングでの基本的な留意事項
  • 9・2 動的な双方向リンクリスト
  • 9・3 二分木
    • 9・3・1 二分木とは
    • 9・3・2 二分木の構築
    • 9・3・3 二分木の昇順と降順表示
    • 9・3・4 動的な二分木を使った二分ソート
  • 第9章のまとめ

第10章 ファイルを使ったアルゴリズム

  • 10・1 標準ライブラリのファイル操作関数
  • 10・2 バイナリーファイルの操作
    • 10・2・1 バイナリーファイルのコピー
    • 10・2・2 バイナリーファイルの連結
    • 10・2・3 FCコマンドの類似機能
  • 10・3 ファイル操作関数を使う
    • 10・3・1 ファイルの目隠し
    • 10・3・2 テキストファイルの行番号設定
    • 10・3・3 文字列の出現回数のカウント
    • 10・3・4 二分木を使った動的な単語カウント
  • 第10章のまとめ