ルギア君の戯言

雑多な記事。

補足第2章 魔法の組み立て方

リザード「久しぶりだから、ウォーミングアップを兼ねて、魔法の組み立てかたを勉強しようか。」
ルギア君「ふむふむ。」
リザード「魔法は単発で使うこともあるけど、いろんなものを組み合わせれば、よりいっそう便利になるんだ。」
ディアルガ「まあ、そりゃあ、そうだろうな。」
リザード「じゃあ、授業を始めるよ。」
リザード「まずは、自分がやりたいことを頭の中に思い浮かべる。」
ルギア君「浮かべたよ。」
リザード「そのやりたいことを達成するには、どんな魔法が必要か考える。」
ルギア君「何が必要かわからないよ。」
リザード「その場合には、やりたいことを達成するための手順を紙に書き出してごらん。」
ルギア君「・・・書いたよ。」
リザード「そうすると、アラ不思議。どんな魔法が必要か見えるね。」
ルギア君「ふむ。・・・ん、まあ、見えなくもないかな・・・」
リザード「じゃあ、魔法に直して、その手順通りに言ってみ。」
ルギア君「えーっと・・・」

まとめ

まあ、今回は、「魔法(=プログラミング言語)」の組み立て方ということで、自分のやりたいことを紙に書き出してからプログラムを書くととてもスムーズに書けることを説明します。


ルギア君が四角い部屋の中にいると考えてください。
ルギア君はその部屋の中で「ある作業1」をしたあとは、当然部屋から出るでしょうから、出口を探します。
出口は1つしかないので、その出口からでます。


そうすると別の四角い部屋に来ました。
ルギア君はそこで「ある作業2」をして、1つしかない出口からでます。


そうしていると、今度はひし形の部屋に来ました。
ルギア君は困ってしまいました。
今までは出口が1つしかなかったのですが、今度は出口がいくつかあるようです。
ルギア君は、今までの作業の経験を元に、行くべき出口を選んで行きました。


ルギア君は、また「ある作業2」をしています。
どうやら、先ほどの出口は「ある作業2」をしていた部屋につながっていたようです。


これは、フローチャート図の書き方を示したものです。
長方形とひし形以外にもいくつかありますが、とりあえず、通常はそれだけあれば十分なので、(ルギア君は)あまりそれ以外は使ったことがありません。
「長方形」は「処理」を示します。なんらかの処理をして、先に進みます。出口は1つしか作れません。
「ひし形」は「条件分岐」を示します。中に条件をメモして出口のところに、条件が成立「する(はい)」とか「しない(いいえ)」とか書いておきます。ひし形と言う形の特性上3つしか出口が作れないように見えますが、もっとあっても大丈夫です。


f:id:lugia:20081020153610p:image:w600
(クリックして拡大)


例えば、この図は、行単位で辞書順に並び替えるバブルソートのフローチャート図です。
この図を見ると、どこで反復処理をして、どこで条件分岐をすればよいかがわかります。
また、「辞書順に比較する」をどのように作ればよいかわからなければ、そこをズームインして書いてみればよいわけです。


これを C 言語化するときには、この図のうちで一番外側のループから書いていけば良いことになります。
そして、このフローチャート図は2個のループと1個の条件分岐からなりますね。


また、この図から「文字列を入れ換える」とあるので、文字列をコピーできる strcpy が入った string.h が少なくとも必要になることがわかります。
ただし、ヘッダファイルは書いていく途中で必要になったらいれていけばよいので、そこまで図から読み取る必要はないですがね。


この図が頭の中に思い浮かべば、きみはもうプログラムマスターかもしれない(それ言い過ぎ