目次
第1部 C言語プログラミングの基本構造
第1章 プログラムってなんだろう? ~プログラミング言語とは
- 1.1 コンピュータにとってプログラムってどんなもの?
- 1.1.1 コンピュータ,プログラム,人間の関係
 - 1.1.2 融通のきかないコンピュータ
 - 1.1.3 コンピュータがわかる言葉ってどんなもの?
 - 1.1.4 より簡単にコンピュータに指示を伝えるための方法とは?
 - 1.1.5 やさしく巧妙なプログラム
 
 - 1.2 プログラミングに必要なこと
- 1.2.1 プログラミングの考えに慣れること
 - 1.2.2 プログラミングに必要な3つの知識
 
 - 1.3 プログラムの考え方
- 1.3.1 問題の曖昧なところをはっきりさせる
 - 1.3.2 問題を細かく分解して整理する
 - 1.3.3 柔軟な発想で考える
 
 - 1.4 プログラムの作り方
- 1.4.1 いろいろなプログラミング言語
 - 1.4.2 プログラムを書く(コーディング)
 - 1.4.3 プログラムを翻訳する(コンパイルとリンク)
 - 1.4.4 プログラムを実行し,正しく動いているか調べる(動作確認)
 - 1.4.5 プログラムの誤りを修正する(デバッグ)
 
 - 理解度チェック!
 - [練習問題1]
 
第2章 はじめの一歩 -記述規則を実践理解
- 2.1 最も単純な構造のプログラムを入力して実行する
- 2.1.1 プログラムを入力して実行してみる
 - 2.1.2 プログラムを書き換えてみる
 - 2.1.3 プログラムを読みやすい形にするとは
 
 - 2.2 エラーメッセージと警告メッセージの初歩の初歩
- 2.2.1 エラーなのか,警告なのかを読み取る
 - 2.2.2 いろいろな警告表示
 - 2.2.3 スペルミスが原因であることが多いエラー表示
 - 2.2.4 うっかり書き忘れが原因であることが多いエラー表示
 - 2.2.5 ほんとうに怖い「表示されないエラー」
 
 - 理解度チェック!
 
第3章 データを入力して,結果を表示してみよう -入出力処理
- 3.1 結果を表示するということ
 - 3.2 プログラムの詳細
- 3.2.1 C言語の構成と記述規則
 - 3.2.2 プログラムを見やすくするために
 - 3.2.3 結果を表示する関数printf()の詳細
 
 - 3.3 値を記憶しておく箱を利用して結果を求めて,表示する
- 3.3.1 変数という箱を用意する
 - 3.3.2 データ型の種類と詳細
 
 - 3.4 プログラムを実行しながら,さまざまな結果を得るには?
- 3.4.1 プログラムを実行中に,値を入力する
 - 3.4.2 入力を受ける関数scanf()の詳細
 
 - 3.5 ここまでの知識でどんなことができるのか?
 - 理解度チェック!
 - [練習問題3]
 
第4章 プログラムの処理の流れを理解し,使いこなす① -分岐処理
- 4.1 プログラムの処理の流れの重要要素「分岐処理」とは?
 - 4.2 条件判断を行って,分岐する処理を行う(if else文とif文)
- 4.2.1 処理の流れをあらわすと…
 - 4.2.2 もし○○ならば処理1を行い,そうでなければ処理2を行う(if else文)
 - 4.2.3 もし○○ならば○○の処理を行う(if文)
 - 4.2.4 入れ子の分岐処理
 
 - 4.3 複雑な分岐処理を見やすく記述する(switch case)
 - 4.4 分岐処理の詳細
 - 4.5 どんなときにどの分岐処理を使えばよいのか?
 - 理解度チェック!
 - [練習問題4]
 
第5章 プログラムの処理の流れを理解し,使いこなす② -繰り返し処理
- 5.1 プログラムの処理の流れの重要要素「繰り返し処理」とは?
 - 5.2 同じ処理を繰り返す①(for文)
- 5.2.1 同じ処理を繰り返したい場合とは?
 - 5.2.2 決まった回数繰り返す(for文)
 
 - 5.3 同じ処理を繰り返す②(while文とdo while文)
- 5.3.1 ○○となるまで何度でも繰り返す(while文)
 - 5.3.2 次のことを繰り返す,ただし,○○となったら終了する(do while文)
 
 - 5.4 繰り返し処理の詳細
- 5.4.1 どんなときにどの繰り返し処理を使えばよいのか?
 
 - 5.5 ここまでの知識でどんなことができるのか?
 - 理解度チェック!
 - [練習問題5]
 
第6章 たくさんの値を記憶する -配列の利用
- 6.1 たくさんの値を記憶する必要性
- 6.1.1 実用的なプログラムを作るために必要なこと
 - 6.1.2 ここまでの記述方法での限界
 
 - 6.2 配列とは値を入れる箱(変数)をまとめて棚を作ること
 - 6.3 いろいろな棚(配列)の作り方
- 6.3.1 一列に並べて,何番目として管理する(1次元配列)
 - 6.3.2 処理を簡単化するための発想の流れ
 - 6.3.3 棚を作り,何段目の何番目として管理する(2次元配列)
 
 - 6.4 配列の使用方法の詳細
- 6.4.1 変数の復習
 - 6.4.2 配列の宣言の記述方法
 - 6.4.3 配列の扱い方
 
 - 6.5 どんなときに配列を使えばよいのか?
 - 6.6 配列を「繰り返し処理」と組み合わせて何倍も便利に!
 - 6.7 ここまでの知識でどんなことができるのか?
 - 理解度チェック!
 - [練習問題6]
 
第7章 データを保存する・保存したデータを読み込む -ファイルの利用
- 7.1 データを保存すること,保存したデータを読み込むこと
 - 7.2 ファイルを利用してデータを入力するにはどのようにすればよいのか?
- 7.2.1 大量のデータを入力して結果を表示させる
 - 7.2.2 入力するデータをテキストファイルにしておくと……
 
 - 7.3 ファイルを利用してデータを出力するにはどのようにすればよいのか?
- 7.3.1 結果を画面に表示するプログラム
 - 7.3.2 結果をファイルに書き込むプログラム
 
 - 7.4 結果を保存しておき,次回プログラムを実行したときに保存データを読み込む
 - 7.5 ファイルを利用するときにはエラー処理も必須
- 7.5.1 実用的なファイルのオープン方法
 
 - 7.6 ファイルの利用方法の詳細
- 7.6.1 ファイルを操作できる状態にする,操作を終える(fopen,fclose)
 - 7.6.2 ファイルから読み込む,ファイルに書き込む(fscanf,fprintf)
 
 - 理解度チェック!
 - [練習問題7]
 
第2部 アルゴリズムを組み立てる
第8章 プログラムで文字を扱うには? -文字と文字列の取り扱い
- 8.1 プログラムで文字を扱うということ
 - 8.2 C言語で文字列を扱うにはどうしたらよいのか?
- 8.2.1 文字列を扱うには配列を使う
 - 8.2.2 文字列の代入方法
 
 - 8.3 コンピュータでは文字をどのように扱っているの?
- 8.3.1 すべての文字は番号で管理されている!?
 - 8.3.2 文字型の1次元配列の中身
 - 8.3.3 文字を比較する?
 
 - 8.4 文字の基本的取り扱い方の整理
 - 8.5 基本的な文字の取り扱い方の詳細
- 8.5.1 文字列の読み込み・ファイル入力方法の詳細
 - 8.5.2 文字列の表示・ファイル出力方法の詳細
 
 - 理解度チェック!
 - [練習問題8]
 
第9章 文字列をもっと自在に扱うには? -文字列処理の関数利用
- 9.1 文字列を操作する便利な関数
- 9.1.1 C言語の標準にはない関数を利用する方法
 - 9.1.2 文字列をコピーする
 - 9.1.3 文字列をつなぎ合わせる
 - 9.1.4 文字列を比較する
 - 9.1.5 何文字あるか調べる
 
 - 9.2 便利な文字列操作関数の詳細
 - 9.3 文字列を利用する応用場面
 - 9.4 ファイルの中身をすべて読み出す
 - 9.5 さらに自在に文字列をコントロールする応用テクニック
- 9.5.1 文字列からの読み込み・文字列への書き出し
 
 - 理解度チェック!
 - [練習問題9]
 
第10章 新しい機能を設計する -独自に関数を作る
- 10.1 標準で用意されている関数と自分で作る関数
- 10.1.1 C言語は,関数で成り立っている
 - 10.1.2 用意されている関数がなければ自分で作る!?
 - 10.1.3 便利な関数は誰かが作ってくれている!?
 
 - 10.2 自分で関数を作って,利用してみよう
- 10.2.1 関数を作る場面1:何度も使う記述は1回だけにまとめる
 - 10.2.2 関数を作る場面2:プログラムを機能別に見やすくまとめる
 - 10.2.3 関数を作る場面3:他のプログラムでも利用できる資源を作る
 
 - 10.3 さまざまな関数を作ってみよう
- 10.3.1 変数を渡さない関数
 - 10.3.2 変数を渡すが,変数の値は変更しない関数
 - 10.3.3 変数を渡し,変数の値を変更する関数
 - 10.3.4 配列を関数に渡して利用する
 - 10.3.5 関数の名前を事前登録しておく ~関数のプロトタイプ宣言
 
 - 理解度チェック!
 - [練習問題10]
 
第11章 関数を呼び出して活用する -標準ライブラリの利用
- 11.1 関数を活用する意義
 - 11.2 ちょっと便利な関数を使う ~stdlib.hの活用
 - 11.3 数学知識を活用する ~math.hの活用
 - 11.4 文字の取り扱いツールを活用する ~ctype.hの活用
 - 11.5 時間をコントロールする ~time.hの活用
 - 11.6 再帰関数に触れてみる
 - 理解度チェック!
 
第12章 データをまとめて管理する -構造体
- 12.1 どんなふうにデータをまとめて扱うと便利か?
 - 12.2 実際にデータをまとめてプログラミングをしてみよう
- 12.2.1 単純にデータをまとめる
 - 12.2.2 構造体×配列で効果絶大!
 
 - 理解度チェック!
 - [練習問題12]
 
第13章 アドレスとポインタを活用し中級プログラミングに挑戦
- 13.1 変数とコンピュータのメモリの関係
- 13.1.1 動作しているプログラムがメモリをどのように利用しているのか調べてみる
 - 13.1.2 変数のアドレスを表示させる方法
 - 13.1.3 変数のアドレスを確認する
 
 - 13.2 配列とコンピュータのメモリの関係
 - 13.3 scanf()や関数の利用を振り返る
- 13.3.1 アドレス演算子「&」と間接演算子「*」
 - 13.3.2 配列の場合の関数受け渡し
 
 - 13.4 基本的なポインタの使用例
 - 13.5 構造体とポインタの共演
 - 13.6 メモリの動的確保と利用
 - 理解度チェック!
 - [練習問題13]
 
第14章 プログラミングの道はまだまだ続く -その他の記述方法
- 14.1 ここまでに紹介しなかった「実際に使えるプログラミング技法」
- 14.1.1 何度も記述する定数をあらかじめ定義しておく
 - 14.1.2 定義に名前をつける
 - 14.1.3 ファイルの名前を与えて読み込む・書き出す
 - 14.1.4 何行書いてあるかわからないファイルを全部読み込みたい
 
 - 14.2 デバッグに役立つ小技!
- 14.2.1 コンパイラのエラーがどこを指すのかを特定する小技
 - 14.2.2 コンパイルは正常終了し,実行結果がおかしくなるときのエラー箇所を見つける小技
 - 14.2.3 エラーの場所がわかったあと,どうする?
 - 14.2.4 便利な道具「デバッガ」を使う
 
 - 14.3 共同作業の第一歩 ~分割コンパイル
- 14.3.1 4つのプログラムのファイルを同じプロジェクトに追加する
 - 14.3.2 4つのファイルについて
 
 - 14.4 これからどのようなことを学んでいけばよいのか
- 14.4.1 次に学びたいことは
 - 14.4.2 さらにプログラミング技術を高めるために
 
 - 理解度チェック!
 - [練習問題14]
 
章末練習問題の解説編
【more infomation】
- なぜさまざまな種類のコンパイラがあるのか?
 - どうしてC言語
 - 歴史あるアルゴリズム -Tower of Hanoi
 - 生成AIとプログラミング
 - 日本語文字の文字コードの呪い
 - 時代とともに変化するC 言語
 - C言語で関数というのはどういうものなの?
 - 論理演算子について
 - 無駄をなくして効率のよいプログラムを作るには?①
 - 無駄をなくして効率のよいプログラムを作るには?②
 - 大きなプログラムを作るときの心得
 - コンピュータにおけるファイルの種類
 - エラー処理にはどんなことが求められるの?
 - 日本語の文字列を扱うためのヒント
 - 一歩進んだ関数の使い方
 - 標準ライブラリを調べてみよう
 - 巨大データの並び替え
 - 必要なときに必要なだけ記憶する場所を作って管理する