すてにゃん氏の技術ぶろぐ

技術っぽいこと書きます

はじめてのプログラムはグラフ電卓で書きました

みなさんは電卓使ったことありますか?電卓でグラフを書いたことは?プログラムは?この記事ではグラフ電卓についてお話したいと思います。

グラフ電卓とは?

グラフ電卓とはいわゆる関数電卓にグラフの描画機能やプログラミング機能がついてたりする高機能な電卓のことです。僕は高校〜大学の間このグラフ電卓というものを日常的に使っていました。アメリカの高校ではグラフ電卓を数学の授業で利用したりするようです。方眼紙などに手書きでグラフを書いたりする手間が省けるのでとても楽チンです。グラフ電卓を使う主な理由はこのグラフ描画機能だと思いますが、高校時代の僕はプログラミング機能に注目していました。毎日ポケットにグラフ電卓2つ、関数電卓1つを入れて歩き回ってました。

プログラミング機能の紹介

プログラミングなんて学んだことなくて完全に自己流でしたが TI-84 Plusの TI-BASIC という言語でずっとコード書いてました。電卓の小さい画面で。
www.amazon.co.jp

ここからプログラムの例など書いていきますが今手元にTI-84 Plusがないので記憶を頼りに書いていきます。

Hello, world!

Hello, world!のコードはこんな感じです。

: ClrHome
: Disp "HELLO, WORLD!"

これを実行したらこんな画面になります。

HELLO, WORLD!
          Done

ClrHomeで画面をクリアして、Dispで表示。プログラムが終了したら最後にDoneって勝手に表示されます。使用できるアルファベットは大文字しか存在しないのでHELLO, WORLD! になってます(αとか確か存在してて使えたと思うのでそういう記号を使う手もあります)。
なお、Outputというのを使って表示することも可能です。

: ClrHome
: Output(1, 1, "HELLO, WORLD!")

Outputの場合は何列目の何行目あたりに表示するか指定できます。TI-84 Plusの場合は確か8行16列というサイズ感だったので、それを参考に中央揃えとか頑張ってました。

プログラムが終了するたびにDoneが表示するのはなんだかかっこわるいので、Doneを画面外に追いやるという裏技(?)も使ってた。

: ClrHome
: Output(1, 1, "HELLO, WORLD!")
: Output(8, 16, "")

このように画面右下に""を表示することによってDoneがうつらなくなります。これでようやく自分のプログラムもプロっぽくなったと子供すてにゃんは思いました。

あとはどうでもいいですが、かっこやクオーテーションは必ず閉じなければならないというわけではないので

: Output(1, 1, "HELLO, WORLD!

って書くのもおk。

条件分岐、ループ、Goto

他の言語にもあるような機能はTI-BASICでもありました。条件分岐(If-Then-End文など)、ループ(For-End・While-Endなど)、Goto(LblとGoto)などなど。prgmというのを使えば別のプログラムを呼び出すのができるのですが、実は自分自身を再帰的に呼ぶということも可能ということを最近知りました。高校生の頃の僕はそれは使いこなせていなかったですね。

クラスはおろか、関数の定義もできなかったと思うので僕はひたすらGotoしていました。しかも電卓でプログラムを書く場合は一度に8行までしか表示できないのでスクロールも大変でした。パソコンにつなげてパソコンでコードが書けるらしいと数学の先生から聞いたが結局ずっと電卓でやってました。

タイマー

sleep みたいなものは僕の知る限りなかったので、タイミングを決めるためだけに、For-End文を使っていました。

: For(A, 1, 1000
: End

一見なにもしないプログラムですが、実行するのにある程度の時間がかかるので、この1000の部分を必要に応じて大きくしたり小さくしたりして実行していい感じのタイミングをチェックしていました。
今検索してみると、どうやら TI-84シリーズだと startTmr や checkTmr というコマンドがあるらしい、知らなかった。

Code Timings - TI-Basic Developer

悪質なプログラム

電卓ならではの悪質なプログラムを今でも覚えています。そのひとつがこういうのでした。

: ClrHome
: While 1
: Input "", X
: Disp X+1
: End

このプログラムを実行した状態で持ち主に数学のテスト前に返すと…あとはわかりますね。
ぱっと見普通の電卓の状態と区別つかないのですが、普通に使ってると全ての計算の答えが1多くなってしまうのです。

一応電卓のONボタンを押せば、プログラムを終了しますか?的な画面になるのでそこから脱出できます。(だいたい無限ループで困ったときとかはこうして脱出してました)。

ただ世の中にはONをブロックするプログラム*1も存在していてそういう場合は電池を抜くしかないっぽいです[要出典]

友達のグラフ電卓へのいたずらもほどほどにしましょう!

おすすめのグラフ電卓

〜なぜかパソコンではなく電卓でプログラムが書きたいあなたへ〜
TI-84シリーズをおすすめします。

TI-84 Plusや TI-84 Plus Silver Edition が TI-83 Plus などの上位互換なので選ぶとしたら84シリーズ。どれも TI-BASICが使える。
どうやら僕が知らない間に TI-84 Plus CEと TI-84 Plus C Silver Edition というのも出ているらしい、これらはカラーの液晶になっていて、どうやらTI-BASICにも対応しているので今買うとしたらTI-84 Plus CE か TI-84 Plus C Silver Edition ですかね。

education.ti.com


〜とにかくかっこよくて高機能な電卓が欲しいあなたへ〜
TI-Nspireシリーズをおすすめします。

TI-NspireよりもTI-Nspire CASていうのがComputer Algebra Systemという謎のシステムを搭載してるので計算とかが得意っぽい。これらの後に、
TI-Nspire CX と TI-Nspire CX CASていうのが出ていて、これらは画面がカラーになってる。Nspireシリーズは84シリーズと比べてより「パソコン」らしくて、
ドキュメントを作成したり保存したり、マウスっぽいなにかがあったり、Ctrl+Sみたいなショートカットキーが使えたりとすごい。
ただプログラム機能に関しては自由度が低く、やはり電卓プログラミングクラスタとしてはTI-84シリーズを勧めたい。

education.ti.com


電卓はいいぞ!