#author("2017-09-27T17:40:17+09:00","default:tutimura","tutimura")
* プログラミング実習I 教科書の正誤表 [#p5c4c780]

明らかな誤植だけでなく、初学者には混乱の元になる無駄な記述を以下に指摘する。

** 全般 [#z6c60797]
変数名や関数名の命名規則に、C言語では「すべて小文字、単語は_でつなげる」というスネークケースが用いられることが多いが、「単語の先頭を大文字にしてつなげる」というキャメルケースの用いられている部分がところどころに見られます。変数名は以下のように読み替えるのがよいでしょう。
:p.71 リスト3.4|『Large』→『large』&br;『Small』→『small』
:p.257 リスト7.8|『Tokyo』→『tokyo』(固有名詞の表記を優先して先頭大文字にするという考え方もある)
:p.332からp.336にかけて多数|『FileName』→『filename』

** 3章 [#n29d1732]
:p.65 図3.1|浮動小数点の内部表現には、「符号部」を含める必要があるが、図には抜けています。
:p.66 coffee break 内3行目|『<limit.h>』→『<limit''s''.h>』
:p.66 coffee break 内|「最小値」という単語が、文脈によって2通りの意味に用いられていることに注意する。「doubleの最小値」には''0より大きい''という前提がついているのに対して、「intの最小値」にはその前提がない。なお、前提なしの「doubleの最小値」は -DBL_MAX です。
:p.75 下から4行目|『全体で15桁、小数点以下3桁』→『全体で''少なくとも''15桁、小数点以下''がちょうど''3桁』

** 4章 [#j6e9880b]
:p.102 13行目(箇条書きの次の行)|『手順1および4に』→『手順''2''および4に』
:p.145 <<プログラムの形式>> 4.7|フローチャートの下から戻る矢印の先が、「初期化」のマスの上に入っているが、上ではなく''下''に入るべき。

** 5章 [#o569581b]
:p.169 リスト5.6の直前の段落からリスト5.7まで|『また、関数の定義では、その多くを省略することができます...』→関数の定義では、C言語の旧規格との互換性のために、省略できるキーワードがいくつかありますが、省略するメリットはありませんのできちんと記述するようにしましょう。

** 6章 [#acf404b8]
:p.207 下から2行目|『4つの変数』→『''5''つの変数』
:p.208 図6.5|name配列の[8]の箱が余分。
:p.238 下から1行目|『int a[3][2] = {1,2,3,4,5,6}; と定義することもできます。』→『int a[3][2] = {1,2,3,4,5,6}; という記述はエラーにはなりませんが、「初期化子の周りに中括弧がありません」といった警告が出ることがあります。』

** 7章 [#a11feb1d]
:p.251 リスト7.2 のタイトル|『配列を文字に格納する』→『配列 ''に'' 文字 ''を'' 格納する』
:p.251 リスト7.3 の直前の段落から p.252 リスト7.4まで|『ところで、リスト7.2には...少しトリッキーに感じられるかもしれませんが...』→削除(トリッキーですので、真似しないでください。)

** 8章 [#cbe7d5bb]
:p.277 5行目|『5.5.4項で学んだ通用範囲(通用範囲)』→『''5.5''項で学んだ通用範囲(''スコープ'')』

** 9章 [#x8c1165c]
:p.297 最初の段落からの4つの段落|『次に構造体タグの省略について...警告を出すコンパイラも存在します。』→構造体タグを省略してもメリットはありませんので、通常は省略しないでください。
:p.300 リスト9.1|構造体がmain関数内で宣言されていますが(しかも変数定義を同時に行なっていますが)、こうすると構造体の通用範囲がmain関数に限定されてしまい、他の関数で用いることができません。通常は複数の関数で扱えるように、関数の外側(プロトタイプ宣言の直前)に記述します。そして変数定義は分離して記述することになります。

** 10章 [#t7287778]
:p.345 リスト10.7|プログラの中程で「if( (fp=fopen()) == NULL)」とNULLとの比較が記述してあるのに、もう少し下では「while(fgets(string, STRING_SIZE, FP))」とNULLとの比較が省略されていて、一貫性に欠けます。このページの2行めには「fgets関数はNULLを返します」との記述があるので、「while(fgets(string, STRING_SIZE, FP) != NULL)」と明示的に書くのがよいでしょう。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS