HP-41C プログラミング編 (1)

ここで手持ちカメラ紹介シリーズは一旦お休みして、本日からは少しHPプログラム関数電卓HP-41Cのプログラム機能について書きたいと思います。エミュレータとしてはAndroidではgo41c, iOSではCalc41C, WindowsではHP41Eが利用できます。とくに断りのない場合、[ ]内が各機能キーを、[SHIFT]はオレンジ色のシフトキーを、[ENTER]は[ENTER↑]キーを、" は[ALPHA]キーを、{ }内は引数などを示しています。

HP-41Cのプログラムの考え方は単純です。他の多くのプログラム関数電卓と同様、計算を行う手順(キー操作)をそのまま記憶させる、という考え方が基本です。これにいくつかの条件判断命令、制御命令などが加わって高度なプログラムを作成することができるようになっています。HP-41Cのプログラムの基本構造は以下のようになっています。左の2ケタの数値は行番号で、自動的に割り当てられます。
 01 LBL "{プログラム名}"
 02 {命令}
    …
 nn END
LBL 命令はプログラムまたは行にラベルを付ける命令です。プログラム名としてのラベルには7文字以下のアルファベットまたは数字を使用します。ただし、"A"~"J", "a"~"e"の1文字のラベルは特別な意味を持つので(後日解説します)、プログラム名としては使用しないほうがよいでしょう。LBL 命令ではラベルとして2ケタの数値を指定することもできますが、これはプログラム内での分岐などに使用します(後日解説します)。
END 命令は、プログラムの最終行(実行終了します)を示す命令です。HP-41Cでは必ず END 命令がプログラムの区切りとして使用されます。プログラムの最後以外では RTN 命令を使用します。
途中の命令は、基本的には実際に手計算で行う通りに入力を行えばよいです。

このようにして入力したプログラムは、[XEQ] "{プログラム名}" で実行でき、[ASN]でUSERモードのキーに割り当てて使用することも可能になります。例えば、円の半径から面積を求める "CIRCLE" というプログラムを作るとします。
 01 LBL "CIRCLE"
 02 [SHIFT] [x2]
 03 [SHIFT] [π]
 04 [×]
 05 END
Xレジスタに半径を入力してからこのプログラムを[XEQ] "CIRCLE" として実行すると、[SHIFT] [x2] [SHIFT] [π] [×]と操作したのと同じことになり、Xレジスタに計算結果である円の面積が入ります。「プログラム」と聞くと何やら難しそうに聞こえますが、電卓のプログラムなんて基本的にはこんなものです。

実際にプログラムを入力するにはPRGMモードにします。[PRGM]キーを押して"PRGM"インジケータを点灯させてください。"00 REG 46"などのように表示されると思いますが、これが現在のプログラムメモリの空き状況を示しています。以前基本編で書いたように、プログラムメモリはデータ用メモリと供用になっており、SIZE 命令でその割り当てを変えられます。
 [XEQ] SIZE {nnn} : データ用メモリをnnn本にします。
この操作によりHP-41Cの場合は63-nnnがプログラム用となります(初期値はnnn=017)。メモリレジスタ1本で命令を最大7ステップまで格納できるようですが、命令の種類により必要ステップ数は異なるようです。
空きメモリ表示

では、実際に入力していきましょう。プログラムエディタはラインエディタのような感じになっています。新しいプログラムを入力するには"PRGM"モードで[SHIFT] [GTO] .. と操作します。その後、1行に1命令ずつ入力していき(行番号は入力不要)ますが、入力を間違えたときは[←]で訂正できます。入力が終了したら再度[SHIFT] [GTO] .. と操作しますが、これにより END 命令が挿入され入力が終了します。

入力したプログラムを確認するには、[SHIFT] [GTO] . "{プログラム名}" としてリストを呼び出します。[SST]で次の行、[SHIFT] [BST]で前の行に移動できます。[SHIFT] [GTO] . {nnn(行番号)} とすると指定された行を表示します。行表示中に何か新しい命令を入力すると、その次の行に挿入され、逆に[←]を操作すると表示中の行が削除されます。
01 LBL
02 x2

プログラムを削除するには[XEQ] "CLP" "{プログラム名}" とします。これにより LBL "{プログラム名}" ~ END までの行が一括削除されます。[XEQ] "CLP" "" とすると、現在表示中のプログラムが削除されます。

プログラムの行を部分的にまとめて削除するには、削除開始行を表示したうえで[XEQ] "DEL" {nnn(行数)} とします。これにより、現在表示中の行から指定した行数が一括削除されます。ただし、大きな数を指定しても END 命令のひとつ前の行までしか削除されません。

プログラムの一覧を表示するには[SHIFT] [CATALOG] 1 とします。これによりプログラムの LBL 命令と、END 命令がすべて順に表示されます。

このようにして入力・編集したプログラムを実行するには[PRGM]キーを押してプログラムモードを抜けます("PRGM"インジケータを消します)。先ほどのプログラムなら、例えば 10 [XEQ] "CIRCLE" と入力すると、半径10cmの円の面積が計算され、結果が表示されるはずです。[SHIFT] [ASN] "CIRCLE" [Σ+]としてキー割り当てを行うと、USERモードで 10 [Σ+]と操作するだけで同じ結果を得ることができます。

HP-41Cプログラム言語(?)は、「4レベルRPN」と呼ばれています。スタックを4段使用できるRPNという意味のようですが、この後に発売されたHP-12C, 15C, 16C, 35sなどでも採用されています(35sは代数記法も利用できるようです)ので、これらのHP電卓でも似たやり方でプログラミングができるようです。本日の説明で、公式の記憶や繰り返し計算などの用途には充分使用できると思います。文章では難しく感じるかもしれませんが、やってみると意外と簡単だと思います。明日は、数値やメッセージの入出力などの説明をしたいと思います。

本日使用した命令のまとめ:
[XEQ] "SIZE" {nnn} : データ用メモリをnnn本にする。
[SHIFT] [CATALOG] 1 : プログラムの一覧を表示する。
[SHIFT] [GTO] .. : プログラム入力開始/終了(END 命令).
[SHIFT] [GTO] . "{プログラム名}" : "プログラム名"のリストを呼び出す。
[SHIFT] [GTO] . {nnn} : 現在表示中のプログラムのnnn行を呼び出す。
[SST] : 次の行を表示。
[SHIFT] [BST] : 前の行を表示。
[←] : 行の削除/訂正。
[XEQ] "DEL " {nnn} : 現在表示中のプログラムの現在行からnnn行を削除する。
[XEQ] "CLP" "{プログラム名}" : "プログラム名"のプログラムを消去する。
[XEQ] "CLP" "" : 現在表示中のプログラムを消去する。
[LBL] "{プログラム名}" : プログラム名を指定し、プログラムの最初を示す。
[SHIFT] [ASN] "{プログラム名}" {キー} : プログラムをUSERモードのキーに割り当てる。
関連記事
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

tag : HP 41C プログラム関数電卓

trackback


この記事にトラックバックする(FC2ブログユーザー)

まとめteみた.【HP-41C プログラミング編 (1)】

ここで手持ちカメラ紹介シリーズは一旦お休みして、本日からは少しHPのプログラム関数電卓、HP-41CのプindowsではHP41Eが利用できます。とくに断りのない場合、[]内が各機能キーを、[SHIFT]

コメント

非公開コメント

アクセスカウンタ
カレンダー
11 | 2021/12 | 01
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
最新記事
最新コメント
リンク
カテゴリ
楽天お勧め商品
検索フォーム
Kyoroのつぶやき
FC2掲示板
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示