高等学校 数学科ソフトウェア活用 (ubasic) 使用ソ...

66
(UBASIC) : UBASIC Ver.8.4

Upload: others

Post on 31-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

高等学校数学科ソフトウェア活用 (UBASIC)

使用ソフトウェア: UBASIC Ver.8.4

千葉県情報教育センター

Page 2: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

i

はじめに

コンピュータの発達とともに,プログラム言語も

ハードウェアにもっとも近いアセンブリ言語から,人

間により理解し易い言語 (高級言語)へと進歩してまいりました。メモリの使用量についても,少ないシ

ステムで動く言語から,メモリをふんだんに使用す

るシステムでなければ動かない言語なども出現して

います。

インタプリタ型の言語とは,人間が理解できるプ

ログラムを,一行ごとに機械が理解できるコードへ,

逐次翻訳させてから実行する,方式の言語です。こ

れに対して,すべての行を一括翻訳し,以後実行す

る際に翻訳作業を行わない,コンパイラ型の言語も

あります。

コンパイラ型,インタプリタ型で,どちらの方式

の言語が優れているかということはありません。ス

ピードが要求されるものでなければプログラムの修

正実行の繰り返しが手軽なインタプリタ型,スピー

ドが要求されるものや,市販のソフトウェアなどに

はコンパイラ型,のように目的に応じて使い分けて

います.

現在活躍している言語は,厳しい淘汰を経て生き

残っているという意味で,優秀な言語と言えると思

います。

科学技術計算の分野に長い歴史と伝統をもつFOR-TRAN という言語があります。事務処理の分野で圧倒的な COBOL 言語ともども,現在も改良を重ね進歩しています。

高級言語の部類に属する C言語は,ハードウェアの能力を十分に引き出すことのできるコンパイラ型

が主流です。

BASIC言語は,ハードウェアの知識がなくてもプログラムを作成できます。また,インタプリタ型です

から,プログラムの間違いを修正することがとても

簡単にできます。最近では,コンパイラ型の BASIC言語も登場しました。

LOGO という言語は,教育用の言語としてアメリカで生まれ,非常に注目されている言語です。小学

生でも容易にプログラムを作成できるシステム環境

と,よく考えられた言語体系をもっています。

このほかにも,ハードウェアや利用技術の進歩か

ら,斬新な形式の言語が次々に生まれています。

高校生が学習で,アルゴリズムや思考の訓練に役

立たせるために,プログラミングを経験することは

有効です。プログラム言語はコマンド (命令)の理解が容易で,自然言語 (日本語)に近いものが適切であると考えられますが,高校生にとっては,日本語に

こだわる必要はないと思います。「インタプリタ型」

か「コンパイラ型」の選択では,「インタプリタ型」

でよいと思います。実行速度の高速化の問題はそれ

ほど重要ではないからです。もちろん,コンパイル

がほとんど意識されないようなシステム環境であれ

ば「コンパイラ型」でもよいでしょう。

高校生のつくるプログラムは 10行程度を想定していますので構造化言語である必要もないと思います。

コンピュータ上で扱うプログラム言語はそれぞれ

一長一短があるので,特に限定されるものではない

でしょう。したがってこのテキストでは,手近にあ

り,比較的使いやすい多倍長計算計算用 BASIC「UBASIC86」を使用することとします.

Page 3: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

ii

 

参考

言語名 概要 用途

BASIC対話形の言語

多数のパソコンに登載

手続き形言語

教育用

アプリケーション開発

LOGO対話形の言語

グラフィックスに強い

非手続き形言語

教育用

アプリケーション開発

C言語

コンパイラ形の言語

ハードウェア性能を

引き出すことができる

コンピュータの知識が必要

OS やアプリケーション開発

アセンブリ言語

コンパイラ型の言語

機械語の命令の一つをニーモ

ニックと呼ぶ記号で表す

ハードウェア性能を引き出す

ことができるがコンピュータ

の知識が必要

機械の制御システム

その他の言語

FORTRANCOBOLPASCAL, LISP

コンパイラ型の言語

伝統のある高級言語

科学技術,事務処理

アプリケーション開発

Page 4: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

目 次

1 UBASIC とは 1

1.1 UBASIC とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 UBASICの起動と終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.1 UBASICを起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2 UBASIC を終了する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 ダイレクトモードによる計算 5

2.1 画面で四則計算をする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.1 キー操作について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.2 画面に表示する (print)命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2 画面で式・関数の値を求める . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.1 平方根を求める (sqrt)関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.2 三角比を求める (sin, cos, tan)関数 . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3 画面に文字を表示させる . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3 プログラムモードによる計算 11

3.1 プログラムモードとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.1 プログラムの入力と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.2 プログラムの表示・追加・削除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.3 変数と代入 (=)命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2 プログラムの変更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.1 キーボードから入力する命令 (input) . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.2 プログラムの保存と読込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3 分岐のあるプログラム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3.1 無条件分岐 (goto)命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3.2 条件分岐 (if ∼ then)命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3.3 分岐の応用プログラム (2次方程式の解法と手順) . . . . . . . . . . . . . . . . . . . 18

3.4 繰り返し文のあるプログラム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4.1 繰り返し (for ∼ next)文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4.2 2重の繰り返し (for ∼ next)文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4 プログラムを利用した計算 23

4.1 商と余りの関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2 素因数分解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.3 素数の分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

iii

Page 5: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

iv 目 次

4.3.1 素数の表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.4 進んだプログラミング技法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.4.1 配列変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.4.2 read命令と data文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.4.3 ファンクションキー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.4.4 サブルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5 数学教育への応用例 33

5.1 数表の代用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.1.1 2乗と平方根の表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.1.2 三角比の表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.1.3 平方根と累乗根 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.1.4 数値積分の計算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.2 確率の実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.1 乱数について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.2 サイコロを振る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.3 モンテカルロ法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.3 数の性質 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.3.1 有理数の小数表示と循環節 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.3.2 ピタゴラス数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

6 グラフィック 43

6.1 グラフィック事始め . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.1.1 グラフィックを使う準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.1.2 円を描いてみよう . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.1.3 点,直線,長方形を描いてみましょう . . . . . . . . . . . . . . . . . . . . . . . . . 45

6.2 グラフィックの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.2.1 画面上の座標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.2.2 数学で使う . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.2.3 こまごましたこと . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.2.4 生徒の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6.3 関数のグラフ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.3.1 y = f(x)のグラフ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.3.2 文字列を式として使う . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

6.4 その他 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.4.1 やさしいもの . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.4.2 パラメータ表示の曲線 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.4.3 陰関数表示の曲線 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Page 6: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

Chapter 1

UBASIC とは

1

Page 7: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

2 CHAPTER 1. UBASIC とは

1.1 UBASIC とは

円周率 π の小数展開が無限にどこまでも続くことは,高校生ならだれでも知っているでしょう。でも,

「どうして無限に続くことがわかるのか?」と改めて問直されると,納得がいくでしょうか。無限に続くことを納得させるには何桁位の計算ができれば良いのでしょうか。無限桁必要なのでしょうか。

多倍長計算用 BASIC 『UBASIC86』は,プログラム上の工夫を必要としないで,2600桁の整数及び小数,正確な整数べきの計算ができる BASIC 言語です。普通の BASIC では,16 桁ぐらいまでしか正確な数値がだせません。

UBASICの特徴

UBASIC (多倍長計算用 BASIC )は木田祐司氏が開発した,特別なプログラムを組まずに 2600 桁の整数計算及び小数計算ができる BASIC です。数学で使う BASIC としてはとてもよくできたフリーウェアのソフトです。

(1) 操作方法は普通の BASIC に似ている。

(2) 多倍長計算 (2600桁)の計算が無理なく,高速にできる。

普通の BASIC

? 2^50

1.1259E+15

OK

? 123456789*987654321

1.219326311126353D+17

UBASIC

? 2^50

1125899906842624

OK

? 123456789*987654321

121932631112635269

(3) 有理数や複素数,さらに多項式の計算までできる。

(4) 普通の BASIC の数々の欠点を改良してある。

(5) 数学の問題 (整数論)を解くための機能が豊富に用意されている。特に,巨大な整数の素因数分解ができる添付プログラムなどがある。

素因数分解をするプログラム (load"MPQSX")

素因数分解 (MPQS法)のプログラムを実行すると

整数=? 2^50-1

3 * 11 * 31 * 251* 601 * 1801 * 4051

UBASIC の動作環境

パソコンで UBASIC を使うために必要なものです。

(1) パソコン本体 384Kバイト以上の主記憶をもった NEC の 98 シリーズまたは互換機,および富士通の FMR シリーズ。 通常この本体の前面の右にフロッピーディスクを挿入するための細い穴 (フロッピーディスクドライブ)がついています。

Page 8: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

1.1. UBASIC とは 3

(2) ディスプレイ

(3) キーボード

(4) フロッピーディスク3.5インチ,5インチのものが一般的です。

(5) MS-DOS が必要。

(6) グラフィックス命令を使う場合は,GRAPH.SYS が必要。

(7) グラフィック RAM を使用するソフトと一緒に使わない。

注意事項

フロッピーディスクの取り扱いには充分注意しましょう。次のようなことは,避けて下さい。

• ディスクに,熱や磁気を近づけること。

• ディスクを乱暴に扱ったり,データの記録部分に手を触れること。

• ハードディスクに,必要以上の振動を与えること。

• ディスクに,力を加えること。特に,フロッピーディスクにラベルを貼る場合などは,ラベルに記入してから貼り付けるようにして下さい。

• フロッピーを使う場合には,入れる向きに注意をしましょう。ラベルの貼ってある面を上にして,挿入します。

Page 9: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

4 CHAPTER 1. UBASIC とは

1.2 UBASICの起動と終了

1.2.1 UBASICを起動

(1) ハードディスクを使用する場合 (本講習でもこの様になります)

i. パソコン本体の電源を入れる。

ii. ディスプレイわきのスイッチを入れる。

iii. 2つある本体の FDD の上の方 (1と「表示」-ドライブ B) に「データディスク」を入れる。

iv. 情報教育センターメニュー画面からコマンドプロンプトを選択し,

      E>ub

と入力する。

※ 手順 ii は一般的には不要です。

(2) ハードディスクを使用しない時 (フロッピーディスクのみを使用する時)

i. パソコンの電源を入れる。

ii. フロッピーディスク・ドライブの上の方 (「1」と表示-ドライブA) に「システムディスク」を入れる。

iii. プログラムを読込・保存するときは,ドライブ B に「データディスク」を入れ換える。

※ ディスプレイに,”How many files (0-15)?” と表示された場合は,本体左下にある「リセット (reset) ボタン」を押します。

1.2.2 UBASIC を終了する

(1) 文字が何も書かれていない行で [system]と入力し ¾¤ ¡£ ¢キーを押す。

(2) MS-DOS の対話モードから [exit] と入力し ¾¤ ¡£ ¢キーを押す。

E>EXIT

(3) MENU 画面が出てきます。

Page 10: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

Chapter 2

ダイレクトモードによる計算

電卓の感覚で計算できる。

5

Page 11: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

6 CHAPTER 2. ダイレクトモードによる計算

2.1 画面で四則計算をする

2.1.1 キー操作について

各キーの位置を把握しておきましょう。特に,次の項目に挙げられているキーは,その名称を覚えてし

まいましょう。

¾¤ ¡£ ¢ (リターン)

改行を行うためのキーで,改行キーともいう。コンピュータに命令やデータの終わりを知らせる役割

もある。

¤ ¡£ ¢ (スペース)

文字 1つ文の余白をあける。空白文字の入力ともいう。

*¤ ¡£ ¢ (アスタリスク)

BASIC では,掛け算 (積)の記号 (×)の意味で使う。また,プログラムでも重要な目印として働く。

/¤ ¡£ ¢ (スラッシュ)

BASIC では,割り算 (除)の記号 (÷)の意味で使う。

DEL¤ ¡£ ¢ (デリート)

カーソル位置の文字を消去します (N88BASIC と異なる)。

BS¤ ¡£ ¢ (バックスペース)

カーソルの左の文字を消去します。

INS¤ ¡£ ¢ (インサート)

「上書き」「挿入」のモードを切り換えます。

SHIFT¤ ¡£ ¢ (シフト)

これを押したまま文字キーを押すと,キーの一番上に表示されている文字・記号が入力できます。ア

ルファベットの入力の,大文字小文字が切り替わります。

CAPS¤ ¡£ ¢ (キャプス)

押しさげられていると,SHIFT¤ ¡£ ¢を押していないときのアルファベットは大文字に固定されます。この

とき小文字の入力は SHIFT¤ ¡£ ¢を押して行います。

2.1.2 画面に表示する (print)命令

print ( ? : 省略表記 )機能 画面に表示する。

〔書式〕 print 式 または ? 式

print "文字列" または ? "文字列"

例  print 1/7 ? 1/7

print "ABCDE" ? "ABCDE"

入力の方法

P¤ ¡£ ¢R

¤ ¡£ ¢I

¤ ¡£ ¢N

¤ ¡£ ¢T

¤ ¡£ ¢

¤ ¡£ ¢1

¤ ¡£ ¢+

¤ ¡£ ¢2

¤ ¡£ ¢

Page 12: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

2.1. 画面で四則計算をする 7

と打ってください。以下このキー入力を画面表示通り,

print 1+2

と表現します。ここで ¾¤ ¡£ ¢キーを打つと

3

OK

と表示されます。つまり画面には

print 1+2

3

OK

となるはずです。

アルファベットの大文字と小文字の区別は命令文にはありません。

●例題 1  電卓的な使い方print 1993 ¾

¤ ¡£ ¢ print 3*5 ¾

¤ ¡£ ¢

print 100+200 ¾¤ ¡£ ¢ print 24/8 ¾

¤ ¡£ ¢

print 13-5 ¾¤ ¡£ ¢ print 1+2+3+4+5 ¾

¤ ¡£ ¢

¾¤ ¡£ ¢キーも今後は特にことわらない限り省略します。

[練習 1] 次のように入力し, ¾¤ ¡£ ¢キーを入力する前に結果を予想しましょう。

(1) print 3+2*2 (2) print (3+2)*2 (3) print 6/2/3

(4) print 123456789*97531(禁予想!)(5) print 1//2+1//3 (// は有理数除算)「print」と入力するのに疲れたら「?」で代用できます。

[練習 2] 次の計算をして,結果を画面に表示しましょう。

(1)  12÷ 3 (2)  5× (2 + 3) (3)  2× (1 + 3÷ 6) + 5 (4)  24÷ 6÷ 2

■■■ 珈琲閑話 I ■■■   数学の関数ということ

現代の数学では関数の概念は,集合の概念とならぶ

基本的な考え方です。数学で用いる関数の定義は,

「ある x の値に従って,y の値がひとつ

きまるとき,y を x の関数という。そし

て,これを y = f(x) と書く。」

などが代表的な例です。関数を「原料と加工と製品」

のたとえ話で説明すれば,ある x の値は,原料に相

当します。この x の値を加工しますと製品 y ができ

ます。

記号 y = f(x),y = g(x) で f , g は加工の仕方を表

している訳です。同じ小麦を原料としても,加工の

違いにより,うどんも出来ればラーメンにもなりま

すね。ですから,y = g(x) の g は f とは別の種類

の “加工”を意味しているのです。また,関数と言った場合に,加工を中心に考える立

場「f」と製品「y」を中心に考える立場があり,関

数の表現に特徴が見られます。

Page 13: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

8 CHAPTER 2. ダイレクトモードによる計算

2.2 画面で式・関数の値を求める

2.2.1 平方根を求める (sqrt)関数

2乗するには,同じ数をかけるという方法と巾乗を使用する方法があります。(同じ数をかける方法の方が,気持ちだけ時間をとらないで済みます)入力の方法は,

print 2*2

のように入力します。

巾乗は,X^Y (X の Y乗)と入力します。入力の方法は,

print 3^2

のように入力します。

正の平方根を求めるには,一般に関数 sqrt() を用いるのが普通です。sqrt

機能 正の平方根を求めて,その値を返す。

〔書式〕 sqrt(引数)

例 print sqrt(2)

入力の方法

print 命令のあとに続いて

S¤ ¡£ ¢Q

¤ ¡£ ¢R

¤ ¡£ ¢T

¤ ¡£ ¢(

¤ ¡£ ¢2

¤ ¡£ ¢)

¤ ¡£ ¢¾

¤ ¡£ ¢

と打ってください。

1.4142135623730850487

と出たはずです。

さて,ここで小数点以下の計算のまるめを考えてみましょう。UBASICの強みは,非常に大きい桁まで丸め無しで計算できることですが,深い桁までの計算が不必要な場合もあります。そこでプログラム全体

の小数点以下の桁を調整するのが次の point 関数です。point

機能 小数部の word 数を指定する。(1 word = 16ビット = 10進数 4.8桁)

〔書式〕 point 式

point *

例 point 50

(log10 216∗50 = 240.824 なので 10進 240桁になります)point 21 で 10進の 100 桁です。

入力の方法は

P¤ ¡£ ¢O

¤ ¡£ ¢I

¤ ¡£ ¢N

¤ ¡£ ¢T

¤ ¡£ ¢

¤ ¡£ ¢5

¤ ¡£ ¢0

¤ ¡£ ¢¾

¤ ¡£ ¢

と打ってください。

再度,平方根 sqrt(2), sqrt(3)を求めてみましょう。小数点以下に数字が 200桁以上並ぶことでしょう。

●例題 2 無理数の分母の有理化

小数部の word 数を 15 (point 15) とする。(1) print sqrt(3) (2) print 1/sqrt(3)

(3) print sqrt(3)/3-1/sqrt(3)

Page 14: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

2.2. 画面で式・関数の値を求める 9

[練習 3] 無理数の積

小数部の word 数を 20 (point 20) とする。(1) print sqrt(6) (2) print sqrt(2)*sqrt(3)

(3) print sqrt(6)-sqrt(2)*sqrt(3)

2.2.2 三角比を求める (sin, cos, tan)関数

三角比の値を求めてみます。代入する角度の単位はラジアンです (念のため)。機能 三角比の値を求める。

〔書式〕 sin(引数)

cos(引数)

tan(引数)

例 print cos(#pi)

入力の方法は print 命令のあとに続いて

C¤ ¡£ ¢O

¤ ¡£ ¢S

¤ ¡£ ¢(

¤ ¡£ ¢#

¤ ¡£ ¢P

¤ ¡£ ¢I

¤ ¡£ ¢)

¤ ¡£ ¢¾

¤ ¡£ ¢

と打ってください。−1 が返ってくるはずです。( ) の中に #pi*3 をいれると 3π の余弦が返ってきます。

[補足]#pi は,円周率 (定数) π のことです。

●例題 3 三角関数の計算(1) print sin(#pi/3) (2) print sqrt(3)/2

(3) print cos(#pi/4) (4) print 1/sqrt(2)

(5) print tan(#pi/3) (6) print sqrt(3)

[練習 4] 次の値を求めなさい。

(1) print sin(#pi/6)/cos(#pi/6) (2)  print tan(#pi/6)

Page 15: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

10 CHAPTER 2. ダイレクトモードによる計算

2.3 画面に文字を表示させる

今度は,画面に文字を表示する方法について学びましょう。print (? : 省略表記 )機能 画面に表示する。

〔書式〕 print 式  または print "文字列"として入力します。

例 print "ABCD" または ? "ABCD"

print "Einstein" または ? "Einstein"

画面には,

"ABCD"

"Einstein"

と表示されます。

[練習 5] 記号 ^ (やまじるし)は数学記号のべき乗を表す演算子です。記号 ^ を含む式を計算し,演算の優先順位も確かめましょう。

(1) print 2^3 (2) print 2^3/3 (3) print 2^3*3 (4) print 2*3^4

(5) print (0.9324722294+0.3612416662#i)^17

[練習 6] 記号 @,Y= を含む式を入力し,結果からその意味を予想しましょう。

(1) print 7@3 (2) print 10@3 (3) print 15@3

(4)  print 7Y=3 (5)  print 10Y=3 (6)  print 15Y=3

記号@ :記号 Y=:

Page 16: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

Chapter 3

プログラムモードによる計算

10! は計算しても 50! は説明ですませただけではつまらない。素数は無限にあることを証明できても,巨大な素数を見たことがありますか?

2200 + 235   (61桁)   素数

2756839 − 1   (227,834桁 1992.2)   は素数!!

n 次のフェルマ素数とは Fn = 22n

+ 1 のこと。F0, F1, F2, F3, F4 は素数!

11

Page 17: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

12 CHAPTER 3. プログラムモードによる計算

3.1 プログラムモードとは

行番号をつけてから,BASIC の命令を入力する。それだけで,プログラムは作成できます。後はコンピュータに実行の指示を出すだけです。

run : プログラムを実行する

ための命令。

list : 入力したプログラムを

確認するための命令。

new : プログラムを消去する

ための命令。

BASIC のプログラム

行番号   命 令 文行番号   命 令 文· · · · · ·    · · · · · ·

3.1.1 プログラムの入力と実行

とても短いプログラムを御覧にいれます。

●例題 4  

10  print 2+3

入力の方法は

1¤ ¡£ ¢0

¤ ¡£ ¢

¤ ¡£ ¢P

¤ ¡£ ¢R

¤ ¡£ ¢I

¤ ¡£ ¢N

¤ ¡£ ¢T

¤ ¡£ ¢

¤ ¡£ ¢2

¤ ¡£ ¢+

¤ ¡£ ¢3

¤ ¡£ ¢¾

¤ ¡£ ¢と打って下さい。

実行の方法は番号をいれないで

R¤ ¡£ ¢U

¤ ¡£ ¢N

¤ ¡£ ¢¾

¤ ¡£ ¢と打って下さい。

画面に

5

ok

と表示されるはずです。5 が 2+3 の答で,“ok” はプログラムが破綻なく実行できて終了したという印です。

3.1.2 プログラムの表示・追加・削除

前節の例題 4で説明します。

10  print 2+3

表示

list

と入力します。

L¤ ¡£ ¢I

¤ ¡£ ¢S

¤ ¡£ ¢T

¤ ¡£ ¢¾

¤ ¡£ ¢

と打って下さい。画面にプログラムが表示されますね。

Page 18: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

3.1. プログラムモードとは 13

追加

新しい行番号をつけた命令を入力します。新しい行にカーソルを移動させて,

30 print 12/3

と入力します。

3¤ ¡£ ¢0

¤ ¡£ ¢

¤ ¡£ ¢P

¤ ¡£ ¢R

¤ ¡£ ¢I

¤ ¡£ ¢N

¤ ¡£ ¢T

¤ ¡£ ¢

¤ ¡£ ¢1

¤ ¡£ ¢2

¤ ¡£ ¢/

¤ ¡£ ¢3

¤ ¡£ ¢¾

¤ ¡£ ¢

と打って下さい。そして,再度

list

と入力します。画面に

30 print 12/3

が追加されていますね。

削除

行番号だけを入力します。

30

とだけ,入力します。

3¤ ¡£ ¢0

¤ ¡£ ¢¾

¤ ¡£ ¢

と打って下さい。プログラムを画面に表示してみて下さい。

list

と入力するのでしたね。

30 print 12/3

の行が消えてなくなっているはずです。

3.1.3 変数と代入 (=)命令

●例題 5  

10  A=220  B=330  C=A+B40  print C

変数 A へ 2 を代入する。変数 B へ 3 を代入する。変数 C へ A+B の結果を代入する。変数 C を表示する。

行番号 10 の文字 A は数値等を記憶するための箱の役目をする記号です。このような記号を変数といい

ます。行番号 20 の文字 B も変数です。

変数は英文字で始まり,2番目以降は数字か英文字の列です。UBASIC では 16 文字までが変数で認められています。

ただし,UBASIC の命令として予約されている文字列は変数に使えません。

Page 19: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

14 CHAPTER 3. プログラムモードによる計算

変数の例 A, AB, A1, A10, XY123W

変数でない例 99HIJ, PRINT

BASIC 言語の記号 (=)は 2つの意味があります。ひとつは,代入の記号として使用される場合です。もうひとつは,条件文 (後出)の中で使用される等号の場合です。代入とは,右辺の値を左辺の変数 (箱)の中に入れることを意味します。

[挑戦問題 1]いままで学習した知識を使って,2 数 7 と 3 の和と差と積と商を表示するプログラムを作ってください。

※解説 2 つの 変数に 7 と 3 を代入して,その和と差と積と商を求めて表示すれば良い。

Page 20: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

3.2. プログラムの変更 15

3.2 プログラムの変更

例題 5 で作ったプログラムを使って,2 + 3 の場合の他,4 + 5,8 + 11 などを次々に計算できるような,便利なプログラムに変更したいと思います。どうしたらいいでしょうか。

3.2.1 キーボードから入力する命令 (input)

例題 5 のプログラムを引用します。

変数 A ,B を変更するのにいちいちプログラムを変更しなければならないのは不便ですね。キーボード

から数値を入力する命令を使用してみます。

10  A=220  B=330  C=A+B40  print C

input

機能 キーボードから文字や数字を入力する。

〔書式〕  input 変数

input 変数,変数例 input A

input A,B

入力の方法

I¤ ¡£ ¢N

¤ ¡£ ¢P

¤ ¡£ ¢U

¤ ¡£ ¢T

¤ ¡£ ¢

¤ ¡£ ¢A

¤ ¡£ ¢¾

¤ ¡£ ¢

と打ってください。

●例題 6 例題 5 のプログラムの変更

10  input A

20  input B

30  C=A+B40  print C

変数 A へキーボードから入力する。変数 B へキーボードから入力する。 変数 C の内容を表示する。

●例題 7 半径 r の円の面積 S を求める。

10  input R

20  S=3.14159*R*R30  print S

変数 R へキーボードから入力する。変数 R の 2乗に 3.14159 を掛けて変数 S へ代入する。変数 S の内容を表示する。

●例題 8 a を b で割った余り c を求める。

10  input A

20  input B

30  C=A@B40  print C

変数 A へキーボードから入力する。変数 B へキーボードから入力する。変数 A を変数 B で割った余りを変数 C へ代入する。変数 C の内容を表示する。

Page 21: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

16 CHAPTER 3. プログラムモードによる計算

3.2.2 プログラムの保存と読込み

保存

プログラムを保存しておいて必要なときに使用できるようにしましょう。最初に,プログラムの保存の

方法を学習します。

(1) データディスクをドライブに入れます。

(2) f·6¤ ¡£ ¢を押して save" をだすか,キーボードから save" と打ち込みます。

(3) その後に続けて,ファイル名を入力して ¾¤ ¡£ ¢キーを押します。

save "D:SAMPLE.UB"

ディスクアクセスランプがチカチカして ok が出れば保存終了です。

(4) 文書の名前は,全角で 4文字,半角で 8文字までです。ただし,末尾の半角 4文字分 (ピリオド “.”を含む)は,拡張子といってファイルの素性を表すものです。例えば,一太郎 Ver.5 では “.JAW” という拡張子がついています。Ver.4 では, “.JSW” でしたね。UBASIC の拡張子は,“.UB” です。

読込み

つぎは,フロッピィーからコンピュータ本体へのファイルの読込みです。

(1) UBASIC を起動します。

(2) f·1¤ ¡£ ¢を押して load" をだすか,キーボードから load" と打ち込みます。

(3) 続いて,ファイルのあるディレクトリを入力するか。ファイル名を入力します。

load "D:SAMPLE.UB"

ファイル名を忘れてしまった人は,ディレクトリ入力後, ¾¤ ¡£ ¢キーを押しますと,ファイルの一覧が

出てきますからそこから呼び込みたいファイルを選んで, ¾¤ ¡£ ¢キーを押してください。

Page 22: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

3.3. 分岐のあるプログラム 17

3.3 分岐のあるプログラム

3.3.1 無条件分岐 (goto)命令

●例題 9 変数 K の値に注目

10  K=020  K=K+130  print K

40  goto 20

変数 K に 0 を代入する。変数 K に古い変数 K+1 の値を代入する。変数 K の内容を表示する。行番号 20 へ

これを実行してください。(RUN と入力するのでしたね) 実行すると,プログラムが止まらなくなったと思います。そのときは,あわてず STOP

¤ ¡£ ¢キーを押してください。

STOP¤ ¡£ ¢(ストップ)キー

プログラムの停止をします。

CTRL¤ ¡£ ¢+ C

¤ ¡£ ¢

でもプログラムを停止することができます。この意味は, CTRL¤ ¡£ ¢を押しながら C

¤ ¡£ ¢を押すということです。

3.3.2 条件分岐 (if ∼ then)命令

処理の流れが変化するのは,ある条件に従って流れが変化することが多いはずです。無条件分岐  goto

命令では,条件によって処理を変えるのは困難です。そこで,条件に従って分岐先が変わる,条件分岐命

令について説明します。

●例題 10 1 から 10 までの和を求める。

10  K=020  S=030  K=K+140  S=S+K50  if K<10 then 3060  print S

変数 K に 0 を代入する。変数 S に 0 を代入する。変数 K に古い変数 K + 1 の値を代入する。変数 S に古い変数 S + K の値を代入する。変数 K が 10 より小ならば,行番号 30 へ変数 S の内容を表示する。

さて,例題 10 は入力できたでしょうか。プログラムの 10 と 20 ですが,下のように,1行で書くと行が短くなります。

10 K=0: S=0

これは,プログラムの文の間に : を入れることで 2行の文を 1行で処理しているのです。あまりこの方法を使いすぎると何を書いてあるかわからないようなプログラムになりますが,便利な記

述方法です。

Page 23: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

18 CHAPTER 3. プログラムモードによる計算

●例題 11 例題 10 の短縮した書き換え

10  K=0:S=020  K=K+1:S=S+K30  if K<100 then 2040  print S

ずいぶん短くなりましたね。でも何をやっているかは,だいぶ見にくくなりました。

[挑戦問題 2]調和数列の和を求めるプログラムをできる範囲で短縮した形に書き換えてください。

【参考 1】 

10  N=1020  S=130  K=040  K=K+150  S=S+1/K60  if K<N then 4070  print N;

80  print S

変数 N に 10 を代入する。変数 S に 1 を代入する。変数 K に 0 を代入する。変数 K に 古い変数 K+1 の値を代入する。変数 S に 古い変数 S + 1/K の値を代入する。変数 K が 変数 N の値より小ならば,行番号 40 へ変数 N の内容を表示する。変数 S の内容を表示する。

[挑戦問題 3]プログラムを実行しないで,S の値を求めなさい。(1) 2×K + 1 の和を求める。

10  S=120  K=030  K=K+140  S=S+2*K+150  if K<10 then 3060  print S

(2) K ×K の和を求める。

10  S=120  K=030  K=K+140  S=K*K50  if K<10 then 3060  print S

3.3.3 分岐の応用プログラム (2次方程式の解法と手順)

●例題 12 2次方程式 ax2 + bx + c = 0 において,係数  a,b,c を与えたときの解を求める。

Page 24: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

3.3. 分岐のあるプログラム 19

10  print "ax^2+bx+c=0"

20  input "a,b,c ";A,B,C

30  if A=0 then 2040  D=B^2-4*A*C:N="       "50  if D>0 then M="2 ジッスウカイ"60  if D=0 then M="1 ジッスウカイ"70  if D<0 then M="2 キョスウカイ"80  print M,(-B+sqrt(D))/2*A

90  if D=0 then end100  print N,(-B-sqrt(D))/2*A

係数 a,b,c の入力a = 0 なら行番号 20判別式 D の計算,空白を N に代入 言葉を M に場合に応じて代入 解を一つ表示重解ならば終了2実数解または虚数解の表示

※解説  

(1) まず,2次方程式の各項の係数を入力させなければなりません。(input)

(2) 判別式を導き,

(3) 解の判別をします。(if ∼ then)

(4) 普通の BASIC と違い UBASIC では,複素数をそのまま扱えるので,多様なプログラミングが考えられます。

(5) それぞれの場合に従って,解を表示します。

[挑戦問題 4]2次以下の方程式を解けるプログラムを作成しましょう。

Page 25: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

20 CHAPTER 3. プログラムモードによる計算

3.4 繰り返し文のあるプログラム

同じ事の繰り返し処理は,人間には面倒なことですが,コンピュータの得意分野です。プログラミング

の真髄は繰り返しです。ここでは,一定回数の繰り返しの方法について学ぶことにします。

3.4.1 繰り返し (for ∼ next)文

繰り返しの範囲,回数を指定します。(数列の Σ を想像してください)

●例題 13 2の倍数の表示

10  for I=1 to 3020   print 2*I

30  next

※解説  

10 変数 I に 1 から 30 を順次代入する。20 変数 I を 2 倍した数を表示する。30 変数 I が 30を越えていないかどうかを確認して越えていないと 10 行目に戻る。

[実行]

(1) 変数 I に 1 を代入する。

(2) 2 (変数 I を 2倍したもの)を表示する。

(3) 変数 I が 30 を越えていない (変数 I は,1です)ので 10 行目に戻る。

(4) 変数 I に 2 (1 の次の整数:間隔を 1 以外に変化させることもできます)を代入する。

(5) 4(変数 I を 2 倍したもの)を表示する。

(6) 変数 I が 30 を越えていない (変数 I は,2です)ので 10 行目に戻る。以下同様に繰り返す。

●例題 14 1 から 20 までの階乗を求める。

n! = n · (n− 1) · (n− 2) · · · 2 · 1

階乗自体は,簡単な掛け算の繰り返しですが,一般の BASIC ではうまく計算できません。それは,この計算結果がかなり大きな値になってしまうためです。UBASIC では 2600 桁までの計算ができますので,このような大きな数の計算にはきわめて有効です。

10  input "N= ";N

20  P=130  for I=1 to N40  P=P*I50  next60  print K;"! = ";P

最初の値を 1にしておくことを忘れず。

Page 26: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

3.4. 繰り返し文のあるプログラム 21

このプログラムを実行すると,N の値を聞いてきますから,正の整数を入力します。かなり大きな値で

も,1 の位まで計算できます。実行してみると出てきた表の桁が揃っていないことに気づくと思います。using関数は桁数を揃える関

数です。

[補足] using(整数部桁数, 小数部桁数),引数

40 print using(3),K;

50 print using(25),P

とするときれいな表になります。(小数桁部分を省略しました。)階乗を利用すれば,順列,組み合わせの数の計算もできます。大きな場合の数を求めるには,途中の計算を

大きくしないことがポイントです。

順列 nPr =n!

(n− r)!

組み合わせ nCr =n!

(n− r)!r!

[挑戦問題 5]n と r を入力し,n 個から r 個を 1 列に並べる順列,取り出す組み合わせの数を求めるプログラムを作りなさい。

Page 27: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

22 CHAPTER 3. プログラムモードによる計算

3.4.2 2重の繰り返し (for ∼ next)文

for next は 2重以上にしても使用できます。

●例題 15 かけ算の九九の表

10  for N = 1 to 920  for M = 1 to 930  print using(4) M*N;

40  next50  print

60  next N

変数 N に 1 から順次 9 まで代入する。変数 M に 1 から順次 9 までを代入する。変数 M*N を表示する。 改行

実行すると,最初は変数 N は 1 のままで,変数 M が 1 から 5 まで変化する。つまり 1, 2, 3, · · · と横に表示される。2変数関数などを考える時,1変数を固定して残りの 1変数を変化させることと同じ考え方です。

■■■ 珈琲閑話 II ■■■   円周率と無理数と指数の話

eπ√

163が整数だという噂があります。早速,その真

偽を調査してみましょう。

? exp(sqrt(163)*#pi)

....................

ok

どうやら嘘だったようです。しかし,小数点以下に

9 がずらりと並ぶのは壮観です。このような現象が163 の他にあるでしょうか。プログラムを使って調べてみましょう。

【参考 2】 

10  point 8

20  for J=1 to 100030  A=exp(sqrt(J)*#pi)

40  B=1000*(A-int(A))50  if B<999 then 9060  print

70  print J;A

80  next

[関数の解説]

int(引数) は,引数を超えない最大の整数です。

Page 28: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

Chapter 4

プログラムを利用した計算

素数を題材にして,プログラミングの総合練習をいたします。

23

Page 29: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

24 CHAPTER 4. プログラムを利用した計算

4.1 商と余りの関係

約数・倍数

自然数 a, b に対して,次の等式をみたす p と q がある。

a = bq + r (0 ≤ r < b)

このとき,q を a を b で割ったときの商,r を a を b で割ったときの余りという。

a を b で割ったときに割り切れる (余りが 0 となる)とき,b を a の約数,a を b の倍数とよぶ。

●例題 16 1 から 30 までの自然数の約数の個数をすべて調べなさい。数 約数の数 数 約数の数 数 約数の数

1 11 212 12 223 13 234 14 245 15 256 16 267 17 278 18 289 19 29

10 20 30

【参考 3】 

10  input A

20  B=030  D=040  B=B+150  C=A@B60  if C=0 then D=D+170  print A;"/";B,C;"...";D

80  if B<A then 4090  goto 10

素数・合成数

2, 3, 5, 7, 11 などの数はそれよりも小さな自然数の積になおすことができない数です。このように,1より大きな自然数で,1 とその数自身のほかに約数をもたないを素数という。また,4, 6, 8, 9 のような素数でない数を合成数という。

つまり,約数の個数が 2 である数を素数といい,約数の個数が 3 以上のある数を合成数という。

[挑戦問題 6]100 までの自然数で約数の個数が最大の自然数は何でしょう。

Page 30: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

4.2. 素因数分解 25

4.2 素因数分解

自然数を素数の積に分解することを素因数分解といいます。たとえば

60 = 2× 2× 3

と素因数分解できます。

●例題 17 与えられた自然数 N の素因数分解

¾

10  input N

20  K=130  K=K+140  if N@K<>0 then 3050  print K;"*";

60  N=NY=K70  if N>=K^2 then 4080  print N

N が K で割り切れないとき行番号 30N の約数 K,間に "*" を表示新しい N に古い N を K で割った商を代入K の 2乗より N が小さくないなら行番号 40残りの約数 N を表示 (たまに,1 を表示する)

※解説 行番号40 で自然数 N を K で割り,割りきれない場合は行番号 30 で K を 1 ずつ増やして探す。行番号50 は割りきれる数 K(素因数)を表示し,行番号60 は元の数を素因数で割って小さくして,

行番号70 で終了条件を判定し,

次々に素因数を求める。

素因数分解の因数に 1 が混入してしまう欠点があるが,気になる方は変更してみて下さい。

●例題 18 与えられた 2 つの自然数の最大公約数 (G.C.M.) を求めるプログラムを参考に,最小公倍数(L.C.M.) 求めるプログラムを作成する。

¾

10  input " a,b ";A,B

20  M=A:N=B30  if M<N then M=B:N=A40  R=M@N50  if R=0 then 8060  M=N:N=R70  goto 40

80  print "G.C.M.=",N

常に M>N となるように交換M を N で割った余りを R に代入余り R が 0 なら行番号 80M に N,N に余り R を代入行番 40 へ分岐G.C.M. として N を表示

ここでは,2つの自然数 A, B の最小公倍数 (L.C.M.)が

L.C.M. =A×B

G.C.M.

の関係にあることを利用する

Page 31: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

26 CHAPTER 4. プログラムを利用した計算

 

■■■ 珈琲閑話 III ■■■   ユークリッドの互除法について

与えれれた 2数 a, b では,いつでも

a = bq + r (0 ≤ r < b)

となる q, r がある。

もし,r = 0なら,bは aの約数でGCM= bとなる。

r 6= 0 のとき,新しく a ← b, b ← r と代入をする。

改めて,

a = bq + r (0 ≤ r < b)

を考えてみよう。頭が混乱するので,ダッシュ(′)をつけると,

a′ = b′q′ + r′ (0 ≤ r′ < b′)

もし,r′ = 0 なら,b′ は a′ の約数で a′ と b′ の

G.C.M. が q′ となる。

これは,前の記号で表せば,r と b の G.C.M. が q′

ということ。

従って,a と B の G.C.M. がまた q′ であることも

簡単に示せる。

r′ 6= 0 のときは,再度代入を繰り返す。

Page 32: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

4.3. 素数の分布 27

4.3 素数の分布

素数が自然数の中に,どのように分布しているかを観察することは,とても興味のあるところだと思い

ます。

素数を表示するプログラムを紹介します。

4.3.1 素数の表

●例題 19 エラトステネスのふるい

自然数の中から素数を選びだすには,2 から順に,2 の倍数を消し,次に 3 を残して,3 の倍数を消す。以下同様に続ければ素数だけが残ることになる。

10  Retu=20:MaxNum=20*Retu:Keta=420  PrimeC=7:OtherC=2:F=1:cls30  for N=1 to MaxNum:color OtherC40  for J=2 to N-150  if N@J =0 then F=160  next70  if F=0 then color PrimeC80  locate (N@Retu)*Keta,NY=Retu90  print using(Keta),N;:F=0

100  next:color 7

列幅 (Retu),最大数 (MaxNum)素数の色 (PrimeC)その他の色 (OtherC) N が合成数なら F=1 N が素数 (F=0)なら素数の色

[補足]color 命令,locate 命令

(1) 行番号 20 の PrimeC の値を 0 に変更して,プログラム実行させなさい。

次に,PrimeC の値を 7, OtherC の値を 0 に変更して,実行しなさい。画面が見えなくなった

ら,”color 7” と正確に闇に向かって打つ必要がある。

(2) 行番号 10 の 列幅 (Retu) の値を 6 に変更して実行しなさい。そのとき 6 の倍数に素数が 1つもないことを確認しなさい。また,列幅を変えて,素数がある列と 1つもない列が他にあるかを調べなさい。

(3) 素数を求めるより高速なプログラムについて考えましょう。(希望者のみ)

• 調べる範囲 (MaxNum)は狭くできないか。

• 割る数は奇数 (40 行目 step 2)だけでもよい。

• さらに,割る数は素数だけでもよい。• 命令の組み合わせ方を変える。• 短いプログラムが速いとは限らない。

だれのプログラムが一番速いでしょうか?

[挑戦問題 7]n の多項式 f(n) = n2 − n + 41 とするとき,f(1), f(2), f(3), · · · で,はじめて合成数になる n はいくつでしょうか。(Leonhard Euler)

[挑戦問題 8]初項 a = 166601,公差 d = 11550 の等差数列で,項が素数の記録は何項目で破れますか。( Edgar Karst 1967 )

Page 33: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

28 CHAPTER 4. プログラムを利用した計算

 

■■■ 珈琲閑話 IV ■■■   素数を求める (三行革命)公式?

素数を求めるための画期的なプログラムを発見したとの情報が入りました。

ただし,UBASIC でしか動かないそうです。また,素数は 2 からでなく,3 から表示するとのことでした。

これが問題のプログラムです。本当に素数が表示できるのでしょうか。どうも怪しい気がするのですが。

【参考 4】 

10  for P=3 to 34020  if 2^(P-1)@P=1 then print using(4),p;

30  next

Page 34: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

4.4. 進んだプログラミング技法 29

4.4 進んだプログラミング技法

4.4.1 配列変数

変数には A, B, C, · · · とアルファベットを使いますが,変数の数が多いときや,同じような種類の変数をまとめたいときなど,「配列」を使うと便利です。

配列を使用するときには,まず dim 文で宣言する必要があります。

dim  A(20), B(5,5)

これで,A(0) から A(20) までの 21個の変数を使えます。B( ) は二次元の 6× 6,36個の変数。

●例題 20 2 の x乗を求める

10  dim A(20)20  for K = 1 to 2030  A(K) = 2^K40  next50  for K = 1 to 2060  print "2^";K,A(K)

70  next

A(K) に,2k が入ります。

4.4.2 read命令と data文

 いつも決まった数値を入力する場合,input文で入力すると不便な場合があります。このようなとき,

read文が有効です。

●例題 21 2次の行列式を求める。

10  read A,B,C,D20  print "ad-bc=",A*D-B*C

30  end40  data 5,650  data 7,2

行番 40, 50 の data 文から順に読み込む行列式の値を表示終了

4.4.3 ファンクションキー

キーボードの上の方に並んでいるキーで,既定のファンクションキーの設定は以下の通りです。key コ

マンドで変更することができます。f·1

¤ ¡£ ¢load " f·6

¤ ¡£ ¢save "

f·2¤ ¡£ ¢dir "*.UB" f·7

¤ ¡£ ¢xref

f·3¤ ¡£ ¢auto f·8

¤ ¡£ ¢append "

f·4¤ ¡£ ¢list f·9

¤ ¡£ ¢edit

f·5¤ ¡£ ¢run f·10

¤ ¡£ ¢cont

4.4.4 サブルーチン

1つのプログラムで,同じ処理を何回もするようなことがよくあります。このようなとき,同一処理に関する部分を 1つのプログラムとしてまとめ,処理に応じてそのプログラムを呼び出して使えば便利です。そうすれば,プログラムも簡略化され,全体の流れも見やすくなります。このようなプログラムをサブルー

チンと呼びます.

Page 35: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

30 CHAPTER 4. プログラムを利用した計算

はじめ

?

処理 1

?

処理 2

?

処理 3

?

処理 2

?

処理 4

?

おわり

手順通りの流れ

はじめ

?

処理 1

??

GOSUB

RETURN

処理 2処理 3

6

?

GOSUB

RETURN

処理 4

?

おわり

サブルーチンを使った流れ

【参考 5】 

10  print "カタツムリ"

20  gosub 80

30  print "ラバ"

40  gosub 80

50  print "レ"

60  print "フジノヤマ"

70  end80 ’ サブルーチン90  print "ノボ";

100  return

サブルーチンは,呼び出すための命令「gosub」と,

サブルーチンの中から戻る命令「return」で利用します。gosub [行番号] 行番号 (またはラベル)の行へ分岐する。return この命令で  gosub で呼び出した次の命令へ分岐する同様の分岐の仕方をするが,そのとき計算した値を返す命令として,ユーザー関数がある。

ユーザー関数は,呼び出すための命令「fn· · · · · ·」と,ユーザー関数の中から値を持って戻る命令「return( )」で利用します。

Page 36: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

4.4. 進んだプログラミング技法 31

【参考 6】 

10  A=fnY(2)20  print A

30  end40  fnY(X)50  Z=X^260  return (Z)

関数の使用  関数の宣言 関数値を持って戻る

■■■ 珈琲閑話 V ■■■   ガウス・ジョルダン法 3元連立 1次方程式をガウス・ジョルダン法により求めるプログラムを紹介します。係数のデータ等は行番号 170∼190 にあります。UBASIC では有理数除算命令 (//)があるので,有理数を係数とする連立方程式も正確に値を求めることができます。

3元連立 1次方程式の例 係数行列

2x + z = 7−x + y + 2z = 3x − 2y − z = 1

2 0 1 7−1 1 2 31 −2 −1 1

【参考 7】 

10  N=3:dim A(N,N)20  for J=0 to N-130  for K=0 to N:read A(J,K):next40  next50  for I=0 to N-160  B=A(I,I)70  for K=I to N:A(I,K)=A(I,K)//B:next80  for J=0 to N-190  if J=I then 120

100  C=A(J,I)110  for K=I to N:A(J,K)=A(J,K)-C*A(I,K):next 120  next130  next140  print "x=";A(0,N);"y=";A(1,N);"z=";A(2,N)

150  end160 ’ x y z

170  data 2, 0, 1, 7180  data -1, 1, 2, 3190  data 1,-2,-1, 1

係数の読込み  係数を基準化基準係数を Bへ   係数の消去  解の表示  係数のデータ

行番号 160 の「’」はリマーク文 (または,レム文)と言い,コンピュータは実行しないが人間のメモとして役立つ命令です。(参考 rem)

Page 37: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

32 CHAPTER 4. プログラムを利用した計算

Page 38: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

Chapter 5

数学教育への応用例

33

Page 39: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

34 CHAPTER 5. 数学教育への応用例

5.1 数表の代用

数学の教科書の巻末には,必ず数表がついています。2乗,平方根,あるいは三角比,対数表などです。コンピュータを使って,もっと精度の高い (有効数字の多い)数表をつくったり,数表の値を別の角度か

ら見直すと,新しい数との出合が待っているかもしれません。

5.1.1 2乗と平方根の表

1 から 100 までの,2乗および平方根の数表を,もっと精度を高く (有効数字を多く) つくりましょう。2 乗は x^2 または x*x で,正の平方根は sqrt(x) で求めます。

UBASIC 以外の BASIC では,平方根は SQR( ) で表すものがほとんどのようです。UBASIC では,どちらでも sqrt() と解釈してくれます。

●例題 22 1 から 100 までの平方根を求めるプログラムを参考に 2乗を求めるプログラムを作りなさい。

10  point -60:Keta=100:N=100

20  for K=1 to N30  print "sqrt(";K;")= ";

40  X=sqrt(K):gosub 100

50  next60  end

100 ’ サブルーチン110  Y=int(X):print Y;"."

120  for I=1 to Keta130  X=10*(X-Y):Y=int(X)140  print chr(48+Y);

150  if I@5=0 then print " ";

160  if I@50=0 then print

170  next180  print

190  return

平方根を求め,表示サブルーチンへ  サブルーチンの開始行平方根の整数部分を表示 小数部分の数字 1 つを取り出す数字 1 つを表示5 桁ごとに空白を表示50 桁ごとに改行  サブルーチンの終了 (戻る)

[補足]行番号 100 から 190 はサブルーチンです。行番号 40 のところから利用しています。

5.1.2 三角比の表

三角比の表もつくることができます。注意することは,角度が 60分法ではなく,ラジアンであることです。UBASIC には円周率π を定数 #pi として持っていますので,次のように変換します。

変換式 : 角度 X◦ を R (ラジアン)にする。

R = X/180*#pi

三角関数は, sin( ), cos( ), tan( ) です。 tan の場合,90◦,270◦,· · · で本来定義されませんが,UBASIC では負の数が出てきてしまいます。これは三角関数を級数展開しているためにこのようなことがおこってしまいます。

[挑戦問題 9]60 分法で 0◦ から 90◦ までの sin,cosの表をつくりなさい。同様に,0◦ から 89◦ までのtanの表をつくりなさい。

Page 40: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

5.1. 数表の代用 35

log( ) は自然対数であって,常用対数の関数はありません。「底の変換公式」を使って,常用対数を作

ります。

変換式 : x の常用対数は,log(x)/log (10)

[挑戦問題 10]1 から 100 までの常用対数表をつくりなさい。

UBASIC に限らず,たいていの言語には平方根の関数はありますが,立方根の関数はないようです。これを実現するには 自然対数と,指数関数を組み合わせて使求めてる必要があります。立方根では,次の

ようになります。

変換式 : x の立方根は,exp(log(x)/3)

この変換式を,生徒が理解するのは難しいかも知れません。しかし,/3 のところを *3 にすれば 3乗が出てきますし,/2 にすれば平方根と同じです。この部分を色々変えてみることにより,その変換式の意味

が,おぼろげながらわかるのではないでしょうか。「対数をとったあと,指数にする」という,一見意味の

ない操作でも,対数や指数の意味を理解するきっかけになると思うのですが。

5.1.3 平方根と累乗根

平方根を求める関数 (sqrt)を使わないで,平方根を求めるプログラムについて説明します。

●例題 23 原始的な平方根の計算

平方根は平方すれば元の数にもどります。平方して,元の数に足りなければ,不足分を加えてやります。

この原理をプログラムにすると,

10  N=2:point 15

20  X=0:R=1

30  input A

40  K=-1

50  K=K+1:if K>10 then end

60  D=(X+K*R)^N

70  if D<A then 50

80  X=X+(K-1)*R

90  R=R/10:print X

100  goto 40

平方して根号の中の値になることを利用した計算法

x0 1 1.4 1.41√

2• • • •....................................................................................................................................................................................................................................................................................................................................................................................................................... .......................................................................................................

.........................

........................................

..........................

........

....................................

...............................

........................................................................................................ ............................

.............................................................. ............................................. ....................... ............ .........

計算をしたら,組み込み関数 (sqrt)と値を比べてみてください。また,行番号 10 の N の値を 3, 4, 5 と変更すれば 3乗根,4乗根,5乗根も求められます。

Page 41: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

36 CHAPTER 5. 数学教育への応用例

●例題 24 二分割法による平方根

10  point -3

20  M=2:A=0:B=2

30  K=K+1

40  print K;A,B

50  S=(A+B)/2:F=S^2-M

60  if F>0 then B=S:goto 30

70  if F<0 then A=S:goto 30

80  print:print S

x

y

O

y = x2 − 2

a

b

a + b

2 •................................................................................................................................................................................................................................................................................................................................................................................... ...............

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

..................

...............

...................................................................................................................................................................................................................................................................................................................................................................................................................................................

........

........

........

........

........

........

........

........

........

........

...................................................

........

........

........

........

...........

●例題 25 ニュートン法による平方根

10  point -20

20  M=2:Eps=10^(-5)

30  input "ショキチ";A

40  if A=0 then 30

50  X=(A+M/A)/2

60  if abs(X-A)>Eps then A=X:goto 50

70  print using(4,70),X

x

y

O

y = x2 − 2

................................................................................................................................................................................................................................................................................................................................................ ...............

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

.....................

...............

.....................................................................................................................................

...............................................................................................................................................................

......

......

......

......

......

......

......

......

........................................................................

[補足] abs( ) は絶対値を返す関数

方程式の近似解法としては、他に「挟みうちによる方法」と「逐次代入による方法」等があります。

■■■ 珈琲閑話 VI ■■■   無理数の中に誕生日の数の並びはあるか?

sqrt(2) のなかにあなたの誕生日はあるでしょうか。次のプログラムは sqrt(2) の小数展開の中にあ

なたの誕生日と一致する数字の並びがあるかを調べるものです。例えば 5月 19日の誕生日の場合 (3桁)。

【参考 8】誕生日調べ

10  point 200

20  N=230  A=sqrt(N)

40  C=51950  for K=1 to 200060  A=10*(A-int(A))70  B=int(100*A)80  if C=B then print K,B

90  next

誕生日を設定 注目する小数点の位置を 1桁ずつ変更3桁だけ取り出す

誕生日が 4 桁の人は行番号 70 で 100 を 1000 に変更してください。

Page 42: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

5.1. 数表の代用 37

5.1.4 数値積分の計算法

積分区間は [0, 1] での数値積分を仮定します。

●例題 26 区分求積による計算

分数関数1

x + 1の区間 [0, 1] の積分は log 2になります。

10  input "ブンカツスウ n=";N

20  H=1/N:S=0

30  for K=0 to N-1

40  S=S+fnY(K*H)

50  next

60  print S*H

70  end

80  fnY(X)

90  Z=1/(X+1)

100  return(Z)x

y

O

y = f(x)

1....................

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

.......................................................................................................................................................................................................................................................................................................................................................................................................................................................... ...............

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

..................

...............

...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

.....................................................................................................................

.................

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

.......

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

..

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

...

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

....

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

....

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

..

..................................................

..................................................

..................................................

..................................................

..................................................

..................................................

アルゴリズムが簡単で積分の理解にはよいのですが,精度は期待できません。次の台形公式による計算と

精度を比べてみてください。

●例題 27 台形公式による計算

10  input "ブンカツスウ n=";N

20  H=1/N:S=(fnY(0)+fnY(1))/2

30  for K=1 to N

40  S=S+fnY(K*H)

50  next

60  print S*H

70  end

80  fnY(X)

90  Z=1/(X+1)

100  return(Z)x

y

O

y = f(x)

1....................

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

.......................................................................................................................................................................................................................................................................................................................................................................................................................................................... ...............

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

..................

...............

...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

.....................................................................................................................

.................

..................................................................................................................................................................................

..................................

..................................................................................................................................................................................................................................

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

..

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

...

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

....

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

..

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

Page 43: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

38 CHAPTER 5. 数学教育への応用例

5.2 確率の実験

5.2.1 乱数について

0 から 1 までの乱数を与える関数があります。

rnd使い方 a = rnd 0 から 1 までの乱数を与える

b = rnd * 6 0 から 6 までの乱数を与える

次のようにして,乱数を表示してみます。

●例題 28  

10  a = rnd20  b = rnd30  print a,b

乱数が 2個 表示されると思いますが,隣の方のものと見比べてください。同じ乱数が表示されていないでしょうか。

同じ乱数がでないようにするためには,次の命令を使います。

randomize使い方 randomize 乱数列を変える

randomize 123 123番目の乱数列を与える

この乱数を使って,確率のシミュレーションを行うことができます。

5.2.2 サイコロを振る

乱数を使って,サイコロを振るシミュレーションを行ってみましょう。

サイコロは 1 から 6 までの目が出ますので,次のようにするとよいでしょう。

A = int(rnd * 6 + 1)

サイコロを 120 回振って,出た目の回数を調べてみましょう。

●例題 29  

10  randomize20  dim A(6)30  for I = 1 TO 12040  D = INT(RND*6+1)50  A(D) = A(D) + 160  next70  for D = 1 TO 680  print D,A(D)

90  next

A(D) には,サイコロのでた目の回数を表示します。      サイコロの目 D と回数 A(D) を表示します。

ここでは,「サイコロを 120回振った結果」だけを表示していますが,1つ 1つのサイコロの目を出したければ,次の行を加えてみてください。

45 print D,

Page 44: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

5.2. 確率の実験 39

これを応用すれば,1 から 10 の目を持つサイコロをつくることもできますし,1 と 2 の目だけを出すサイコロを作ることができます。

[挑戦問題 11]0 から 9 までの目の出るサイコロを作って,100 回振った結果を表示しなさい。

5.2.3 モンテカルロ法

●例題 30 大数の法則の利用

2次方程式  ax2 + bx + c = 0 (a 6= 0)において,係数 a, b, c をサイコロの出た目で与えたとき,重解と

なる場合の数をモンテカルロ法で推測した。理論的に求めた場合の数 (プログラムを使って求めてもよい)と比較しなさい。

10  randomize:T=80:N=10020  for K=1 to T30  for I=1 to N40  A=int(rnd*6)+150  B=int(rnd*6)+160  C=int(rnd*6)+170  D=B^2-4*A*C80  if D=0 then R=R+190  next

100  S=S+6^3*R/N:R=0110  next120  print S/T

平均をとる回数 T,サイコロをふる回数 N  係数 a をサイコロで決める。   b   c判別式 D を計算重解なら R でカウントする 出現回数 63 ×R/N の和 S,R 初期化 平均出現回数を表示

円周率を確率によって求める方法で有名なものに,次のようなものがあります。

正方形の中にでたらめに点を打ったとき,内接する円の中に入っている点の数を数えることに

より,円の面積と正方形の面積の比を予測し,円周率を推測する。

※解説 座標平面上の 4点 (0, 0), (1, 0), (1, 1), (0, 1) によってできる正方形のなかにでたらめに点を打つ。原点からの距離が 1 以下の点の数 n と,正方形内に打った点の数 N の比が

π

4であることが推測さ

れる。

これを次のようになおして,実際に求めてみましょう。

●例題 31 モンテカルロ法による円周率の計算

10  randomize

20  N=200:K=0

30  for I=1 to N

40  X=rnd:Y=rnd

50  if X^2+Y^2<=1 then K=K+1

60  next

70  S=4*K/N

80  print S

x

y

O....................

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

..

..

..

..

.

..

..

..

..

..

.

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

..

..

.

..................................................................................................................................................................................................................................... ...............

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

.....................

...............

........

........

........

................................................................................

.......................

............................

.....................................................

................

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

........

......................................................................................................................................................

※解説 rnd 関数が 0 から 1 までの乱数を与えるので,これを 2 組作り,x 座標,y 座標とします。これ

の原点からの距離 r =√

x2 + y2 が 1 以下のものを数え,点全体の数との比を 4 倍すれば,円周率が推測できるはずです。打つ点の数を 1000,10000にすると,円周率の推測値はどうなるでしょうか。回数を多くしても精度が上がらないとき,原因はどこにあるのでしょう。

Page 45: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

40 CHAPTER 5. 数学教育への応用例

 

■■■ 珈琲閑話 VII ■■■   原子の消滅シミュレーション

原子が単位時間あたり確率 p で消滅するとき,N 個の原子の消滅の過程を示します。

10  randomize20  N=200:Y=N:P=0.0130  K=040  for I=1 to Y50  if rnd<p then K=K+1

60  next70  Y=Y-K80  print Y;

90  if Y>0 THEN 30100  end

原子の個数 N=200, 消滅確率 P=0.01原子の消滅数 K=0 確率が P 以内なら 原子が消滅した。 1回に消滅した原子の個数を元から引く。 原子があれば,行番号 30 から繰り返す。

Page 46: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

5.3. 数の性質 41

5.3 数の性質

5.3.1 有理数の小数表示と循環節

素数 p を分母とする単位分数1pの小数展開を考えます。

たとえば17

= 0.1428571428571428571 のように,循環節の長さが 6 の循環小数となります。循環節の長さ (周期)が容易に確認できないほど長いものを問題としましょう。

161の循環節の長さは 60 です。

1113

の循環節の長さは 112 になります。

次のプログラムは,素数 p に対して循環節の長さが p− 1 となる素数 p を発見するものです。分母の素

数は UBASIC の素数を返す関数 prm( )を利用しました。

●例題 32  

10  for J=1 to 100020  P=PRM(j):FLG=1:Kmax=P-1

30  for K=2 to Kmax40  if (10^(K-1)-1)@P=0 then FLG=050  next60  if FLG=1 then print using(5),P;

70  next

5.3.2 ピタゴラス数

直角三角形に関する三平方の定理 (ピタゴラスの定理)について,直角三角形の 3辺が整数で表せるとき,その 3つ組整数をピタゴラス数と呼びます。

(3, 4, 5), (5, 12, 13) などがピタゴラス数です。32 + 42 = 9 + 16 = 25 = 52

52 + 122 = 25 + 144 = 169 = 132

一般に,方程式  x2 + y2 = z2 を満足する整数 x, y, z の組をピタゴラス数と呼びます。ピタゴラス数

を求める方法を調べるのも,奥深い話題があります。

●例題 33 ピタゴラス数を求める。

10  N=2020  for Y=1 to N30  for X=1 to Y40  Z=sqrt(X^2+Y^2)

50  if Z=int(Z) then print X,Y,int(Z)

60  next70  next

※解説 ピタゴラスの数を求める一般公式を知らないとしたら,x, y に整数をいれて z が整数になるかを

調べることになる。Z=sqrt(X^2+Y^2)で,整数なら等号 Z=int(Z) が成り立つ。さて,規則性を発見でき

るでしょうか。

Page 47: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

42 CHAPTER 5. 数学教育への応用例

 

■■■ 珈琲閑話 VIII ■■■   ノルマンの軍団の問題

正方形に並べた軍団が 60 個あります。それに指揮官の王様を 1名加えるとまた 1つの大きな正方形ができるとします。この王様の軍団の総兵力は何人で

しょうか。

最小の整数解を求めなさい。

軍団の正方形の 1辺を x とすると,式は

60x2 + 1 = y2

ここで,y は大きな正方形の 1辺の長さです。やさしいですね。

本物の “ノルマンの軍団の問題” では軍団の数が 61個のときです。さて,求まるでしょうか。(新数学辞典 大阪書籍より)

Page 48: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

Chapter 6

グラフィック

UBASIC ではグラフィックも使えます.

43

Page 49: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

44 CHAPTER 6. グラフィック

図形を表現するという意味において,グラフィックをつかうことは数学では大きな位置を占めると思いま

す.今はやりの Computer Graphic というわけにはいきませんが,いろいろな関数や図形の方程式を与えて,その graph を見せたり,生徒に書かせたりすることにより,関数や図形の理解が深まればコンピュータを使う意味もあると思います.

6.1 グラフィック事始め

6.1.1 グラフィックを使う準備

UBASIC でグラフィックを使う準備をするには MS-DOS の知識がほんの少し必要です.UBASIC 自体はグラフィックの機能を自分では持っていません.UBASIC のプログラムがグラフィック命令を読むと,MS-DOS のグラフィック命令を呼び出しますが,それを使うには,NEC の MS-DOS 3.3以降に付属の graph.sys と graph.lib の 2 つのファイルが必要です.これを使うには config.sys を書き換える必要があり,config.sys に,graph.sys を使う設定の行がなければ,

DEVICE=A:Y=DOSY=GRAPH.SYS

のような行を書き加えます.アンダーラインの部分はパソコンによって異なると思います.パソコンをよ

く知っている人に聞くとわかります.

6.1.2 円を描いてみよう

プログラムを組む前にどんなことができるか,ダイレクトモードで見てみましょう.

circle (100, 200), 50

と入力してください.どうなりますか?さて,circle の部分は「円を描く命令だな」とわかりますが,(100, 200) の部分は何でしょう.この

部分の数字をいろいろ変えて見ましょう.プログラムを学ぶとき,マニュアルで理解してからプログラム

を組む必要もありますが,このようにいろいろと実験してみると,マニュアルよりも感覚的にわかりやす

い場合があります.実験するときは,はじめは常識的な数字,わかってきたらとてつもない数字を入れて

みてこの命令がどんな数値に対して,意味を持つのか調べてもよいでしょう (もちろんマニュアルにも書いてありますが).プログラムがうまく動かないときは,意味を持たない数を命令に与えたときもあり,このようなプログラムのミス1を見つけるのは大変な作業になります.

circle 命令

機能 画面に円を描く。

〔書式〕  circle (横座標,縦座標), 半径

例 circle (123,456), 22

円を書いたら消しましょう.cls 命令

機能 画面を消去する

〔書式〕  cls [引き数 ]

例 cls 2

グラフィック画面を消去するのは cls 2 です.cls 3 とすると,テキスト (文字)画面とグラフィック画面の両方を消去します.

[練習 7] いろいろな円を描いてみましょう.1バグといいます.

Page 50: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

6.1. グラフィック事始め 45

6.1.3 点,直線,長方形を描いてみましょう

pset 命令

機能 指定された点(ワールド座標)に色を付ける。

〔書式〕  pset (x,y)

例 pset (50, 80), 7

これはいわゆる点を打ちます.これで理論的には精密な絵を描けます.しかし,ひとつひとつ打つため

たくさんの点を打つと非常に時間がかかります.もちろんプログラムも大変なものになります.line 命令

機能 指定された2点(ワールド座標)間を直線で結ぶ。

〔書式〕  line [(x1,y1)]-(x2,y2)

例 line (50, 80)-(100,200)

実際に関数のグラフを書くときは,プログラムのしやすさやスピードの点で,こちらを使うことが多く

なるでしょう.

ちなみに ,,"b" をつけると長方形になります.マニュアル,ヘルプを参照してください.

●例題 34  line (100,100)-(200,200) (100,100)から (200,200)へ直線

line -(250, 100) (200,200)から (250,100)へ直線

line -(100,150),,"b" (250,100), (100,150) を対角線の両端とする長方形

Page 51: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

46 CHAPTER 6. グラフィック

6.2 グラフィックの使用

6.2.1 画面上の座標

ここで,画面上の座標がどうなっているか説明しましょう.

まず,画面左上隅の点を原点 (0, 0) とし,画面は横 640 ドット,たて 400 ドットなので,x 座標は,

0∼639,y 座標は,0∼399 で画面内の点を表します.これ以外の領域に円を描く命令を指定してもエラーになることはなく,画面内に表示しなくなるだけです.

circle (1234,4321), 4321

また,小数を代入しても

circle (123.45678, 213.93), 22.5

四捨五入されて,

circle (123, 214), 23

と同じ円になります.定数ではなく,式も書くことができます.

circle (1000/3, sqrt(12340), tan(1.55)

6.2.2 数学で使う

さて,グラフィックが画面全体に表示されると邪魔に思えるときがあります.画面上にグラフィックを表

示する領域を指定しましょう.view 命令

機能 指定された画面上の2点 (オリジナル座標といいます)をそれぞれ左上、右下とする長方形内をグラフィックエリアに

設定する。

〔書式〕  view (x1,y1)-(x2,y2)

例 view (300, 80)-(599, 379)

※解説  

viewのみを書くと初期化される。必ず x1<x2,y1<y2 でなければならない。

●例題 35  

つぎの命令を実行してみてください.

view (300, 80)-(599, 379)

circle (10, 20), 50

view

circle (10, 20), 50

[挑戦問題 12]実は circle 命令も view 命令も色を指定できます.ヘルプが使える人は,それを読んで

色を出してみましょう.

[挑戦問題 13]view 命令で領域を指定すると cls 2 で消去される領域もその内部になります.

view 命令で領域を指定し円などを描き,そのまま消さずに view 命令を指定し直し画面消去をするとどう

なりますか.

Page 52: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

6.2. グラフィックの使用 47

さて数学での座標は,横軸では右へ行くほど大きくなり,画面の座標は一致していますが,たて軸は画

面の座標は下へ行くほど大きくなり,数学の座標とは逆になります.さらに,原点が左上隅にあるのも気

に入りません.原点はできれば画面の真ん中付近にあってほしいものです.何とかならないでしょうか.window 命令

機能 view で指定したエリアに表示する座標の範囲を指定する。

〔書式〕  window (x1,y1)-(x2,y2)

例 circle (-100,100)-(100,-100)

※解説 view で指定した左上の点に window の (x1,y1) が,右下の点に window の (x2,y2) が,対応す

るようにそれ以後のグラフィック命令のパラメータが変換される.(ワールド座標といいます)

具体的に見てみましょう.view 領域がわかるように色をつけています.

●例題 36  

view (300,100)-(500,300),1,7

window (-20,20)-(20,-20)

circle (10,-5),13

view の縦横のドット数の比と window の縦横の長さの比が一致していないと,円を描いても楕円になり

ます.

●例題 37  

view (300,100)-(500,200),1,7

window (0,20)-(10,0)

circle (5,10),5

グラフィックを使用するに当たって,view, window の部分はプログラムとしてファイルに保存しておくと毎度タイプする必要がなくて便利でしょう.

10  view (300,100)-(500,300),1,720  window (-10,10)-(10,-10)

パラメータの部分を input 命令を使って入力するという手もあるでしょう.

6.2.3 こまごましたこと

実際にグラフィックを使用するときは,ほかにもたくさんの準備が必要です.いろいろ込み入ったことを

始めるときに必要になってきます.screen 画面モードを設定

gsize gprint で文字を書くときの文字の大きさの指定

gcolor gprint で文字を書くときの色と,グラフィックへの上書きか

消して書くか.

console グラフィックの命令ではないが,テキストをどこに表示するか

を指定する.このあたりは,マニュアル,ヘルプを参照してください.また,N88BASIC とだいぶ違い,MS-DOS の

グラフィック画面についてよく知っている必要があります.UBASIC のマニュアル以外にも MS-DOS のグラフィック画面についての書物を参照してください.

Page 53: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

48 CHAPTER 6. グラフィック

6.2.4 生徒の使用

この section で述べたことを生徒に説明してプログラム等を組ませるのは労多くしてなんとやらだとおもいます.view, window 命令その他グラフィックの準備部分はあらかじめ教員が用意をしておき,

(1) 関数を入力するだけ

(2) 点の刻み幅の部分をプログラムさせる

(3) それ以上のプログラムをやらせる

の大きく 3 段階程度の生徒のアプローチがあると思います.N88BASIC は,文字列を入力してそれを式として,評価する方法がありませんが2,UBASIC は比較的素直に式を変数に代入できます.その事を含めつぎの section から関数のグラフを書く解説します.

2実はとてもトリッキーな方法があります.

Page 54: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

6.3. 関数のグラフ 49

6.3 関数のグラフ

6.3.1 y = f(x)のグラフ

まず,f(x) = x sin x のグラフを描いてみましょう.とりあえずはこんな所でしょうか.

●例題 38 y = x sin x のグラフを描いてみる.

10 ’asave "g01"

20  view (300,100)-(500,300),0,7:’グラフィックの領域指定30  window (-3*#pi,10)-(3*#pi,-10):’ 座標の範囲指定40  I=int(-3*#pi):’ 初期値50  pset (I,I*sin(I)):’ はじめに点を打つ60  for X=I to int(3*#pi):’ for は整数値だけ70  line -(X,X*sin(X)):’ 続きは直線で結ぶ80  next90  end

これだと,刻みの幅が大きくて美しくありません.範囲が −10 から,9 で刻み幅が 1 だからです.かといって,−100 から,99 くらいにするとグラフの表示範囲が大きくなりすぎます.どんな範囲を指定しても画面上では 1 ドットずつの刻み幅になるように改造しましょう.

●例題 39 1 ドットずつ描く.

10 ’asave "g02"

20  view (300,100)-(500,300),0,730  X1=-3*#pi:X2=3*#pi

40  window (X1,10)-(X2,-10)50  Unit=(X2-X1)/200:’ 横軸は 200ドット,座標を 200等分60  X=X170  pset (X,X*sin(X))

80  for I=1 to 20090  X+=Unit:’ 1ドットは座標で Unit ひとつぶん

100  line -(X,X*sin(X))110  next120  end

さらに,いまは縦横 200 ドットですが,関数によっては横長がよかったり,縦長がよかったり.座標も−100 から 100 とか,正の数だけでいいとか,いろいろ出てくるごとに関係するプログラム内の数値を書き直していると大変です.プログラムの中にでてくるこのような定数は「マジックナンバー」と呼び,他

人がプログラムを読んだり,後で自分のプログラムを読むときに3その可読性は大変悪くなります.

3自分で書いたプログラムも時間が経つと一見して何を書いたのかわからなくなり,数ヶ月前の自分は他人としか思えません.そのために,マジックナンバーを無くし,丁寧にコメントを着けることをお薦めします.

Page 55: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

50 CHAPTER 6. グラフィック

●例題 40 グラフィック画面の大きさを変える.

10 ’asave "g03"

20  screen 1:’view を初期化30  cls 2:’ グラフィック画面をクリア40  console ,,0:’下のファンクションキーの表示が邪魔50  Vsize=130:’ 縦横のグラフィック画面の大きさをドット数で指定.60  Hsize=15070  view (600-Hsize,200-VsizeY=2)-(600,200+VsizeY=2),0,780  X1=-3*#pi:X2=3*#pi:Y1=-10:Y2=10

90  window (X1,Y2)-(X2,Y1)100  Unit=(X2-X1)/Hsize:’ 横軸は Hsizeドット,座標を Hsize等分110  X=X1120  pset (X,X*sin(X))

130  for I=1 to Hsize140  X+=Unit150  line -(X,X*sin(X))160  next170  end

[練習 8] 行番号 50, 60 の数値をいろいろ変えてみてください.どうなりますか?

まだまだ,マジックナンバーがあります.C 言語などのコンパイラ型の言語では,マクロという形で定数を記述できるのですが,UBASIC ではすべて定数に名前をつけて使用するとすべて変数になってしまい,なんだかメモリをたくさん使用してもったいないような気がするのは筆者が古い人間だからでしょう

か.メモリがふんだんにある現代のパソコンを使っていてこのようなことをいうのはかなり貧乏性ですね.

あと,座標軸と目盛りをつけましょう.

●例題 41 座標軸と目盛りをつける

10 ’asave "g04"

20  screen 1:cls 2:console ,,030  gcolor -7:’ グラフィックの文字は白で重ね書き40  Vsize=200:Hsize=200:’ 画面のサイズをドット数指定50  view (600-Hsize,200-VsizeY=2)-(600,200+VsizeY=2),0,760  X1=-3*3.14:X2=3*3.14:Y1=-5:Y2=10:’ 座標の範囲70  window (X1,Y2)-(X2,Y1)80  line (X1,0)-(X2,0),4:’座標軸90  line (0,Y1)-(0,Y2),4

100  glocate mapx(X1),mapy(0):gprint using(3,1),X1; ’目盛り110  glocate mapx(X2)-44,mapy(0):gprint using(3,1),X2;

120  glocate mapx(0)-4,mapy(Y2):gprint using(3,1),Y2;

130  glocate mapx(0)-4,mapy(Y1)-20:gprint using(3,1),Y1;

140  glocate mapx(0),mapy(0):gprint "O";

150  Unit=(X2-X1)/Hsize160  X=X1170  pset (X,X*sin(X)),7

180  for I=1 to Hsize190  X+=Unit200  line -(X,X*sin(X)),7210  next220  end

Page 56: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

6.3. 関数のグラフ 51

gprint で目盛りをグラフィック画面に書き入れます.あまり桁数が多いと見づらいので using で調整

します.gprint, using はテキスト表示の print と使い方は同じです.書く位置は glocate で指定する

のですが,glocate で指定できる座標はスクリーン座標4です.X1, Y1 等はワールド座標で,そのまま

glocate で使うことができません.それをスクリーン座標に変換するのが mapx, mapy です.このプログ

ラムでは小さい数をたしてこまかく位置を調整しています.さらに,ふつうは gprint は文字を書く領域

のグラフを消してから文字を書き,それでは困るので gcolor で重ね書きを指定しています.こまかな使

用法はヘルプやマニュアルを参照してください.

ここまでくると,だんだんと頭が痛くなってきたのではないでしょうか.グラフィックのプログラムを

ちゃんとしようとすると,このように準備のプログラムが膨大になり,とても手軽に扱える代物ではなく

なります.ですから,授業等で使うときはこの準備部分は教師が用意しておく必要があるわけです.また,

このプログラムは原点が画面の中にないとうまく表示できません.そこをうまく表示しようとすると,さ

らにプログラムの行数が増えます.これ以上の表示のための改造はこの講習の本題から外れます5ので,次

のステップに移ります.

6.3.2 文字列を式として使う

N88BASIC でできなくて,UBASIC でできることのひとつに文字列を式として扱うことがあります.前例題のプログラムにおいて,y = x sin x のグラフを書きましたが,他の関数を書きたいとき,行番号 170

と 200 を変更する必要があります.2 箇所に分かれているものを変更するのは面倒なものです.もちろん,サブルーチンを使えば 1 箇所にまとれられます.では,サブルーチンを使って 1 箇所にまとめてみたところで,input 命令で生徒に関数を文字列として代入させてその関数を描かせるにはどうしたらよいでしょ

う.N88BASIC などの普通の BASIC は文字列は文字列で,その値を計算することは出来ません.つまり,関数が変われば毎度毎度プログラムを書き換える必要が出てきます.UBASIC では,文字列を式として扱う方法があります.

目盛りをつけたり座標軸を描いたりするのは本質ではないので,例題 39 を書き換えます.文字列を入力するのに strinput 文字列を式として計算するのに val を使います.

strinput 命令

機能 指定した変数にキーボードから文字列を代入する。

〔書式〕  strinput ["メッセージ"];変数名

例 strinput "式を入力してください";F#

val 関数

機能 文字列の表す数値。

〔書式〕  val(文字列)

例 X=2:print val("X+X^2") は 6。

4view で指定した領域の左上隅が原点で,右下に行くほど座標の値は大きくなり,ドット数で指定する.5いや,すでに外れてます.

Page 57: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

52 CHAPTER 6. グラフィック

●例題 42 文字列の値を計算する.

10 ’asave "g05"

20  strinput "関数は";F#:’ 特別変数 F# に関数を文字列で入力30  view (400,100)-(600,300),0,740  X1=-10:X2=10:Y1=-10:Y2=1050  window (X1,Y2)-(X2,Y1)60  Unit=(X2-X1)/20070  X=X180  pset (X,val(F#)):’ val で値を計算.90  for I=1 to 200

100  X+=Unit110  line -(X,val(F#))120  next130  end

UBASIC には文字列専用の変数はありません.文字列は長変数か特別変数6に格納します.F# は特別変数

です.

このように,文字列を式としてその値を計算できるのは,UBASIC ならではです.さて,ここで,

25  F#=encode(F#)

を書き加えてスピードを比べてください.encode関数は文字列を内部コードの文字列に直しますのでずっ

と高速に計算でき,グラフを描くスピードがずっと速くなります.ファイル g0.ub に今まで説明したすべ

てを実現したプログラムを書いてあります.また,UBASIC のサンプルプログラムにも平面や立体のグラフを描くものあるので,参考にしてください.

6マニュアル,ヘルプを参照してください.

Page 58: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

6.4. その他 53

6.4 その他

文部省発行の「指導計画の作成と学習指導の工夫」よりグラフィックプログラムの部分を UBASIC のプログラムに直してみました.

6.4.1 やさしいもの

●例題 43 x 軸,y 軸を滑ることなく移動する直線.

ファイル g11.ub を参考にしてください.x 軸,y 軸を 10 ドットずつ動く 2 点を直線で結んだだけです.

●例題 44 正多角形の頂点を結ぶ直線

ファイル g12.ub を参考にしてください.正 n角形の中心角を D とすると,D =2π

nである.そこで,正

n角形の中心 O を画面のほぼ中央 (300,200) にとり,半径 150 の円周上にその頂点をとる.それらを順次直線で結べばよい.

●例題 45 二次関数のグラフ.

ファイル g13.ub を参考にしてください.これは前の section で作ったプログラムとほぼ同じです.

このような y = f(x) という陽関数表示できる関数のグラフは,定義式の部分を変えるだけで,瞬時にそのグラフが得られ,それを観察することによって,y = f(x) の性質を調べることができます.観察する内容は,増減や極値,零点の有無などの関数値の変化,漸近線,関数の現われる範囲,対称性,特異点,x = α

での挙動などがあります.

6.4.2 パラメータ表示の曲線

一般に {x = f(t)y = g(t)

で,媒介変数 (パラメータ)t を動かせば曲線が描けます.これを曲線のパラメータ表示といいます.この考えで描かせるプログラムを g14.ub に書いたので参照してください.

円,楕円

y = f(x) を描かせるプログラムで y =√

1− x2 と y = −√1− x2 のグラフを区間 −1 ≤ x ≤ 1 の上で描けば,原点を中心とした単位円が描けます.しかし,円周を描く最もエレガントな方法は,三角関数を

利用する方法です.実際,三角関数は「円関数」とも呼ばれるほど円とはなじみ深いものがあります.{

x = cos t

y = sin t

として,パラメータ t を 0 から 2π まで変化させると点 (x, y) の軌跡は円になります.さらに,一般に a > 0, b > 0 を定めて,

{x = a cos t

y = b sin t

として,t を 0 から 2π まで変化させると点 (x, y) の軌跡は楕円(x

a

)2

+(y

b

)2

= 1

になります.

Page 59: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

54 CHAPTER 6. グラフィック

双曲線

双曲線については,a, b を正の定数として,{

x = acos t

y = b tan t

を考え,t を −π から 3π まで動かすと双曲線(x

a

)2

−(y

b

)2

= 1

が得られます.

リサージュ曲線

自然数 a, b を与えたとき, {x = sin at

y = sin bt

で描く曲線をリサージュ曲線といいます.a, b をいろいろ変えてリサージュ曲線を楽しんでください.

[練習 9] 曲線 (ア) x = sin t, y = sin 2t と,曲線 (イ) x = sin 3t, y = sin 6t は,同じものでしょうか.

パラメータ付き曲線の見地からは,両者は同じ軌跡をもつが異なる曲線であると考えるようです.パラ

メータ付き曲線の動点の運動を表していると解釈することがあります.同じレールの上を走っても,スピー

ドが違えば異なる曲線で,曲線 (イ) の方が (ア) よりも 3 倍速い運動をしています.このことは,実際にパソコンに作図させてみるとよく分かります.

正葉線

極形式の方程式

r = a sin nt

で与えられる曲線を正葉線といいます.n が奇数のときは,n 枚の花弁が,n が偶数のときには,2n 枚の

花弁が現れます.極形式の方程式をパラメータ表示の形に直すには,

x = r cos t, y = r sin t

で変換します.

[練習 10] n が分数の時はどうなりますか.

カーディオイド

極形式の方程式

r = a(1 + cos t)

で与えられる曲線をカーディオイド (心臓曲線)といいます.

r = a(1− cos t)

は上の曲線属と y 軸あるいは原点に対して対称です.

Page 60: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

6.4. その他 55

6.4.3 陰関数表示の曲線

楕円の標準形 (x

a

)2

+(y

b

)2

− 1 = 0

のように

F (x, y) = 0

の形で曲線が与えられるときがあります.このとき,曲線は陰関数表示されているといいます.この場合,

方程式 F (x, y) が簡単であっても,その表す曲線を描くことは難しいものとなります.F (x, y) の値を次々に計算して,それが正であれば画面上に点を打ち,そうでなければ点を打たないことにすれば,正の領域の境界線として,グラフの輪郭をとらえることができます.g15.ub を参照.

例えば,

F (x, y) = (x2 − y2)(x2 + 4y2 − 1)

が正の部分を描くことによって,

x = y

x = −y

x2 + 4y2 = 1

なる直線と楕円よりなる曲線

(x2 − y2)(x2 + 4y2 − 1) = 0

に囲まれた領域を描くことができます.

二次曲線

このプログラムを使えば,二次曲線の性質を実験しながら説明することができます.

2定点 (1, 0), (−1, 0) との距離の和が 4 に等しい点の集まり

√(x− 1)2 + y2 +

√(x + 1)2 + y2 − 4 = 0

は楕円,2定点はこの楕円の焦点.距離の差が一定の点の集まりで双曲線になります.

直線と点を定め,直線への距離と点への距離の比が一定の点の軌跡も描くことができ,これらは,比の

値 (離心率)により,楕円,放物線,双曲線となります.例えば,直線 y = 0 と点 (0, 1) への距離が等しい点の軌跡を描くには,

F (x, y) = |y| −√

x2 + (y − 1)2

とします.これは放物線

2y = x2 + 1

を表します.

Page 61: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

56 CHAPTER 6. グラフィック

Page 62: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

参考文献

[1] 高等学校学習指導要領. 文部省. 大蔵省印刷局.

[2] 高等学校指導要領解説 数学・理数編. 文部省. ぎょうせい.

[3] 高等学校数学指導資料 指導計画の作成と学習指導の工夫. 平成 4 年 5 月文部省. ぎょうせい.

[4] UBASIC による解析入門. 森本光生. 日本評論社.

[5] 改定増補新数学辞典. 一松信・竹之内修編. 大阪書籍.

[6] オイラーの主題による変奏曲. 小野孝. 実教出版.

[7] 数学をパソコンで RUN しよう. 飯高茂. 岩波書店.

[8] 数学のアイディア甦るガウスの夢. ハッル著 山下純一訳編. 東京図書.

[9] ガロアの理論. I.スチュワート著 永尾汎監訳 新開章三訳. 共立出版.

[10] 数学・まだこんなことがわからない (BLUE BACKS). 吉永良正. 講談社.

[11] 数学セミナー 1993年 11月. 日本評論社.

[12] 初等数値解析 . 薮下信. 森北出版.

[13] コンピュータによる新しい高校数学. 正田實・寺田文行・吉村啓編. 日本評論社.

[14] N88 -BASIC によるはじめてのアルゴリズム入門. 河西朝雄. 技術評論社.

57

Page 63: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

索 引

■記号’, 31*¤ ¡£ ¢, 6*, 7, 8+, 7-, 7

/¤ ¡£ ¢, 6/, 6//, 7:, 17=, 13?, 6, 7, 10Y=, 10^, 8, 10¾¤ ¡£ ¢, 6

¤ ¡£ ¢, 6

■Aappend, 29auto, 29

■BBASIC, i, ii

BS¤ ¡£ ¢, 6

■CCAPS¤ ¡£ ¢, 6COBOL, i, iicolor, 27cont, 29cos, 9, 34

CTRL¤ ¡£ ¢+ C

¤ ¡£ ¢, 17

C言語, i, ii

■Ddata, 29

DEL¤ ¡£ ¢, 6

dim, 29dir, 29

■Eedit, 29Euler, Leonhard, 27EXIT, 4exp, 22, 35

■Ffn· · · · · ·, 30for...next, 20, 22FORTRAN, i, ii

■GG.C.M., 25gosub, 30goto, 17GRAPH.SYS, 3

■ Iif...then, 17input, 15

INS¤ ¡£ ¢, 6int, 22

■KKarst, Edgar, 27key, 29

■LL.C.M., 25LISP, iilist, 12, 29load, 16, 29locate, 27log, 35LOGO, i, ii

58

Page 64: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

索 引 59

■MMPQSX, 2

■Nnew, 12next, 20, 22

■Ook, 12

■PPASCAL, iiπ, 9, 34#pi, 9, 34point, 8print, 6, 10prm, 41

■Rrandomize, 38read, 29rem, 31reset, 4return, 30rnd, 38run, 12, 29

■Ssave, 16, 29

SHIFT¤ ¡£ ¢, 6sin, 9, 34SQR, 34sqrt, 8

STOP¤ ¡£ ¢, 17system, 4

■Ttan, 9, 34then, 17

■Uub, 4UBASIC, 2using, 21

■W

word, 8

■Xxref, 29

■あアスタリスク, 6アセンブリ, i, ii余り, 24

■いインサート, 6インタプリタ, i

■う(文字の)上書き, 6

■えエラトステネスのふるい, 27円周率, 9, 34, 39

■か階乗, 20ガウス・ジョルダン法, 31拡張子, 16(プログラムの)確認, 12掛け算, 6関数, 7, 30

■き木田祐司, 2キャプス, 6行番号, 12

■く空白, 6九九の表, 22区分求積, 37組み合わせ, 21繰り返し, 20

■け原子の消滅, 40

■こ高級言語, i合成数, 24

Page 65: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

60 索 引

互除法, 26コンパイラ, i

■さサイコロ, 38最小公倍数, 25最大公約数, 25(プログラムの)削除, 13サブルーチン, 29三角比, 9, 34

■し(プログラムの)実行, 12シフト, 6循環小数, 41循環節, 41順列, 21商, 24(プログラムの)消去, 12(文字の)消去, 6条件分岐, 17小数点, 8小数展開, 41除の記号, 6

■す数値積分, 37数列の和, 18スペース, 6スラッシュ, 6

■せ積の記号, 6積分, 37

■そ素因数分解, 2, 25(文字の)挿入, 6素数, 24

■た台形公式, 37代入, 13多倍長計算, 2

■つ

(プログラムの)追加, 13

■てデリート, 6

■に2次方程式, 182重の繰り返し, 22二分割法, 36(キーボード)入力, 15(プログラムの)入力, 12ニュートン法, 36

■のノルマンの軍団, 42

■はπ, 9, 34倍数, 24配列, 29バックスペース, 6

■ひピタゴラス数, 41(プログラムの)表示, 12

■ふファイル, 16ファンクションキー, 29ふるい, 27フロッピーディスク, 3分岐, 17, 30

■へ平方根, 8, 35巾乗, 8変数, 13

■む無条件分岐, 17

■もモンテカルロ法, 39

■や約数, 24

■ゆ

Page 66: 高等学校 数学科ソフトウェア活用 (UBASIC) 使用ソ …kurobe3463.cocolog-nifty.com/b/files/ub.pdfi はじめに コンピュータの発達とともに,プログラム言語も

索 引 61

ユークリッド互除法, 26ユーザー関数, 30有理数除算, 7

■ら乱数, 38

■りリセット, 4リターン, 6立方根, 35リマーク文, 31

■れレム文, 31

■わ割り算, 6