わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

書評2冊,そのうち書評3冊

入門Trac

入門Trac with Subversion Linux/Windows対応

入門Trac with Subversion Linux/Windows対応

Subversionをある程度使えるようになり,研究室内にもそこそこ浸透させた状態で,次はTracだなとは思っています.
用途として,各学生が開発しているアプリケーションの進捗管理やバグ管理だけでなく,修論,卒論,学会発表にも使えるといいのですが…
これもまずは,自分だけでやっている件で,やってみることかなあ.

なぞり書きC言語学習ドリル

なぞりがきC言語学習ドリル

なぞりがきC言語学習ドリル

自習書として面白いのですが,自学科の学生には勧められません.
というのも,「なぞり書き」して「分かった」つもりになっても*1,その経験が,効率よくプログラムをゼロから書けるようになったり,すでにあるコードを拡張していったり,バグの原因を見つけて対処したりする能力には貢献しそうにないからです.
本文からいくつか,あら探しをさせてもらいます.一つめは,本文ではなく,「はじめに」の前の「本書の学び方」ですが,解答例が間違っています.
序盤からscanfを使わなくなったのですが,しかしp.5の「花文字」もまた,時代遅れと言わざるを得ません.
「4.2 配列の引数に添字を指定」(p.58-59)の内容は,Cの入門というよりは,入門を終え,自分でデータ構造を定義したりしてプログラムを作るときに知っておきたいことの一つだと思います.ただ,ここに「ポインタ」という表現を用いる必要はないでしょう.「間接参照用の配列」くらいでしょうか.もちろん,間接参照演算子とは区別して説明する必要はあります.
「8.4 ポインタと配列」(pp.126-127)について,

int a[][3] = {{1,2,3},
              {4,5,6}};

という2次元配列を参照するポインタは

int p[][3];

または

int *p[3];

のように列要素数を指定します.(以下略)

「int p[][3];」は要素数0の配列の宣言になってしまって,NGです.関数の仮引数として宣言するなら,セミコロンは不要です.
「int *p[3];」については,p=a;とできません.
これらを長年プログラミング指導の経験がある著者が知らないというのは想像しにくく,限られた紙面に盛り込む際のミス(あるいは,魔の表現)なのでしょう.
2次元配列をポインタで参照するプログラムコードを探してみると,章末に,2次元配列を1次元配列とみなして初期化する問題のみでした.

*1:えんぴつで奥の細道は,手を動かしながら松尾芭蕉の文章を味わう方法として,成功した本だったと思いますが.