日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年2月12日木曜日

If文の重要性

プログラムでは、通常、1行目から順番に最後の行まで、順時実行していくことになる。
昔のBasicでいえば、1行から行番号順に実行していくということになる。

if文は、これにどう関係してくるのか?

if(もし)という言葉を辞書で調べてみると
<もし>:
 (1)(「ば」「たら」「なら」などの語と呼応して)確定していない物事、事実に反する物事を仮定して次に述べる物事の条件とする意を表す。

 (2)(下に疑問や推量の意を表す語を伴い)確実ではないが、十分にあり得る事態を想定する気持ちを表す。

現実には確定していない物事を[仮定]する。= <もし>

そして、それを実行すべきコードの[条件]としている。


ちなみに[条件]の意味は、
<条件>:
(1)物事を決定したり約束したりするときに、前提あるいは制約となる事柄。

(2)物事の成立あるいは実現に必要な事柄。ある事態を引き起こす原因。

なにかを実行するときに、必要な事柄。= <条件>


以上をまとめると
ある仮定を満たす時に、その後に続くコード(プログラム)を実行する。

そのコードを実行するにはこの確定していない物事=[仮定]が必ずなくてはならない。


そしてif文では、
その[仮定]を[関係演算子]と[論理演算子]だけで表現する。

ということは、この二つだけをマスターしてしまえば、理論的には、
プログラムで使われるすべての[条件]の特徴と限界を把握したことになるのではないか。

余計な考えや、なにが条件かわからずぐるぐると深みにはまることを避け、
ストレートにアルゴリズムを見つけることができるようになるのではないか。


条件式は、スイッチの働きをしているように思う。
というよりもスイッチというのは、よほど「条件」という概念を表すのに適したものなのだろう。
コンピュータのしくみはハードウエアからはじまり、どこまでいっても、
この連鎖(何かが何かのトリガーになる)からは逃れられないようだ。

話がそれたが、[何が条件か]を見抜き、それを[条件式であらわす]ことができる力は
プログラミングにおいて、とても重要だと感じる。
ここに重点をおいて早い内にマスターしておくことで、
回り道を避け、はやくプログラムのコツをマスターできるのではないかと思う。


このあたりについて、なにか裏付けとなるものがないか、
「条件式 と プログラム」というキーワードで検索してみた。

Lets try HSP lesson6:条件式
「プログラミングをするときの最低限覚えて置かなきゃいけないことのもう1つに条件式があります。
「これも知らないとプログラミングができないのでしっかり覚えておきましょう。」

Eclipseではじめるプログラミング(4) 
「 プログラムにおいて処理の流れを制御するには、条件をどのように指定するかということが重要になってきます。


このように「条件」というのはプログラムの基本であり、とても重要だということは少なくとも二人の方が指摘している。


上記、二つ目のサイトは、「処理の流れを制御」と書かれている。
以前、フローについていろいろと調べたとき、[フロー]と[スイッチ]の概念は、
コンピュータのハードウエアからはじまり、ソフトウエアまで、どこまでもついてくるなと感じた。


フローとは、
水やビー玉が高いところから低いところへ流れていくようなもの。
ドミノ倒しのように次々とたおれていくもの。
そのA地点からB地点へ流れる過程で、こまかく分岐し、相互にまた雑ざり合ったりを繰り返す。
次にどちらへすすむのかをコントロールする。それがフロー制御。

このたとえで、注意すべき点は、「流れ」というものはいったん流れ始めると後戻りはできない、先へすすむのみであるということ。(ループは後戻りではなく回転。後戻りとは逆流のこと)
そしてその流れは、早い流れであり、「分岐」と「混ざり合い」は、たくさんのものが並行して同時に発生する。

前もってプランをたてておかないと、特定の結果を出すように流すのはむずかしい。

そういった「分岐」と「混ざり合い」をコントロールし、流れをコントロールする作業が、プログラミングということだと考えるのはいいすぎだろうか。

いや、きっと合っているに違いない。
もし間違えていたとしても後で修正すればよいこと、
まずは、
「関係演算子」と「論理演算子」をマスターすること、そしてIf文を使いこなせるようになること。
これがすべてのプログラミング言語学習に共通するする、第一ステップであり、
人間の言語の学習と異なるポイントだ。

0 件のコメント:

コメントを投稿