2011.02.24 marionnettezero
2回目の投稿になります、marionnettezero です。
ちょっと風邪ひいておりマスが、がんばっていきたいと思います。
今回もまったくプログラミング的じゃないタイトルでお送りしておりますが、毎回意味不明なタイトルでいかせていただきます。
さてさて、続きはこちら。
みなさんは、プラグラムを作る時、その処理をどのように記述しているでしょうか?
プログラムの言語構造的に、順次処理と呼ばれるものは、上から下へ順番に処理が行われるように記述していくのが基本となります。
※ 複数のプロセスやスレッドによるプラグラムだったとしても、その処理は上から下へ順番に処理されています。また、そう処理されるように記述するのが基本となります。
さて、この上から下へ順番に処理されていく構造を破壊するような言語構造が存在している言語があります。みなさん、よくご存じの PHP にもありますし、C言語にも存在してます。
それは、「goto文」です。goto文は、指定したラベルに対して、絶対的な移動を提供します。ですので、途中にある処理を行わずに、任意の場所にジャンプしてしまう事もできるようになります。
ただし、任意の場所にジャンプできるからといい、if のような条件分岐処理等を使わずに、goto文で処理できるからと、適当に使用していると、後の改修や、他の人がその処理を見たときに、判読性や保守性の良くないものが出来上がってしまいます。
では、なぜ、このような「goto文」というものが存在しているのでしょうか?答えを想像できますか?
あなたは、複数階層になっているループ処理を抜ける場合、どのように処理を記述しますか?一番内側のループ処理から、全てのループを抜けたくなった場合、全てのループ終了条件を設定してやるか、1階層ずつ break; していくしかありません。
※ まあ、むしろ、正しい記述の方法です
そこで、ループ処理の直後に goto ラベルを設定し、一番内側のループ内で終了条件になった場合に、このラベルに goto すれば、簡単にループを抜ける事ができます。かつ、ループの直後に記述しているラベルですので、順次処理の構造を崩す事なく利用できているのです。
「goto文」は、使い方を間違えれば、その言語構造を壊しかねない機能をもっていますが、使い方さえ間違わなければ、よりシンプルで判読性の高いプログラミングも可能となるのです。
さあ、みなさんも、ご利用になっている言語の言語構造をしっかりと理解し、その性能を 120% 使い切りましょう!
今回は、このへんで。
see you.