補足(いいわけ?)002


掲示板でのご指摘(2008/2/19)

掲示板にていくつかご指摘をいただきました。

http://kmaebashi.com/bbs/thread.php?boardid=kmaebashibbs&from=1091&range=1

[1092]でのご回答

>【1】第1章の本文に「BMI指数」という表現がありますが、 
>body mass indexの「index」は「指数」なので、 
>単に「BMI」でいいのではないでしょうか? 

そうですね。「IT技術」的なことをやってしまっています。 

>【2】p105・List2-8(my_sort5.c)・4行目および 
>p180・List4-2(my_sort6.c)・4行目が 
> 
>#define SCORE_ARRAY_SIZE (100) 
> 
>となっていますが、この「100」を囲む括弧は意図されたものでしょうか? 

私は、習慣的にマクロで値を定義するときは括弧で囲んでいます。 
演算子等を含むと括弧が必要だったりしますから常に入れているというだけで、 
この場合は実用的な意味はあまりないですが。 

>【3】正誤表 
>http://kmaebashi.com/taiatari/seigo.html
>のp102およびp103に言及している箇所で、ともに 
>「1手順ごとに『ソートずみの範囲』はひとつづつ増えていきます。」 
>という、全く同じ注釈が付いています。 
>これは本来p102のほうだけに付けることを意図していた、 という可能性はないでしょうか? 

これはp102の方のHTMLを書いてから、それをコピペしてp103の方を作って、 
消し忘れたようです。 
※これについては正誤表のほうを修正しておきました

>| 最後に開いた出力ファイルを閉じる。 
>| ただし入力ファイルが空で、いきなりEOFに出くわして 
>| whileループを一度も回さずに脱出したときだけは、閉じるべき出力ファイルがない。 
>| このときはout_fpが(10行目の定義によって)NULLに初期化されたままのはず。 
>| よって、out_fp != NULL のときのみ、クローズ処理を行う。 
> 
>という解釈でよいのでしょうか? 
>コメントがないと対象読者には分かりにくいような気もしますが……。 

37行の「さっきまでオープンしていたファイルを閉じる」というコメントから、 

while () { 
  さっきまでオープンしていたファイルを閉じて、 
 次のファイルを開く 
} 
最後に開いたファイルを閉じる 

という構造になっているのはわかってほしいと…あとは、どういう場合に 
out_fpがNULLでループを抜けるかですが、ループの中(しかもif文の中)で 
閉じて開いている以上、NULLでここに落ちてくる可能性には直感で気づいてほしい… 
という気はしますが、たしかに対象読者を考えると厳しい気がします。 

>【5】p148の本文で、「使い終わったファイルはクローズしておいたほうがよい」とあります。 
>p158〜p159・List3-7(my_split.c)やp168・List3-10(textdump.c)などでは 
>読み込み用に開いたファイルのクローズ処理が書かれていませんが、別に構わないでしょうか? 

動くか動かないかという点では動きますし、出力用のファイルポインタと 
読み込み用のファイルポインタを比べると、読み込み用の方がfclose()しなくても 
害が少ないわけですが(書きかけで異常終了すると変なファイルができる可能性が 
高いですが、読み込みならまず大丈夫)行儀としては閉じた方がよいかと思います。 
# ただ、このレベルなら、やっぱり実用上「どっちでもいい」と言ってしまいそうです。 
# 私の場合。 

[1095]でのご回答

お返事が大変遅くなりまして申し訳ありません。

>【6】
>3-3の detab.c についてなのですが、p141に
(中略)
>do{
>	putchar(" ");
>	char_count++;
>} while(char_count % TABSTOP != 0);
>
>で済ませてしまうと思います。

う。これは確かにこれで動きますし、こちらの方がシンプルですね。

「体当たり学習」のサンプルソースがなぜああなっているかについてですが、
単純に思いつかなかったのかもしれません。ひょっとすると
「出力すべきスペースの数を算出する」→「その数のスペースを出力する」と
段階を追って考えたほうがわかりやすいのでは、と思った、という可能性はありますが…

いずれにせよすでに記憶の彼方です。すみません。

「補足(いいわけ?)」の目次に戻る | ひとつ前のページ | ひとつ後のページ | 「C言語 体当たり式徹底入門」のページに戻る | トップページに戻る