ボリス・チェルニー、「TI-83 プラス基本プログラミング入門」(2004 年)

2026/05/05 5:28

ボリス・チェルニー、「TI-83 プラス基本プログラミング入門」(2004 年)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Boris Cherny が作成したチュートリアル「TI-83 PLUS BASIC PROGRAMMING TUTORIAL: A BEGINNERS' GUIDE v2.5」では、TI-83 Plus の習熟のための包括的な学習経路を提供しています。このチュートリアルは、シリアルケーブルやプログラムを可視化するための Emulator などの PC アプリケーションといった特定のハードウェアを必要とします。初心者は最初から読んでゲーム(例:当て推量ゲームや格闘ゲーム)などのチャレンジに挑戦するべきであり、上級ユーザーは単位換算器や行列演算などのプロジェクトのために提供されたコードを直接使用することができます。内容は基本的な入出力コマンド(DISP、OUTPUT)やロジック構造(IF/THEN、FOR/WHILE などのループ)から始め、ピクセル操作、円の描画、ネストしたループなどを含む高度なグラフィックスプログラミングへと体系的に展開します。データ処理のための不可欠なツールとして、変数、文字列、乱数の生成、リスト、行列を詳説しています。本ガイドは、円柱の面積計算やキャラクターの動きなどのプロジェクトに対する詳細な解答で終結し、マトリクスとリスト機能への探求を推奨する励ましを含んでいます。更新版(V2.5)として、貢献者を Ilya S と Tom T が認めています。また、適切なクレジットとともに修正されたプログラムの配布を許可しており、フィードバック用として連絡先メールアドレスを提供しています。

本文

TI-83 プラスプログラミング入門ガイド v2.5

著者: ボリス・チェルニー


注意事項

TI-83+ のプログラミングを存分に楽しむためには、PC 用アプリケーションとして Ti Graph Link 83+ Application を導入することをお勧めします。これにより、プログラムの可視化や作成が容易になります。

プログラミングを開始する前に、以下のアプリケーションを PC に入手することをご推奨します:

  • TI Graph Link 83+
  • 83i Viewer
  • TI Connect
  • エミュレーター

また、TI カルキュレータとコンピューターを接続するためには、黒色のシリアルケーブルまたは TI Connect コードが必要です。

本ガイドではこれらのプログラムを含めるつもりでおり、いくつかのサンプルプログラムもご用意しています。お気軽にカスタマイズして楽しんでください。ただし、インターネット上に公開したり販売したりする場合の条件は以下の通りです:

  • 元のコードを何らかの変更を加えてください。
  • ボリス・チェルニーへのクレジット(出典表記)をお願いします。

クレジット: 本チュートリアル作成に多大なご協力をいただいた皆様には心より感謝申し上げます:

  • Ilya S
  • Tom T

初心者の方へ は、必ずガイドの最初から読み進めていただき、サンプルプログラムを実行したり、挑戦問題をこなしたりすることをお勧めします。楽しくプログラミングしましょう!


目次

基礎編

  • DISP
    関数
  • OUTPUT
    関数
  • CLRHOME
    関数
  • LBL/GOTO
    関数
  • END/PAUSE
    関数
  • MENU
    関数
  • INPUT/PROMPT
    関数
  • STOP
    関数
  • 変数(VARIABLES)
  • レビュー

サンプルプログラム:

  • シリンダーの面積計算
  • カウントアップ
  • シンプルな移動

応用編

  • FOR
    関数
  • WHILE
    関数
  • 比較対照(
    FOR
    vs
    WHILE
    vs
    LBL/GOTO
  • IF
    ,
    THEN
    ,
    ELSE
    , および
    OR
    関数
  • ストリング(文字列)
  • GETKEY
    関数
  • RAND
    ,
    randInt
    ,
    iPart
    , および
    fPart
    関数
  • リスト(LISTS)
  • マトリクス
  • レビュー

サンプルプログラム:

  • 高度なメニュー画面
  • 移動ゲーム

描画機能

  • CLRDRAW
    関数
  • TEXT
    関数
  • LINE
    ,
    TANGENT
    ,
    VERTICAL
    , および
    HORIZONTAL
    関数
  • SHADE
    関数
  • CIRCLE
    関数
  • Pt-On
    および
    Pt-Off
    関数
  • ネストされたループ(nested loops)
  • 挑戦問題:
    CIRCLE
    関数を用いずに円を描画するプログラムを作成せよ。

チャレンジ編

プログラミングの基本をマスターしたところで、以下のプログラムを試作してみてください:

  • 推測ゲーム: カルキュレーターが事前に選択したランダムな数字まで、ユーザーが当てるゲーム(難易度レベル設定付き)。
  • 格闘ゲーム: 生命値、ショップ、多彩な敵キャラクター、武器、防具などを備え、グラフィックとアニメーションが可能なシステム。
  • 2 次方程式求解器: A, B, C の値を入力すると、根の個数および x 軸との交点(解)を表示するプログラム。
  • 長除法: 商全体およびあまりを出力するプログラム。
  • 変換計算機: 以下の単位変換が可能:
    • F(華氏)⇔ C(摂氏)
    • Cm(センチメートル)⇔ in(インチ)

もしご質問、コメント、あるいはフィードバックがあれば、pickledcherry668@yahoo.com までメールください。お気軽にご連絡ください!


バージョン履歴

  • V1.0: 初版(2004 年 3 月)
  • V2.0: 解説の改善、スクリーンショットの追加、初期レビューセクションの作成、初期の挑戦問題の追加
  • V2.5: 解説のさらなる改善、新しい関数の追加、より多くのスクリーンショット、ダウンロード可能なサンプル例の提供、すべての機能におけるコードの公開、操作性の向上、高度な機能の導入、レビューセクションの拡充、追加の挑戦問題

著者: ボリス・チェルニー


基礎編

DISP
関数

テキスト出力には主に 3 つの方法があります:

DISP
,
OUTPUT
, および
TEXT
。ここでは最も基本的な
DISP
を解説します。このコマンドは、画面で利用可能な次の行(上から数えて最初で文字のない行)にフレーズを表示します。

  • アクセス方法:
    PRGM
    >
    I/O
    >
    3
  • 構文: 始終にかぎりを二重引用符(" ")で囲む必要があります。

例:

:Disp "TUTORIAL"

OUTPUT
関数

コンピューターの座標平面は標準的な数学とは異なります;Y 軸は上部から始まり、X 軸は左側からです。TI-83 Plus の画面は高さが 8 クラスター(文字)、横幅が 16 クラスターです。

DISP
は重要なコマンドですが、実際のプログラミングでは
OUTPUT
を頻繁に使うことになります。「DISP」と違い、「OUTPUT」は特定の位置(座標)にテキストを出力することを指示し、自動的に改行(テキストの折り返し)を行ってくれます。

  • アクセス方法:
    PRGM
    >
    I/O
    >
    6
  • 構文: 始終にかぎりを二重引用符(" ")で囲む必要があります。

例:

:Output(3,2,"TUTORIAL")

ショートカット! 終結の括弧とクォートを省略しても問題ありません:

:Output(3,2,"TUTORIAL

CLRHOME
関数

CLRHOME
は必須のコマンドであり、現在の画面(フレーム)をクリアする際に使用されます。通常、プログラムの冒頭で
.PRGM(名前)
というプログラム名表示が上部に現れるのを消去するために最初に使われます。

  • アクセス方法:
    PRGM
    >
    I/O
    >
    8
  • ヒント: 多くのフレームの開始部分にある最初のコマンドに設定することをお勧めします。

例:

:ClrHome
:Disp "HELLO WORLD"

今回は、メインテキストの前にうっとうしい

PRGM TUTORIAL
が表示されていないことがおわかりいただけるでしょう。

LBL/GOTO
関数

LBL
コマンドはフレームにラベルを付けます(当然のことですが)。このコマンドを使うとコードが汚くなりやすいので、必要最小限に留めて使用してください;やがて必ず使うことになります。「GOTO」は指定されたフレームへ移動するために使用されます。

  • アクセス方法:
    PRGM
    >
    9
    (LBL)および
    PRGM
    >
    0
    (GOTO)

例:

:Lbl A
:ClrHome
:Output(4,2,"HELLO WORLD"
:Goto A

これはテキスト「HELLO WORLD」を点滅させて perpetual に表示し続けます;ON ボタンを押して QUIT を選択するまでです。フレームは 'A' としてラベル付けされ、テキスト「HELLO WORLD」は座標 (4,2) で表示されます。次に、計算機にはフレーム 'A' に戻ること、画面をクリア(

CLRHOME
)し、同じメッセージを再度出力すること會被指示されます。これは非常に高速に行われるため、「HELLO WORLD」という文字が点滅するだけになります。これはあまり役に立たないので、この連続ループを停止させるためのコマンドが必要です。

END/PAUSE
関数

もし

LBL/GOTO
の例のようにコマンドを入力してループが止まらなくなってしまった場合どうすればよいでしょうか?答えは、そのループの停止を示すものを入れたままにすることです。

  • END: ループを終了させるか、フレームの終了であることを示します。「FOR」、「WHILE」、「GETKEY」、「INPUT」などのループで使用されます。

  • PAUSE: 次のフレームまたはステップに進む前にユーザーが入力(ENTER キー)を待機するための「ダム(堰)」として機能します。

  • アクセス方法:

    PRGM
    >
    7
    (END)および
    8
    (PAUSE)

例:

:Lbl A
:ClrHome
:Output(4,2,"HELLO WORLD"
:Pause
:ClrHome
:End

MENU
関数

メニューはゲームの開始、終了、リストから選択など幅広く使用されます。作り方はどうすればよいでしょうか?TI カルキュレーターには、すでに「MENU」という素晴らしいコマンドが搭載されています。

  • アクセス方法:
    PRGM
    >
    C

例:

:Menu("--MENU--","BANANA",1,"ORANGE",2,"PEACH",3,"QUIT",X)

メニューには最大 7 つのアイテムしか設定できません。これは画面の高さが 8 クラスターしかないため、タイトルに 1 ライン使用されるからです。メニューでは最初の単語がタイトルであり、次に選択項目があり、それらを選択した際に移動すべきフレームが指定されます。

INPUT/PROMPT
関数

INPUT
PROMPT
は同じ結果を得るための 2 つの方法です。どちらもユーザーに対して何らかの入力(数字、文字、文章)を求められるコマンドです。

  • INPUT
    はより注意が必要で、ただ数字を入力して終わらせることはできません。
  • PROMPT
    は変数だけを収集し、すぐにループを終了できます。
  • INPUT
    は文字列(STRINGS)も収集できますが、
    PROMPT
    はできません。

後ほど、答えを事前に設定した変数と比較する方法をお教えします。これにより「変数(VARIABLES)」への導入となります;ここで変数を使う必要があります。

  • アクセス方法:
    PRGM
    >
    I/O
    >
    1
    または
    2

例:

:ClrHome
:Prompt X
:Disp X
:Pause

:ClrHome
:Input X
:Disp X
:Pause
:Stop
:End

STOP
関数

STOP
コマンドはアクティブなプロセスを強制終了します。例えば、前述の例では
STOP
を使用して変数の要求と出力のプロセスを終了させています。「FOR」ループ(後で解説)を終了させる際にもよく使われます。

  • アクセス方法:
    PRGM
    >
    F

変数(VARIABLES)

変数は毎日のように目にします;代数学、論理学、科学、幾何学などで。プログラミングは数学と論理の組み合わせであるため、変数は幅広く使用されます。数字または文字列を定義し、それを単一文字として保存するために使用されます。これはプログラマーにとって数を呼び出すことを大幅に楽にします(例えば、その数が 1,243,822,256,012,355,566,761 と仮定しましょう)。

また、変数は以前は何かしらの値があったが、現在の値が変わるような数にも使用されます。例えば、ユーザーのスコアが 0 で、それを変数 'X' に保存したとします。ゲーム中では、ユーザーが完全なボーナスを獲得したのか、部分的なスコアしか得なかったのかが分かりません。その場合、計算機には「ユーザーのスコアを変数 X として保存せよ」と指示し、以前は何であっても値は前の値に依存しないようにします(例:

X+10
,
X+100000
,
X-4
など)。

例:

:ClrHome
:250->A
:500->B
:Output(2,1,A
:Pause
:ClrHome
:Output(2,1,B
:Pause

この例では、数字 250 と 500 が変数 A および B に保存され、後に座標 (2,1) で出力されます。

レビュー - 基礎編

  • シリンダーの面積: ユーザーに底辺の長さ(または直径)と半径を入力させ、シリンダーの面積を出力するプログラムを作成せよ。
    • 答え: [解答参照]
  • カウントアップ: 0 から 2000 まで数え上げ、画面に全ての数字を表示し、0 から 2000 の表示を確認できるプログラムを作成せよ。
    • 答え: [解答参照]
  • シンプルな移動: まずユーザーがリストからオプションを選択(上、下、左、右、爆発)させ、その後対応する単一文字が表示されるプログラムの設計。
    • 答え: [解答参照]

応用編

FOR
関数

初心者のレベルでは、「FOR」は一種の待機機能として使用されます;第 1 番目の数から第 2 番目の数まで、第 3 番目の数の間隔でカウントします。また、一定時間某物を表示するためにも使用されます。

構文:

FOR([変数 A-Z], [開始値], [終了値], [間隔])

  • 間隔が小さいほど短い時間で完了します(当然)。

  • ループを終了させたい場所に必ず「END」コマンドを入れます。強制的にループを終了させるために「STOP」も使用される場合があります。

  • アクセス方法:

    PRGM
    >
    4

シンプルな例:

:ClrHome
:For(A,0,50)
:Output(3,1,"THIS"
:End
:For(A,1,50,20)
:Output(4,2,"IS A"
:End
:For(R,9,500,10)
:Output(5,3,"TUTORIAL"
:End

文字列(テキスト行)は一つずつ現れます。「FOR」は計算機に対し、次のコードを実行するまで指定された時間間中、その行を維持するように指示します。ただし、プログラム全体が終了すると最終的な「END」があり、ユーザーが ENTER キーを押すと計算機は自動的にプログラムを再起動します。

END
の裏側での動作: この場合、計算機に 0 から 50 までの変動値を変数
.A
に保存することを指示されます。Basic は非常に遅い言語であるため、「THIS」は座標 (3,1) で数秒間出力されたり、計算機が 0 から 50 をカウントするのに要する時間分出力されたりします。

WHILE
関数

「WHILE」もループであり、特定の条件が真になるまで続けます。「FOR」と異なり、「WHILE」は毎回自動的に変数の値に +1 を加えるわけではなく、追加または減算の量を手動で指定する必要があります。これによりループがより柔軟になります。

例:

:ClrHome
:1->Y
:While Y<=16
:1->X
:While X<8
:Output(X,Y,"+")
:X+1->X
:End
:Y+1->Y
:End

解説: 画面がクリアされ、変数 'Y' の値が 1 に設定されます。Y が 16 以下であれば、X の値を 1 とします。X の値が 8 より小さければ、座標 (X,Y) でプラス記号 (+) を出力します。X の値に 1 を加え、X が 8 になるまでこれを繰り返します。X が 8 に達した時点で外側のループに戻り、X を再び 1 に設定します。同時に Y にも 1 を加えます。したがって、この '+' の列が各列完了ごとに Y が 1 つ大きくなるよう繰り返し表示され、Y が 16 に達してプログラムが終了します。

論理の注記:

  • While 1
    とコーディングすると、この while ループ内の操作は無制限に繰り返されます(停止するコマンドが存在しない限り;例:ユーザーが ENTER キーを押すとループが停止)。
  • While 0
    とコーディングすると、「End」までの間にコードは実行されません。
  • コンピューターは情報を転送するためにビット(微細な電気的な衝撃)に依存しています。電圧があるものが「1」、ないものが「0」を表します。したがって、1 は真(電流あり)、0 は偽(電流なし)を表します。照明スイッチを想像してください;オン时有电流,オフ时没有电流。つまり
    While 1
    とコーディングしているのは実際には
    While True
    を意味しています。

比較対照(
FOR
vs
WHILE
vs
LBL/GOTO

以下は「FOR」関数のより高度な使用例です;このコードは以前のものよりも頻繁に使うことになります。3 つの関数を比較します:「FOR」、「WHILE」、および「LBL/GOTO」。これらプログラムは視覚的には完全に同じですが、裏で起こっていることは大きく異なります。

セットアップ: まず WINDOW を以下の様に設定してください:

  • Xmin=-100, Xmax=100, Xscl=1
  • Ymin=-100, Ymax=100, Yscl=1
  • Xres=1

例 I: FOR

:ClrDraw
:For(X,0,50)
:Circle(0,0,X)
:Text(0,0,"RADIUS:",X)
:End
:Text(6,0,"DONE")

描画画面がクリアされ、変数 X に値 0 が割り当てられます。座標 (0,0)(画面中央)で円が描画されます。半径は 0 に設定されます。座標 (0,0) でテキスト「RADIUS:」が表示され、その後に X の値が続きます。「END」コマンドは、X の値が 50 になるまで

FOR
End
の間のコードを計算機に実行させる指令です。

例 II: WHILE

:ClrDraw
:0->X
:While X<50
:Circle(0,0,X)
:Text(0,0,"RADIUS:",X)
:X+1->X
:End
:Text(6,0,"DONE")

画面がクリアされ、変数 X に値 0 が割り当てられます。X が 50 より小さい間、座標 (0,0) で半径 X の円が描画されます。「RADIUS:」と値 X が座標 (0,0) に表示されます。1 が X に加えられ、この全体のプロセスは「X が 50 より小さい」という条件が偽になるまで(つまり X は 50 より大きくなるまで)繰り返されます。これが起こると、「DONE」が表示されます。

例 III: LBL/GOTO

:ClrDraw
:0->X
:Lbl 1
:Circle(0,0,X)
:Text(0,0,"RADIUS:",X)
:X+1->X
:If X=50:Goto 2
:Goto 1
:End
:Lbl 2
:Text(6,0,"DONE")

描画画面がクリアされ、値 0 が X に割り当てられます。フレーム 1 で円を描画しテキストを表示します。X が 50 と等しければ計算機はフレーム 2(「DONE」)へ移動しますが、そうでなければフレーム 1 に戻ります。

結論: コードから明らかな通り、「FOR」が円を描画して徐々に大きさを増加させるために最もクリーンで効率的であり、次は「WHILE」、そして最後に「LBL/GOTO」です。

IF
,
THEN
,
ELSE
, および
OR
関数

これらはプログラミングで最も広く使用される関数の一つで、値、入力、文字列、変数を比較します。

  • ELSE: 変数が特定の値でない場合、別の動作を行います。

  • IF: 値を事前に設定した変数と比較します。

  • THEN: 条件が満たされた場合、アクションを実行します。

  • OR: 値を多数の変数と比較します(論理 AND とは異なる)。

  • アクセス方法:

    IF
    /
    THEN
    /
    ELSE
    :
    PRGM
    >
    1
    ,
    2
    , または
    3
    OR
    :
    TEST
    >
    LOGIC
    >
    2

例:

:ClrHome:Input "NMBR=",X
:If X=1 or X=2:Then
:Output(2,1,"1 or 2"
:Else
:Output(2,1,"3 and UP"
:Pause
:ClrHome
:End

注意:

ELSE
が機能するためには、比較に
THEN
を使用する必要があります。ただし、これらは通常非効率的なコマンドです。

改訂版(より機能的):

:ClrHome:Input "NMBR=",X
:If X=1 or X=2:Output(2,1,"3 and UP"
:If X<=3:Output(2,1,"3 and UP"
:Pause
:ClrHome

この改訂版は 2 行少ないコードを使用し、同じ機能を果たします。

ストリング(STRINGS)

「ストリング」は変数の一分野であり、単語、フレーズ、文字などを保存します。入力と併せて使用され、「Mary had a little lamb」といったテキスト行を収集します。

  • アクセス方法:
    VARS
    >
    STRING:
    >
    0-9

例:

:ClrHome
:Input "NAME:",Str1
:Output(2,1,"NAME IS: "
:Output(3,1,Str1)
:Stop
:End

GETKEY
関数

「GETKEY」はおそらく最も広く使用される関数の一つです。TI-83+ の各ボタンには番号が割り当てられていることを知っていましたか?「GETKEY」は「INPUT」と似ていますが、数字の入力を待つのではなくキー入力(キープレス)を待ちます。これは文字の移動やメニューに時々使用されます。

  • アクセス方法:
    PRGM
    >
    I/O
    >
    7

標準的な公式: 多くの場合、「GETKEY」は以下の式と共に使用されます:

:While 1
:getKey(変数 A-Z)
:While (変数 A-Z)=0:getKey(変数 A-Z):End

クイックキーチェッカー: ボタンを押すとそのキーの値を表示するプログラム(チートシートがない場合用):

:While 1
:getKey->A
:While A=0:getKey->A:End
:Disp A
:End

変数の代わりに「ANS」を使用すると高速ですが、getKey 値を繰り返し使用しなければならない場合はできません。

簡略化: 全手順は短縮することも可能です:

:While 1
:getKey
:'ここに何かを行う処理
:End

アルファベットの任意の文字('A' のみではありません)を使用できます。

シンプルなプログラム例:

:ClrHome
:For(A,0,1)
:getKey->V
:While V=0:getKey->V:End
:If V=41:Disp "YOU PRESSED MATH"
:If V=42:Disp "YOU PRESSED APPS"
:End

裏側では画面がクリアされ、変数 A に値 0 が割り当てられます。計算機はキー入力を受けます。その入力が MATH ボタン(値 41)であれば「YOU PRESSED MATH」が表示されます。APPS が押された場合(値 42)、「YOU PRESSED APPS」が表示されます。どちらも押されない場合は何も起こりません。

RAND
,
randInt
,
iPart
, および
fPart
関数

プログラム内で計算機に 2 つの境界の間で自動的にランダムな数字を選ばせる必要があり、時には整数部分だけを、時には小数部分だけを出力しなければならない場合があります。

  • RAND: 0.0000000001 から 1 の間からランダムな数字を選びます。
    • 例:
      1+(rand*10)
      は 1 から 11 の間の任意の数字(整数または小数)を表示します。
  • iPart: 数の整数部分のみを表示します。
    • 例:
      iPart(1+(rand*10))
      は 1 から 11 の間の任意の整数を表示します。
  • fPart: 数の小数部分のみを表示します。
    • 例:
      fPart(1+(rand*10))
  • randInt: 2 つの数字の間でランダムな整数を選ぶための簡単な方法です。
    • 例:
      randInt(1,10)

アクセス場所:

  • RAND
    :
    MATH
    >
    PRB
    >
    1
  • randInt
    :
    MATH
    >
    PRB
    >
    5
  • iPart
    :
    MATH
    >
    NUM
    >
    3
  • fPart
    :
    MATH
    >
    NUM
    >
    4

リスト(LISTS)

TI カルキュレーターには 6 つの標準リスト(L1, L2, L3, L4, L5, L6)があります。ただし、これらをプログラムやゲーム情報の保存に使用すると、他のリストを使用するプログラムや散点図をグラフ化する際などに妨害される可能性があります。したがって、カルキュレーターにはユーザー作成の数百個のリストを保持する可能性が 있습니다.

リストの作成:

:10->dim(LTTRL)

上記の例では、10 がリストのスロット数であり、

LTTRL
がリストの名前です。リストの名前の前に常に「L」があります(
2ND
>
STAT
>
OPS
>
B
でアクセス)。

リストへの格納: 変数 'C' をリスト

LTTRL
の最初のスロットに保存するには:

:C->LTTRL(1)

リストからの呼び出し: リスト

LTTRL
の最初のスロットを呼び出して変数 'B' に保存するには:

:B<-LTTRL(1)

マトリクス(MATRICES)

マトリクスはリストの別の形態ですが、非常に大量の情報进行存储するために使用されます。

マトリクスの作成:

:{2,3}->dim([A])

2 と 3 はマトリクスの次元(高さ x 幅)であり、'A' がマトリクスの名前です。

レビュー - 応用編

  • 高度なメニュー:
    MENU
    関数を用いずに作成し、5 つの選択肢、タイトル、カーソルを持つメニューを作成せよ。
    • 答え: [解答参照]
  • 移動ゲーム: ユーザー操作したキャラクターが画面内を動き回り、壁と衝突すると反対側に出現するプログラムを作成せよ。「O」と記された地点(座標 1,1)と衝突するとプログラムが終了します。「S」記号と記されたランダムな座標と衝突した場合、かつユーザー(ピの記号 $\pi$)がそれを衝突させた場合、「BONUS」というテキストが 5 回瞬きし、ゲームは継続し、得点(リストとして保存)に 10 点が加算されます。
    • 答え: [解答参照]

描画機能

CLRDRAW
関数

「CLRDRAW」は「CLRHOME」と似ていますが、描画画面をクリアします。TI-83+ は以下の 2 つの画面を持っていると考えることができます:一つ目は画像、線、テキストが表示される場所;二つ目は出力が表示される場所です。

  • アクセス方法:
    2ND
    >
    PRGM
    >
    1

TEXT
関数

「TEXT」は「OUTPUT」と似ていますが、「TEXT」の方がずっと小さく、座標平面はピクセルベースです。「TEXT」はテキストの自動改行機能がありません(「DISP」同様)。「TEXT」は描画画面に表示され、出力画面には表示されません。

  • 座標: 画面は左上隅に (0,0) で始まります。高さが 62 ピクセル、幅が 94 ピクセルです。

  • アクセス方法:

    2ND
    >
    PRGM
    >
    0

例:

:ClrDraw
:Text(0,0,"(0,0)")
:Text(50,0,"(50,0)")
:Text(0,50,"(0,50)")
:Text(50,50,"(50,50)")

LINE
,
TANGENT
,
VERTICAL
, および
HORIZONTAL
関数

  • 「HORIZONTAL」と「TANGENT」は同じもので、どちらも水平線を描画します。
  • 「VERTICAL」は垂直線を描画します。
  • 「LINE」は最初の座標から第二の座標までの線を描画します。

注意: 最初グラフウィンドウを以下の様に設定してください:

  • Xmin=0, Xmax=94, Xscl=1
  • Ymin=0, Ymax=62, Yscl=1
  • Xres=1

アクセス場所:

  • HORIZONTAL
    :
    2ND
    >
    PRGM
    >
    3
  • VERTICAL
    :
    2ND
    >
    PRGM
    >
    4
  • TANGENT
    :
    2ND
    >
    PRGM
    >
    5
  • LINE
    :
    2ND
    >
    PRGM
    >
    2

例:

:ClrDraw
:Horizontal 50
:Text(0,0,"HORIZONTAL"
:Pause
:ClrDraw
:Vertical 50
:Text(0,0,"VERTICAL"
:Pause
:ClrDraw
:Tangent(50,2,"TANGENT")
:Pause
:ClrDraw
:Line(10,20,40,30)
:Text(0,0,"LINE"
:Pause
:ClrDraw

SHADE
関数

「SHADE」は名前の通り:画面の一部を塗りつぶします。

  • アクセス方法:
    2ND
    >
    PRGM
    >
    7

例:

:ClrDraw
:ZStandard
:Shade(-10,5)

注意: コマンド「ZStandard」はウィンドウを以下の様に設定する簡単な方法です:

  • Xmin=-10, Xmax=10, Xscl=1
  • Ymin=-10, Ymax=10, Yscl=1
  • Xres=1

CIRCLE
関数

「Circle」は明示された座標に円を描画します。動作は以下の通りです:

Circle([原点の X 座標], [原点の Y 座標], [半径])

TI の画面が長方形であるため、円はおびただしく楕円のように見えます;ただし、画面を以下の様に設定しない限り:

  • Xmin=0, Xmax=94, Xscl=1
  • Ymin=0, Ymax=62, Yscl=1
  • Xres=1

例:

:ClrDraw
:Circle(20,20,12)
:Text(0,0,"CIRCLE")

Pt-On
および
Pt-Off
関数

「Pt-On」は画面の特定の場所に点を描画し、「Pt-Off」はその点を消去します。プログラム中に点を削除せざるを得ない場合は、

CLRDRAW
の代わりにこのコマンドを使用してください;そうすると画面がフラッシュしません。

注意: まずペンを (p) を以下の様に設定してください:

  • Xmin=0, Xmax=90, Xscl=1
  • Ymin=0, Ymax=90, Yscl=1
  • Xres=1

例プログラム:

:ClrDraw
:For(A,0,90)
:randInt(1,90)->X
:Pt-On(X,A)
:End

これは (0,0) と (90,90) の間の点をランダムに表示します。合計 90 ピクセルを表示します。

ネストされたループ(NESTED LOOPS)

ネストされたループとは、例えば「FOR」と「WHILE」が一つに内包され、一つのループの中に別のループを含むようなものです。これは特定の処理を繰り返し実行する必要がある場合に非常に一般的です。

挑戦問題: 「CIRCLE」関数を使わずに円を描画し、大きさを徐々に増加させるプログラムを作成せよ;10 行以下のコードで完了せよ。2 つの種類のループを使用せよ。

  • 強く推奨:このプログラムを試作する前に進まずに試してみてください。

解答を表示: [解答参照]

同じ日のほかのニュース

一覧に戻る →

2026/05/08 7:22

キャンバス(Instructure)LMS は、現在も継続中のランサムウェア攻撃の影響で利用できない状態にあります。

## Japanese Translation: 2026 年 5 月 7 日、ShinyHunters 集団と見做されるランサムウェア攻撃により、Instructure の Canvas プラットフォーム(Canvas Beta および Canvas Test を含む)が停止し、調査が行われる間、すべての環境にアクセスできなくなる事態となった。この侵害は Instructure の確認によると、学生名、ID 番号、メール地址、および私信を含む情報を暴露させ、約 9,000 の学校で活動する約 2.75 億人の学生、教職員、スタッフに影響を与えた。ShinyHunters は、影響を受けた学校がサイバーアドバイザリーファームと連絡をとり、「TOX」へ私下に連絡して漏洩期限である 2026 年 5 月 12 日までのデータ漏洩防止に向けた解決策の交渉を行うよう要求し、加えて被害者リストへのリンクも提供した。ShinyHunters は以前にも AT&T、Ticketmaster、Rockstar Games、ADT、Vercel など大手組織を標的にしており、高度な手口を示している。Instructure は以前にも過去のアシインを受け、セキュリティを強化するためのパッチを展開していた。この事実は、大規模な学習管理システムが協調的なランサムウェア作戦に対して極めて脆弱であることを示すと同時に、漏洩期限前に大量のプライバシー侵害を防ぐため、教育機関に脅威アクターとの緊急交渉を迫っている。 ## Text to translate: ## Summary: On May 7, 2026, a ransomware attack attributed to the ShinyHunters group disabled Instructure's Canvas platform (including Canvas Beta and Canvas Test), leaving all environments inaccessible while an investigation proceeds. The breach affected roughly 275 million students, teachers, and staff across 9,000 schools, exposing student names, ID numbers, emails, and private messages per Instructure's confirmation. ShinyHunters demanded that affected schools contact a cyber advisory firm and reach out to "TOX" privately to negotiate a settlement before a data leak on May 12, 2026; the attackers also provided a link to a list of claimed victims. ShinyHunters has previously targeted major organizations such as AT&T, Ticketmaster, Rockstar Games, ADT, and Vercel, indicating sophisticated tactics. Instructure had previously deployed patches to strengthen security following a prior breach. The incident underscores the acute vulnerability of large-scale learning management systems to coordinated ransomware operations and forces educational institutions to urgently negotiate with threat actors to prevent mass privacy violations before the leak deadline.

2026/05/08 4:21

ディリー frag: ユニバーサル Linux LPE(ローカル・プリミティブ型エクスプロイト)

## 日本語翻訳: 「Dirty Frag」は、2026 年 5 月時点ですでにパッチが存在せず、攻撃者が瞬時に完全なルート権限によるシステム制御を可能にする重要な Linux セキュリティ欠陥である。この脆弱性は 2 つの異なる攻撃手法を連結することで、認証バイパスと必須ファイル(例:`/etc/passwd`)の書き換えを実現し、バックドアアクセスを作成することを許可する。技術的には、暗号化通信によく用いられる `esp4`、`esp6`、または `rxrpc` などの特定のカーネルモジュールを標的にしており、サンボクس化された環境内での「ESP 認証バイパス」トリックを用いたり、システムページのキャッシュに悪意のあるルートシェルを記述したりすることで攻撃を行う。通常のソフトウェアアップデートとは異なり、深刻さの理由から情報公開が制限されており、まだ正式な CVE(Common Vulnerabilities and Exposures)は存在しない。影響を受けるユーザーは、手動で脆弱なモジュールをカーネル設定から無効化しない限り、即時に完全なる侵害のリスクに直面している。管理者は、システムパスワード内の特定のバイトシグネチャを確認することで、自らの環境が曝されているかを検証できる。この状況は、「Copy Fail」といった以前にもある脆弱性と類似しており、これもまた別個のバグを連結させていた。「Dirty Frag」に対するパッチが開発されるまで、組織は不正な権限昇進と主要な Linux ディストリビューション全体にわたるデータ漏洩を防ぐため、これらの危険なコンポーネントを能動的に取り除く必要がある。

2026/05/08 8:02

一時的に新しいソフトウェアをインストールしない方がいいかもしれません。

## Japanese Translation: この文書は、Anubis ソフトウェアリリース版 v1.25.0-46-gd3a00da のための情報クレジットとして機能し、マスコットデザインを CELPHASE に帰属させ、サイトは🇨🇦(カナダ)で❤️(愛)を持って構築されたことを示しています。また、ウェブサイトは Techaro セキュリティインフラストラクチャによって保護されていることも記載されています。これら全ての要素は、視覚的な制作の帰属、開発の場所、セキュリティパートナーシップを確認するためのアトリビューションタグとして機能し、より広い歴史的背景や分析的な文脈を提供していません。 ## Text to translate: This passage serves as an informational credit for the Anubis software release, v1.25.0-46-gd3a00da. It attributes the mascot design to CELPHASE and indicates that the site was built with ❤️ in 🇨🇦 (Canada). The text also notes that the website is protected by Techaro security infrastructure. Collectively, these elements function as attribution tags that confirm visual authorship, location of development, and security partnerships, while offering no broader historical or analytical context.