いきなり、難しく考えると手も足も出ない可能性があるので、まずは、段階を経て粒度が荒くても必要な処理を考えていきます。
前提条件として、乗る人の動作とエレベータの動作に分けて描くこと。エレベータは1階から5階までいけるものとする。また、エレベータは1階に止まっており、他に乗る人や途中で乗ってくる人もいない(考慮しない)ものとする。なお、必要以上のボタンを押すことはない。
として、シンプルに考えられるように、考慮しなくてはいけない幅を狭くしておきます。
ここでは、「呼出階」や「行先階」、エレベーターの乗るところは「カゴ」としました。このような用語は必ず統一しましょう。
次は、上のロジックをもとに、「降りる」場合を考えましょう。
このロジックでは、一緒に乗っている他の人は考慮していません。
その他の問題としては、
1.行先階ボタンの点灯と消灯が必要
2.過ぎた階のボタンは押せないように
3.上昇中に開閉ボタン、特に開くボタンはロックする。途中で扉が開いたら危険
・複数人が乗って、行先階がバラバラでも対応できるロジック
・途中から乗ってくる人もいるので、それに対応したロジック
・行先階ボタンを2回押したら、解除できるロジック
・一定時間が経過したら扉を閉めるロジック
・行先階が押されていなかったらアナウンス(人感知センサで人が乗っている場合のみアナウンスする)
この「センサ」に注目して、この部分を考慮すると、非常に難しいロジックになりますが、重要なことです。
人間の操作のレーンに加えて「S・C・A」を追加しなければ表現できません。
人間(操作)|センサ(感知部)|コンピュータ(制御部)|アクチュエータ(駆動部)
に分けて描く必要があります。かなりこれだけでも難しいですよね。
内部の仕組みを知るという題材なら、思考力を強化できるベストなお題ではないでしょうか?