SSブログ

問題を分割する。 [プログラム]

 プログラムを作るとき、あるいはバーチャル・ロボットに何らかの仕事をさせるようプログラムするとき、手順を最初から順番に記述していくのは、あまりいい方法とは言えない。

 最初から実行の順番に考えていくのではなく、「問題」という全体をいくつかの小部分に分割し、さらにそれぞれの部分をより小さい部分に分割し、というように大きなところから徐々に詳細な内容へと分割しながらプログラムを作っていくのがいい。

 たとえば、ポーカーゲーム・マシーンを作るとする。

 ポーカーゲームをどのように処理するかを考える。大抵のゲームに共通だが、全体は

1. 準備
2. プレイ
3. 判定

の三つの部分からなっている。このうち、「1. 準備」はさらに、

 1.1 プログラムとしての準備
 1.2 ゲームの準備、つまり、トランプを配る。

に分けられる。また、「2. プレイ」は、実質的には、

 2.1 手持ちの札の交換

であるが、さらにそれは

  2.1.1 手の表示
  2.1.2 何番を交換するかの質問
  2.1.3 札の交換

という三つの作業に分割できる。「3. 判定」も、

 3.1 ユーザーの結果の計算
 3.2 コンピュータの結果の計算
 3.3 結果の比較と判定の表示

に分けられる。そして、それぞれがさらに細かい部分へと分割できる。

 プログラムはこのようにして作っているのである。以上の例は、かなり大きなプログラムの場合であったが、もっと単純なものでも、最初におおよそ、三つぐらいの仕事に分割し、さらにそれを細かくしていく、というように、時間順ではなく、論理的な深浅で積み重ねていく、という考え方を身に付ける必要がある。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。