rpnプログラムの使い方 [基礎] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 基礎 | あなたもできるたった「5つ」のステップでカンタンにrpn電卓をマスター。

HOME > 基礎 > rpnプログラムの使い方

hatena twitter facebook rss ソーシャルブックマーク

rpnプログラムの使い方

警告本記事の内容はrpn標準版ユーザの方のみを対象としています。

 rpnは逆ポーランド記法で書かれた数式を計算するソフトです。逆ポーランド記法自体、通常の数式よりも短く書ける特長がありますが、rpnではキーボードからのタイプを極力少なくすることにも配慮してあります。

実際、関数のすべてが一文字で表現されており、タイプの負担を減らすことに貢献しています。例えば、sin(1)の計算は僅かな3文字のタイプ数です("rpn "の分は省く)。

  >rpn 1 s
  0.841471


sin(log(3.14)) * cos(3.14)のような計算式(26文字)も、rpnなら僅かに17文字ですね(26文字が17文字になるので、34%の削減)。

  >rpn 3.14 l s 3.14 c *
  -0.910388


rpnに組み込まれている関数は厳選されていますし、ほとんどが関数名の先頭1文字で表してあるため、すぐに覚えられます。キータイプ数の削減は小さなことですが、毎回積み重ねることで、いずれは膨大な時間の節約になることでしょう。

rpnプログラムの短縮記述  

 rpnはファイルに保存した逆ポーランド記法式を、rpnプログラムとして利用することができます(rpnプログラムの集合をrpnパッケージと称しています)。

例えば、以下のrpn式は1から10の総和を計算するものです。レジスタや繰り返し記号を使えば1行で書けます。

  >rpn @n 1 + #n @n -r 10 | rpn @s + #s -e @s
  55


タイプ数は38文字です。慣れればrpn式を書くことは簡単ですが、ちょっと面倒ですね。そこで、rpnプログラムのseqプログラムとsumプログラムです。

  >rpn 10 -c seq | rpn -c sum
  55


タイプ数も22文字と少なくなりますし、rpn式が分かりやすくなります。rpnプログラムには様々な機能も付加されていますので、1から10までの偶数だけの総和を求めるときにも簡単に書けます。


  >rpn 1 10 2 -c seq | rpn -c sum
  25


        *


 rpnパッケージが充実してくるとrpnプログラムを使う機会が増えてきます。"seq"や"sum"はrpnプログラム(ファイル)の名前なので仕方ないとしても、それ以外のタイプ数を少なくしたいものです。

  >rpn 10 -c seq | rpn -c sum


上のrpn式でも"rpn"から最後の"sum"まで、全体で22文字ありますが、面倒なのはrpnプログラムを指定する"-c"です。"-c"の前後に空白も必要ですし、何度も出てきます。

そこで、rpnプログラムの前に":"を付与することにより、-cオプションと等価な動作になるようにしてあります。つまり、rpn式を以下のように書けます。

  >rpn 10 :seq | rpn :sum


22文字が18文字と少なくなりました。18%のタイプ量を削減です。

これも入力に関する極めて小さなショートカットですが、rpnを少しでも手早く、手軽に使うための仕様になります。

情報"-c"を使う方法は正式なサポート対象です。バッチファイル等で使用される場合は"-c"を使用してください。あくまで":rpnプログラム"はコンソール(DOS窓、コマンドプロンプト)で直接入力する時の簡便法と理解ください。

逆ポーランド的な書き方

 ":rpnプログラム"の形にすることで、rpnの逆ポーランド記法に対する親和性がより高まります。

つまり、「1 s」の"1をsin関数に適用する"と「10 :seq」の"10をseqプログラムに適用する"が、共にオペランド+オペコードの順であることをイメージできます。

  • 1(オペランド)をsin(オペコード)に適用
  • 10(オペランド)をseq(オペコード)に適用

オペランド+オペコード形式

  rpn式のBNF(バッカス・ナウア記法)                rpn式の記述例
  ================================                =============
  rpn式 ::= {<expression>}*                       >rpn 1 2 +
  <expression> ::= <operand>|<operand><opcode>    >rpn 1 s
  <operand> ::= 0..9                              >rpn 10 :seq
  <opcode> ::= +-*/%r…
  *:0回以上の繰り返し


オブジェクト指向的な解釈

rpnをオブジェクトと考えると、メソッドの呼び出しと解釈することもできます。

  >rpn 10 :seq  <-- 対比 --> rpnオブジェクト     ・・・・・・・・・・・・・・・・・・・・・・・・・・
                  イメージ     |- uniq          : C++的な解釈⇒rpn.seq(10) :
                               |- sort          : ※rpnオブジェクト内のseq :
                               |- seq  <-- 10   :   メソッドにメッセージと :
                               |- sum           :   して10を送る           :
                               :                 ・・・・・・・・・・・・・・・・・・・・・・・・・・


短縮記述を用いれば、一貫して逆ポーランド的、オブジェクト指向的なスタイルで記述できます。

基礎TOPLinkIconに戻る

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

情報seq, uniq, sortはユーティリティーパッケージに同梱されています。詳しくはプロダクトを参照ください。

rpnを実際に試してみたくなったら  

広報rpnには標準版と試用版があります。ビジネス等、本格的に使うrpn標準版LinkIconが必須です。

広報逆ポーランド電卓を試したいだけならrpn試用版(無料)でも、ほとんどの例題を実行することができます(機能の一部に制約あり)。

オリジナル.bmp rpn標準版と試用版の違いLinkIcon
動画 rpnソフトウェアの動画デモLinkIcon

rpnをウェブでダウンロードしたら  

わかりやすいrpnのインストール方法とrpnの使い方の説明があります。

オリジナル.bmp rpnのインストールLinkIcon

紹介 rpnの利用シーンはこちら…

講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語気楽に読めるrpn物語もどうぞ

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲って下さい。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。

[すぐに役立つオンライン講座の紹介]


電卓ソフトで学ぶオンライン講座