TI-Pythonでプログラミング

# はじめに

TI-84 Plus CE Python に組込みの TI-Python でのプログラミング方法について紹介します。題材として、matplotlib 風のグラフ描画ライブラリ ti_plotlib ライブラリのデモを作成します。

# TI-Python のエディタでプログラミング

TI-Python に入ると、次のようなファイル一覧画面になります。

![Capture14-1703296636187.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/c5211b77-47bc-5196-599b-414d85d44c78.png)

ここで、画面下の `New` と表示されているところの直下のキー [zoom] を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/25b2b58a-29d2-ad09-f922-15c3118ed5ec.png)

ファイル名を入力します。ファイルシステムの制約を受けて、８文字までになります。ファイル名を押したら `Ok` 直下のキー [graph] を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/a499c99f-4a0b-f63c-949a-f68068daffe9.png)

以下の編集画面になるので、これでプログラムを入力していきます。ファイルには自動的に入力が反映されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/bfcfdd55-1a3b-bd2a-4338-c1668e6c5bb8.png)

電卓のキーでのプログラム入力はけっこう大変なので、入力支援ツールがあります。画面下の `Fns...` 直下のキー [y=] を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/4d6cf1eb-f571-6a1a-779c-300b757b4f83.png)

ti_plotlib を使ったプログラムを作るので `Modil` の一覧から `ti_plotlib...` を選びます。 

![Capture16-1703297533194.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/f58b833c-f333-7bc9-74d7-fbdb2f7d440e.png)

ti_plotlib に関連した import や関数の一覧が表示されるので、入力したいものを選びます。

![Capture17-1703297662500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/b0f8b3eb-759b-2093-9780-17103564a194.png)

すると、編集画面に反映されます。

![Capture18-1703297689518.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/ac37ce65-e38b-6140-d88e-8bc65e35ccef.png)

これを活用すると、かなり入力が軽減されます。

# PCでプログラミングしてファイルの転送

そうはいっても、プログラムが長くなってくると、電卓キーでの入力が辛くなってきます。そういうときには、PC 側で編集して電卓に転送するという手もあります。

TI-84 Plus CE Python と PC の間でファイルのやりとりをするには、[TI Connect CE](https://education.ti.com/en/products/computer-software/ti-connect-ce-sw)をダウンロードしてきてインストールします。TI Connect CE にはファイルのやりとりのほかに、画面キャプチャや TI-BASIC の編集機能があります（残念ながら TI-Python の編集機能はありません）。

起動すると、電卓と USB ケーブルで接続しろとの指示がでます。USBケーブルは TI-84 Plus CE Python に付属しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/b9eabad6-e5f5-d4ca-a518-9d8bf9f55a94.png)

接続すると、以下の画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/bf2c52d7-64eb-5c5e-f31d-42f05084fa0e.png)

PCにファイルを転送するには、画面左のアイコンからファイルを選んで、表示されている電卓内ファイル一覧から目的のものを選んで、画面上の左から２番目のもの(PCに→が向いているアイコン)をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/2b2fbbef-a969-83d9-1440-72c505b7852d.png)

PCに転送してきた Python スクリプトは普通のテキストなので、好きなエディタで編集します。

PCからファイルを電卓に転送するには、画面上の一番左のアイコン(PCから→が出ているもの)をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/62c34e76-ad96-140b-9918-c2335e9a5129.png)

転送するファイルを選択すると、次の画面で電卓上のファイル名や置換するかどうかを指定します。

![スクリーンショット 2023-12-23 10.14.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/acf843ad-c37c-d004-7be4-2dd548a98443.png)

# できたプログラムの実行

プログラムを実行するにはファイル一覧画面の `Run` 直下のキー [y=] を押すか、エディタ画面の `Run` 直下のキー [trace] を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/0547e641-62b1-7bf3-d39b-640b8aec32e9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/ee8175c9-4eba-7dc9-34cd-881d11904613.png)

今回、入力したのは次のスクリプトです。

```Python
import math
import ti_plotlib as plt

def graphe(f, a, b, n):
  lx=[a+i*(b-a)/n for i in range(n+1)]
  ly=[f(x) for x in lx]
  plt.cls()
  plt.window(a-1, b+1, min(ly)-1, max(ly)+1)
  plt.color(0, 0, 0)
  plt.axes('on')
  plt.grid(1, 1, 'dot')
  plt.color(0, 0, 255)
  plt.labels('x', 'y', 12, 1)
  plt.color(0, 255, 0)
  plt.plot(lx, ly, 'x')
  plt.show_plot()
graphe(math.sqrt, 0, 16, 17)
```

Run の方法は　単純に REPL 経由で import しているだけです。

![Capture1-1703300688576.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/0c936497-4428-09b7-4787-5f6fa483982b.png)

実行が成功すると、次のようになります。

![Capture4-1703300599669.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/53c0aa6e-ca9c-6562-7e31-8b79459ad609.png)