=> 構造的に文章を考えるメリット
これって、単にプログラムの構造を「抽象化」しているだけで
端から見たら訳分からないままなんだろうなー、と思ったので
もっと分かり易くしてみようと、トライ。
「料理」「作曲」「漫画」という
一見まったく関係のないような事にも
実はプログラミング的な要素があるんです、というお話です。
プログラミングに対するイメージが
ちょっとでも柔らかくなると嬉しいです。
【目次】
- 1)料理とプログラミング
- 2)作曲とプログラミング
- 3)漫画とプログラミング
料理のレシピは「プログラム」
僕たちプログラマーは、
処理の手順をプログラミング専用の言葉を使って記述します。
例えば、ログインボタンを押された時には
まずIDとパスワードが入力されているかチェックして、
次に該当するユーザーがいるかチェックして、
問題なければメイン画面へ移動する、という一連の流れ。
これは、料理で言えば
「レシピ」を作るようなものです。
レシピというものには
・材料
・作り方
の2つが、書かれています。
例えばコロッケのレシピであれば・・
--------------------------------------------
【材料】
・ジャガイモ
・タマネギ
・肉
・小麦粉
・卵
・パン粉
・塩コショウ
(分量は省略)
--------------------------------------------
【作り方】
1)ジャガイモを茹で、皮をむいてつぶす。
2)タマネギをみじん切りにする。
3)肉を炒める。(塩コショウも)
4)すべて混ぜ、まるめる。
5)小麦粉、卵、パン粉をまぶす。
6)油で揚げる。
--------------------------------------------
・・こんな、感じ?
(作り方は某アニメソングより拝借)
材料を元に、どんな手順でやれば
望みの結果(コロッケ完成!)が得られるのか?
そのやり方を記述したのが、レシピなわけです。
「プログラム」をレシピ風に考えてみると・・
・・さて、
話をプログラミングに戻しますが。
「ログイン処理」のプログラムを書くという事は
いわば「ログイン処理のレシピ」を書く、って事なんです。
レシピ風に書くと、こんな感じでしょうか?
<ログイン処理のレシピ(プログラム)>
--------------------------------------------
【材料】
・ユーザーが入力したID
・ユーザーが入力したパスワード
--------------------------------------------
【手順】
1)IDとパスワードが入力されているかチェック。
2)IDとパスワードに該当するユーザーが存在するかチェック。
3)チェックOK!メイン画面へ移動する。
--------------------------------------------
材料は、入力されたIDとパスワード。
この材料を元に、どんな手順でやれば
望みの結果(ログイン完了!次の画面が表示される)が得られるのか?
それを作っていく行為が、プログラミングなのです。
料理のレシピは日本語で、プログラムは英語で書かれる
・・で、プログラミングが料理のレシピと違うのは
料理のレシピが日本語で書かれるのに対して
プログラミングは(基本的に)英語の、しかも
「プログラミング専用の言語」で書かれるという点。
上のログイン処理レシピを
プログラムで書くと、こんなイメージになります。
public void login (Id, Password) {
// IDとパスワードが入力されているかチェック。
if ( Id == "" ) {
ErrorMessage = "IDが入力されていません。";
return;
}
if ( Password = "" ) {
ErrorMessage = "パスワードが入力されていません。";
return;
}
// IDとパスワードに該当するユーザーが存在するかチェック。
if ( checkUser(ID,Password) == False ) {
ErrorMessage = "入力されたユーザーが存在しません。";
return;
}
// チェックOK!メイン画面へ移動する。
moveNextPage();
}
・・ちょっと、ややこしく見えるかもしれませんが
1行目の「login」というのが、レシピの名前。
その後ろの括弧内にある単語(IdとPassword)が、材料です。
そして、{と
}で括られた間に手順(作り方)を記述していく。
こうして、プログラムは完成していきます。
プログラミング、それは
コンピュータに処理の手順を教えるための「レシピ」作り。
【告知】
メルマガ始めました。
VB.NET、Java、PHPなどの体験型プログラミング講座や、
自作Webサービスの開発進捗などを随時報告していきます。
=> メルマガ『武器としてのプログラミング』に登録