アフィリエイト広告を利用しています

2018年05月24日

HP-42S: 簡単なプログラムの作成

これまでは, 必要に応じてキーを押して操作することで計算を行ってきた.

しかし, まとまった計算処理をプログラムとしてメモリー上に保存し実行することによって, HP-42S の機能を最大限に引き出すことができる.

ここでは, マニュアルに最初の例として載っている, 半径 $r$ を与えて円の面積を計算す2るプログラムについてまとめておく.

$r = 10$ のとき, キー操作により半径 $10$ の円の面積を計算するには次のようにする.
\begin{align*}
\newcommand{\Ar}[1]{\mathrm{Ar}(#1)}
\newcommand{\ar}{\mathrm{ar}}
\newcommand{\arop}{\Opp{\mathrm{ar}}}
\newcommand{\Cocone}[2]{\mathrm{Cocone}(#1,#2)}
\newcommand{\Colim}{\mathrm{colim}}
\newcommand{\CommaCat}[2]{(#1 \downarrow #2)}
\newcommand{\Cone}[2]{\mathrm{Cone}(#1,#2)}
\newcommand{\Func}[2]{\mathrm{Func}(#1,#2)}
\newcommand{\Hom}{\mathrm{Hom}}
\newcommand{\Id}[1]{\mathrm{id}_{#1}}
\newcommand{\Mb}[1]{\mathbf{#1}}
\newcommand{\Mr}[1]{\mathrm{#1}}
\newcommand{\Ms}[1]{\mathscr{#1}}
\newcommand{\Mt}[1]{\mathtt{#1}}
\newcommand{\Nat}[2]{\mathrm{Nat}(#1,#2)}
\newcommand{\Ob}[1]{\mathrm{Ob}(#1)}
\newcommand{\Opp}[1]{{#1}^{\mathrm{op}}}
\newcommand{\Pos}{\mathbf{Pos}}
\newcommand{\q}{\hspace{1em}}
\newcommand{\qq}{\hspace{0.5em}}
\newcommand{\Rest}[2]{{#1}|{#2}}
\newcommand{\Sub}{\mathrm{Sub}}
\newcommand{\Src}{d^{0,\mathrm{op}}}
\newcommand{\Tgt}{d^{1,\mathrm{op}}}
& 10 \qq \Mr{ENTER} & \quad & ; \Mr{X}\, \text{レジスターに半径} \,10\, \text{を入力する.} \\
& x^2 & & ; \Mr{X}\, \text{レジスターの内容} \,(10)\, \text{を二乗する.} \,\Rightarrow 100 \\
& \pi & & ; \text{円周率} \,\pi\, \text{を} \,\Mr{X}\, \text{レジスターに入力する.} \,100\, \text{は} \,\Mr{Y}\, \text{レジスターに移動する.} \\
& \times & & ; \Mr{X}\, \text{レジスターの内容と} \,\Mr{Y}\, \text{レジスターの内容の積を計算する.} \,\Rightarrow \Mr{314.1593}
\end{align*} こうして $\Mr{X}$ レジスターに半径 $10$ の円の面積である $314.1593$ が格納される.

これに基いて, あらかじめ $\Mr{X}$ レジスターに円の半径が入っていると仮定して, その半径に対する円の面積を計算するプログラムを作ることを考える.
そのために, 次のような操作を行って, プログラム入力モードに入る.
\begin{align*}
& \Mr{GTO} \qq \bullet \qq \bullet & \quad & ; \text{新規のプログラム空間に移る.} \\
& \Mr{PRGM} & & ; \text{プログラム入力モードを選択する.}
\end{align*} ここで $\Mr{GTO} \bullet \bullet$ による「新規のプログラム空間に移る」という処理については, マニュアルの後のほうで説明されるそうなので, さしあたりそういうものだとしておく.
すると, HP-42S の画面は以下のようなプログラム入力モードに移行する.
\begin{align*}
& 00 \blacktriangleright \left\{\, 0\text{-Byte Prgm} \,\right\} \\
& 01 \q .\Mr{END}.
\end{align*}

$01$ 行にはプログラムのラベル (ここでは $\text{"AREA"}$ とする) を宣言する行を書く.
それ以降の行では, 円の面積を計算する処理を順番に入力していく.
\begin{align*}
& \Mr{PGM.FCN} \qq \Mr{LBL} \qq \Mr{AREA} \qq \Mr{ENTER} & \quad & ; \text{ラベル "AREA" の指定.} \\
& \Mr{X} \uparrow 2 & & ; x^2 \,\text{キーを押して入力.} \\
& \Mr{PI} & & ; \pi \,\text{キーを押して入力.} \\
& \times & & ; \times \,\text{キーを押して入力.} \\
& \Mr{EXIT} & & ; \Mr{EXIT} \,\text{キーを押してプログラム入力を終了する.}
\end{align*} この結果, $\text{"AREA"}$ という名前を持った次のプログラムがメモリー上に保存される.

\begin{align*}
& 01 \q \Mr{LBL} \qq \text{"AREA"} \\
& 02 \q \Mr{X} \uparrow 2 \\
& 03 \q \Mr{PI} \\
& 04 \q \times \\
& 05 \q \Mr{END}
\end{align*} $\Mr{X}$ レジスターにプログラムへの引数である半径 $10$ を格納して, プログラム $\text{"AREA"}$ を呼び出すには, HP-42S の機能またはプログラムを明示的に呼び出して実行する $\Mr{XEQ}$ キーを用いて次のように操作する.
\begin{align*}
& 10 \qq \Mr{XEQ} \qq \Mr{AREA} & \quad & ; \text{計算結果}\, \Mr{314.1593} \,\text{が}\, \Mr{X} \,\text{レジスターに格納される.}
\end{align*}

この節は大切な内容が書いてあるので何度も読み直した.
プログラムが思い通りに動いたときは非常に嬉しい.

残念ながら未だにアルゴリズム的な思考は難しい体調だが, 引数の渡し方とか, この小さなプログラムの意味, プログラムを入力するやり方について, 何とか理解はできたと思う.
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/7704459

この記事へのトラックバック
ファン
検索
<< 2024年11月 >>
          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
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(44)
コンピューター(211)
(1441)
借金(8)
勉強(13)
(13)
数学(97)
運動(8)
日常生活(1404)
(204)
健康(38)
読書(21)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村