疑似コード

過去のエントリ「論文での疑似コードの書き方」へのアクセスが多いので、少し追加してみる。

疑似コードの書き方について、最初に言ってしまうと、
書き方は千差万別

決まったルールはなく、アルゴリズムの内容を伝えることが目的

特定の言語の文法に依存せずに、理解のしやすさを優先することが大事になる。

人が読んで理解できる自然言語を使って構わない。

例えば、毎月の処理を書くときに

FOR month = 1 to 12

とするのではなく

FOR each month of the year

としたほうが、意図を伝達するうえで優れている、ということになる。

次のリンク先のPDFでは、具体例や参考ページが記されている。
Pseudo code Tutorial and Exercises (http://www.cosc.canterbury.ac.nz/tim.bell/dt/Tutorial_Pseudocode.pdf)


ここに書かれている例をいくつか紹介してみる。

例えば、ソートを行うためのプログラムコード(C言語)は次のようになる。

C言語がわかる人でも、この処理の内容をすぐに理解するのは難しい。

これを疑似コードで書くと次のようになる。

さらに、より自然言語に近い疑似コードにすると次のようになる。


別の例。


フィボナッチ数列{1,1,2,3,5,8,13,21,...}のn番目の値を出力するプログラムコード(C言語)は次のようになる。

50番目のフィボナッチ数を求める疑似コードは次のようになる。

さらに、より自然言語に近づけると次のようになる。

もうひとつ別の例。

配列の要素にランダムな値を割り当てるというもの。

このような単純なものであれば、極端な話、次の一文だけでもいい。



他にも、引数と戻り値のある関数はどう書くか、とか、いろいろ悩ましいところはあるけど、
結局、他の論文なりから似たようなものを探し出して真似するのが一番の近道である気がする。
(英語だと疑似コードが書きやすいけど、日本語だと違和感がある気がする)

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造