第15回 いつも心にカーソルを「5.大きい流れと小さい流れ」
|
|
15−5 大きい流れと小さい流れ
分岐と繰り返し、この2種類の方法を知っていれば、後は上から下へのまっすぐな処理が大半ですので、ほとんどの流れは制御できるようになります。 もちろん、単純な使い方だけではなく、色々組み合わせる「工夫」が必要ですが、それなりに流れの理解は問題ないと思います。 しかし、一方で、それだけではプログラムを作れるようになる訳でもありません。 それは、このような流れを制御する仕組み以外に、逆らうことの出来ない『大きな流れ』が存在するからです。 言い方がちょっと変ですが、昔風のBASICならば、このような制御コマンドだけを組み合わせてプログラムを作ることが可能でした。 何故なら、そこには「プログラムは上から下に順番に実行されます」という簡単なルールしか存在しなかったからです。そのため、プログラマがイメージした手順と、プログラムのコードを書くが手順が、ほぼそのまま対応できていたので、制御コマンドだけで十分だったと思われます。
つまり、画面をペンでタップしたり、ボタンを押したり、と何かの動きに反応してプログラムが実行される仕組み(イベント・ドリブン)になってきたので、BASICもそういう環境に従わざるを得なくなりました。 そのため、ちょっとプログラムの作り方が変わり、制御コマンドで流れを作るだけではなく、大きな流れを意識しないとプログラムが作れなくなってしまったのです。 ところで、大きな流れとは何でしょう? NS Basicに限って言えば、次のものが大きな流れになります。
プログラマが、いくらプログラムの流れをIfやDo〜Loopで制御できても、プログラムが起動した時に、必ず最初にStartup()が実行されるというルールには逆らうことが出来ませんし、それを知らなければ、まともに動作するプログラムが作れる筈もありません。 プログラムの実行順を大きな流れを中心にまとめてみると、おおよそ次のようになります。
初心者や入門者の頃は、漠然と「どうやって書くの?」と悩んだりする訳ですが、色々と試しているうちに、すぐに新たな悩みが加わります。すなわち、「どこに書くの?」という悩みです。 この2つの悩み、前者が具体的なコマンドに不慣れなために生じる小さい流れについての悩みで、後者がどうやって組み込むんだろうという大きな流れについての悩みであることは明らかですが、最初はこれが混在してしまい、何をどうしたいのか困ってしまうわけです。 では、この2つの流れを考えながら、漠然とした「やりたいこと」を読み解いてみましょう。 ●『プログラムを起動した時に、データベースファイルがなければ作っておきたい』 例題が簡単すぎますね。 データベースファイルの有無を確認する小さな流れを、プログラムの起動時に組み込めばよい訳ですから、どこに何を書くか、大体のことはわかります。
さて、もう少し難しいものにチャレンジしてみましょう。 ●『ゲームのハイスコアを記録しておきたい』 こちらは先ほどよりも、更に曖昧な内容ですが、ハイスコアを保存するような小さな流れを、ゲームが終わる時に組み込めばよい訳です。
つまり、プログラミングが難しいのは、そういう正解が決まらないケースが多々あるからです。 これらを解決するためには、実はプログラマが決めなければならない訳ですが、初心者のうちは、どこに書くのが「良い」のか悩んでしまって、なかなか先に進まない訳です。 でも、悩んでいるうちに、やってみれば良いんです。何せ気楽な日曜プログラマですからね。特に、日曜プログラマは自分の好き勝手に表現できる監督であることを忘れないで下さい。あなたが決めなければ、先に進まないことが多いですからね。 さて、このように、プログラムを書く上で、どうしても逆らえない大きな流れは無視できません。 それは、言語や使用するOSによって、大きな流れの種類や方法が異なるからです。 しかし、自分の疑問を大きな流れと小さな流れに分解して考えてみることで、考えがまとまったり、また、人に相談するにしても、要点を伝えやすくなると思いますので、常に心がけるようにして下さい。 |
||
第15回 いつも心にカーソルを「5.大きい流れと小さい流れ」
|