認知科学、教育心理学に基づき、効率よく学習でき、知識が確実に身に付くように工夫されたHead FirstシリーズのC言語バージョン。前半では文法、メモリとポインタ、make、データ型などC言語の基本をていねいに解説。後半では、プロセス間通信、ソケットとネットワーキング、スレッドといった高度な話題についても詳しく述べています。また、ArduinoのコードをCで書いて観葉植物をしゃべらせてみる、OpenCVを利用して自宅の防犯システムを作ってみる、アーケードゲームを作ってみる、という実用と趣味を兼ねた楽しい読みものも掲載。初心者からさらにCの知識を深めたい中上級者、日曜プログラマまで楽しめる一冊です。
Head First C
―頭とからだで覚えるCの基本
David Griffiths、Dawn Griffiths 著、中田 秀基 監訳、木下 哲也 訳
- TOPICS
- Head First , Programming , C/C++
- 発行年月日
- 2013年04月
- PRINT LENGTH
- 604
- ISBN
- 978-4-87311-609-9
- 原書
- Head First C
- FORMAT
- Print PDF
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
第1刷正誤表
Head First C
2013年4月25日更新
|
目次
序章 この本を読むのにふさわしい人は? あなたがどう思っているかわかっています メタ認知 脳を思い通りにさせるためにできること 初めに読んでね テクニカルレビューチーム 謝辞 1章 Cを始める Cは小規模で高速なプログラムのための言語 でも、完全な Cプログラムはどんなの? でも、どうやってプログラムを実行するの? 2種類のコマンド ここまでのコード カードカウント? Cで? ブール値は等価条件以外にもある…… 現時点でコードはどうなっている? スイッチに切り換える 一度だけでは不十分なこともある…… ループは同じ構造になることが多い…… 中断するためには breakを使う…… Cツールボックス 2章 メモリとポインタ Cコードにはポインタがある メモリに踏み込む ポインタを携えて出航する 変数へのポインタを渡すようにする メモリポインタの利用 どのようにして関数に文字列を渡すの? 配列変数はポインタに似ている…… コードの実行時にコンピュータが考えること しかし、配列変数は完全なポインタではない なぜ配列は0から始まるの? ポインタはなぜ型を持つの? データ入力でのポインタの利用 scanf()には注意 fgets()がscanf()の代わりになる 文字列リテラルは決して書き換えられない 文字列を変更する場合はコピーする メモリの暗記 Cツールボックス 2.5章文字列 フランクを探して 配列の配列を作成する 検索テキストを含む文字列を見つける strstr()関数の使用 おさらいの時間 配列の配列とポインタの配列の比較 Cツールボックス 3章 小さなツールの作成 小さなツールは大きな問題を解決できる プログラムが行うべき動作 でも、ファイルを使っていない…… リダイレクトを利用しよう 標準エラーとは デフォルトでは、標準エラーは画面に送られる fprintf()はデータストリームへ出力する fprintf()を使ってコードを書き換えよう 小さなツールは柔軟性がある geo2jsonツールを変更しない 異なるタスクには異なるツールが必要 入力と出力をパイプでつなぐ bermudaツール でも、複数のファイルに出力したい場合はどうなるの? 独自のデータストリームを使う main()には別の使い方がある ライブラリに仕事をしてもらう Cツールボックス 4章 複数のソースファイルの使用 すぐわかるデータ型入門 小さなものに大きなものを入れてはいけない 整数をfloatに格納する 弱ったな……失業中の俳優だ…… コードがどうなったのか見てみよう コンパイラは驚きたくない 定義から宣言を分離する 最初のヘッダファイルの作成 共通機能がある場合は…… コードを別のファイルに分割できる コンパイルの舞台裏 共有コードには独自のヘッダファイルが必要 そんなに難しいことなの? すべてのファイルを再コンパイルしない まず、ソースをオブジェクトファイルにコンパイルする ファイルの管理は難しい makeツールでビルドを自動化する makeの動作方法 コードに関することはmakefileを使ってmakeに知らせる 発射! Cツールボックス Cラボ1 Arduino 5章 構造体、共用体、ビットフィールド 多くのデータを扱わなければいけないこともある オフィスでの会話 構造体を使って独自の構造化データ型を作成する 魚(fish)を渡す 「.」演算子を使って構造体のフィールドを読み取る 構造体を別の構造体に含められる? 構造体はどのように書き換えるの? このコードは亀のクローンを作っている 構造体へのポインタが必要 (*t).ageと*t.age 同じ種類のものに異なる型のデータが必要な場合もある 共用体はメモリ空間を再利用できる 共用体はどのように使うの? enum変数はシンボルを格納する ビットレベルで制御したい場合もある ビットフィールドは任意のビット数を格納する Cツールボックス 6章 データ構造と動的メモリ 柔軟な記憶領域が必要か? 連結リストはデータの連鎖のようなもの 連結リストは挿入が可能 再帰構造体を作成する Cで島を作成する…… リストへの値の挿入 動的記憶領域にはヒープを使う 使い終わったらメモリを返す malloc()でメモリを要求する…… strdup()関数を使ってコードを修正しよう 使い終わったらメモリを解放する SPIESシステムの概要 ソフトウェア科学捜査:valgrindの利用 valgrindを繰り返し使ってさらに証拠を集める 証拠を調べる 修正の確認 Cツールボックス 7章 高度な関数 理想的な相手を探す…… 関数にコードを渡す find()に関数の名前を伝える必要がある 関数名はすべて関数へのポインタである…… でも、functionデータ型はない 関数ポインタの作成方法 C標準ライブラリでソートする 関数ポインタを使って順序を設定する 返信の自動化 関数ポインタの配列を作成する 関数に伸縮性を持たせる Cツールボックス 8章 スタティックライブラリと ダイナミックライブラリ 銀行に持っていけるコード 山かっこは標準ヘッダに使う でも、コードを共有したい場合はどうなるの? .hヘッダファイルの共有 フルパス名を使って.oファイルを共有する アーカイブには.oファイルがある arコマンドでアーカイブを作成する…… 最後に、他のプログラムをコンパイルする ヘッドファーストジムがグローバルに展開中 カロリーの計算 でも、状況はもう少し複雑…… プログラムは多くの部品から作られる…… ダイナミックリンクは実行時に起こる .aを実行時にリンクできる? まず、オブジェクトファイルを作成する ダイナミックライブラリの呼び名はプラットフォームによって 異なる Cツールボックス Cラボ2 OpenCV 9章 プロセスとシステムサービス システムコールはOSへのホットライン 誰かがシステムに侵入した…… 問題はセキュリティだけではない exec() 関数を使えば、より詳細に制御できる exec() 関数がたくさん 配列関数:execv()、execvp()、execve() 環境変数を渡す ほとんどのシステムサービスは失敗したときに同じように 動作する RSSでニュースを読む exec()はプログラムの終点 fork()とexec()で子プロセスを起動する Cツールボックス 10章 プロセス間通信 入力と出力のリダイレクト 典型的なプロセスの中を調べる リダイレクションはデータストリームを置き換えるだけ fileno()はディスクリプタを教えてくれる 待たなければいけないこともある…… 子プロセスとの連絡を保つ パイプでプロセスをつなげる 事例研究:ブラウザで記事を開く 子プロセスでは 親プロセスでは ブラウザでWebページを開く プロセスの死 シグナルを捕捉して独自のコードを実行する sigactionはsigaction()で登録する シグナルハンドラを使うようにコードを書き換える killを使ってシグナルを送る コードにモーニングコールを送る Cツールボックス 11章 ソケットとネットワーキング インターネットノックノックサーバ ノックノックサーバの概要 BLAB:サーバがインターネットとやり取りする方法 ソケットは標準的なデータストリームではない サーバが適切に開始しないことがある なぜ常にエラーを調べるように言われるの? クライアントからの読み込み サーバは同時に1人しかやり取りできない クライアントごとにプロセスをfork()できる Webクライアントの記述 クライアントの担当 IPアドレスのソケットを作成する getaddrinfo()はホストのアドレスを取得する Cツールボックス 12章 スレッド タスクは逐次的? ……プロセスでは必ずしも解決にはならない 単純なプロセスは一度に1つのことを行う 追加スタッフを雇う:スレッドの使用 どのようにスレッドを作成するの? pthread_createでスレッドを作成する このコードはスレッドセーフではない 信号機を追加する ミューテックスを信号機として使う Cツールボックス Cラボ3 Blasteroids ゲーム 付録i 未収録事項 1.演算子 2.プリプロセッサディレクティブ 3.staticキーワード 4.データの大きさ 5.自動テスト 6.gccの詳細 7.makeの詳細 8.開発ツール 9.GUIの作成 10.参考文献