プログラミングを料理と作曲と漫画に例えてみた (2/3) | おるずラボ

おるずラボ

発想、プログラミング、デザイン・・あなたも『Creative』な力を手に入れませんか?

「楽譜」と「プログラミング」。
「歌詞(特にJ-POP)」と「プログラミング」。

全く畑違いの2つですが、
その構造に目を向けてみると意外な共通点があったりします。

それが、
「順序」「繰り返し」「分岐」という
プログラミングの『核』となる3つの要素。

プログラミングのコードって、
パッと見ると英語だらけの暗号みたいで難しそうですが・・

構造的には、実はこの3パターンだけで構成されているんです。


【目次】

順序:基本的に、上から下へ読んでいく。


プログラミングは「コード」と呼ばれる文章を入力して
目的の機能を実現します。

僕らプログラマーが書いたこのコード(命令文)を
コンピュータは上から順に読んでいきます。

途中で「あ、こっちの行も気になるなー」なんて事はしません。
速読も、しません。

愚直に、上から下にしか読めない奴なんです。コンピュータは。

だから僕たちがコードを書く時も
コンピュータに処理してほしい順番に合わせて
上から順に、書いていく事になります。

これは、楽譜でも同じですよね。
基本的に最初の小節から、音符を順番に弾いていく。

歌詞も、最初から順に唄っていく。

繰り返し:同じ事を繰り返す


ただ、「順序」だけだと問題が発生します。

書く効率が、悪い!

特に自動化を目的とするプログラムの場合、
同じ処理を何回も繰り返す事が多々あります。

これは、楽譜も同じです。

楽譜で、同じ小節が繰り返される時は
リピート記号(:|こんなやつ・・)で表記されると思います。

この記号を使うメリットは2つあって、

1)楽譜がながーくなるのを防ぐ
2)修正をしやすくする

この2つ。

例えば20小節を弾き終わって、サビが終わって、
もう一度20小節を繰り返すような場合・・

繰り返しでまた全く同じ音符を書いていかなくちゃいけません。
書くのも、読むのも、長くなって面倒くさい。
ミスってどこか間違える可能性だってあります。

さらにさらに、繰り返す小節でどこか直したい時に
別々の所にいくつもあると、それぞれの箇所を直さなくちゃいけません。

・・こういう面倒さを排除するためにも、
リピート記号を使って書き方を工夫しているわけです。

プログラミングの世界では
WhileForといった命令文が使われる事が多いです。

Whileは主に、「~という条件の間繰り返せ」という命令。
Forは主に、「○回繰り返せ」という命令です。

仮に「やる気のある限り、行動し続けろ!!」というメッセージ(?)を
プログラミング風に記述するとなれば・・

While ( やる気のある限り ) {
  行動する!
}

・・こんな風に、書けるでしょうか(笑)

分岐:条件に応じて順序が変わる


さらに、「順序のみ」にはもう1つの問題が。

条件に応じて処理を変えたい時。

例えば、ほとんど繰り返しのメロディだけど
微妙に音が変わる時ってありますよね。

1回目のサビと2回目のサビで、
微妙にメロディが違うような時。

これ、「順序」と「繰り返し」だけでは書けません。
そこで・・新たな要素が必要になってきます。

それが、「分岐」。

楽譜だと、繰り返しの際に
1回目と2回目で通る小節を変化できる記号があります。

小節の上が「1」とか「2」とかで括られてる奴です。

これがあるおかげで、
条件によって内容を変える事ができます。

プログラミングの世界では、
IfElseといった命令が使われます。

Ifは「もし○○の時」という意味で、
Elseは「If以外の時」といった意味です。

例えば今が朝か夜かによって
あいさつのメッセージを変えたいような場合は・・

If ( 朝 ) {
MsgBox ( "おはよう" );
} Else {
MsgBox ( "おやすみ" );
}

と、いった具合になります。



プログラムというものは
こうした「繰り返し」や「分岐」を簡単に記述できる構造があるおかげで、

手作業でやると複雑で単調になってしまうような事も
一連の文章(コード)で記述できるようになっているわけです。



【告知】
メルマガ始めました。

VB.NET、Java、PHPなどの体験型プログラミング講座や、
自作Webサービスの開発進捗などを随時報告していきます。

=> メルマガ『武器としてのプログラミング』に登録