10.1 入れ物とアルゴリズム

M先生
ここからは, アルゴリズム を考えていきたいと思う.
Aさん
アルゴリズムって何ですか?
M先生
アルゴリズムというのは,仕事をする手順のことだ.例えば,次のように,棒がたくさん並んでたとする.
M先生
これを,背の順に並び替えることができる?
Aさん
はい.ええーと,こんな感じかな?
M先生
じゃあ,どのような手順でやったか説明できる?
Aさん
うーん.適当に長さを比べて...
M先生
それじゃあ,「 並び替え 」という作業をコンピュータに指示することはできないよね.
Aさん
あ,そうか,手順を明確にしないと,プログラムにすることができないですね.
M先生
そうなんだ.並び替えなんて,人間がやればすぐにできるのにね.
Aさん
並び替えの手順なんていままで意識したことがありませんでした.
M先生
人間が手順を意識しないでやっていることは結構沢山ある.例えば,顔の認識.
Aさん
うーん,この人が先生かどうかどうやって認識しているんだろ?考えても見なかった.
M先生
そうなんだ.でも,プログラムにするには,手順を考えなければならない.その手順のことをアルゴリズムという.
Aさん
わかりました.
M先生
それでは,先ほどの並び替えをテーマにして,アルゴリズムについて考えていきたいと思う.
M先生
まず,こて始めに,「 入れ物 に長さの違う棒を沢山入れる」というアルゴリズムから考えていこうか.
Aさん
そんなの,こうして...
M先生
自分でやっちゃだめだよ.コンピュータにやってもらおうよ.
Aさん
えっ!それもコンピュータでできるの?
M先生
もちろんさ.えーとまず,棒を一つ作ってくれる?
Aさん
はい.
M先生
入れ物の「 集合 」カテゴリに「 追加する 」っていうタイルがあるよね.
Aさん
へぇー,入れ物への追加もプログラムでできるのですね.
M先生
あと,四角形の「その他」カテゴリに,「 モーフをコピーしたもの 」というタイルがあるでしょ.
Aさん
うーんと,「 コピーした物を追加 」すればよいのかな?
M先生
その通り.じゃあやってみようか.
Aさん
動きました.でも全部同じ長さですね.
M先生
ここはいままでの知識を応用すれば,入れ物に入っているおのおのの棒の長さをばらばらにするプログラムが作れるはずだよ. 乱数 を使ってね.
Aさん
ええと,カーソル位置を1足しつつ,カーソル位置の四角形の大きさを乱数で変更すればよいのですね.こんな感じでしょうか.
M先生
よろしい.では実行してみよう.
Aさん
うまく動きました.
M先生
さて,次はいよいよ並び替えをやるよ.