Casio Basic のバージョンとバグ

2015/06/19
追記: 2015/06/20
追記: 2015/06/21
追記: 2017/10/10


先日、OS Ver 2.00 の fx-9860GII で Casio Basic を走らせる機会がありました。このプログラムは OS 2.04 では正常動作しているものです。すると、以下の記述でエラーが出ました。

E=0⇒Locate 14,2,"(-):Stop"

この fx-9860GII の OS を Ver 2.00 から 2.04 へバージョンアップしてみると、エラーが消えました。

Ver 2.04 から 2.00 に戻せないので、詳細の確認は出来ていませんが、おそらく ' : ' (区切りコード)が、字句解析で失敗して文字列の一部として認識されずに、区切りコードとして認識されたことがエラーの原因ではないかと推察されます(未確認 確認済み)。

sentaro様によれば、fx-9860G の OS Ver 1.04 や CFX-9850GC PLUS の OS Ver 1.04 でもエラーが出るのを確認されたとのことです。つまり、OS Ver 2.00 以前では、このエラーが発生するようで、最新の Ver 2.04 でバグが解消されていると分かります。

Ver 2.01 はどうなのかも今は不明です。
[2015/06/20 追記]
sentaro様から頂いた情報では、fx-9860G の OS を Ver 2.01 にして確認したところ、表示する文字列に : (区切りコード)が含まれる場合エラーが出るとのことです。文字列から ' : ' を外してみるとエラーが出なくなることから、区切り文字の字句解析に失敗しているようです。 
=====


最新OS は機種により異なります。

- fx-CG20 / fx-CG10: Ver 2.00 [更新日:2014/04/09]
- fx-980GII: Ver 2.04       [更新日:2014/04/16]
- fx-9860G: Ver 2.01       [更新日:2011/06/03]

同じ OS バージョン番号なら、Casio Basic も同じかどうか、まだ未確認です。

もし、OS バージョンと Casio Basic バージョンが同じならば、fx-CG20 / 10 の OS 2.00 では上記のエラーが発生することになります。
エラーが発生しなければ、OS バージョンと Casio Basic バージョンは別ということになります。
このあたりは、今は未確認ですが、興味があります。

コメント欄で情報を頂ければ、記事に反映させて頂きたいと思います。

何か必要性がなければ、OS は最新にしておくと、Casio Basic のバグも解消されているようです。

[2015/06/21 追記]
コメント欄にて、sentaro様から情報を頂きました。ありがとうございます。fx-CG10 PRISM は、OS Ver2.00 ですが、今回のエラーは発生しないとのことです。機種毎に OS がバージョンアップされますが、おそらくそのタイミングで バグフィックスされているようです。

なお、今回は Locate コマンドに指定する文字列でエラーが発生しましたが、旧来の入力命令 " " については、エラーにならないとのことです。Basic コマンドとしての Locate を実装した初期段階でこのバグが入り込んだと考えられます。そして、今は解消しています。
=====


2006 年発売の fx-5800P のCasio Basic は一貫して同じなのか、それとも少しずつバージョンアップしているのか、興味のあるところです。fx-5800P のシリアルナンバー/製造ロットが、イースターエッグで確認できると、面白いですね。

fx-5800P のROMに書き込まれているであろうシリアル番号をチェックするためのキーの組み合わせを知りたいところです。今のところまだ見つかっていません。

[2017/10/10 追記]
fx-5800P のROMバージョンを調べる方法が見つかっています。
fx-5800P のイースタエッグ - 自己診断機能

シリアル番号はここでは管理されていないようですが、Casio Basic はROMバージョンに依存すると思われるので、何か問題が見つかった際には、ROMバージョンと共に調べることはできそうです。



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ



  



  

テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic の勧め

.
追記 2017年09月28日

Casio Basic は、最近の カシオ 製プログラム電卓(プログラム関数電卓やグラフ関数電卓)に搭載されているプログラミング言語で、意外に高機能なので実用的なプログラムが作れます。科学技術計算目的以外にも実用的なプログラムを作れます。私自身、技術計算以外のために作った自作プログラムをほぼ毎日使い、技術計算プログラムはたまに使う程度です。

カシオのプログラム電卓で新世代 Casio Basic を勧めたくなるには、幾つかの理由があります。

新世代 Casio Basic でのプログラミングは敷居が低いこと、初心者にも覚えやすいこと、プログラミング経験者はスグに使えること、Casio Basic が意外に構造化プログラミング可能な高機能言語であることなどが、その理由に挙げられます。


目 次
  1. プログラミングは特殊技能なのか?
  2. 新世代 Casio Basic とは?
  3. Casio Basic 搭載機種の選定
  4. Casio Basic の習得は容易
  5. fx-5800P の勧め
  6. Casio Basic を勧める背景
  7. fx-5800P の利点と弱点
  8. Casio Basic の使いこなし


プログラミングは特殊技能なのか?

プログラミングは、理系や文系、男女差、年齢や経験などとは無関係に習得可能なことはよく知られており、IT企業ではごく普通に文系出身のSEやプログラマが活躍しています。特に Casio Basic は覚えることが少なく、簡単なので、誰でも電卓プログラミングが出来ると思います。

参考:
<トップへ戻る>

新世代 Casio Basic とは?

実際にCasio Basic を使いながら、取扱説明書には記載のない機能や仕様が分かってくると、以下に挙げる4機種に搭載されている Casio Basic が意外によくできていることが明かになってきました。

1) fx-CG50    (カラーグラフ関数電卓)
2) fx-CG20      (カラーグラフ関数電卓)
3) fx-FD10 pro   (プログラム関数電卓 - 土木測量向け)

4) fx-9860GII   (グラフ関数電卓)
5) fx-9860G   (OS 2.0 以降、グラフ関数電卓) 
6) fx-5800P      (プログラム関数電卓)


これらに搭載されている言語は、私は 新世代 Casio Basic と呼び、それ以前の言語と区別しています。

新世代 Casio Basic は、簡単に言えば、Getkey コマンドと 柔軟な Locate コマンドがあり、条件判定は基本的に 0 で偽、0 以外で真で、その上で構造化プログラミングが可能です。
  • Getkey[AC] キー以外の全てのキーに異なるキーコードが割り当てられ、押したキーをリアルタイムで判定できるコマンド。
  • Locate: パラメータに、即値以外に変数、式、コマンドを指定して位置を柔軟に指定して出力するコマンド。
  • 条件判定を 0 で偽、0 以外で真とできること
  • 構造化プログラミングGoto に頼らずにプログラムの制御を記述し、可読性の高いブロック構造でプログラミングする方法。
プログラミング経験者(特にPCでのプログラミング経験者)なら、新世代 Casio Basic は違和感なく使えます。

旧来の命令
新世代 Casio Basic には、以前のプログラム電卓に搭載されていた旧来の命令も搭載されています。カシオによれは従来のユーザーの利便性を考慮して旧来の命令を残しているとのことです。最近、この旧来の命令を使いこなして、どの程度のプログラムを作れるのか色々と試して、それを反映させたエントリーを Casio Basic入門38から連載を始めています。使いこなしを検討してみると、確かに一定レベルの実用プログラムを比較的楽に作れることが分かります。

旧来の命令は表記はシンプルでも、多彩な機能を持っています。プログラミング経験の少ない人でも簡単に使えて便利です。しかし、旧来の命令が機能が多彩であることが、逆にプログラミングの自由度を減らしているとも言えます。この旧来の命令では実現できないプログラムを作るには、Basicコマンドを積極的に使えばよいのです。旧来の多彩な命令と Basic コマンドを併せて使いこなすことで、自由度が高く、実用的なプログラミングが可能になります。

<トップへ戻る>

Casio Basic 搭載機種の選定

上記製品の中でも、特に fx-5800P は最も安価であり、さらにハードウェアとソフトウェアのバランスが良いため、実用に最も適していると思うので、私は愛用しています。fx-9860GII も Casio Basic プログラミングを楽しむために使っていますが、日常には実用性の高い fx-5800P を多用しています。fx-CG20 も入手してみると fx-9860GII の Casio Basicの移植性が高いことは確認済みです (グラフィックスの一部コマンドやカラー対応の部分に手を入れる必要があります)。fx-CG50 の Casio Basicプログラミングは fx-CG20 と完全互換です。

fx-CG50、fx-CG20、fx-9860GII、fx-5800P について簡単にまとめています;

- fx-CG50: fx-CG50 の概要

- fx-CG20: fx-CG20 の概要

- fx-9860GII: fx-9860GII USB POWER GRAPHIC 2

- fx-5800P: 本記事は主に fx-5800Pの勧め になっています

- Casio Basic - 機種間の互換性

- Casio プログラム電卓の価格動向


fx-CG50、fx-CG20 と fx-9860GII は、グラフィックス機能があり、高機能、高価格の製品(実売9千円台~2.5万円程度)で、これらの中で比較的安価な fx-9860GII は、処理速度が速い点が魅力です。さらに、fx-9860GII は Casio SDK (Casio 純正の開発環境)を使えば、パソコン上で C言語を使ってプログラムを作り、それを電卓に転送して Add-in プログラムとして利用できます。C言語で作った Add-in プログラムは、Casio Basicに比べてかなり高速動作し、Casio Basic では無理な処理も可能です。

fx-5800P
グラフィックス機能の無い fx-5800Pは、処理速度が相対的に低いものの、価格が圧倒的に安く(実売6~8千円程度)、関数電卓としてもプログラム電卓としてもバランスが取れた使いやすい機種です。

fx-5800P には プログラムリストを 通常の電卓モード (Comp モード) で呼び出して使えますが、fx-9860GII ではプログラムリストを表示するには一旦プログラムモードに入る必要があります。Casio Basicで作ったプログラムを日常的に使う場合は fx-5800P の方が利便性が高いことは、使ってみて分かります。fx-5800P と fx-9860GII を実際に使い比べてみると、日常使いには、バランスの良い fx-5800P が優れていると思います。

fx-9860GII
但し、プログラムの高速性やグラフィックス処理を重要と考えるなら、fx-9860GII も選択肢に入れるべきです。もし使いたい Add-in プログラムがあれば fx-9860GII が正しい選択肢となります。
例えば、当ブログで紹介している C.Basic (Casio Basic の上位互換、開発中) は fx-9860GII のアドインとして提供しているので、これが使いたいなら fx-9860GII がお勧めです。

fx-FD10 Pro
fx-FD10 Pro は、屋外使用を想定した堅牢な作りが特徴です。私自身が実機を持っていないので、取扱説明書から得られる内容から判断すると、上記の fx-5800P の使いやすさを備えていますが、実売1万6千円以上するが、Add-in プログラムが使えず Casio Basic のみが使えるので、fx-5800P と fx-9860GII の間にある機種だと感じます。従って、Casio Basic を使うのであれば、敢えて fx-FD10 Pro を選ぶよりも fx-5800P にするか、Casio Basic の上位互換の C.Basic が使える fx-9860GII を選択すべきだと思います。

fx-CG20 / CG10
fx-CG20 / CG10 は、カラー液晶が特徴で、内蔵の関数計算も高速化されています。但し、主に液晶への表示やメモリアクセス処理速度が fx-9860GII よりも遅く、Casio Basic プログラムの処理速度は fx-9860GII よりも遅くなります。さらに、オーバークロック・ツールを用いると fx-9860GII が fx-CG20 / CG10 の5倍以上高速になります。高精細カラー液晶の表示が必要だと考えるなら fx-CG20 / CG10 が良いのですが、それ以外の私なりの評価は、総合的に fx-9860GII の方が優れていると思います。

fx-CG50
fx-CG50 は、デザインや寸法が異なる以外は fx-CG20 / CG10 とほぼ同じ機能を持っていて、処理速度が向上しています。
 
 
<トップへ戻る>

Casio Basic の習得は容易

過去にPCでプログラミング経験があれば、Casio Basic はスグに使えると思います。私自身も過去にPCでのプログラミング経験があり、fx-5800P を買ってすぐにプログラミングができました。但し細かなところは取扱説明書に書かれていないので、自分で色々と調べました。その結果が当ブログです。

プログラミング経験があれは、当ブログの「Casio Basic コマンドリファレンス」、「Casio Basic入門」、「逆引き Casio Basic」を参考にすれば、すぐに使いこなせると思います。[2017/01/03 追記修正]

これからプログラミングをやってみようと思われる方の場合、新世代 Casio Basic を覚えることはPCで使う Basic 習得に有効だと思います。上で紹介した機種の中で特に fx-5800P は、ハードウェア的には最も非力ですが、最も安価で入手しやすく、さらに使いやすいので、学習用に向いています。僭越ながら、当ブログの Casio Basic 入門をほぼ理解できれば、Visual Basic の習得の敷居はかなり下がると思います。

Casio Basic のコマンドは、殆どが他のBasic と同じなので、覚えたことが将来無駄になりません。さらに必要最小限度の機能まで絞り込まれているので、覚えることが少いことが初心者向きの理由です。この点をもう少し説明してみます。

一般にプログラムを作る際、実現したい機能には無数の方法があります。無数の方法から適切な方法を選び出すことが、プログラミングの主な作業になるのですが、それは初級者には逆に習得の妨げとなります。Casio Basic は機能が少ないので、選択肢が限られます。従って、プログラミングの方法の選択で悩むことなく、必要なことを覚えやすいと言えます。色々なプログラムを作れば、効果的な反復学習になるわけです。

またコマンドが絞り込まれているので、アルゴリズムの工夫や計算式の応用で対応することになり、これも学習に向いていると考える理由の1つです。

機能が限定されていても、実用的なプログラムやゲームが作れることは、当ブログで紹介しています。実際にこれらのプログラムを作りながら、新世代 Casio Basic の良さに気付いたのです。実際に使ってみないと分からないものです。

<トップへ戻る>

fx-5800P の勧め

電卓でプログラミングを始めてみようと思う方には、私は fx-5800P を勧めます。

1.関数電卓としての fx-5800P
fx-5800Pは、関数電卓として見た場合、十分な機能を実現しています。プログラム機能の無い fx-995ES とほぼ同等の機能と操作性が有り、fx-5800P は高機能関数電卓と位置づけられます。カシオの関数電卓は電源を切ると、計算履歴もメモリの内容も全て消去されます。一方 fx-5800P は電源を切っても全てメモリに保存されたままです。これが関数電卓として fx-5800P を推奨する最大の理由です。

2.携帯型コンピュータとしての fx-5800P
携帯型コンピュータとして見た場合、手軽に実用プログラムを作れるので、パソコンでは真似のできない圧倒的な携帯性が最大の利点です。搭載されている Casio Basic は、ちょっとしたアクションゲームも作れます。実際に、fx-5800P のハードウェアの能力と Casio Basic の機能を確かめる目的で、「もぐら叩き」を作ってみました。結構遊べることが分ったので、冒頭で 『意外に良くできている』 と書きました。

3.Casio Basic
fx-5800Pに搭載されているCasio Basicは、グラフ関数電卓 fx-9860GII や fx-CG20 さらに 土木測量向けプログラム電卓 fx-FD10 pro に搭載されている Casio Basic と比べて、グラフィック機能や文字列処理、外部との通信機能を使うコマンドが省略されていますが、それ以外の機能は同じです。そして、fx-5800Pで作った Caso Basic プログラムは、上位機種への移植性が高いことは確認済みです。

<トップへ戻る>

Casio Basic を勧める背景

新世代 Casio Basic 搭載のプログラム電卓を勧めるには、いくつかの背景があります。

1. パソコンと同様な機能を求めない
パソコンでできることはパソコンでやれば良い。それをわざわざ電卓でプログラムを作る必要はありません。


2. サッと取り出し、パッと使える
必要な場所で、必要なタイミングで、上着やかばんのポケットからサッと出して、スグ使うのはパソコンでは絶対に出来ません。プログラムを作るだけで自分専用のオリジナル関数電卓が手に入ります。今や電卓は誰でも1台は持っている文房具です。プログラムを書くことで自分専用の機能にカスタマイズした文房具が手に入ります。


3. プログラムを簡単に作れる
ゲーム繰返し技術計算金融計算その他お金の計算単位や年月の換算時差計算 など作っておくと便利なプログラムが多くあります。自分に必要なプログラムを予め作っておくと、プログラム電卓のメリットは絶大です。

関数電卓の各種関数キーが[SHIFT]キーなどと併用しないと使えない(裏機能などと言われます)のは、2ステップキータッチが必要で効率が悪いとの評価基準があります(関数電卓マニアの部屋)。学生への関数電卓選びのガイダンスとしては、教育的配慮を斟酌すれば、私も100%同意するところです。しかし、この主張を金科玉条の如く受け売りする気になれないのも正直なところです。

実際に何度もキーを叩いて繰り返し計算を行う際には、プログラムを作ったり、数式記憶機能を使えば良いわけです。

道具は相応しい目的で正しく使えば良い。幸なことにfxー5800Pは、今や新品でも6000円程度で買えるので、2000円から3000円で関数電卓を買う変わりに、プログラム関数電卓を買うメリットを十分に感じる人は非常に多く居るはずです。ここでは、簡単なプログラミング・スキルがあれば良く、幸いなことにBasicを搭載しています。


4. 上位機へのプログラム互換性
高価で高機能なグラフ関数電卓や土木測量専業電卓への移植性が高いことは重要です。

fx-5800Pのハードウェア仕様に依存した部分を除けば、互換性、移植性が高いので、1からプログラムを作り直す手間はありません。上位機種を入手して、そこへfx-5800P のプログラムを容易に移植できるのは、Casio Basicの大きな利点です。

なお、カシオのグラフ電卓には、C、Lua、Python といった言語の開発環境(公式や非公式を含む)もあり、Casio Basic のプログラムを移植せずに別の言語でプログラミングする選択肢もあります。

fx-5800P の Casio Basicプログラムの fx-9860GII や fx-CG20 への移植をいくつか行いましたが、機種のハードウェアに依存するコマンド (GetkeyLocate)、旧来の命令 (出力命令 ◢ 、" "、入力命令 ? など) の動作の違いに適切に対処し、配列変数を行列やリストに置き換えれば、他の Basic コマンド類は互換性があります。


5. グラフ機能の優先度は低い
パソコンでできることはパソコンを利用する...と考えれば、プログラム電卓にグラフ機能は必ずしも必要ではないと思います。グラフィックスを利用したプログラムを電卓で使いたい場合は fx-9860GII のようなグラフ関数電卓を利用でき、Windows プログラミングよりは Casio Basic の方がプログラミングは遙かに楽です。

ゲームではなく、実用面からグラフ描画機能が欲しいと言う場合もあるでしょう。例えば、実験をしながらグラフを書くのは大変重要なことです。しかしそのために、プログラム電卓でわざわざプログラムを書く必要はあるでしょうか?
パソコンでエクセルを使えば、簡単にグラフを書けます。報告書、レポート、論文を書くのに最近ではエクセルのグラフが普通に使われているわけで、それなら最初からエクセルを使えば良いと思います。

私は、実用を強く意識して fx-5800P を使っていますが、グラフ機能がことさら必要だと思うことは殆どありません。本当に必要なら fx-9860GII などのグラフ関数電卓で、ブラフ表示をプログラミング可能です。しかし、正直に言えば グラフ機能の無い fx-5800P で十分に実用的なプログラムを作って、利用できます。

敢えて言えば、適材適所でしょう。そして Casio Basic 搭載機のなかでも fx-5800P は、プログラム利用の利便性が高く、小型軽量で、グラフ関数電卓よりもプログラム入力が格段に楽で、電池の持ちも長く、ハードウェアとソフトウェアのバランスが良いことは間違いありません。処理速度の遅い fx-5800P でも工夫次第で実用プログラムを作成できるので、プログラミング自体も楽しくなってきます。当ブログでは、その工夫について多く取り上げています。


6. 最も簡単にプログラミングできる携帯機器
Casio Basicを使うのなら、電卓本体のみでプログラミングできるので、いつでもどこでもプログラムを作れます。そして自分だけの付加機能を、恐らく最も簡単に追加できる携帯機器がプログラム電卓です。オリジナルプログラムを作りそれを使う楽しみと利便性があります。

<トップへ戻る>

fx-5800P の利点と弱点

fx-5800P は、新世代Casio Basic を搭載している点に最大の価値があり、同時に関数電卓としても使いやすい点が評価できます。関数電卓としてみた場合は、グラフ関数電卓 fx-9860GII よりも fx-5800P の方が必要な機能へのアクセスが速いので、使いやすいでしょう。しかしプログラミング時の使いやすさの点では fx-5800P が最も優れています。

fx-5800P のもう1つの利点は価格で、他の機種に比べて圧倒的に安価です。

要するに fx-5800P は、非常にバランスの良い製品と言えます。

fx-5800P に対する唯一にして最大の弱点は、プログラムコードのバックアップややりとりをパソコンとの間で行えるPCリンク機能が用意されていない点にあります。少なくとも fx-5800P 同志のプログラムデータのやりとりはできるので、外付けの3Pin - USB アダプタと対応ソフトウェアを発売して頂ければ実現するはずです。カシオ製でなく、サードパーティーでも良いのです。

PCとリンクしてプログラムを転送する機能の実現は、是非ともお願いしたい。

私の場合は仕事などで実用プログラムを作って、毎日のように使っていますので、電子データのバックアップ機能がどうしても欲しくなり、2台目の fx-5800p と専用通信ケーブル (SB-62)を購入しバックアップしています。なお、グラフ関数電卓を購入すれは、通信ケーブル(SB-62)は付属しているので、fx-5800P のために新たに購入する必要はありません。

[2017/08/18 追記] 最近はグラフ関数電卓に 3Pin ケーブルが付属していません。別途購入する必要があります。

[2017/09/28 追記] 2017年10月から国内販売される fx-CG50 には 3Pinケーブルが付属します。

<トップへ戻る>

Casio Basic の使いこなし

fx-5800P 搭載の Casio Basic は、使いこなしてみて初めてその価値が分かると思います。PCで一定以上のプログラミング経験があれば、この新世代 Casio Basicが構造化BASIC であることがすぐに分かると思います。カシオ自身がこの Casio Basic に関する情報発信を殆ど行っていないので、当ブログでは Casio Basic の使いこなしについて、異なる3つの切り口で紹介しています。

CasioBasic入門 / 目次
じっくりと読みながらプログラムを入力して Casio Basicの使いこなしやプログラムの作り方を修得する。題材のプログラムは、ある程度の完成度があり、実用的に使えるレベルになっている(と思う...)。

CasioBasic コマンドリファレンス 目次
Casio Basic のコマンドや命令を、出来るだけ詳しく調べた結果に基づいて解説している(抜けが無いことを祈るばかり...)。

逆引き Casio Basic 目次
Casio Basic で何か実現したいこと、やりたいことに対して、ピンポイントで実現方法、サンプルプログラム、考え方を紹介している(思いついたことから順次拡充中...)。

<トップへ戻る>



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ



  

keywords: fx-5800PCasioBasicプログラム関数電卓

リンク集 | ブログ内マップ

テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門G05

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

2015/07/25 追記
2017/09/25 追記



 5. Casio Basic でグラフィックス


前回: Casio Basic入門G04


Chapter G05
Plot と ViewWindow

前回は、Plot コマンドについて、色々と調べましたが、論理座標系での動作しか確認していません。

今回は、Plot コマンドのカーソル表示座標は、ViewWindow座標系を反映するのか?という疑問について調べて見ました。

なお、fx-9860GII の取扱説明書(fx-9860GII_Soft_J_2.04.pdf)の 8-24 ページには、

Plot <X座標値>,<Y座標値>

と記載があるだけなので、前回同様、実際にプログラムを作りながら細かい点を確認してゆきます。



最初に、以下のプログラム VW.PLOT1 を作ります。

ファイル名: VW.PLOT1
ClrGraph
CoordOn
GridOff
AxesOn
LabelOff

Plot 6,3◢
Text 1,1,"x=  " (スペース4個)
Text 1,35,"y=   " (スペース5個)
Text 1,10,X
Text 1,45,Y◢

ViewWindow -10,116,10,-10,52,10
Plot 6,3◢
Text 1,1,"x=  " (スペース4個)
Text 1,35,"y=   " (スペース5個)
Text 1,10,X
Text 1,45,Y


⇒ ダウンロード: VW.PLOT1

プログラム冒頭で、ClrGraph を実行しているので、ここで自動的にデフォルトの論理座標系になっています(ClrGraph の仕様)。
そして、Plot 6,3◢ で、座標 (6, 3) にカーソルを表示します。ここで [EXE] を押せば、この位置に点が描画されるはずです。
そして、描画された点の位置を示す X座標値とY座標値は、それぞれ変数 XY に自動的に代入されます。
従って、続く Text コマンドで各座標値が表示され、そこで出力命令 によりプログラムは一旦停止します。

ここまでは、前回見てきた内容です。続いて今回のテーマである座標系変更に伴う Plot コマンドの動作を確認するためのコードを書きます。

上で赤文字で示したような ViewWindow座標系を設定し、続いて Plot 6,3◢ を実行します。
ここで、[EXE] を押せば、カーソル位置に点が描画されます。その後、同様に Text コマンドで、描画された点の座標値 XY を表示します。

以上が、プログラムの内容です。実際に起動してみます。

VW.PLOT1-1 

CoordOn によりカーソルの座標値が最下行に表示されていて、確かに、カーソルが座標 (6, 3) に表示されていることが確認できます。

ここで、[EXE] を押すと、

VW/PLOT1-2 

座標 (6, 3) に点の描画が確認できます。さらに、点が描画されると、十字カーソルが消えて、それに連動して座標値の表示も消えます。

CoordOn はカーソルの位置を示すのであって、描画された点の座標値を示さないことが、併せて確認できます。十字カーソルとカーソル位置の座標値表示は、Plot コマンドを一旦停止した時だけ現れるということです。

さて、この状態では Text 1,45,Y◢ のところでプログラムが一旦停止しています。そこで [EXE] を押して一旦停止を解除します。

すると、ViewWindow の設定が実行されて、座標系が変更され、その上で、Plot 6,3◢ が実行された結果が表示されます。

VW,PLOT1-3 

十字カーソルが再び表示され、最下行にカーソル位置の座標値も表示され、カーソル位置が (6, 3) になっていますね。つまり、Plot コマンドで表示されるカーソル位置は、設定したViewWindow座標系に従うことが、確認できました。

ここで、もう一つ Plot コマンドの特徴が分かります。ViewWindow を実行すると、それまで描画されていたグラフィックスが消去されるはずですが、Plot で描画した点は、消去されていないのです。右上の点が消えずに残っています

今この状態では、Plot 6,3◢ によりプログラムが一旦停止しているので、[EXE] を押して、一旦停止を解除すると、

WV.PLOT1-4 

カーソル位置に点が描画され、同時にカーソルが消えて最下行にある CordOn による座標値の表示も消えました。そして、Text コマンドにより、今描画された点の座標値が表示されました。Plot コマンドによる2つの点が表示されています。

[AC] を2回押してプログラムを終了します。

==========

では、もう一度プログラム VW.PLOT1 を起動してみます。今度は、カーソルを移動させてから [EXE] を押してみます。

プログラムを起動すると、

VW.PLOT1-1 

カーソルを移動させると、最下行にある CordOn により表示される座標値が、リアルタイムに変化します。

VW.PLOT1-5 

そして、[EXE] を押すと、

VW.PLOT1-6 

カーソルと最下行の座標値表示が消え、Text コマンドによる点の座標値が表示されます。

[EXE] で一旦停止を解除すると、

W.PLOT1-7 

新しい座標系が設定され、再びカーソルと最下行の座標値表示が復活し、座標 (6, 3) にカーソルがあることが分かります。そして、右上の Plot により描画された点は、やはり残っています。

カーソルを適当に移動し、

VW.PLOT1-8 

ここで、[EXE] を押すと、カーソルと最下行の座標値表示が消え、Text コマンドにより点の座標が表示されました。そして、2つの点も表示されます。

Plot コマンドで描画した点は、ViewWindow では消去されないことが再確認できました。



Plot コマンドで描画された点と ViewWindow によるグラフィックス描画の消去について、もう少し詳しく調べてみます。具体的には、ViewWindow 設定を次々と変更しながら、その都度 Plot コマンドでカーソルを表示し [EXE] で点を描画させてみます。

そこで、以下のプログラム VW.PLOT2 を入力してください。

ファイル名: VW.PLOT2
ClrGraph
CoordOn
GridOff
AxesOn
LabelOff

For 5→I To 20
ViewWindow -2I,40-2I,2,-I,20-I,2
Plot -2,-2◢
Next


⇒ ダウンロード: VW.PLOT2

このように、ViewWindow は、変数を用いて設定することもできます。
このプログラムでは、For 文を用いて、座標系の原点を左下から右上まで徐々に変更しながら、常に座標 (-2, -2)Plot でカーソル表示+[EXE] で、点描画を繰り返します。

Casio Basic コマンドリファレンス - For 文

プログラムを起動し、[EXE] キーを何回か押してゆくと、画面表示が変化してゆきます。



動画を見れば分かるように、この For 文では、ViewWindow 座標系の横幅を 41、縦幅を 21 に固定、原点の位置だけを変更して、それぞれで Plot -2,-2◢ を実行していることになります。


Plot で描画された点は、直前の描画は残りますが、それ以前の描画は消去されていることが分かりますね。おそらく、Plot と連動して使う Line コマンドを活かして互換性を保つために、このような仕様になっていると想像しています。但し、ViewWindow を実行すると Line で描画した直線は消去されます。

試しに、上のプログラムに Line コマンドを追加して実行してみると分かります。

ClrGraph
CoordOn
GridOff
AxesOn
LabelOff

For 5→I To 20
ViewWindow -2I,40-2I,2,-I,20-I,2
Plot -2,-2◢
Line
Next


一瞬直線が表示されてスグに消去されますが、最後の直線は残ります。



さて、VW.PLOT2 を実行してみて、1つ気になることがあります。

Plot -2,-2◢ では、整数値を指定しているのに、CoordOn で最下行に表示される座標値が小数値になっています。



ViewWindow座標系で描画される点が、物理的なピクセル位置に完全に対応せず、四捨五入計算で最も近いピクセルを On にし、そのピクセル位置から逆算して座標値を求めているのが原因だと考えられます。

グラフを描画するのではなくて、単にグラフィックス表示を行うプログラムでは、このあたりの計算による誤差が問題になることが実際に発生します。これについては、次回以降で具体的に検証する予定です。

物理的なピクセルは、Casio Basic でプログラムを作る限りは、横 127 ピクセル、縦 63 ピクセルの表示エリアを使う(Casio Basic入門G01参照)ので、ViewWindow 座標系の指定では、この数に合うように設定すれば、座標の設定値と読取値は、整数のまま一致するはずです。

そこで、今回は妙な小数にならないように、物理的なピクセル数に合わせた ViewWindow 設定を試してみます。

プログラム VW.PLOT2 を以下のような ViewWindow 設定に書き換えてみます。

ファイル名: VW.PLOT3
ClrGraph
CoordOn
GridOff
AxesOn
LabelOff

For 20→I To 62 Step 3
ViewWindow -2I,126-2I,10,-I,62-I,10
Plot -10,-10◢
Next


⇒ ダウンロード: VW.PLOT3

これを実行してみると、



この動画からスグに分かると思いますが、ViewWindow 座標系の横幅を 127、縦幅を 63 に固定して、原点だけを移動させていることになります。今度は座標値の表示が設定値と全く同じ (-10, -10) と、正しく整数になっていますね。


以上で、PlotViewWindow の関係が詳しく分かりました。



ところで、プログラム VW.PLOT2 や VW.PLOT3 のように、ViewWindow 設定を切り替えるようなプログラムでは、ViewWindow 設定の保存と読出機能が便利になることがあります。

ViewWindow 設定は、StoV-Win コマンドで 6通り保存することができ、RclV-Win コマンドでそれを呼びだすことができます。

StoV-Win コマンド

・書式StoV-Win <番号>
  • <番号> は、1 から 6 の整数、合計 6 通りを保存できる。
  • 現在の ViewWindow 設定を保存する。
  • <番号> には、数値と変数が使える。
  • <番号> が 7 以上の時は、Argument ERROR (引数エラー) となる。
  • メインメモリの空容量が足りない時は、実行時にエラーとなり、保存できる数が 6 未満のこともある。設定1つで 152 バイト使います。
・入力方法[SHIFT] [F3] (V-Window) [F2] (Sto)


RclV-Win コマンド

・書式RclV-Win <番号>
  • <番号> は、1 から 6 の整数。StoV-Win で設定した番号を指定する。
  • 保存された ViewWindow 設定を呼び出して有効にする。
  • <番号> には、数値と変数が使える。
  • <番号> が 7 以上の時は、Argument ERROR (引数エラー) となる。
入力方法[SHIFT] [F3] (V-Window) [F3] (Rcl)


プログラム VW.PLOT3StoV-Win / RclV-Win を使って書き換えてみます。但し保存できる数が最大 7 なので、For 文のステップ数を増やして、保存する数を 7 以下にする必要があります。

ファイル名: VW.PLOT4
ClrGraph
CoordOn
GridOff
AxesOn
LabelOff

1→V
For 27→I To 62 Step 7
ViewWindow -2I,126-2I,10,-I,62-I,10
StoV-Win V
Isz V
Next

V-1→W
For 1→V To W
RclV-Win V
Test 1,1,V
Plot -2,-2◢
Next


⇒ ダウンロード: VW.PLOT4

ClirGraph
に続くグラフ設定を行い、続いて 複数の ViewWindow 設定を StoV-Win V (変数 V は 1 から始まり、1つづつ増やす) で次々と保存しています。結果的に 6 通り保存しています。
引き続き、保存した ViewWindow 設定を RclV-Win V (変数 V は 1 から始まり、1つづつ増やす) で呼び出し、それぞれで Plot -2,-2◢ を実行します。[EXE] を何回か押してゆきます。



ここで、StoV-WinRclV-Win のパラメータに変数 XY を使うと、プログラムは誤動作します。試しに、上のプログラムで、V の代わりに X を、W の代わりに Y に変更して、実行してみてください。エラーになります。

誤動作の理由は分かりますか?

Plot コマンドでカーソル表示の際に、[EXE] を押すと、カーソルの座標値が自動的に 変数 XY に代入される仕様です。つまり、変数 Y には予期せぬ値が入ってしまうのが誤動作原因です。Plot の仕様を理解していないと、バグに悩むことになりますね。

なお、直接 ViewWindow で座標系を設定せず、RclV-Win で設定しても、Plot -2,-2◢ で描画された最後の点は、消去されません。RclV-Win の動作は、ViewWindow による直接設定と同じだと分かります。



ViewWindow の保存と呼び出し機能を使ったので、次にグラフィックス画面全体の保存と呼び出し機能を試してみます。グラフィックス画面全体を保存するには StoPict コマンド、呼び出して描画するのは RclPict コマンドを使います。

StoPict コマンド

・書式StoPict <番号>
  • <番号> は 1 から 20 の整数、合計 20 通保存できる。
  • 現在のグラフィックス画面全体を保存する。
  • <番号> には、数値と変数が使える。
  • <番号> が 21 以上の時、Argument ERROR (引数エラー) となる。
  • メインメモリの空容量が足りない場合は、実行時にエラーになり、保存できる数が 20 未満のこともある。設定1つに 2068 バイト使います。
・入力方法[OPTN] [F6] (▷) [F6] (▷) [F2] (PICT) [F1] (Sto)


RclPict コマンド

・書式RclPict <番号>
  • <番号> は 1 から 20 の整数、StoPict で設定した番号を指定する。
  • <番号> には、数値と変数が使える。
  • 保存されたグラフィックス画面を呼びだして表示する。
  • <番号> が 21 以上の場合は、Argument ERROR (引数エラー) になる。
・入力方法: [OPTN] [F6] (▷) [F6] (▷) [F2] (PICT) [F2] (Rcl)


プログラム VW.PLOT3 の描画を一旦保存しておき、あとでそれを呼び出して表示するプログラムを作ってみます。

ファイル名: VW.PLOT5
ClrGraph
CoordOn
GridOff
AxesOn
LabelOff

1→P
For 20→I To 62 Step 3
ViewWindow -2I,126-2I,10,-I,62-I,10
Plot -10,-10
StoPict P
Isz P
Next

AxesOff
P-1→Q
For 1→P To Q
ClrGraph
F-Line -6.3,-3.1,6.3,3.1
RclPict P◢
Next


⇒ ダウンロード: VW.PLOT5

VW.PLOT3
に追加した部分を赤文字で示しています。なお、Plot -10,-10 の後の は外しています。

ClrGraph でグラフィックス画面を消去し、種々のグラフ設定を行った後、SotPict <番号><番号> に使う変数 P を 1 で初期化し、Plot -10,10 により描画した点、表示された座標軸ごとグラフィックス画面として、StoPict P で保存します。 P は、1, 2, 3, ... です。

その後、AxesOff で座標軸表示を Off にした上で、保存したグラフィックス画面を、順次 RclPict P で呼出して表示しています。座標軸表示を Off にしたのは、座標軸も保存され、呼出されるのかどうかを確かめる目的です。また、RclPict の前に ClrGraph と F-Line を実行しています。ClirGraph により論理座標系が設定され、同時にメモリ間隔が 1 に設定される影響も確かめられます。さらに、F-Line で左下から右飢えへ直線を描画していますが、この直線が RclPict でどのように影響されるのかも確かめます。



結果として、StoPictRclPict は、グラフィックス画面に表示されている内容を、丸ごと保存し、呼出することが分かりました。そして、RclPict は、グラフィックス画面に上書きするのではなくて、既にあるグラフィックス描画に重ね合わせて表示することも分かりました。

RclPict
コマンドは、グラフィックス画面全体のデータを一度にLCD転送するので描画が速いのが最大の利点です。20個の画面データを扱えるので、プログラミングでの利用価値はあると思います。詳しくは次回以降取り上げようと思います。

[2015/07/25 追記]
StoPict / RclPict は、fx-CG20 / 10 でも今回のCasio Basic プログラムは100% で動作するのこと。但し、fx-9860GII に比べて描画がかなり遅いという情報を頂きました。保存先のメモリが、fx-9860GII は RAMであるのに対して、fx-CG20 / 10 では、フラッシュメモリ(保存メモリ)なのが原因だそうです。




今回のまとめ
  • Plot は、ViewWindow 座標系の設定に従って動作する。
  • CoordOn 設定時に Plot でカーソルが表示されている時、[EXE] で点描画を行うと、カーソルと 座標値の表示が消える。
  • CoordOn により表示される座標値は、カーソル位置を示すもの。
  • Viewwindow で座標系を設定する際、グラフィックス描画は消去されるが、例外的に Plot で直前に描画した点 のみが消去されずに残る。
  • CorrdOn で表示される座標値は、Plot X,Y で指定される座標(X, Y) を示すのではなく、実際に表示されるピクセル位置を、座標系から換算された位置を示すため、計算された結果となるから、Plot X,Y で整数値を指定しても表示される座標値が小数になることがある。
  • 座標系を StoV-Win で保存し、RclV-Win で呼び出す場合は、ViewWinidow 設定と全く同じ動作をする。
  • StoV-Win / RclV-Win で指定する番号は、整数を格納した変数でも良い。
  • StoPict / RclPict で保存 / 呼出しされるグラフィックス画像は、座標設定を含めて画面に表示される全てを扱う。
  • RclPict でグラフィックス画像を呼び出す場合、既にあるグラフィックス描画に上書き表示せずに、元のグラフィックスを消さずに重ねて表示する。
  • RclPict は画面全体のデータを LCD転送するので、描画が速い。但し fx-CG20 / 10 では保存メモリ(フラッシュメモリ)を使うため非常に遅くなる。

今回使ったグラフィックス コマンド
  • Plot
  • ViewWindow
  • Text
  • StoV-Win / RclV-Win
  • StoPPict / RclPict
  • F-Line




つづく...

Casio Basic入門 G06 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ








keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ


テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門G03

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

修正 2015/07/30
修正 2017/09/25



 5. Casio Basic でグラフィックス


前回: Casio Basic入門G02


Chapter G03
ClrGraphViewWindow

今回は、グラフィックス画面を消去する ClrGraph コマンドと 座標系を設定する ViewWindow について調べて見ます。



ClrGraph の詳細動作

最初に、ClrGraph の機能を確認するため、次の2つのプログラムで実験します。

ファイル名:CLRGRPH1
ViewWindow -10,30,2,-5,15,2
CoordOff
GridOff
AxesOn
LabelOff
PlotOn 2,2



ファイル名:CLRGRPH2
ClrGraph
PlotOn 2,2



CLRGRPH1 は、ViewWindow 座標系を指定し、グラフ設定は AxesOn で座標軸表示を On にする以外は全て Off にし、最後に 座標 (2, 2) に点を描画します。

ClrGraph-5 

座標系とグラフ設定は、指定された通りで、座標 (2, 2) に点が描画されています。

この座標系設定とグラフ設定は保存されていて、グラフィックス画面もこの状態で保存されているはずです。そこで、続いて CLRGRPH2 を実行すると、ClrGraph が実行され、再び座標 (2, 2) に点を描画するはずです。実行画面は以下のようになりました。

ClrGraph-6 

ClrGraph コマンドは、グラフィックス画面を消去するだけでなく、座標系をデフォルトの論理座標系に変更することが確認できました。

さらによく見てみると、目盛間隔が指定通りになっていません。
1つめのプログラム CLRGRPH1 で目盛間隔を 2 に指定しているのに、CLRGRPH2 を実行した結果、目盛間隔(スケール)が 1 に変更されています。つまり、ClrGraph は目盛間隔(スケール)も変更することが分かりました。


ここで、消去や設定について、まとめます。

コマンドの機能 - グラフィックス画面の消去と座標系の設定について
コマンド描画の消去座標系グラフ設定
ViewWindow消去する※1)再設定現状設定を維持
ClrGraph消去する論理座標系に変更※2)
現状設定を維持
Cls消去する現状設定を維持現状設定を維持
※1) 例外的に、ViewWindow 実行の直前にPlot コマンドで描画した点については、適用されない。
※2) ClrGraph は、論理座標系に変更し、さらにスケールを 1 に設定する。

ViewWindow
このコマンドで座標系を設定すると、グラフィックス画面は、クリア(消去)されます。但し1つだけ例外として、Plot コマンドでクリア直前に描画された点には適用されません [2017/09/25 追記修正]Plot コマンドは特殊で面白いコマンドなので、後で別に取り上げます。
ViewWindow 設定は、このコマンドで明示的に設定するか、あるいは ClrGraph を実行する以外は、設定は保存され、グラフィックス画面に反映されます。

ClrGraph
グラフィックス画面をクリア(消去)するだけでなく、座標系を論理座標系に設定、スケールを1に設定します。

Cls
グラフィックス画面をクリア(消去)します [2015/7/30 修正]。座標系は現在の設定が維持されます。
CLRGRPH2ClrGraphCls に置き換えて実験してみると、確認できます。

グラフ 設定コマンド
4種類の設定の On /Off を行うもので、これら4つのコマンドの設定内容は、ViewWindow, ClrGraph, Cls の影響を受けません。
1) CoordOn / CoordOff : カーソル位置の座標値出力を On / Off する、Plot コマンドを使う時のみ意味があります。
2) GridOn / GridOff : グリッドの表示を On / Off する
3) AxesOn / AxesOff : 座標軸の表示を On / Off する
4) LabelOn / LabelOff : 座標軸の X、Y ラベル表示を On / Off する



グラフィックス画面とテキスト画面の切り替え

以下のプログラムを実行してみます。

ファイル名: PLOT1.1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

PlotOn 1,0



グラフィックス画面を消去し、論理座標系が設定され、座標値表示 / グリッド表示 / 座標軸表示 / 軸ラベル表示 を全て Off にした上で、PlotOn コマンドで、(x, y) = (1, 0) に点を描画します。

グラフィックスコマンド PlotOn が実行されると、グラフィックス画面に点を1つ描画します。

Plot-1-1-1 

この表示のままプログラムが終了します。

ここで、[EXE] [EXIT] [AC] のいずれかのキーを押すと、画面右上に Done と表示されます。

Plot1-1-2 

さらに [EXE] [EXIT] [AC] のいずれかのキーを押すと、Program List へ戻ります。

Plot-1-1-3 

もう一度、このプログラムを起動します。

Plot-1-1-1 
そして、点が1つ描画されているグラフィックス画面が表示されている時、[SHIFT] [F6] (G↔T) を押してください。これは、グラフィックス画面とテキスト画面の表示を切り替える操作です。1回押せばテキスト画面 (Done と表示) になり、もう一度このキー操作を行うと、グラフィックス画面に戻ります。

Plot1-1-2 
Done と表示されているのは、テキスト画面であることが分かります。

そして、グラフィックス画面を表示してプログラムが終了した場合、Program List へ戻るには、テキスト画面へ一旦遷移することも分かります。fx-9860GII OS 2.04 ~ OS 2.09 では、このような仕様になっているようです。

==========

それでは、次のプログラムを実行してみます。

ファイル名: PLOT1.2
CllrGraph
CoordOff
GridOff
AxesOff
LabelOff

PlotOn 1,0
Locate 1,1,"Text"



このプログラムを起動すると、Locate 1,1,"Text" の結果として、画面左上に Text と表示しますが、PlotOn 1,0 の結果は表示されていません。

Plot1-2 
プログラムの最後に、テキスト画面に表示するコマンドが実行されたので、自動的にグラフィックス画面からテキスト画面に切り替わっていることが分かります。これで正常なのでしょう。

ここで、[SHIFT] [F6] (G↔T) を押すと、グラフィックス画面に切り替わり、点が描画されていることが確認できます。
Plot-1-1-1 

グラフィックス画面への描画は行われたが、裏に回って表示されないということです。

==========

グラフィックス画面には、Locate コマンドや出力命令 " " で出力ができません。fx-9860GII OC2.04 ~ OS 2.09 の Casio Basic の仕様です。

グラフィックスと文字を同時に表示するには、グラフィックス画面で文字表示を行うコマンドが必要で、そのために Text コマンドが用意されています。

Text コマンド

書式Text [y],[x],[出力内容]
  • [y], [x]物理座標系での座標で、物理的なピクセル位置を指定する。y座標(縦方向) の [y] を先に指定するLocate とは [x], [y] の指定順序が異なる
  • [出力内容] は、"文字列" 、変数、数値、Getkeyコマンドが使える。これは Locate と同様。
入力方法
[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F2] (Text)

Text コマンドは、現在選択されている座標系に関係無く、物理座標系を用いる仕様です。物理座標系での位置指定で、縦方向つまり y 座標を先に指定するのは、慣れるまでは分かりにくいと思います。物理座標系を使う PxlOn などの位置指定も同じです。

では、上で作ったプログラムに、Text コマンドの行を追加してみます。

ファイル名: PLOT1.3
CllrGraph
CoordOff
GridOff
AxesOff
LabelOff

PlotOn 1,0
Locate 1,1,"Text"
Text 1,1,"Graphic"



実行してみると、

Plot1-3 

点が1つ描画され、さらに文字列 Graphic も表示されました。

ちなみに、Text コマンドで描画されるフォントは テキスト画面のフォントよりも小さくなっています。そのため、見た目が貧弱で見づらいのですが、LCDの解像度が低いので仕方ないですね。古い機種との互換性を考え、このようなフォントをそのまま使っているのでしょう。Text コマンドで表示されるフォントは、プログラム編集画面に入ったところで、[F6] (CHAR) を押すと一覧が現れます。

さて、ここで [SHIFT] [F6] (G↔T) を押すと、裏に回っていたテキスト画面が表示されますね。

Plot1-1-2 

ただ、本来 Text と表示されるべきですが、Done としか表示されません。そこで、Locate コマンドで表示する位置を1行下へずらしてみます(以下の赤文字に注目)。

ファイル名: PLOT1.4
CllrGraph
CoordOff
GridOff
AxesOff
LabelOff

PlotOn 1,0
Locate 1,2,"Text"
Text 1,1,"Graphic"


これを実行し、裏へ回っているテキスト画面に切り替えると、今度は文字列 Text が出てきました。

Plot1-4 

Done という表示は、テキスト画面の内部カーソル行に表示され、丸々1行を上書きしているようです。そのため、1行目に Text と表示した場合は、上書きされて消えたのですが、Locate コマンドで2行目に表示すると、カーソル行が1行目のままなので、2行目の文字列 Text が見えたわけです。

テキスト画面の内部カーソル行は、出力命令 " "  を1回実行すると1行下がり、ClrTextCls を実行するとリセットされて1行目に戻ります。
 ⇒ Casio Basic コマンドリファレンス - 出力命令 " "

グラフィックス描画の際に、テキスト画面に表示される Done が出現するのは、テキスト画面に出力するコマンド/命令が実行されるタイミングだということは分かっていますが、完全な法則性はまだ確認できていません。いずれはっきりと分かったら、紹介したいと思います。



ViewWindow の性質

ViewWindow コマンドは、座標系を設定します。直交座標系と極座標系の設定ができますが、当面直交座標系の設定について紹介します。

直交座標系 での書式
ViewWindow [Xmin],[Xmax],[Xscale],[Ymin],[Ymax],[Yscale]
  • Xmin: X軸(横方向)の左端の値
  • Xmax: X軸(横方向)の右端の値
  • Xscale: X軸(横方向)の目盛間隔
  • Ymin: Y軸(縦方向)の下端の値
  • Ymax: Y軸(縦方向)の上端の値
  • Yscale: Y軸(縦方向)の目盛間隔
ここで、注意が必要なのは、Xmin は、X軸の最小値ではなく、左端の値だということ。
例えは、Xmin = 63、Xmax = -63 と設定することもできます。この時は、X軸(横方向)は、右が小さく、左にゆくほど値が大きくなり、座標軸の方向を逆に設定できるわけです。

ここで、XminXmax などと紛らわしい表現をしたのには、理由があります。

例えば、

ViewWindow -10,30,5,-5,15,5

と記述する代わりに、

-10→Xmin
30→Xmax
5→Xscl
-5→Ymin
15→Ymax
5→Yscl


と記述することもできます。Xmin、Xmax、Xscl、Ymin、Ymax、Yscl は、Casio Basic で予め予約された変数で、これに値を代入することで座標系を設定できます。或いは、現在の座標系で設定されている各値を知ることもでき、プログラムを書く時役立つことがあります。

これら2つの異なる記法の整合性をとるために、紛らわしい表現になってしまっています。

==========

では、プログラムの中で ViewWindow で座標系の設定を変えると、どうなるのかを調べてみます。

先ずは、次のプログラムを入力してください。

ファイル名:VW.PCL.1
ClrGraph
CoordOn
GridOff
AxesOn
LabelOn

ViewWindow -20,20,5,-5,15,5

Text 7,1,"[EXE]"
PxlOn 20,30
Text 1,1,"PxlOn 20,30"◢

PlotOn 10,10
Text 1,1,"PlotOn 10,10"◢

Circle 0,0,15
Text 1,1,"Circle 0,0,15"◢

F-Line 0,0,10,10
Text 1,1,"F-Line 0,0,10,10"◢


以下からダウンロードして、fx-9860GII へ転送もできます。
⇒ Casio Basic プログラムファイル VW.PCL.1.g1m のダウンロード


これを起動すると、以下の画面になります。

VW-PCL-1 
テキスト表示は、PxlOn 20,30 を実行したことを示していて、物理座標の (y, x) = (20, 30) に点が描画されています。

[EXE] キーを押すと、

VW-PCL-2 
PlotOn 10,10 により、ViewWindow -20,20,5,-5,15,5 で設定された座標系で (x, y) = (10, 10) に点が追加されます。

さらに、[EXE] キーを押すと、

VW-PCL3 
Circle 0,0,15 により、原点 (0, 0) を中心にして、半径 15 の円が描画されます。既に描画した2つの点も見えます。

続いて、[EXE] キーを押すと、

VW-PCL-4 
F-Line 0,0,10,10 により、座標 (0, 0) から (10, 10) へ直線が描画されます。


ここでは、以下の描画コマンドを使いました;
  • PxlOn: 指定した座標のピクセルを On にする。物理座標系を使う
  • PlotOn: 点を描画する。論理座標系か ViewWindow 座標系を使う
  • Circle: 円を描画する。論理座標系か ViewWindow 座標系を使う
  • F-Line: 線を描画する。論理座標系か ViewWindow 座標系を使う
PxlOn

書式PxlOn [y],[x]
  • y と x で指定した座標のピクセルを On にする。
  • 物理座標系のみを使うコマンド。y = 1, 2, 3...63 の整数値、x = 1, 2, 3...127 の整数値。
  • y 座標(縦方向) を先に設定する。
入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F1] (On)


PlotOn

書式PlotOn [x],[y]
  • 座標 (x, y) に点を描画する。
  • 論理座標系 あるいは ViewWindow 座標系を使うコマンド。x, y は、小数でも良い。
入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F1] (PLOT) [F2] (Pl・On)


Circle

書式Circle [x],[y],[r]
  • 座標 (x, y) を中心として、半径 r の円を描画する。
  • 論理座標系 あるいは ViewWindow 座標系を使うコマンド。x, y, r は小数でも良い。
入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F3] (Crcl)


F-Line

書式F-Line [x1],[y1],[x2],[y2]
  • 座標 (x1, y1) と (x2, y2) を両端とした直線を描画する。
  • 論理座標系 あるいは ViewWindow 座標系を使うコマンド。x, y は小数でも良い。
入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F2] (LINE) [F2] (F・Line)

==========

さて、ここまで描画したところで、座標系を左へ10シフトしてみます。つまり、

座標系指定: ViewWindow -20,20,5,-5,15,5



座標系指定: ViewWindow -10,30,5,-5,15,5

に、変更します。


ファイル名:VW.PCL.1に1行追加
ClrGraph
CoordOn
GridOff
AxesOn
LabelOn

ViewWindow -20,20,5,-5,15,5

Text 7,1,"[EXE]"
PxlOn 20,30
Text 1,1,"PxlOn 20,30"◢

PlotOn 10,10
Text 1,1,"PlotOn 10,10"◢

Circle 0,0,15
Text 1,1,"Circle 0,0,15"◢

F-Line 0,0,10,10
Text 1,1,"F-Line 0,0,10,10"◢

ViewWindow -10,30,5,-5,15,5



これを実行すると、

VW-PCL-5 

と、テキスト画面が表示されます。

ここで [SHIFT] [F6] (G↔T) で、裏に回ったグラフィックス画面を表示させると、

VW-PCL-6 

座標軸とラベル XY 以外、何もありません。ViewWindow を実行すると、グラフィックス画面を消去することが分かります。
但し、グラフ設定はそのまま維持され、座標軸とラベルはグラフィックス画面の背景として表示されたままです。
ViewWindow はグラフィックス描画コマンドでないので、グラフィックス画面が裏へ回っています。

そこで、プログラムの最後に PlotOn を実行させると、グラフィックス画面を表示したままプログラムが終了するはずです。

ファイル名:VW.PCL.2
ClrGraph
CoordOn
GridOff
AxesOn
LabelOn

ViewWindow -20,20,5,-5,15,5

Text 7,1,"[EXE]"
PxlOn 20,30
Text 1,1,"PxlOn 20,30"◢

PlotOn 10,10
Text 1,1,"PlotOn 10,10"◢

Circle 0,0,15
Text 1,1,"Circle 0,0,15"◢

F-Line 0,0,10,10
Text 1,1,"F-Line 0,0,10,10"◢

ViewWindow -10,30,5,-5,15,5
PlotOn 10,10



以下からダウンロードして、fx-9860GII へ転送しても使えます。
⇒ Casio Basic プログラムファイル VW.PCL.2.g1m のダウンロード


これを起動して、[EXE] を4回か押すと、以下の画面になります。

VW-PCL-7 

全てのグラフィックス描画が消去された後、PlotOn コマンドで1つだけ点が描画されていて、グラフィックス画面が表に表示されています。



ClrGraph とグラフ設定 / ViewWindow 以外の座標系設定法

ClrGraph コマンドを実行すると、グラフィックス画面が消去されるだけでなく、論理座標系に設定されます。

例えば、以下のような ViewWindow 座標系を指定します。これは、論理座標系と同じです。

ViewWindow -6.3,6.3,0,-3.1,3.1,0

また、以下のような別の表記で同じ設定ができます。

-6.3→Xmin:6.3→Xmax:0→Xscl
-3.1→Ymin:3.1→Ymax:
0→Yscl


但し、赤文字で示した3番目と6番目のパラメータは、座標軸と一緒に表示される目盛の間隔を設定するものです。座標軸を On にする時(AxesOn) に意味があります。これはグラフ設定の1つですが、4つのグラフ設定コマンドでは指定できません。

ClrGraph を実行すると目盛間隔が 1 に設定されることを、別の方法で確認してみます。

ファイル名:CLRGRPH3
AxesOn
0→Xscl:0→Yscl
"Set Scale to 0."◢

ClrText
ClrGraph
Locate 1,1,"Xmin:"
Locate 6,1,Xmin
Locate 12,1,"Xmax:"
Locate 17,1,Xmax
Locate 1,2,"Xscl:"
Locate 6,2,Xscl
Locate 1,3,"Xfct:"
Locate 6,3,Xfct
Locate 12,3,"Xdot:"
Locate 17,3,Xdot

Locate 1,5,"Ymin:"
Locate 6,5,Ymin
Locate 12,5,"Ymax:"
Locate 17,5,Ymax
Locate 1,6,"Yscl:"
Locate 6,6,Yscl
Locate 1,7,"Yfct:"
Locate 6,7,Yfct



入力が面倒な場合は、以下からダウンロードして、fx-9860GII へ転送できます。
⇒ Casio Basic ファイル CLRGRPH3.g1m のダウンロード


Xmin, Xmax, Xscl, Xfct, Xdot, Ymin, Ymax, Yscl, Yfct の入力は、ショートカットが分からない時は [SHIFT] [4] (CATALOG) で現れるコマンドリストから探せます。

Xmin の入力
[VARS] [F1] (V・WIN) [F1] (X) [F1] (min)

Xmax の入力
[VARS] [F1] (V・WIN) [F1] (X) [F2] (max)

Xscl の入力
[VARS] [F1] (V・WIN) [F1] (X) [F3] (scal)

Xdot の入力
[VARS] [F1] (V・WIN) [F1] (X) [F4] (dot)

Ymin の入力
[VARS] [F1] (V・WIN) [F2] (Y) [F1] (min)

Ymax の入力
[VARS] [F1] (V・WIN) [F2] (X) [F2] (max)

Yscl の入力
[VARS] [F1] (V・WIN) [F2] (Y) [F3] (scal)

Xfct の入力
[VARS] [F2] (FACT) [F1] (Xfct)

Yfct の入力
[VARS] [F2] (FACT) [F2] (Yfct)


なお、このプログラムでは、XsclYscl 以外に、Xfct, Xdot, Yfct についても値を調表示します。

先ず最初に、AxesOn で座標軸を表示させる設定にし、X と Y 座標軸の目盛間隔を 0 に設定。これで、座標軸を表示するが目盛は表示しないようになります。この設定を行ったところで、出力命令◢ で一旦実行を止めて、Set Scale to 0. (目盛に 0 をセット)と表示させます。

ClrGraph-1 

ここで、グラフィックス画面を確認するために、[SHIFT] [F6] (G↔T) で裏に回っているグラフィックス画面を表示してみると、

ClrGraph-3 

座標軸は表示されているが、目盛は表示されていない、つまりプログラムコード通りに表示されていることが確認できます。

出力命令◢ で一旦停止しているプログラムを、[EXE] キーを押して停止解除すると、残りの処理を最後まで実行して、各変数の値を表示します。

ClrGraph-2 

XsclYscl が共に 1 になっています。ClrGraph を実行すると、スケールが 1 に設定されるようです。

再び裏に回っているグラフィックス画面を確認するために、[SHIFT] [F6] (G↔T) を押すと、

ClrGraph-4 

目盛が間隔 1表示されていることが、再度確認できました。ここで、例えば PlotOn 1,1 を実行すると、目盛間隔が 1 になっていることも確認できます。


なお、Xdot は1ピクセルの値を示したり、設定する変数です。Ydot は準備されていないようです。1→Xdot とするとピクセルあたり 1 に設定できることは、簡単に確かめられます。

XfctYfct は拡大率を示していて、共に 2 に設定されるようです。
これは、0→Xscl:0→Yscl の下に、1→Xfct:1→Yfct を追加して、プログラムを実行すると、これがの値が 2 に変更されることが確認できます。是非やってみてください。

fx-9860GII OS 2.04 では、グラフ機能の1つにデュアルグラフといって、1画面に2つのグラフを表示する機能があります。ここからは推測ですが、デュアルグラフ機能を前提にして、ClrGraph で拡大率を 2 に設定するのではないかと思われます。

以上の実験から、ClrGraph の動作内容が詳しくわかりました。

ClrGraph の動作
  • グラフィックス画面を消去すると同時に、座標標系を論理座標に設定する。
  • 再設定の内容は、ViewWindow -6.3,6.3,1,-3.1,3.1,1 と同じで、X、Y 軸の目盛間隔を 1 に設定する。
  • 併せてグラフの拡大率を X、Y 軸共に 2 に設定する。



Casio Basic プログラムのファイル名について

fx-9860GII OS 2.04 の Casio Basic では、電卓上ではプログラムファイル名に  の文字が使えます。
これらの文字を使ったプログラムファイルを PCリンクソフト FA-124 Ver 2.04 を使ってPCへ転送・保存できます。

ところが、ファイル名に を含んだファイル、例えば TEST-1 を FA-124 で 別のフォルダへ Export しようとすると、This file nmae is invalid. (このファイル名は無効です.) とエラー表示が出て、保存ができないことを見つけました。ファイル名に が含まれたもの、例えば TEST.1 はエラーが出ません。

TEST-1 を別のフォルダで Export しようとして、ファイルダイアログで上のエラーが出たとき、ファイル名を TEST.1.G1M に変更すると、保存できます。そして、今度は逆に 今保存した TEST.1.G1M を FA-124 で Import すると、TEST-1 へ上書きされ、TEST.1 として保存されません。

Casio ファイル、g1m ファイルは、ファイル先頭部分でファイル名情報を保持しています。そして、FA-124 では、ファイル名自体をチェックせず、ファイルの先頭部にあるファイル名情報をみでチェックしているため、実際のファイル名とファイル名情報に矛盾が発生していることになります。

FA-124 は基本的に古いソフトなので、以前のグラフ関数電卓では、- 文字をファイル名に使えなかった時の仕様を引きずっているのではないかと思われます。

実際のファイル名と内部で保持しているファイル名情報に矛盾があるのは、あまり良いことでないので、プログラムファイル名に 文字を使わないほうが良いでしょう。



今回のまとめ
  • ClrGraph コマンドは、グラフィックス画面の消去だけでなく、座標系を論理座標系に変更する。
  • ClrGraph コマンドは、スケールを 1 に変更する。
  • Cls コマンドは、テキスト画面とグラフィックス画面の両方を消去するのみ。座標系の変更は行わない。
  • テキスト画面に表示するコマンドは、グラフィックス画面への出力には使えない。
  • グラフィックス画面に文字列を描画するには、Text コマンドを使う。
  • 明示的な消去を行うコマンドを使わない限り、グラフィックス画面の描画はそのまま残る。
  • [SHIFT] [F6] (CHAR) で、グラフィックス画面とテキスト画面の表示を切り替える。
  • ViewWindow コマンドは、グラフィックス画面の描画を消去する。但し Plot コマンドによる描画は例外(次回紹介する)。
  • Casio Basic ファイル名には、- 文字を使わないほうが良いと思われる。


今回使ったグラフィックス コマンド
  • ClrGraph
  • CoordOff
  • GridOff
  • AxesOff
  • LabelOff
  • ViewWindow
  • Text
  • PlotOn
  • PxlOn
  • Circle
  • F-Line
  • 座標系設定やグラフ設定で使える変数: Xmin, Xmax, Xscl, Xfct, Xdot, Ymin, Ymax, Tscl, Yfct




つづく...

Casio Basic入門G04 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ


テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門G01

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

追記 2015/06/26
更新 2015/08/15
修正 2015/12/07
追記 2017/09/25

※ 文章と図が重なって表示される時は、ページを再読込してください(最近この現象が発生しています)。

 5. Casio Basic でグラフィックス


はじめに

グラフ描画機能を世界で初めて電卓に取り入れたのが、カシオの fx-7000G です。それ以来、カシオのグラフ関数電卓は、教育現場の意見や要望を取り入れながら、数学教育ツールとして開発が継続されています。その延長線上に fx-9860GII があります。

私自身は、これまで fx-5800P を使いこなしてきたので、fx-9860GII のグラフ機能やグラフィックス機能が、Casio Basic にどのように実装されているのかは殆ど知らず、カシオのグラフ関数電卓のグラフィックス描画速度が非常に遅いという感覚だけが有りました。

fx-9860GII やグラフ関数電卓の Casio Basic でグラフィックス プログラミングがどのようなものか知りたいと思っても、fx-9860GII の取扱説明書のプログラム機能の記述は、特にグラフィックスに関しては、fx-5800P 以上に不親切です。

そこで、入手できる情報を元にして、自分で色々と調べて、Casio Basic 入門として記録してゆこうと思います。


Chapter G01
LCDと3つの座標系

グラフィックス描画の単位は、LCD(液晶ディスプレイ)の1ピクセルです。
fx-9860GII はモノクロLCDを使っているので、必要なピクセルをOn / Off すれば、グラフィックス描画ができます。

ピクセル1つを On したり、Off したり、On と Off を切り替えるなどのコマンドがあり、線分、水平線や垂直線、円を描画するコマンドがあります。さらに、関数をグラフとして表示するための高度なコマンド もありそうです。


Casio Basic のグラフィックス描画エリア


グラフィックス表示エリア fx-9860GII のLCDは、128 x 64 ピクセルのドット・マトリックスです。ところが、Casio Basic では、LCDの横 127ピクセル、縦63ピクセルがグラフィックス描画エリアになっています。横と縦のピクセル数を奇数にすれば、エリアの中央のピクセルを原点として、エリアを対称に使えます。グラフ描画を主眼に考えてのことだと推察されます。ちなみに Add-in プログラムを作る際には、128 x 64 ピクセル全てを使えることから、127 x 63 ピクセルの描画エリアは Casio Basic の仕様だと分かります。



3つの座標系
[2017/09/25 追記]
以下の3つの座標系を切り替えて使います。

論理座標系
 ・デフォルトの論理座標系 (ClrGraph で設定)
 ・ViewWindow座標系 (ViewWindow で設定)
物理座標系
 設定コマンドはない。物理座標系専用コマンドを使えば自動的に物理座標で使える。
 ※物理座標系専用コマンド: PxlOn、PxlOff、PxlChg、PxlTest(、Text


デフォルトの論理座標系

論理-座標系
Casio Basic で用いる座標系の1つに、描画エリア中央を原点にし、左の図のような論理座標系があります。1dot の値が 0.1 に固定されています。

例えば、座標 (5, -3) は、原点ピクセルから、右に50 dot、下に 30dot の位置になります。





この座標系で使えるコマンドには、Plot, PlotOn, PlotOff, PlotCng, Line, F-Line, Circle, Horizonal, Vertical などが挙げられます。

この座標系は、数学でグラフを書く時に分かりやすいのですが、1dot の値が 0.1 に固定されているので、この狭い範囲にグラフが収まりきらないことが多く発生します。そこで、1dot の値を自由に設定し、原点も自由に設定できれば、あらゆるグラフが書ける座標系を設定できるようになります。


ViewWindow 座標系

Casio Basic には、論理座標系を自由に設定するために、ViewWindow コマンドが用意されています。

ViewWindow 座標系設定の書式 (直行座標系の場合) [2015/06/27 更新]

ViewWindow
[左端のxの値],[右端のxの値],0,[下端のyの値],[上端のyの値],0 
  1. 3番目と6番目のパラメータは、座標軸を描画する際、AxesOn を指定した場合の目盛間隔(スケール)を指定する。座標軸と共にグラフを描画しない場合は、両方とも 0 としておけば良い。
  2. 例えば、ViewWindow 1,127,0,63,1,0 とすれば、物理座標系と同様になる(但し、小数値での座標設定ができる点が、物理座標とは異なる)。

ViewWindow座標系   
例えば、
ViewWindow 0,126,0,0,62,0 [2015/08/15 訂正]
とすれば、左の図の座標系を設定できます。
この設定例は、1dot の値が 1 つまり、数値とピクセル数が一致するので、グラフィックス描画を行う時、分かりやすくなります。


プログラムのロジックや使う変数に応じて、処理速度を最適化するために、柔軟に座標系を設定できる点も、グラフィックス プログラミングに適しているかも知れません。

この座標系で使えるコマンドには、デフォルトの論理座標系と同じ Plot, PlotOn, PlotOff, PlotChg, Line, F-Line, Circle, Horizontal, Vertical などが挙げられます。


物理座標系

さて、Casio Basic には、もう一つの座標系があります。

物理-座標系
LCDの左上隅のピクセルを原点とする座標系で、PCなどのグラフィックスで最も一般的な座標系です。

但し、原点は (0, 0) でなくて、(1, 1) で、x や y には 1以上の整数しか使えません。整数でないとエラーになります。

ちなみに、論理座標系や ViewWindow座標系では(x, y) に小数を使ってもエラーにならず、指定位置に最も近いピクセルが自動的に選ばれます。

さらに、物理座標系で使えるコマンドの座標値の記法は、x と y の順序を逆、つまり y の値を先に x の値を後にして (y, x) としなければなりません。

この座標系では、Text, PxlOn, PxlOff, PlxChg, PxlTest( ) が使えます。これらのうち、Text を除く他のコマンドでは、座標値に変数を用いる時、PxiOn Y,X というように、変数 XY を使えません。他のアルファベットは使えます。X と Y は、内部動作のための予約変数で、XY を使うとエラーになります。

[2015/12/07 修正]

座標指定に変数 X と Y を使う際、例えば、PxlOn Y,X と記述する時には注意が必要です。Text を除く他のコマンドを実行すると、変数 X と Y には、指定した物理座標系での位置を論理座標系に変換した座標 (X, Y) が自動的に格納されます。PxlOn B,A を実行しても、物理座標系での座標 (A, B) が 論理座標系に変換された座標 (X, Y) に対応する値が X と Y に自動格納されます。

さらに、X と Y には論理座標系での値が自動的に入るので、負の値や小数になることが多く、PxlOn B,A の実行直後に PxlOn Y,X を実行すると、X と Y に正の整数以外が入っている場合はエラーになります。Text を除く物理座標系で使うコマンドには、X と Y 以外の変数を座標指定に使った方が、このエラーに悩まされずに楽かも知れません。
====== 修正ここまで =====

これは、面白いので後で取り上げる予定ですが、確認するために作ったプログラムをダウンロードできます。興味のある方には、先行して遊んでみてください。
 ⇒ PxlOn の予約変数 X, Y を調べて見る
   (上を左クリックして現れるポップアップウィンドウで、リンクを右クリックし、[名前を付けてリンク先を保存] を選択)



サンプルプログラムを作ってみる

fx-9860GII は、128 x 64 ドットのモノクロLCD(液晶ディスプレイ)を搭載していますが、Casio Basic でのグラフィックスエリアは 127 x 63 ドットです(上記参照)。

以下のプログラムを実行すると、LDCの上端の1ラインと左端の1ラインが、グラフィックスエリアに使われていないことが確認できます。(但し、グラフィックス描画以外には、使われるケースがあることも分かっています。今後紹介します)。

なお、プログラム実行中の方が視認性が良くなります。見づらい場合はLCDのコントラストを調整してみてください。

ClrGraph
LabelOff
For -3.1→Y To 3.1 Step 0.1
Horizontal Y
Next

(論理座標系)

プログラムの入力と実行の操作方法は、「ソフトウェア バージョン Ver 2.04 取扱説明書」の第8章 プログラム機能、8-1 ページにある 「1.プログラムの作成から実行までの流れ」 を参照してください。

fx-9860GII の取扱説明書は、製品に添付されているCDに PDF ファイルとしてあります。または、カシオのサイトからダウンロードできます。
 ⇒ fx-9860GII_Soft_J.pdf

fx-9860GII で入力するコマンドは、複数のメニューに分散していて、最初は探すのに苦労します。fx-5800P のようにスッキリとまとまっていないので、なんとかして欲しいと思います。

- ClrGraph の入力
[SHIFT] [VARS] (PRGM) [F6] (▷) [F1] (DLR) [F2] (Grph)


- LabelOff の入力
[SHIFT] [MENU] (SET UP) [F5] (LABL) [F2] (Off) 


- For / To / Step / Next の入力
[SHIFT] [VARS] [F1] (COM) [F6] (▷) 
とすると、[F1][F4] にそれぞれ、ForToStepNext が割り当てられている。


- Horizontal の入力
[SHIFT] [F4] (Skeych) [F6] (▷) [F5] (Hztl)



コマンド類は、おおよそ以下の場所に分散しています;

- プログラムの制御に関するもの:
[SHIFT] [VARS] から下位のメニュー

- グラフ機能(グラフィックス機能) の描画に関するもの;
[SHIFT] [F4] (Sketch) から下位のメニュー

-グラフ機能(グラフィックス機能)の設定に関するもの;
[SHIFT] [MENU] (SET UP) から下位のメニュー

- ViewWindowの設定に関するもの;
[SHIFT] [F3] (V-Window) から下位のメニュー


上記のプログラムは、グラフィックスエリアを塗りつぶしています。同様にエリアを塗りつぶすために、PxlOn コマンドでピクセルを順に塗りつぶすプログラムは以下になります。

ClrGraph
For 1→A To 63
For 1→B To 127
PxlOn A,B
Next
Next

(物理座標系)

描画速度を比較すると、Horizontal コマンドを用いる方が、圧倒的に速いことが分かります。



今回のまとめ
  • fx-9860GII のLCDは 128 x 64 ピクセル
  • fx-9860GII のグラフィックス描画エリアは 127 x 63 ピクセル
  • fx-9860GII は3つの座標系を使い分ける
    • デフォルトの論理座標系: LDC中央が原点、1dot = 0.1 で固定
    • ViewWindow座標系: 自由に設定可能な座標系
    • 物理座標系: LCDピクセルを直接指定する座標系、1 dot = 1、整数指定
  • グラフィックス コマンドにより描画速度が大きく異なる

今回使ったグラフィックス コマンド
  • ViewWindow
  • ClrGraph
  • Horizontal
  • PxlOn





つづく...

Casio Basic入門G02 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ









keywords: fx-9860GIICasioBasic、グラフィックス, プログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ


テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門G02

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

訂正 2015/07/29
訂正 2017/09/25



 5. Casio Basic でグラフィックス


前回: Casio Basic入門G01


Chapter G02
グラフィックス画面の設定と描画

Casio Basic でグラフィックスを描画するには、グラフ描画を主目的に考えられている fx-9860GII の特徴を理解しておくと、その後の理解が楽になるので、前回は Casio Basic でのグラフィックス描画エリアがLCDの全エリアでないこと、3種類の座標系(デフォルトの論理座標系、ViewWindow 座標系、物理座標系)を使えることを紹介しました。

今回は、fx-9860GII の特徴をさらに調べながら、グラフィックス コマンドを使ってみます。


グラフィックス画面とテキスト画面

fx-9860GII の Casio Basic では、グラフィックス コマンドで描画を行うグラフィックス画面と、テキスト出力コマンドで表示されるテキスト画面があって、グラフィックス コマンドとテキスト出力コマンドは、1つの画面に一緒に出力できないようになっています。また、グラフィックス画面やテキスト画面は、それぞれ1枚づつしかなく、全てのCasio Basic プログラムで共用されます。
  • fx-5800P では、出力命令 " " と Locate コマンドで画面出力しますが、これらはテキスト画面へ出力します。fx-9860GII でもこれらの命令・コマンドが使えますが、同様にテキスト画面へ出力します。
  • グラフィックス コマンドとテキスト出力は、これら2つの画面を切り替えて表示が行われます。詳しくは次回以降で紹介します。


グラフィックス消去コマンド

グラフィックス画面の消去は、ClrGraph Cls コマンドで行います。

fx-5800P と fx-9860GII の画面消去コマンドをを整理しておきます。共通して使える Cls は、画面消去コマンドです。

Casio Basic の画面消去コマンド [2015/07/29 訂正]
コマンドfx-5800Pfx-9860GII
Cls画面消去(テキスト画面のみ)グラフィックス画面の消去
(座標系の変更は行わない)
ClrTextなしテキスト画面の消去
ClrGraphなしグラフィックス画面の消去と座標系をクリアして論理座標系へ戻す
  • fx-9860GII では、グラフィックス描画のためには、専用のグラフィックス画面が使われます。
  • fx-5800P と共通して使える出力命令 " "Locate コマンドは、テキスト画面に表示され、グラフィックス画面への表示はできません。
  • fx-5800P の Cls コマンドは、fx-9860GII の ClrText と同じ動作です。
グラフィックス画面に描画された状態は、ClrGraph を実行しない限り残っています。1つのプログラムでグラフィックス描画を行い、ClrGraph で消去しないでおくと、プログラムで ClrGraph しないと、その残った画面の上にグラフィックス描画が行われる仕様です。

従って、プログラムの最初か最後に ClrGraph を実行しておくのが望ましいでしょう。

fx-9860GII での Cls 入力方法
[SHIFT] [F1] (Cls)

fx-9860GII での ClrText 入力方法
[SHIFT] [VARS] (PRGM) [F6] (▷) [F1] (CLR) [F1] (Text)

fx-9860GII での ClrGraph 入力方法
[SHIFT] [VARS] (PRGM) [F6] (▷) [F1] (CLR) [F2] (Grph)


サンプルプログラム 1

ちょっと実験してみます。以下の2つのプログラムを入力して、先にプログラム H を実行し、その後プログラム V を実行してください。

ファイル名: H (水平線を描く)
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
Horizontal 0


ファイル名: V (垂直線を描く)
Vertical 0


※ プログラム HCoordOffGrifOffAxesOffLablelOff を入力する方法は、下の グラフ設定コマンド にあります。
Horizontal の入力方法
  [SHIFT] [F4] (Sketch) [F6] (▷) [F5] (Hztl)
Vertical の入力方法
  [SHIFT] [F4] (Sketch) [F6] (▷) [F4] (Vert)

プログラム H を実行すると、グラフィックス画面に水平線が描かれますが、最後に ClrGraph が実行されていないので、グラフィックス画面には水平線が残ったままです。次に、プログラム V を実行すると、垂直前のみを描くにもかかわらず、画面には水平線と垂直線の両方が描かれています。グラフィックス画面上の描画は、ClirGraph や Cls が実行されない限り、残っていることが確かめられました。

さらに、グラフィックス画面はプログラムごとに別に用意されるのではなく、共通して全てのプログラムで使われることも確認できました。

ところで、プログラム H と V では、座標系の指定を行っていませんが、ClrGraph を実行しています。ClrGraph により座標系がクリアされて論理座標系に設定されていることが、分かると思います。[2015/07/08 修正] 座標系については、Casio Basic入門G01 を参照してください。



グラフ設定コマンド

fx-9860GII には、4種類のグラフ設定コマンドがあります。

1) CoordOn / CoordOff : カーソル位置の座標値出力を On / Off する
この設定コマンドは、Plot コマンドで入力待ちになっている時に有効となる。座標値出力領域にはグラフィックス描画されない。詳しくは次回以降で紹介する。

この設定は、プログラムとは関係無く保存され、1つのプログラムで On にすると、それ以降実行するプログラムでも On の設定が生きている。従って、プログラムごとに 設定するのが望ましい。

fx-9860GII での CoordOn 入力方法
[SHIFT] [MENU] (SET UP) [F2] (COOR) [F1] (On)

fx-9860GII での CoordOff 入力方法
[SHIFT] [MENU] (SET UP) [F2] (COOR) [F2] (Off)


2) GridOn / GridOff : グリッドの表示を On / Off する
この設定コマンドは、グリッド表示を On / Off する。グリッド表示の上にグラフィックスが描画されるので、画面の背景だと思うと分かりやすい。

この設定は、プログラムとは関係無く保存され、1つのプログラムで On にすると、それ以降実行するプログラムでも On の設定が生きている。従って、プログラムごとに 設定するのが望ましい。

fx-9860GII での GridOn 入力方法
[SHIFT] [MENU] (SET UP) [F3] (GRID) [F1] (On)

fx-9860GII での GridOff 入力方法
[SHIFT] [MENU] (SET UP) [F3] (GRID) [F2] (Off)


3) AxesOn / AxesOff : 座標軸の表示を On / Off する
この設定コマンドは、座標軸表示を On / Off する。座標軸表示の上にグラフィックスが描画されるので、画面の背景だと思うと分かりやすい。

この設定は、プログラムとは関係無く保存され、1つのプログラムで On にすると、それ以降実行するプログラムでも On の設定が生きている。従って、プログラムごとに 設定するのが望ましい。

fx-9860GII での AxesOn 入力方法
[SHIFT] [MENU] (SET UP) [F4] (AXES) [F1] (On)

fx-9860GII での AxesOff 入力方法
[SHIFT] [MENU] (SET UP) [F4] (AXES) [F2] (Off)


4) LabelOn / LabelOff : 座標軸の X、Y ラベル表示を On / Off する
この設定コマンドは、X座標とY座標を示す X, Y ラベル表示を On / Off する。ラベル表示の上にグラフィックスが描画されるので、画面の背景だおt思うと分かりやすい。

この設定は、プログラムとは関係無く保存され、1つのプログラムで On にすると、それ以降実行するプログラムでも On の設定が生きている。従って、プログラムごとに 設定するのが望ましい。

fx-9860GII での LabelOn 入力方法
[SHIFT] [MENU] (SET UP) [F5] (LABL) [F1] (On)

fx-9860GII での LabelOff 入力方法
[SHIFT] [MENU] (SET UP) [F5] (LABL) [F2] (Off)


実際の表示例を示すと以下のようになります。

座標描画 w/o Grid 
GridOff (グリッドなし)、AxesOn (座標軸あり)、LabelOn (ラベルあり) を設定した時のグラフィックス画面

座標描画 w/ Grid 
GridOn (グリッドあり)、AxesOn (座標軸あり)、LabelOn (ラベルあり) を設定した時のグラフィックス画面

この2つの画面を見比べると、座標軸の目盛りとグリッドの点が共用されていることが分かります。面白いアイデアですね。

なお、4つの設定全てを Off にすると、グラフィックス画面の背景は何もなくなります。


サンプルプログラム 2

次のような表示を作ってみます。

PlotOn 2,2 

(x, y) = (2, 2) の座標に点が1つあります。
  • 最初に グラフィックス画面を消去します。
  • 次に、座標軸とラベルの表示を On にします。
  • 最後に、PlotOn コマンドで、座標 (x, y) = (2, 2) に点を表示します。
PlotOn の書式
PlotOn x,y
現在の座標系(論理座標系か ViewWindow座標系)で、座標 (x, y) に点を描画する。

PlotOn の入力方法
[SHIFT] [F4] (Sketch) [F6] (▷) [F1] (PLOT) [F2] (Pl・On}

以下を入力して実行してみてください。上の写真のようになりますか?

ClrGraph
CoordOn
GridOn
AxesOn
LabelOn
PlotOn 2,2


ViewWindowで座標系を指定しなければ、ClrGraph により論理座標系が適用されています。



画面塗りつぶしプログラム

グラフィックス領域の半分を塗りつぶすプログラムを4通りの方法で作ってみます。

MarkOut Half 

ファイル名: MARKOUT1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 0→Y To 31
For 0→X To 126
PlotOn X,Y
Next
Next


プログラムの説明
・グラフィックス画面の消去

・4つのグラフ設定:
 全て Off にする

ViewWindow 座標系設定:
 グラフィックス画面左下隅を原点 (0, 0) とし、
 右下隅のピクセルの座標を (126, 0)、
 右上隅のピクセルの座標を (126, 62) とする。  

・ピクセルの描画: PlotOn を使う
 ピクセルを左から右へ、そして下から上へ順に表示してゆく。
 ここで For 文を使っています。
 ⇒ CasioBasic コマンドリファレンス - For 文

プログラムの実行
結構な時間がかかります。fx-9860GII のグラフィックスは処理が遅いことが分かります。

プログラムのダウンロード
 ⇒ MarkOut1
 ⇒ ダウンロードしたファイルを fx-9860GII へ転送する方法

==========


次に、水平線を下から上へ順に描画する方法を試します。

ファイル名: MARKOUT2
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 0→Y To 31
Horizontal Y
Next


プログラムの説明
・グラフィックス画面の消去

・4つのグラフ設定:
 全て Off にする

ViewWindow 座標系設定:
 グラフィックス画面左下隅を原点 (0, 0) とし、
 右下隅のピクセルの座標を (126, 0)、
 右上隅のピクセルの座標を (126, 62) とする。  

--- ここまでは、MARKOUT1 と同じ ---

・水平線の描画: Horizontal を使う
 水平線を下から上へ順に表示してゆく。

 Horizontal の書式
 Horizontal y
 現在の座標系で、縦軸の y 座標の位置に水平線を描画する。

 Horizontal の入力方法
 [SHIFT] [F4] (Sketch) [F6] (▷) [F5] (Hztl)

プログラムの実行
MARKOUT に比べて、かなり高速化されました。

プログラムのダウンロード
 ⇒ MarkOut2
 ⇒ ダウンロードしたファイルを fx-9860GII へ転送する方法

==========


今度は、左端から右端までの直線を下から上へ順に描画する方法を試します。

ファイル名: MARKOUT3
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 0→Y To 31
F-Line 0,Y,126,Y
Next


プログラムの説明
・グラフィックス画面の消去

・4つのグラフ設定:
 全て Off にする

ViewWindow 座標系設定:
 グラフィックス画面左下隅を原点 (0, 0) とし、
 右下隅のピクセルの座標を (126, 0)、
 右上隅のピクセルの座標を (126, 62) とする。  

--- ここまでは、MARKOUT1 / MARKOUT2 と同じ ---

・直線の描画: F-Line を使う
 左端から右端までの直線を下から上へ順に表示してゆく。

 F-Line の書式
 F-Line x1,y1,x2,y2
 現在の座標系で、起点座標 (x1, y1) から終点座標 (x2, y2) まで直線を描画する。

 F-Line の入力方法
 [SHIFT] [F4] (Sketch) [F6] (▷) [F2] (LINE) [F2] (F-Line)

プログラムの実行
MARKOUT2 と同じ描画時間でした。

プログラムのダウンロード
 ⇒ MarkOut3
 ⇒ ダウンロードしたファイルを fx-9860GII へ転送する方法

==========


最後に、太い水平線を下から上へ順に描画する方法を試します。

ファイル名: MARKOUT4
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 0→Y To 31 Step 2    
[2017/09/25 修正: Step 2 が抜けていたのを追加]
SketchThick Horizontal Y
Next


プログラムの説明
・グラフィックス画面の消去

・4つのグラフ設定:
 全て Off にする

ViewWindow 座標系設定:
 グラフィックス画面左下隅を原点 (0, 0) とし、
 右下隅のピクセルの座標を (126, 0)、
 右上隅のピクセルの座標を (126, 62) とする。  

--- ここまでは、MARKOUT1 / MARKOUT2 / MARKOUT3 と同じ ---

・太い水平線の描画: Sketch Horizontal を使う
 太い水平線を下から上へ順に表示してゆく。

 SketchThick の書式
 SketchThick [線や円の描画コマンド]
 線や円の描画を、太線で実行する。
 ここで、使える 線や円の描画コマンドは、
 ・ LineF-LineHorizontalVerticalCircle がある。

 線の描画に Horizontal を適用すると、
 SketchThick Horizontal y となって、ピクセル2つの太さで水平線を描画する。

 SketchThick の入力方法
 [SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F5] (STYL)

プログラムの実行
MARKOUT2 や MARKOUT3 よりも、さらに高速化されました。

プログラムのダウンロード
 ⇒ MarkOut4
 ⇒ ダウンロードしたファイルを fx-9860GII へ転送する方法

==========


Casio Basic のグラフィックス描画も、場合によってはかなり高速になることが分かりました。

グラフィックス コマンドによる描画時間の違い
プログラム ファイル名コマンド描画時間
MARKOUT1PlotOn x,y203.5秒
MARKOUT2Horizontal y2.0秒
MARKOUT3F-Line x1,y1,x2,y22.0秒
MARKOUT4SketchThick Horizontal y1.3秒




グラフィックス描画のしくみ - 描画時間を決める要素

グラフィックスデータは、マイクロブロセッサにより、VRAMと呼ばれるメモリ(領域)に送られます。次に、VRAM のデータが液晶ディスプレイ (LCD)へ転送されてグラフィックスが表示されます。

PlotOn コマンドが実行される時は、ピクセル1個の描画データが VRAM へ書き込まれるたびに、そのデータが LCD へ転送されます。

fx-9860GII では、この転送速度が遅く、従ってMARKOUT1 プログラムの実行に時間がかかるわけです。実行されている時、実際にピクセルが1個づつ描画されるのが見えます。

次に、Horizontal コマンドで水平線を1本づつ描画する時は、水平線1本分の描画データが VRAM に送られると、そのデータがまとめて LCD へ転送されます。時間がかかる転送動作が少なくて済むので、それだけ描画が速くなります。

3つめの、F-LINE コマンドで直線を1本づつ描画する場合も、水平線の時と同様に、直線1本分のデータが VRAM に送られ、それがまとめて LCD へ転送されるので、Horizontal と同じ時間がかかるわけです。

最後のプログラム例では太い水平線を描画していますが、水平線2本分の描画データが、まとめて LCD に転送されるため、さらに描画が速くなるのがわかります。

MARKOUT1 では、127 x 32 = 4064 ピクセルを描画する時、1ピクセルごとに LCD転送するので、転送回数は 4064回。
MARKOUT2 では、直線1本ごとに LCD転送するので、転送回数は 32回。
MARKOUT3 でも、水平線1本ごとにLCD転送するので、転送回数は 32回。
MARKOUT4 では、水平線2本ごとにLCD転送するので、転送回数は 16回。

そこで、描画時間を LCD 転送回数で割ってみると (T / F) 下表のようになり、数十ミリ秒のオーダーでほぼ同じくらいになっています。但し、転送回数が少なければ、1回の転送データが大きくなるので、T / F が下へゆくほど大きくなるのは理解できて、10~20ミリ秒の違いは、VRAM へのブロック転送の時間の違いだと考えれば、納得できる範囲です。

LCD 転送1回あたりの描画時間 [fx-9860GII USB POWER GRAPHIC 2]
プログラム ファイル名描画時間 / TLCDへの転送回数 / FT / F
MARKOUT1203.5秒4064回0.05
MARKOUT22.0秒32回0.06
MARKOUT32.0秒32回0.06秒
MARKOUT41.3秒16回0.08

==========


さて、Casio Basic で作った MARKOUTx と同様のプログラムを Casio SDK を使ってC言語でアドインを作ってみました。

 ⇒ アドインのダウンロード: markout3.zip 

ダウンロードした圧縮ファイルに、含まれる markout3.g1a がアドインファイルです。これを fx-9860GII に添付されているPCリンクソフト FA-124 Ver 2.04 を使って fx-9860GII へ転送します。詳しい操作は、FA-124 Ver 2.04 の取扱説明書をご参照ください。

add-in icon markout3 
[MENU] (MAIN MENU) から [MArK 3] アイコン を選び [EXE] キーで起動すると、

add-in startup markout3 
F1: MarkOut Dot
F2: MarkOut Line
F3: MarkOut Thick Line


と表示されます。

[F1] は、ピクセルごとに、順に LCD へ転送して描画します。
[F2] は、水平な線ごとに、順に LCD へ転送して描画します。
[F3] は、水平な線を2本ごとに、順に LCD へ転送して描画します。

add-in result markout3 
画面の下半分を塗りつぶしたとことで、所要時間を表示します。


その結果は、Casio Basic と同じ傾向になります(速度自体は圧倒的に速いのですが...)。同じ傾向を示すので、グラフィックス描画コマンドによる速度の違いは、LCD転送の回数の違いであることが確かめられました。Casio Basic と Add-In のC言語の言語の違いはあっても、LCD へのデータ転送がグラフィックス描画の処理速度を決めているわけです。

グラフィックス描画を速くしたい時は、LCD への転送回数を減らす工夫がポイントになることが分かります。



今回のまとめ

グラフィックス画面
  • グラフィックス コマンドの出力のためのグラフィックス画面とテキスト出力のためのテキスト画面があって、これらは別のもの。
  • グラフィックス コマンドとテキスト出力を1つの画面で行うことはできない。
  • グラフィックス画面は、全てのプログラムで共用される。
グラフィックス画面消去
  • グラフィックス画面消去には、ClrGraph コマンドを使う。
  • グラフィックス画面上の描画は、ClrText や Cls を実行しない限り、残っている。
デフォルト座標系
  • 座標系を指定しなければ、論理座標系が使われる。
グラフ設定コマンド
  • グラフ設定コマンドで、座標軸、グリッド、X, Y ラベル をグラフィックス画面の背景として On / Off する。
  • 座標値表示 On / Off は、Plot コマンドが入力待ちの時に有効になる(Plot コマンドと密接な関係)。
グラフィックの描画速度がコマンドによって異なる
  • fx-9860GII でも、コマンドによっては高速なグラフィックス出力が可能な場合がある。
  • グラフィックス描画データは、一旦VRAMへ送られ、さらにLCDへ転送されて描画が行われる。
  • グラフィクス描画は、主にLCD転送速度で決まる。
  • グラフィックス描画を速くするには、LCD転送回数を減らす工夫が有効になる。


今回使ったグラフィックス コマンド
  • ClrGraph
  • Horizontal
  • Vertical
  • CoordOn / CoordOff
  • GridOn / GridOff
  • AxesOn / AxesOff
  • LabelOn / LabelOff
  • ViewWindow
  • PlotOn
  • F-Line
  • SketchThick




つづく...

Casio Basic入門G03 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、グラフィックス, プログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ


テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門49

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

2015/04/17
修正 2017/08/16

 4. CasioBasicを使ってみる(続き)

Chapter 8 - 初級

前回: Casio Basic入門48 を見る


◆ Chapter 7 の目標: Basic コマンドを使ってみる

前回で、fx-9860GII 専用入力ボックスの準備が整いました。今回は、残りの移植作業を進めます。

移植前の fx-5800P 用プログラムを再掲載します。変更する部分を赤文字で示しています。

fx-5800P:温度換算プログラム TEMP CONV
0→A
While 1


Cls
"1:      °C" (スペース11個)
"2:      °F" (スペース11個)
"3:      K"  (スペース12個)
If A:Then
Locate 4,1,C
Locate 4,2,F
Locate 4,3,K
IfEnd
Locate 13,1,"°C"
Locate 13,2,"°F"
Locate 13,3," K"
Locate 1,4,"<EXIT>"
Locate 11,4,"<FMLA>"

-1→M
Do
Getkey→L
LpWhile L=0
L=35⇒1→M
L=36⇒2→M
L=37⇒3→M
L=74⇒4→M
K=73⇒Break

Locate 1,4,"        " (スペース16個)
If M=1:Then
4→X:1→Y:9→D:2→E
Prog "IN":Z→C
C(9÷5)+32→F
C+273.15→K
1→A
Else If M=2
Then
4→X:2→Y:9→D:2→E
Prog "IN":Z→F
5(F-32)÷9→C
C+273.15→K
1→A
Else If M=3
Then
4→X:3→Y:9→D:2→E
Prog "IN":Z→K
K-273.15→C
C(9÷5)+32→F
1→A
Else If M=4
Then
Cls
Locate 2,1,"C = 5(F-32)÷9"

Locate 2,2,"F = (9÷5)C+32"
Locate 2,3,"K = C+273.15"

Locate 11,4,"<EXIT>"
While Getkey≠73
WhileEnd
While Getkey
WileEnd
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd
Cls
Locate 7,2,"BYE!"



新世代 Casio Basic は fx-5800P だけでなく、他のグラフ関数電卓にも搭載されています。そこで、今回は fx-5800P 用に作った温度換算プログラムを fx-9860GII に移植することにします。

Chapter 8-8
fx-9860GII へプログラムを移植する


新世代 Casio Basic は、機種間の互換性は高いのですが、移植するにあたって、幾つかの制限があります。

fx-5800P から fx-9860GII への移植時に互換性の無いもの

出力" "(出力命令詳細動作がかなり異なる
(出力)命令fx-9860GII では -DISP- 表示にブロックされる
Cls コマンドfx-9860GII では ClrText コマンドに置き換える
入力(入力)命令fx-9860GII では ?A と言う記法が使えない
Getkey コマンドキーコードが全く異なる
変数配列変数fx-9860GII では 配列変数が無い
行列記法が異なる
その他キー同じキーが必ずしも無い
関数記法が異なることがある
プログラム名fx-9860GII では 8文字以下

" " (出力)命令は、表示行の全てを上書きします。同じ行に 先に Locate コマンドで表示してあると、それを上書き消去してしまいます。表示行を " " 命令だけで表示する場合のみ、互換性があります。

(出力)命令
-DISP- と言う表示で1行占有される。先にLocate コマンドで表示された1行が -DISP- で完全に上書きされ、画面設計が潰されます。

?(入力)命令
?A と言う記法が使えず、?→A のみが使えます。?A と書くと、変数 A に入っている値を表示した上で、そのままで良ければ[EXE] で確定できる付加機能が得られ、使いやすいプログラムが作れます。fx-9860GII ではこの機能を使えず、?→A を書くしかありません。

Cls
fx-9860GII では ClrText と書き換えます。機能は全く同じなので書き換えるだけで使えます。
[2017/08/16 修正] fx-9860GII の Cls は グラフィックス画面の消去のみを行います。というのも、グラフィックス画面の消去コマンドには ClrGraph もありますが、これは同時に座標系をデフォルトの論理座標系に変更します。Cls は座標系の変更は行わずにグラフィックス画面の消去のみを実行します。

Getkey
キーコードが全く異なるので、キーコードを変更します。Getkeyコマンド自体の動作は全く同じです。

配列変数
fx-9860GII には無いので、行列に置き換えれば使えます。

行列
扱う際の書式が一部異なるので、そこを修正すれば使えます。

キー
同じキーが無いことがあります。

関数
関数の記法が一部異なります。

ファイル名
fx-5800P は12文字以内、fx-9860GII は 8文字以内。


旧来の命令は、Basicコマンドほど互換性が高くなく、どうやっても同じ動作を実現できないことがあります。詳しくは、下記を参照してください。
 ⇒ fx-9860GIi への移植 - 厄介な旧来の命令
 ⇒ fx-9860GII への移植 - 素因数分解
 ⇒ fx-9860GII への移植 - ピタゴラス数

一方、Basic コマンドは、適切な変更を行えば、100%の移植が可能です。


温度換算プログラム TEMP CONV について言えば、

 ・ Getkey使用の際して、キーコードを変更する。
 ・ ClsClrText に変更する。
 ・[FMLA] キーが無いので、他のキーに変更する。
 ・ ファイル名 TEMP CONV を8文字以内に変更する。

先ずはこの程度の変更で、同じ動作を行うプログラムとして移植できます。上のプログラムコードで赤文字で示した部分が、移植に際して変更が必要です。

なお、Chapter 7 で作ったプログラムは、?命令の機能が異なるので、100%同じ動作をさせる移植は不可能です。fx-9860GII などのグラフ関数電卓への将来の移植を考える場合は、旧来の命令はできるだけ使うべきではありません。



キーコードの変更

TEMP CONV で使うキーコードについて、fx-5800P と fx-9860GII の違いをまとめます。

キーコード
キーfx-5800Pfx-9860GII
[1]3572
[2]3662
[3]3752
[EXIT]7347
[FMLA]74---
[VARS]---58

計算式を表示させるためにfx-5800P では [FMLA] キーを利用しましたが、fx-9860GII にはこのキーは無いので、変わりに [VARS] キーを使うことにします。

TC10-9860GII 

[VARS] キーは [EXIT] キーの左上にあって、互いに近いので、使いやすいと思います。


Cls → ClrText の変更

単に書き換えるだけでOK.。


ファイル名の変更

TEMP CONV は9文字なので、8文字以内にするためにスペースを取って TEMPCONV に変更する。



以上の変更を反映させると、以下のプログラムになります。

fx-9860GII:温度換算プログラム TEMPCONV
0→A
While 1


ClrText
"1:      °C" (スペース11個)
"2:      °F" (スペース11個)
"3:      K"  (スペース12個)
If A:Then
Locate 4,1,C
Locate 4,2,F
Locate 4,3,K
IfEnd
Locate 13,1,"°C"
Locate 13,2,"°F"
Locate 13,3," K"
Locate 1,4,"<EXIT>"
Locate 11,4,"<VARS>"

-1→M
Do
Getkey→L
LpWhile L=0
L=72⇒1→M
L=62⇒2→M
L=52⇒3→M
L=58⇒4→M
K=47⇒Break

Locate 1,4,"        " (スペース16個)
If M=1:Then
4→X:1→Y:9→D:2→E
Prog "IN":Z→C
C(9÷5)+32→F
C+273.15→K
1→A
Else If M=2
Then
4→X:2→Y:9→D:2→E
Prog "IN":Z→F
5(F-32)÷9→C
C+273.15→K
1→A
Else If M=3
Then
4→X:3→Y:9→D:2→E
Prog "IN":Z→K
K-273.15→C
C(9÷5)+32→F
1→A
Else If M=4
Then
ClrText
Locate 2,1,"C = 5(F-32)÷9"

Locate 2,2,"F = (9÷5)C+32"
Locate 2,3,"K = C+273.15"

Locate 11,4,"<EXIT>"
While Getkey≠47
WhileEnd
While Getkey
WileEnd
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd
Cls
Locate 7,2,"BYE!"




これを実行してみます。

fx-9860GII の電源を入れ、[MENU] キーで MAIN MENU 画面を表示;

TC10-MainManu_1 

矢印キーで PRGM アイコンを選択;

TC10-MainMenu_2 

そして [EXE] キーを押すと Program List が表示されます。

ProgramList 

矢印キーでカーソルを移動させ、TEMPCONV を選択

TC10-ProgramList 

[EXE] キーか [F1] (EXE) を押すと、プログラムが起動します。

TC10-Main 

なんだか間の抜けた感じですね。後で、それらしくなるように表示を変更することにします。先ずは動作確認をします。

[1] キーで、入力ボックス起動

TC10-[1] 

摂氏 -40 を入力し、

TC10-Input-40 

[EXE] で入力確定すると、換算結果が表示されます。

TC10-Converted 

換算は正常のようですね。では、[VARS] キーを押して計算式を表示させてみます。

TC10-Dormula_1 

では、[EXIT] キーでメイン画面へ戻ります。念のため、[EXIT] キーを押っ放しにしてみてください。

何も画面変化がなければ正常です。では [EXIT] キーを離してみると、

TC10-Converted 

メイン画面に戻りました。

プログラムを終了させるために、[EXIT] キーを押すと、

TC10-Quit_Bye 

正常終了の画面が現れます。ここで、[EXIT][AC][EXE] のいずれのキーを押しても、Program List 画面に戻ります。

TC10-ProgramList 


これで、機能面では正常であることが確認できました。



さて、間抜けな感じの表示をなんとかしたいと思います。

fx-9860GII 用の画面をどのようにするかは、それぞれ好みがあると思いますが、ここでは以下のような画面にしようと思います。

TC10-Main_2 

TC10-Formula\2 

TC10-Quit_Bye_2 

先ずは、画面表示変更に挑戦してみてください。次回は、この画面に変更する方法を紹介します。







つづく...

Casio Basic入門50 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ



 



keywords: fx-5800PCasioBasic、入力ボックス, プログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ




テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門48

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

2015/04/10
修正 2017/08/16

 4. CasioBasicを使ってみる(続き)

Chapter 8 - 初級

前回: Casio Basic入門47 を見る


◆ Chapter 8 の目標: Basic コマンドを使ってみる

fx-5800P 用に 温度換算プログラムを作りました。

fx-5800P:温度換算プログラム TEMP CONV
0→A
While 1


Cls
"1:      °C" (スペース11個)
"2:      °F" (スペース11個)
"3:      K"  (スペース12個)
If A:Then
Locate 4,1,C
Locate 4,2,F
Locate 4,3,K
IfEnd
Locate 13,1,"°C"
Locate 13,2,"°F"
Locate 13,3," K"
Locate 1,4,"<EXIT>"
Locate 11,4,"<FMLA>"

-1→M
Do
Getkey→L
LpWhile L=0
L=35⇒1→M
L=36⇒2→M
L=37⇒3→M
L=74⇒4→M
K=73⇒Break

Locate 1,4,"        " (スペース16個)
If M=1:Then
4→X:1→Y:9→D:2→E
Prog "IN":Z→C
C(9÷5)+32→F
C+273.15→K
1→A
Else If M=2
Then
4→X:2→Y:9→D:2→E
Prog "IN":Z→F
5(F-32)÷9→C
C+273.15→K
1→A
Else If M=3
Then
4→X:3→Y:9→D:2→E
Prog "IN":Z→K
K-273.15→C
C(9÷5)+32→F
1→A
Else If M=4
Then
Cls
Locate 2,1,"C = 5(F-32)÷9"

Locate 2,2,"F = (9÷5)C+32"
Locate 2,3,"K = C+273.15"

Locate 11,4,"<EXIT>"
While Getkey≠73
WhileEnd
While Getkey
WileEnd
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd
Cls
Locate 7,2,"BYE!"


fx-9860GII への移植で変更するところを赤文字で示しています。



Chapter 8-7
fx-9860GII 用入力ボックスを準備する

新世代 Casio Basic は fx-5800P だけでなく、他のグラフ関数電卓にも搭載されています。そこで、fx-5800P 用に作った温度換算プログラムを fx-9860GII に移植してみます。

新世代 Casio Basic は、機種間の互換性は高いのですが、移植するにあたって、幾つかの制限があります。

fx-5800P から fx-9860GII への移植時に互換性の無いもの

出力" "(出力命令詳細動作がかなり異なる
(出力)命令fx-9860GII では -DISP- 表示にブロックされる
Cls コマンドfx-9860GII では ClrText コマンドに置き換える
入力(入力)命令fx-9860GII では ?A と言う記法が使えない
Getkey コマンドキーコードが全く異なる
変数配列変数fx-9860GII では 配列変数が無い
行列記法が異なる
その他キー同じキーが必ずしも無い
関数記法が異なることがある
プログラム名fx-9860GII では 8文字以下

" " (出力)命令は、表示行の全てを上書きします。同じ行に 先に Locate コマンドで表示してあると、それを上書き消去してしまいます。表示行を " " 命令だけで表示する場合のみ、互換性があります。

(出力)命令
-DISPー と言う表示で1行占有れ、Locate コマンドによる画面設計を潰されます。

?(入力)命令
?A と言う記法が使えず、?→A のみが使えます。

Cls
fx-9860GII では ClrText と書き換えます。機能は全く同じなので書き換えるだけで使えます。
[2017/08/16 修正] fx-9860GII での Cls はグラフィックス画面の消去のみを行います。ちなみに ClrGraph もグラフィック画面の消去ですが、画面消去と同時に座標系を デフォルトに論理座標系に戻します。これに対して Cls は座標系は変更せずグラフィックス画面の消去のみを実行します。

Getkey
キーコードが全く異なるので、キーコードを変更します。Getkeyコマンド自体の動作は全く同じです。

配列変数
fx-9860GII には無いので、行列に置き換えれば使えます。

行列
扱う際の書式が一部異なるので、そこを修正すれば使えます。

キー
同じキーが無いことがあります。

関数
関数の記法が一部異なります。

ファイル名
fx-5800P は12文字以内、fx-9860GII は 8文字以内。


旧来の命令は、互換性が低く、移植時に思わぬ仕様違いから混乱するかも知れません。旧来の命令を使う限り、どうしても fx-5800P と同じ動作を実現できないこともあります。詳しくは、下記を参照してください。
 ⇒ fx-9860GIi への移植 - 厄介な旧来の命令
 ⇒ fx-9860GII への移植 - 素因数分解
 ⇒ fx-9860GII への移植 - ピタゴラス数

一方、Basic コマンドは、適切な変更を行えば、100%の移植が可能です。

さて、温度換算プログラム TEMP CONV では、e-Gadget オリジナルの入力ボックスを利用しています。先ずは、fx-5800P 用の入力ボックスではなくて、fx-9860GII を利用する必要がありまず。

今回は、その準備をします。



fx-5800P から fx-9860GII への入力ボックスの移植は、以下で紹介しています。
 ⇒ Casio Basic入門37

また、プログラムライブラリにも収録しています。
 ⇒ fx-9860GII プログラムライブラリ - 入力ボックス
 
fx-9860GII は、パソコンとのリンクができる点が、fx-5800P よりも便利な利点です。fx-9860GII をパソコンと繋ぎ、Casio Basic プログラムを 拡張子 g1m のファイルとして、パソコンに転送できますし、その逆もできます。

上記のプログラムライブラリから、入力ボックスをパソコンにダウンロードしてから、fx-9860GII へ転送できるので、自分で入力する必要はなく、入力間違いの危険性もありません。

今回の温度換算プログラムでは、IN 2.1G for fx-9860GII を使います。これをダウンロードしてください。プログラム名 IN です。

プログラム名は、fx-5800P と同じなので、入力ボックスが fx-9860GII に有れば、温度変換プログラムで 入力ボックスを使う部分は、変更なしで動作します。

念のために、以下のテストプログラムを入力して、転送した入力ボックス IN 2.1G for fx-9860GII の動作確認をしてみてください。

プログラム TEST
0→Z
"1:"
"2:"

While 1

-1→M
Do
Getkey→K
LpWhile K=0
L=72⇒1→M
L=62⇒2→M

Locate 1,4,"           " 
(スペース21個)

If M=1:Then
3→X:1→Y:10→D:2→E
Prog "IN"
Else If M=2
Then
3→X:2→Y:9→D:1→E
IfEnd:IfEnd

Locate 1,4,"Z="
Locate 3,4,Z

WhileEnd


==========

正しく動作しますか?

fx-9860GII はCPUが速いので、より快適に入力ボックスを使えます。



さて、冒頭に記載したプログラムで、赤文字で示した部分が、fx-9860GII への移植の際に変更が必要なところです。

 ・ Getkey使用に際して、キーコードを変更する。
 ・ ClsClrText に変更する。
 ・[FMLA] キーが無いので、他のキーに変更する。
 ・ ファイル名 TEMP CONV を8文字以内に変更する。

これだけで、同じ動作を行うプログラムとして移植できます。

次回までに、移植を試してみてください。それほど難しくないと思います。




つづく...

Casio Basic入門49 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ



 



keywords: fx-5800PCasioBasic、入力ボックス, プログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ




テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic で圧力換算プログラム

 
2017/08/15


Casio Basic で圧力換算プログラム - fx-5800P, fx-9860GII, fx-CG20/50

画像と文章が重なっている場合は、ページの再読込を行ってください(最近この問題が発生しています)。

圧力の概念圧力は、単位面積あたりの力だと定義されていて、具体的には力を面積で割って圧力の値が得られる。


左図はネットで見つけた画像 (F_Master's Eye)を使わせて貰っているが、国際単位系の Pa (パスカル) で圧力を説明したものだ。

ところが、実際の圧力の単位は、地域や技術分野に応じて、今でも異なった単位が普通に使われていて、私にとっては暗算で換算するのがとても厄介だ。

というのも、アメリカでは psi (ポンド/平方インチ)、イギリスなどヨーロッパでは bar (バール)、日本やアジアでは国際単位として推奨されている Pa (パスカル)が使われることが多い。また分野が変われば、atm (気圧)、mmHgmmH2O など、国際単位系ではなくて昔からの単位が未だに使われている。圧力単位ほど混乱しているものは無いと思う。

国内外の様々な分野の人達と技術的な話をしている時、好き勝手な圧力単位で話をするものだから、チョット待った!と言いたくなることが有る。パソコンを使う余裕がないことが多く、このような時こそプログラム電卓の本領発揮だと思う。

そこで、Casio Basic で自作して常用している圧力換算プログラムを紹介する。



各種圧力の換算式

最初に fx-5800P 用プログラムを作った。このプログラム電卓の画面は4行表示なので、換算する圧力を psiKPabaratm の4種類を選んだ。換算式の導き方は様々あるが、結果は1つだ。今回は Kgf/m2 を基準の単位として、上記4つの単位間の換算式を作った。

1. psi (変数 P)
1 psi = 1 ポンド/インチ2 = 453.59237 (gf) / (2.54cm)2 = 70.30695796 (gf/cm2) = 703.0695796 (Kgf/m2)
変数 S =703.695796Kgf/m2P (psi) としたときG =PSKgf/m2
変数 T = S/U =6.894757293KPa
N =PS/UKPa
=0.068947573bar
B =PT/Vbar
=0.068045964atm
A =PT/Watm

2. KPa (変数 N)
1 KPa = 1000 (N/m2) = 1000/980665 (Kgf/m2)
変数 U =101.9716213Kgf/m2N (KPa) としたときG =NUKgf/m2
=0.145037738psi
P =N/Tpsi
変数 R =0.01bar
B =NRbar
=0.009869233atm
A =N/Watm

3. bar (変数 B)
1 (bar) = 100 (KPa)
1 Bar = 変数 V =100KPaB (bar) としたときN =BVKPa
=0.980665Kgf/m2
G =BV/UKgf/m2
=14.50377377psi
P =BV/Tpsi
=0.98692367atm
A =BV/Watm

4. atm (変数 A)
1 atm = 101.325 KPa
1 atm = 変数 W =101.325KPaA (atm) としたときN =AWKPa
=0.144118026Kgf/m2
G =AW/SKgf/m2
=14.69594878psi
P =AW/Tpsi
=1.01325bar
B =AW/Vbar

4つの単位で換算した値を P (psi)、N (KPa)、B (bar)、A (atm) とし、計算を分かり易くするために 変数 STUVW を用いる。変数 GKgf/m2 単位を基準に考えるためのもので、プログラムでは使わない。

fx-5800P で作ったプログラムを fx-980GII や fx-CG20 / CG50 にも移植し、どのプログラム電卓でも圧力換算ができるようにしている。


プログラムの概略

表 示
画面表示を以下のようにする。
1.psi:
2.KPa:
3.bar:
4.atm:

構 造
プログラムの構造は以下のようにする。

[初期設定]

[変数の初期化]

[初期の画面表示]
 (fx-5800P と グラフ関数電卓では記述が異なる)


While 1

 [キー入力取得] (fx-5800P とグラフ関数電卓ではキーコードが異なる)

 [換算計算]


 [画面表示の更新]
 (fx-5800P とグラフ関数電卓では記述が異なる)


WhileEnd


[プログラム終了時の画面表示]
 (fx-5800P とグラフ関数電卓では記述が異なる)


なお、当ブログオリジナルの汎用サブルーチン:入力ボックス INP を利用する。
fx-5800P 用入力ボックス
fx-9860GII / fx-CG20/50 用入力ボックス


機種別のプログラム・トピックス

fx-5800P 用プログラム
fx-5800P では小文字のアルファベットが使えないので、関数や定数をうまく利用して小文字を表現する。

Locate 1,1,"1.psin("
Locate 6,1,": "
Locate 1,2,"2.KPao"
Locate 6,2,":"
Locate 1,3,"3"
Locate 2,3,"Abs("
Locate 2,3,"."
Locate 4,3,"ao"
Locate 5,3,"re"
Locate 6,3,":"
Locate 1,4,"4:atm:"


1.psi: の入力方法
- "1." ⇒ [1] [.] 
- "" ⇒ [FUNCTION] [1] (1:MATH) [▼] [▼] [▼] [4] (4:p)
- "sin(" ⇒ [sin]
- "" ⇒ [SHIFT] [√□] (:) 

2.psi: の入力方法
- "2.KP" ⇒ [2] [.] [K] [P]
- "ao" ⇒ [FUNCTION] [4] (CONST) [5] (5:ao)
- ":" ⇒ [SHIFT] [√□] (:)

3.bar: の入力方法
- "" ⇒ [3]
- "Abs(" ⇒ [FUNCTION] [1] (MATH) [▼] [1] (1:Abs)
- "" ⇒ [.]
- "ao" ⇒ [FUNCTION] [4] (CONST) [5] (5:ao)
- "re" ⇒ [FUNCTION] [4] (4:CONST) [▼] [3] (3:re)
- "" ⇒ [SHIFT] [√□] (:)

4.atm: の入力方法
- "4." ⇒ [4] [.]
- "atm" ⇒ [FUNCTION] [4] (CONST) [▼] [▼] [ ▼] [▼] [8] (8:atm)

具体的なプログラムは、以下を参照;
プログラムライブラリ - 圧力換算 (fx-5800P)


fx-9860GII、fx-CG20/50 用プログラム
これらのグラフ関数電卓では、小文字、大文字の両方のアルファベットが使えるので、fx-5800P のような画面表示での工夫は不要で、簡単に記述できる。また、キーコードが fx-5800P と異なるので、それに合わせて変える。グラフ関数電卓 fx-9860GII、fx-9860GII SD、fx-CG10、fx-CG20、fx-CG50 などのキーコードは完全に同じなので完全互換のプログラムになる。

なお、fx-5800P のテキスト画面は4行16桁であるが、これらのグラフ関数電卓では7行21桁と広いことを活かして、見やすく使いやすくするために画面表示を変える価値はあると思う。

具体的なプログラムは、以下を参照;
プログラムライブラリ - 圧力換算 (fx-9860GII、fx-CG20 / CG50)






応援クリックをお願いします。励みになるので..
にほんブログ村 IT技術ブログ 開発言語へ


 

keywords: CasioBasicプログラム電卓、fx-5800P、fx-9860GII、fx-CG20、fx-CG50
リンク集 | ブログ内マップ

テーマ : プログラム関数電卓
ジャンル : コンピュータ

プログラムライブラリ - 圧力換算 (fx-9860GII、fx-CG20 / CG50)

プログラムライブラリ
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

2017/08/15

PConvert (圧力換算プログラム) - fx-9860GII、fx-CG20 / fx-CG50

著作権者

やす (Krtyski)
[当ブログ管理人]



対応機種

Casio fx-9860GII、fx-CG20 / fx-CG50 (fx-FD10 Pro でも使えると思われます)

Casio fx-5800P用は こちら



プログラムの使い方

圧力単位 psi、KPa、bar、atm の間での換算を行う。

例えば、以下の画面表示の時、

=Pressure Coverter=
1.psi:15
2.KPa:103.3213
3.Bar
:1.034213
4.A
tm:1.020689

<EXIT>:Quit


同じ圧力を4つの異なる単位で表示している。

ここで、10 bar の他の単位での換算値を知るには、[3] キーを押して

=Pressure Converter=
1.psi:15
2.KPa:103.3213
3.Bar:>>>>>>>>
4.Atm:1.020689

<EXIT>:Quit

bar 単位に 10 を入力すると、以下のように各単位での換算値が表示される。

=Pressure Converter=
1.psi:145.0377
2.KPa:1000
3.Bar:10
4.Atm:9.869232

<EXIT>:Quit

プログラムを終了するために [EXIT] キーを押すと、Bye! と表示してプログラムが終了する。



プログラムの説明

Casio Basic で圧力換算プログラム を参照



プログラムファイル

※ プログラムファイル: g1m ファイル (fx-9860GII) のダウンロード
※ プログラムファイル: g3m ファイル (fx-CG20_CG50) のダウンロード




応援クリックをお願いします。励みになるので..
にほんブログ村 IT技術ブログ 開発言語へ


 

keywords: CasioBasicプログラム電卓、圧力換算、fx-5800P、fx-9860GII、fx-CG20、fx-CG50

テーマ : プログラム関数電卓
ジャンル : コンピュータ

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR