hakeの日記

Windows環境でプログラミングの勉強をしています。

hp 35s プログラムメモ

hp35sでのプログラムでのポイントをメモ。
以下は全てRPNモードでの記述です。
 

スタックの値を引数に使用する

Xレジスタに半径値がある場合の円の面積を求める。

A001 LBL A     # プログラム名(ラベル)
A002 x^2       # xの2乗  [青][√X]
A003 π
A004 ×           # 掛ける
A005 RTN       # Return(終了)

 

プログラム中で入力と出力を行う

円の面積を求める。

A001 LBL A
A002 INPUT R   # 変数Rに数値入力、最後に[R/S]入力
A003 RCL R     # 変数Rの値をXレジスタにコピー(Recall)
A004 x^2
A005 π
A006 ×
A007 STO S     # Xレジスタの値を変数Sにコピー(Store)
A008 VIEW S    # 変数Sの値を表示
A009 RTN

 

Recall/Store時の四則演算(通常の計算時も同様)

Recall時(X = X - A)

A001 LBL A
A002 10
A003 STO A    # A = 10
A004 100      # X = 100
A005 RCL- A   # X = X - A
A006 RTN      # => 90


Store時(A = A - X)

A001 LBL A
A002 10
A003 STO A    # A = 10
A004 100      # X = 100
A005 STO- A   # A = A - X
A006 VIEW A   # => A = -90
A006 RTN      #

 

メッセージ表示

表示中はプログラムが中断するので[R/S]押下で継続実行する。

A001 LBL A
A002 SF10     # フラグ10セット
              # [黄][↑][1][・][0]
A003 MSG      # メッセージ文字
              # [EQN][RCL][1/x](M)[RCL][8](S)[RCL][i](G)[ENTER]
A004 CF10     # フラグ10クリア
              # [黄][↑][2][・][0]
A005 RTN


 

サブルーチン

A001 LBL A    # Xレジスタの値を10倍にする
A002 ENTER
A003 10
A004 ×
A005 RTN

B001 LBL B    # Xレジスタの値を100倍にする
B002 XEQ A001 # サブルーチンコール
B003 XEQ A001 # サブルーチンコール
B004 RTN

 

条件分岐

条件式の結果がTrueの場合次行を実行、Falseの場合はスキップする。
入力した2個の数値が同じなら「SAME」、異なるなら「DIFF」と表示する。

A001 LBL A
A002 INPUT A
A003 INPUT B
A004 RCL A
A005 RCL B
A006 SF10
A007 x=y?   # [黄][MODE](x?y)[6]
A008 GTO A011
A009 DIFF   # メッセージ 
A010 GTO A012
A011 SAME   # メッセージ
A012 CF10
A013 RTN

 

カウンタループ

変数の値に開始値、最終値、増減値を設定する。

  ±ccc.eeedd
      ±ccc : 開始値および現在値
        eee : 最終値(省略時は0)
         dd : 像現値(省略時は1)

   DSE : 現在値を増減値で減算する
         現在値>最終値なら次行を実行する、そうれなければスキップ
   ISE : 現在値を増減値で加算する
         現在値<最終値なら次行を実行する、そうれなければスキップ


1から入力値(整数)までの合計を求める

A001 LBL A
A002 0
A003 STO S    # 合計
A004 INPUT C  # 開始値
A005 RCL C
A006 0.00001  # 最終値、減値
A007 STO+ C   # C = 開始値.00001
A008 RCL C
A009 INTG     # 現在値取得
              # [黄][TAN](INTG)[4]
A010 STO+ S   # S = S + 現在値
A011 DSE C
A012 GTO A008 # 現在値>0ならジャンプ
A013 VIEW S
A014 RTN

 

変数への間接アクセス

変数i. jに番号を入力し(i). (j)でその番号の変数やメモリにアクセスする。

   index no.  変数名
      -26       Z
      -25       Y
       …        …
       -1       A
        0       無名
        1       無名
       …        …
      800       無名

間接番号でデータを書き込み、変数名で読み出す。

A001 LBL A
A002 -26
A003 STO I    # I = -26(Z)
A004 -25
A005 STO J    # J = -25(Y)
A006 100
A007 STO (I)  # (I) = 100
A008 200
A009 STO (J)  # (J) = 200
A010 VIEW Z   # => Z = 100
A011 VIEW Y   # => Y = 200
A012 RTN