π多桁計算 プログラムをBasicからPHP言語に移殖してみました。

更新日:

スポンサーリンク

 

WordPressを始めてから1年以上たちますが、WordPressを構成しているPHP言語の理解を深めるために、「N88-BASICによるはじめてのアルゴリズム入門」を引用して、以前Visual BASICで作成したπの多桁計算プログラムコードをPHPに移殖することにしました。 

PHPは、BASICと同じくインタープリター言語で、BASIC言語にも近く、簡単に移殖できると思ったものの、やはり手こずってしまいましたので、この点を中心にブログしてみます。

先ずは、PHPへ移殖した結果を示します

BASICからPHPへπ多桁計算プログラムを移殖したことで、【桁数選択】→【計算開始】ボタンを押すとWeb上でπの多桁計算が行えるようになりました。

 

 

スポンサーリンク

 

PHPについて

今回、PHP(PHP : Hypertext Preprocessor)を勉強するに当たり、㈱翔泳社の「プログラミング学習シリーズ PHP① はじめてのPHPプログラミング」を購入しました。 CD-ROMも添付されていて、初心者にとっては、中々わかりやすく書かれていると思います。 PHPプログラミングを始めるにあたり、ローカルアパッチサーバーを設置する必要があり、Windows用のXAMPPのインストールについてもわかりやすい説明が記載されています。 (当サイトでは、MAC用のMAMPがインストールされいます。)

WordPressは、そもそもPHPで構成されている動的WebページですのでPHP言語を知ることはサイト管理者にとって有意義なことではないでしょうか。

 

πの多桁計算プログラムについて

πの多桁計算ソフトで有名なのはスーパーπです。 このソフトは、パソコンのベンチマーク等で利用され、計算速度も早く非常に優れていると思いますが、パソコンにプログラムをインストールした上で実行しなければなりません。

一方、PHPを使用したプログラムであれば、パソコンのOSにも依存せずWeb上で、πの多桁計算プログラムが実行でき、更にPHPソースコードは公開されません(後述)。

今回のπの多桁計算プログラムは、N88-BASICによるはじめてのアルゴリズム入門」に載っていた、マチンの公式を使用したBASICを随分昔に手を加えてVisual BASIC化したものを更に今回、PHPに移殖しました。

参考にした『N88-BASICによるはじめてのアルゴリズム入門』は、元はC++で作成したものをBASICに焼き直しされたようです。 既にこの書籍は絶版で中古本でしか手に入らず、残念ながらもはやBASICは忘れ去られた言語かもしれません。 同じ著者(河西 朝雄氏)で「C言語によるはじめてのアルゴリズム入門」は販売されています。 参考として、「C++円周率計算(マチンの公式)!」C++でのソースコードがネットで掲載されていました。

なお、PHPの移殖に当たっては、PHP言語にも対応している mi (テキスト エディタ))を使用しました。

 

PHPへの移殖・要点

  • πの多桁計算BASICプログラムをPHPで記述した、独立したPHPファイル(Webページ)を作成
  • サーバーの処理パフォーマンスがわかるように、計算処理時間も表示させる
  • 完成したPHPファイルをFTPソフトでサーバーにUPしてiframeで投稿ページに埋め込む(デモ参照)

完成したものを下に示します。

< πの多桁計算 >のデモ

[桁数を選択]して[計算開始]ボタンを押すと
πの多桁計算が行えます!

注記

桁数に従って処理時間が指数関数的に増加しサーバーに負荷がかかるので、桁数選択を2000桁(最大)までにしています。

 

PHPファイルの振る舞い(参考)

PHPファイルをブラウザのソースコードで見ると、HTMLのソースコードは見えますが、PHPコードは表示されません。 これは、ブラウザからPHPファイルをリクエストすると、サーバーがPHPの命令を読み取って全てをHTMLコードに書き換えるからです。 

例えば、以下の簡単なPHPファイルをサーバーに設置して、ブラウザからPHPファイルのURLをリクエストとすると、サーバーは、変数($a〜$d)の値を読取ってHTMLに書き換えますので、ブラウザ側から見ると、PHPコード 『 <?php 〜 ?> 』が消えているのが分かります。

PHPファイルのソース

ブラウザから見ると

Safariで[開発]→[ページのソースを表示]

 

PHP化で戸惑ったところ

ポイント

  • BASICでは、改行すれば良かったが、PHP言語では、ステートメント(実行単位)の終わりにセミコロン「;」を付けないで、例えば、<?php echo ‘テスト’ ; ?>でセミコロンが無い状態でプログラムを実行すると画面がホワイトアウトしてしまいます。
  • 文字配列の結合で、BASICでは “ABCD” + “EFGH”で記述していましたが、PHPでは、「 . 」ドットで“ABCD” . “EFGH”の様に結合させます。
  • 文字列の途中改行で、BASICでは、Chr$(13) + Chr$(10) にしていましたが、PHPでは、HTMLへ出力するので . "<br />" にします。
  • 文字列操作で、BASICでは、右から4文字抜き出す場合、Right$(ABCDEFG, 4)  でしたが、PHPでは、substr("ABCDEFGH", -4) で表記します。
  • For文で、BASICでは、 for i=0 to 100 としている場合、PHPでは、 for $i = 0 $i <= 100; $i++) と表記します。 $i =100 で表記するとNGです。 何故なら $iが100の値 1点のみで true になるからです。 これは、BASICより合理的ですね。
  • 関数(function)と globalキーワードです。 関数内の変数は、ローカルスコープで値が管理されていて、関数の外から参照できません。 これは、全てがグローバルスコープとすると、変数が重複したときの問題を回避するための様です。 よって、関数外でも参照できるようにするためには、関数内で必要な変数をグローバル変数に定義します。 例:global $A ,$B ,$C ;
  • 一番戸惑ったのは、 if文でした。 完成と思ったものの、プログラムを実行すると、πの値が相違してしまいました。 何度コードを読み返しても 虫が見つからず2日ほどデバックに費やしました。 原因は 値が等しい比較演算子 == にすべきところ、単純に = と表記していたことでした。 例: if($FLAG == 1){ LADD($A ,$B); }

 

以上、π多桁計算 プログラムのPHP化でした。 PHPへの理解についてはまだまだ先ですが、PHPのπ多桁計算プログラムがOSに依らず、Web上で動くことに感動!した次第です。

 

 


スポンサーリンク

〜〜〜〜〜〜〜〜〜〜〜

 

おすすめ記事

1

  レコードのハイレゾ録音へのヒント(Tips)   ハイレゾ録音のヒントになればと、 今までのレコードのハイレゾ録音を通して、思いつくまま必要と思われることを書き留めましたのでご ...

2

  これまでの当ブログ記事(テストレコードなどのブログ)の知見を通して、アナログ・レコードが音質的に不利な点が多々見つかりました。 アナログレコードの音質を好ましく思っている一人で、本当はあ ...

3

年代モノのレコードプレーヤTRIO(KP-51F)を使ってレコードのハイレゾ録音を行っていますが、このプレーヤの実力を知るためにテストレコード(AD-1)使って定性的な特性を調べ、断片的な記事を投稿し ...

4

eonkyoからDL購入したハイレゾファイルを基準音源にして、基準音源と同一録音のレコードをMCカートリッジとMMカートリッジでハイレコした音源の音質比較を試みました。 MCカートリッジは、オルトフォ ...

5

「HAP-Z1ESのDSEEとDSDリマスタリングエンジンの効果検証」(以前のブログ記事)は、 実際のLPレコードからハイレゾ化したリアルサウンドでDSEEを評価したものでした。 今回は、正弦波の組 ...

Copyright© ハイレコのブログ , 2019 All Rights Reserved Powered by AFFINGER5.