Location : Home > Languages > Perl > Package
Title : Algorithm::Step - Trace execution steps of an algorithm
Toolbox Logo

名称

 Algorithm::Step - アルゴリズムを段階を追って実行


概要

	use Algorithm::Step;
	use integer;

	algorithm "P", "Print table of 500 primes";
	my @PRIME = ();

	step 1, "Start table, PRIME[1] <- 2, PRIME[2] <- 3";
	$PRIME[1] = 2;
	$n = 3;
	$j = 1;
	$PRIME[++$j] = $n;

	while ($j < 500) {

	step 2, "Advance n by 2";
    		$n += 2; 

	step 3, "k <- 1";
		$k = 1;

		do {

	step 4, "Increase k";
			++$k;

	step 5, "Divide n by PRIME[k]";
			$q = $n / $PRIME[$k]; 
			$r = $n % $PRIME[$k];

	step 6, "Remainder zero?";
			next if $r == 0;

	step 7, "PRIME[k] large?";
		} while ($q > $PRIME[$k]);

	step 8, "n is prime";
		$PRIME[++$j] = $n;
	}

	step 9, "Print result";
    	print "FIRST FIVE HUNDRED PRIMES\n";

	$m = 1;
	do {
		for (0,50,100,150,200,250,300,350,400) {
			print $PRIME[$_+$m], "\t";
		}
		print $PRIME[450+$m], "\n";
		$m++;
	} while ($m <= 50);

	end_algorithm "P";

説明

 これは "The Art of Computer Programming" や "Introduction to Algorithms" のようなアルゴリズムのテキストにあるアルゴリズムの振る舞いを観察するためのものである。
 私は自分の楽しみのためだけに書いた。私はいかにプログラムの中に助けになる方法でドキュメントを埋め込むかを考えていた。
 利用方法は上の使用例に示されている。

algorithm

 アルゴリズムを開始する。引数は2つで、1つめはアルゴリズム名、2つめはその短い説明である。

end_algorithm

 アルゴリズムを終了する。

step

 ステップごとに1ずつインクリメントする。ネストすることも可能。ステップはサブステップに分解することも可能である。

step 1, "desc";
step 1,1, "desc";
step 1,2, "desc";
step 2, "desc";

statistics

 実行結果に関する情報を出力する。もし何も指定されなければ標準出力に出力する。ファイル名が指定されればそのファイルに出力する。

statistics("prime.stat");

出力ファイルは以下のようになる。

STATISTICS

Algorithm P: Print table of 500 primes
STEP 1. Start table, PRIME[1] <- 2, PRIME[2] <- 3 .... [1]
STEP 2. Advance n by 2 ............................... [1784]
STEP 3. k <- 1 ....................................... [1784]
STEP 4. Increase k ................................... [9538]
STEP 5. Divide n by PRIME[k] ......................... [9538]
STEP 6. Remainder zero? .............................. [9538]
STEP 7. PRIME[k] large? .............................. [8252]
STEP 8. n is prime ................................... [498]
STEP 9. Print result ................................. [1]

To Do

 コメントから生成すること。もしファイル prime.pl が以下のような内容であれば

...

# algorithm P: Print first five hundred primes

# step 5: Divide n by PRIME[k]

# end algorithm P
	...

コメントをパースし、コードを挿入し、新しい step_prime.pl を生成する。


バグ

 いっぱいあるだろう。まだα版以前だ。


参考資料


著者

 Chaoji Li, <lichaoji@gmail.com>


著作権

 好きなように使ってくれ。

Toolbox Logo
Updated : 2006/07/25