平方根を求める

ルートの近似値を計算します。戻り値は整数です。

 

イベント命令の記述例と、相互変換モジュールを用いて貼り付けるためのコードを併記しています。実際に入力する際は、相互変換モジュールを用いてスイッチ・変数番号を任意の番号に書き換えて変換すると効率的です。

概要

ニュートン法を用いた正の平方根の計算です。正の整数を『V[0001]:元の数』に入れて実行すると、その正の平方根の値が『V[0003]:結果』に返ります。例えば√95183を求めるには、元の数に95183を入れて実行すれば、結果に308が返ります(真値は308.517……)。

イベント命令

相互変換モジュール用コード イベント命令記述例
#include "rpgfunc.as"

/* スイッチ・変数番号を入力 */
s1 = 1  // スイッチ1:前々回結果
v1 = 1  // 変数1:引数
v2 = 2  // 変数2:一時変数
v3 = 3  // 変数3:結果
v4 = 4  // 変数4:前々回結果

/* 以下、イベント命令の構文 */
swi s1, , 0
varsel v2 : var 0, 1, v1, 0
varsel v4 : var 0, 0, 0, 0
label 1
varsel v3 : var 0, 1, v1, 0
varsel v3 : var 4, 1, v2, 0
varsel v3 : var 1, 1, v2, 0
varsel v3 : var 4, 0, 2, 0
co 1, v3, 1, v4, 5
        swi s1, , -1
        co 0, s1, 1, 0, 0
                varsel v4 : var 0, 1, v3, 0
        coend
        varsel v2 : var 0, 1, v3, 0
        golabel 1
coend
varsel v3 : var 1, 1, v2, 0
varsel v3 : var 4, 0, 2, 0
send
使用スイッチ
  • 『S[0001]:前々回結果』

  • 使用変数
  • 『V[0001]:元の数』
  • 『V[0002]:一時変数』
  • 『V[0003]:結果』
  • 『V[0004]:前々回結果』
◆スイッチの操作:[0001:前々回結果]をOFFにする
◆変数の操作:[0002:一時変数]代入,変数[0001]の値
◆変数の操作:[0004:前々回結果]代入,0
◆ラベルの設定:1番
◆変数の操作:[0003:結果]代入,変数[0001]の値
◆変数の操作:[0003:結果]除算,変数[0002]の値
◆変数の操作:[0003:結果]加算,変数[0002]の値
◆変数の操作:[0003:結果]除算,2
◆条件分岐:変数[0003:結果]がV[0004]以外
 ◆スイッチの操作:[0001:前々回結果]のON/OFFを逆転
 ◆条件分岐:スイッチ[0001:前々回結果]がON
  ◆変数の操作:[0004:前々回結果]代入,変数[0003]の値
  ◆
 :分岐終了
 ◆変数の操作:[0002:一時変数]代入,変数[0003]の値
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
◆変数の操作:[0003:結果]加算,変数[0002]の値
◆変数の操作:[0003:結果]除算,2
◆