「楽しく学ぶ アルゴリズムとプログラミングの図鑑」を読みました
「図鑑」と銘打っているだけあってイラストも多く、BASICやScratchも扱っているので、子どもでも読みやすい内容になっています。とはいえ、ソートのアルゴリズムになってくるとかなりややこしいので、対象年齢は小学校高学年以上でしょう
アルゴリズムは一度学べば一生モノなので、プログラムを一通り組めるようになったら、少しずつ覚えていくといいと思います
掲載しているソースコード
この本のすごい所が、同じアルゴリズムをいろんな言語のソースコードで掲載している点。あまりこういう本は見たことないです。以下の8つのプログラム言語で解説されています
- JavaScript
- PHP
- C
- Java
- Swift
- Python
- BASIC
- Scratch
ちなみに本書で紹介されているBASICは、IchigoJamで動くBASIC。3DSのプチコンとはちょっと違うかもしれません
解説されているアルゴリズム
解説されているアルゴリズムは以下のとおり
- 合計値
- 平均値
- 最大値、最小値
- データの交換
- リニアサーチ(線形探索法)
- バイナリサーチ(二分探索法)
- バブルソート(単純交換法)
- 選択ソート(単純選択法)
- 挿入ソート(単純挿入法)
- シェルソート
- クイックソート
クイックソートは複雑になるという理由で、BASICとScratchのコードはありません
あと、付録として
- オブジェクトのソート
- シャッフルするアルゴリズム
- O記法(オーダーきほう)
- アルゴリズムの組み合わせ一覧
の解説があります。付録のソースコードはJavaScriptだけです
サンプルコードと正誤表は公式サポートサイトにあります
「楽しく学ぶ アルゴリズムとプログラミングの図鑑」サポートサイト | マイナビブックス
Scratchにいくつか問題点
Scratchのソースコードを試してみた所、いくつか問題点がありました
Scratchのソースコードは、画面のスクリーンショットをそのまま貼り付けた形なのですが、iとjの区別がつきにくいです。スクリーンショットなりの良さはあるのですが、文字が読めないのでは意味がないです。ドラマの「校閲ガール」じゃないけど、こういうプログラムのソースを実際に打ち込んでチェックする人っていないのかな?
さらに致命的なのは、Scratchでのプログラムの間違いがある点。バイナリサーチのプログラムが丸々間違いです。サポートサイトに正誤表が掲載されていますが、図鑑として長く使える本なのに、このミスは痛いですね。書籍のコンセプトはいいのにもったい無いです
それと、間違いではないのですが、Scratchでリスト(配列)のソートアルゴリズムを実行する場合の注意点
他のプログラミング言語では、配列へのデータ登録をプログラムの中で行なっているのですが、Scratchはあらかじめ手作業で入力しておく形になっています。ソートの場合だと、せっかく入力したリストがソートされてしまって、2回目以降に試すことができません
また、1回目の実行でうまく動けばいいのですが、コードの入力ミスでリストがぐちゃぐちゃになってしまう場合があります(iとjが見づらいのでよく間違えてしまう)。なので、面倒でもソートの場合は、リストへのデータ登録をプログラムの最初で書くか、別に初期化用のプログラムを作ってしまったほうがいいです。急がば回れです
プログラムの最初に入れると、一瞬でソートされてよくわからなくなってしまうので、僕は別に登録プログラムを作成しました。クリックすればリストが初期化されます
最後に
Scratchに関してはちょっと問題がありましたが、アルゴリズムは一生モノなので、プログラムを勉強するなら持っておいても損はないと思います
ただし、Scratchユーザーが紙の書籍を買うならScratchのバイナリサーチの間違いが更新されてからのほうがよさそう。電子版はすでに間違いが更新されている(と思われる)ので、今買うなら電子版でしょうか。でも子どもが図鑑的に使うなら絶対、紙の方がいいよなぁ・・・
Comment
問題点のご指摘ありがとうございました。
校閲にはかなり時間をかけて行っていたのですが、実際の紙になると読みにくくなってしまったようで反省しています。また、リストの初期化のアイデアもありがとうございます。実は、当初からこの機能を入れるかどうかを考えて削除していたのですが、そういうお声もあることを知り、復活させることにしました。
先日重版になりましたので、第2刷からは、Scratch部分を大きくなり、キーを押したら初期化して何度も試せるようにしました。どうぞよろしくお願いいたします。
コメントありがとうございます
非常に良いコンセプトの本なのに、Scratch部分の問題が少し残念だったので、第2刷での修正は大変喜ばしく思います。リスト初期化の追加もありがとうございます
当記事の最初に第2刷の情報を追記させていただきました
よろしくお願いいたします