26.2.2 分割の考え方

「問題解決の手順を記述したものがプログラム」と言いましたが,ピザの例でもわかるとおり,重要な点が(少くとも)2つあります.「分割の方法」と「分割しないでもよいことの判断」です.

ちょっと考えてもわかるように,分割のやり方が数限りなくあるのが普通です.ピザの例でも,近所のコンビニで買ってきてもいいし,レストランへ出かけていってもいい訳です.あるいは,材料を買ってきて自分で作ってから食べる,誰かを呼んで作ってもらってから食べる,など限りがありません.それぞれについて,最初の分割の方法が異なることは言うまでもありません.どの方法を選択するかは,いろいろな条件によって決められます.お金があまりない,自室で食べたい,すぐに食べたい,などが条件の例です.また「選択」の前提として,ピザを食べるためのいろいろな方法を「知っている」ことが必要です.

ある「部分問題」が「それ以上の分割が不要」であるかどうかは,問題解決の実行者に依存しますね.職業別電話帳の使い方を知らなければ,まず「使い方を知る」という部分問題を解くことが必要です.自分で作ろうと思った場合にも,「作り方」を知っているのと知らないのでは,必要な分割の段数が変ってきます.作り方を知らない場合は,「人に聞く」とか「本で調べる」といった,更に分割が必要な部分問題となるからです.

このように,ある問題を解決するためのプログラムを作るためには,解法の知識と「実行者」の特定が必要です.このうち「実行者」については,日常生活の多くの場合は自分自身となりますが,情報処理システムを使う場合には,コンピュータ,もっと明確に言えばコンピュータを動作させるための言語(プログラム言語)が想定されます.したがって,コンピュータによるプログラミングでは,使用しようとするプログラム言語で何ができるか,何が扱かえるかを明確に知っていることが大切です.

次はいよいよJavaに触れます.